Add automated spell-check with codespell on PRs
Implements automated spell-checking on pull requests that comments with potential typos and supports easy whitelisting.
Implementation
Workflow (.github/workflows/spell-check.yaml)
- Triggers on PR open/sync/reopen
- Runs codespell via Python script
- Posts/updates comment with findings
Configuration
-
.codespellrc- Skips themes, translations, PDFs, data files; ignores URLs/HTML comments -
.codespell-ignore.txt- Whitelist for project terms, names, technical jargon (~60 entries)
Script (scripts/spell_check/check_spelling.py)
- Scans
content/,scripts/,.github/, root docs - Parses codespell output into grouped markdown tables
- Outputs via
GITHUB_OUTPUTfor Actions integration
Usage
Add legitimate terms to .codespell-ignore.txt:
# Author names
Kathawalla
Gilad
# Technical terms
preregistration
metascience
Currently detects 145 potential issues across the repository (mostly legitimate typos in content files).
Original prompt
This section details on the original issue you should resolve
<issue_title>Add automated spell-check</issue_title> <issue_description>Add a spell-check that comments a list of potential typos on an issue and allows for easy whitelisting (e.g using codespell)</issue_description>
Comments on the Issue (you are @copilot in this section)
- Fixes forrtproject/forrtproject.github.io#464
π‘ You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.
π Spell Check Results
Found 146 potential spelling issue(s) in this PR:
π CONTRIBUTING.md
| Line | Issue |
|---|---|
| 59 | foward ==> forward |
π content/OS-developing-world/OS-developing-world.md
| Line | Issue |
|---|---|
| 73 | inclusing ==> including |
π content/about/partnerships/partnerships.md
| Line | Issue |
|---|---|
| 212 | ARENβs ==> arenβt |
| 212 | advocay ==> advocacy |
π content/awop/index.md
| Line | Issue |
|---|---|
| 5 | Priviledge ==> Privilege |
π content/coc.md
| Line | Issue |
|---|---|
| 29 | accessibilty ==> accessibility |
π content/contributor-analysis/index.Rmd
| Line | Issue |
|---|---|
| 77 | unncessary ==> unnecessary |
π content/contributor-analysis/network-graph.Rmd
| Line | Issue |
|---|---|
| 87 | unncessary ==> unnecessary |
| 174 | patter ==> pattern |
π content/dei/2-intro-text.md
| Line | Issue |
|---|---|
| 74 | calender ==> calendar |
π content/educators-corner/005-remote-teaching-platform/index.md
| Line | Issue |
|---|---|
| 38 | commend ==> comment, command |
π content/educators-corner/010-Neurodiversity/index.md
| Line | Issue |
|---|---|
| 59 | ons ==> owns |
π content/glossary/english/literature_review.md
| Line | Issue |
|---|---|
| 50 | ublication ==> publication |
| 50 | Yau ==> You, Yaw |
π content/glossary/english/plan_s.md
| Line | Issue |
|---|---|
| 4 | commited ==> committed |
π content/glossary/english/pro.md
| Line | Issue |
|---|---|
| 4 | publically ==> publicly |
π content/glossary/english/research_protocol.md
| Line | Issue |
|---|---|
| 4 | publically ==> publicly |
π content/glossary/english/type_i_error.md
| Line | Issue |
|---|---|
| 4 | occured ==> occurred |
π content/glossary/english/zenodo.md
| Line | Issue |
|---|---|
| 27 | wont ==> won't |
| 45 | ublication ==> publication |
| 45 | Yau ==> You, Yaw |
π content/glossary/references/index.md
| Line | Issue |
|---|---|
| 19 | Udo ==> Undo, Sudo, Judo, Ado, Udon, Ufo |
| 238 | Soler ==> Solver, Solar, Solely |
| 371 | Ans ==> And |
| 411 | Ned ==> Need, End, Nod |
| 419 | ABl ==> able |
| 429 | Homogenous ==> Homogeneous |
| 573 | Carmel ==> Caramel |
| 575 | ABl ==> able |
| 575 | Carmel ==> Caramel |
| 581 | ABl ==> able |
| 599 | ABl ==> able |
| 599 | ABl ==> able |
| 603 | ABl ==> able |
| 603 | ABl ==> able |
| 607 | ABl ==> able |
| 607 | ABl ==> able |
| 609 | ABl ==> able |
| 609 | ABl ==> able |
| 611 | ABl ==> able |
| 611 | ABl ==> able |
| 634 | Initative ==> Initiative, Imitative |
| 713 | ABl ==> able |
| 717 | ABl ==> able |
| 717 | Carmel ==> Caramel |
| 757 | ABl ==> able |
| 767 | ABl ==> able |
| 791 | Carmel ==> Caramel |
| 796 | Loder ==> Loader |
| 994 | Initative ==> Initiative, Imitative |
| 1024 | Yau ==> You, Yaw |
π content/glossary/vbeta/plan-s.md
| Line | Issue |
|---|---|
| 3 | commited ==> committed |
π content/glossary/vbeta/pro-peer-review-openness-initiative.md
| Line | Issue |
|---|---|
| 3 | publically ==> publicly |
π content/glossary/vbeta/references/index.md
| Line | Issue |
|---|---|
| 19 | Udo ==> Undo, Sudo, Judo, Ado, Udon, Ufo |
| 238 | Soler ==> Solver, Solar, Solely |
| 371 | Ans ==> And |
| 411 | Ned ==> Need, End, Nod |
| 419 | ABl ==> able |
| 429 | Homogenous ==> Homogeneous |
| 573 | Carmel ==> Caramel |
| 575 | ABl ==> able |
| 575 | Carmel ==> Caramel |
| 581 | ABl ==> able |
| 599 | ABl ==> able |
| 599 | ABl ==> able |
| 603 | ABl ==> able |
| 603 | ABl ==> able |
| 607 | ABl ==> able |
| 607 | ABl ==> able |
| 609 | ABl ==> able |
| 609 | ABl ==> able |
| 611 | ABl ==> able |
| 611 | ABl ==> able |
| 634 | Initative ==> Initiative, Imitative |
| 713 | ABl ==> able |
| 717 | ABl ==> able |
| 717 | Carmel ==> Caramel |
| 757 | ABl ==> able |
| 767 | ABl ==> able |
| 791 | Carmel ==> Caramel |
| 796 | Loder ==> Loader |
| 994 | Initative ==> Initiative, Imitative |
| 1024 | Yau ==> You, Yaw |
π content/glossary/vbeta/research-protocol.md
| Line | Issue |
|---|---|
| 3 | publically ==> publicly |
π content/glossary/vbeta/type-i-error.md
| Line | Issue |
|---|---|
| 3 | occured ==> occurred |
π content/lesson-plans/nd-lessons-plans.md
| Line | Issue |
|---|---|
| 137 | tru ==> through, true |
| 143 | Furthemore ==> Furthermore |
π content/neurodiversity-lessonbank/_index.md
| Line | Issue |
|---|---|
| 62 | ND ==> AND, 2ND |
| 64 | ND ==> AND, 2ND |
π content/neurodiversity-lessonbank/community-psychology-diversity/index.md
| Line | Issue |
|---|---|
| 93 | ND ==> AND, 2ND |
| 93 | ND ==> AND, 2ND |
| 93 | ND ==> AND, 2ND |
π content/neurodiversity-lessonbank/implicit_bias/index.md
| Line | Issue |
|---|---|
| 46 | ND ==> AND, 2ND |
| 53 | ND ==> AND, 2ND |
| 61 | ND ==> AND, 2ND |
π content/neurodiversity-lessonbank/masterstools/index.md
| Line | Issue |
|---|---|
| 26 | Opression ==> Oppression |
π content/neurodiversity/neurodiversity.md
| Line | Issue |
|---|---|
| 95 | homogenous ==> homogeneous |
| 95 | homogenous ==> homogeneous |
| 275 | ND ==> AND, 2ND |
π content/positive-changes-replication-crisis/positive-changes-replication-crisis.md
| Line | Issue |
|---|---|
| 91 | Didactical ==> Didactic |
| 113 | Vizualization ==> Visualization, Virtualization |
| 137 | Cummulative ==> Cumulative |
π content/publications/publications.md
| Line | Issue |
|---|---|
| 362 | ist ==> is, it, its, it's, sit, list |
| 362 | sie ==> size, sigh, side |
π content/replication-hub/fred_data_curators_role/index.md
| Line | Issue |
|---|---|
| 68 | Autor ==> Author |
π content/reversals/reversals.md
| Line | Issue |
|---|---|
| 177 | ist ==> is, it, its, it's, sit, list |
| 412 | ist ==> is, it, its, it's, sit, list |
| 420 | Sherif ==> Sheriff |
| 420 | Sherif ==> Sheriff |
| 420 | Sherif ==> Sheriff |
| 420 | Sherif ==> Sheriff |
| 511 | ist ==> is, it, its, it's, sit, list |
| 963 | openess ==> openness |
| 963 | speach ==> speech |
| 1530 | percieved ==> perceived |
| 1530 | percieved ==> perceived |
| 1530 | percieved ==> perceived |
| 1530 | percieved ==> perceived |
| 1530 | percieved ==> perceived |
| 1530 | percieved ==> perceived |
| 1862 | fomr ==> from, form |
| 2277 | ist ==> is, it, its, it's, sit, list |
| 2277 | repid ==> rapid |
| 2288 | ist ==> is, it, its, it's, sit, list |
| 2288 | repid ==> rapid |
| 2288 | ist ==> is, it, its, it's, sit, list |
| 2288 | repid ==> rapid |
| 2625 | ist ==> is, it, its, it's, sit, list |
| 2916 | aer ==> are |
| 2917 | aer ==> are |
| 2935 | Shepperd ==> Shepherd |
| 2937 | Shepperd ==> Shepherd |
| 2970 | aer ==> are |
| 2979 | aer ==> are |
| 3182 | aer ==> are |
| 3182 | aer ==> are |
| 3233 | OT ==> TO, OF, OR, NOT, IT |
| 3380 | Loades ==> Loads, Loaded |
| 3382 | Loades ==> Loads, Loaded |
| 3513 | Buss ==> Bus |
| 3691 | Nam ==> Name |
| 3785 | ist ==> is, it, its, it's, sit, list |
| 3785 | repid ==> rapid |
| 3956 | Soler ==> Solver, Solar, Solely |
| 3958 | Soler ==> Solver, Solar, Solely |
π content/summaries/summaries.py
| Line | Issue |
|---|---|
| 64 | encoutering ==> encountering |
βΉοΈ How to address these issues:
- Fix the typo: If it's a genuine typo, please correct it.
-
Add to whitelist: If it's a valid word (e.g., a name, technical term), add it to
.codespell-ignore.txt - False positive: If this is a false positive, please report it in the PR comments.
π€ This check was performed by codespell
:thumbsup: All image files/references (if any) are in webp format, in line with our policy.
β This PR has been deployed to staging as part of an aggregated deployment. View at: https://staging.forrt.org
Once #462 is merged, the latest version of some files will always be in the build-resources branch. That should be pulled into the check, merged in a way that prioritises these files? Otherwise old versions in main will generate false positives
β This PR has been deployed to staging as part of an aggregated deployment. View at: https://staging.forrt.org
β This PR has been deployed to staging as part of an aggregated deployment. View at: https://staging.forrt.org
β This PR has been deployed to staging as part of an aggregated deployment. View at: https://staging.forrt.org
β This PR has been deployed to staging as part of an aggregated deployment. View at: https://staging.forrt.org
β This PR has been deployed to staging as part of an aggregated deployment. View at: https://staging.forrt.org
β This PR has been deployed to staging as part of an aggregated deployment. View at: https://staging.forrt.org
β This PR has been deployed to staging as part of an aggregated deployment. View at: https://staging.forrt.org
β This PR has been deployed to staging as part of an aggregated deployment. View at: https://staging.forrt.org
β This PR has been deployed to staging as part of an aggregated deployment. View at: https://staging.forrt.org
β This PR has been deployed to staging as part of an aggregated deployment. View at: https://staging.forrt.org
β This PR has been deployed to staging as part of an aggregated deployment. View at: https://staging.forrt.org
β This PR has been deployed to staging as part of an aggregated deployment. View at: https://staging.forrt.org
β This PR has been deployed to staging as part of an aggregated deployment. View at: https://staging.forrt.org
β This PR has been deployed to staging as part of an aggregated deployment. View at: https://staging.forrt.org
β This PR has been deployed to staging as part of an aggregated deployment. View at: https://staging.forrt.org
β This PR has been deployed to staging as part of an aggregated deployment. View at: https://staging.forrt.org
β This PR has been deployed to staging as part of an aggregated deployment. View at: https://staging.forrt.org
β This PR has been deployed to staging as part of an aggregated deployment. View at: https://staging.forrt.org
β This PR has been deployed to staging as part of an aggregated deployment. View at: https://staging.forrt.org
β This PR has been deployed to staging as part of an aggregated deployment. View at: https://staging.forrt.org
β This PR has been deployed to staging as part of an aggregated deployment. View at: https://staging.forrt.org
β This PR has been deployed to staging as part of an aggregated deployment. View at: https://staging.forrt.org
β This PR has been deployed to staging as part of an aggregated deployment. View at: https://staging.forrt.org
β This PR has been deployed to staging as part of an aggregated deployment. View at: https://staging.forrt.org
β This PR has been deployed to staging as part of an aggregated deployment. View at: https://staging.forrt.org
β This PR has been deployed to staging as part of an aggregated deployment. View at: https://staging.forrt.org