Skip to content

Add codespell spell-check CI workflow to catch spelling mistakes in PRs #4727

@mr-raj12

Description

@mr-raj12

Add a GitHub Actions workflow to run codespell on files changed in PRs,
catching spelling mistakes in documentation and code comments before they are merged.

Possible Labels

  • new feature
  • documentation

Category

  • Enhancement
  • Documentation

Update

Currently, there is no automated way to catch spelling mistakes in:

  • Documentation files (*.rst, *.md)
  • Python source code comments and docstrings (*.py)
  • CI/build scripts and configuration files

PR #4720 fixed ~219 spelling errors manually using codespell. Automating this
check prevents regressions and catches new typos early.

Reference: #4720 (comment)

Scope (Phased Approach)

Phase 1 (This issue):

  • Check only files changed in PRs (not entire codebase)
  • Target: .py, .rst, .md files
  • Non-blocking (warning only) initially
  • Report results in GitHub Job Summary

Phase 2 (Future):

  • Make it blocking once false-positive rate is acceptable
  • Extend to .yml, .sh, .toml files
  • Integrate with pre-commit hooks

How This Feature helps the organization

  • Prevents spelling regressions from being merged
  • Catches typos in documentation before they reach users/readthedocs
  • Reduces manual review effort for spelling errors
  • Improves overall documentation quality and professionalism

Implementation Details

Add a lightweight GitHub Actions workflow (.github/workflows/spell-check.yml) that:

  1. Triggers on PRs modifying .py, .rst, or .md files
  2. Detects changed files using git diff
  3. Runs codespell only on those changed files
  4. Reports results in the GitHub Job Summary (non-blocking/warning only)

Configuration:

  • setup.cfg [codespell] section with built-in dictionaries and skip patterns
  • .codespell-ignore-words.txt custom dictionary with project-specific terms
    (ScanCode, nexB, PackageURL, SPDX, licensedcode, packagedcode, etc.)
  • Skips tests/, samples/, thirdparty/, src/licensedcode/data/rules/

Example/Links if Any

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions