| name | typo-checker |
| description | Run typos-cli on the codebase, review findings, fix real typos, and update _typos.toml config to suppress false positives. Use this skill for routine codebase typo maintenance. Invoke when doing periodic codebase hygiene, when the user mentions typos or spelling checks, or as a scheduled maintenance task.
|
Typo Checker
Scan the codebase with typos-cli, classify findings, fix real typos, and maintain _typos.toml so false positives don't recur.
Prerequisites
typos-cli must be installed. If not available, install via one of:
Workflow
1. Scan
typos --format=brief
This outputs one finding per line: file:line:col: \typo` -> `suggestion``. Compact and easy to parse.
typos respects .gitignore by default, so node_modules/, dist/, build outputs are already excluded.
To get an overview first:
typos --format=brief 2>&1 | sed "s/.*\`//;s/\`.*//" | sort | uniq -c | sort -rn | head -20
If many findings come from minified/generated files, add those paths to _typos.toml extend-exclude first, then re-scan.
2. Classify each finding
For every finding, decide:
- Real typo โ fix it
- False positive โ add to
_typos.toml
Common false positive patterns:
- Short variable names that happen to be words (
ba, fo, nd)
- Domain abbreviations (
als for AsyncLocalStorage, PnP for Plug'n'Play)
- File extensions in regexes (
.styl, .pcss)
- Test fixture strings and test data
- Line truncation artifacts in inline snapshots (
afte..., wrapp...)
- Product names and proper nouns
- Lorem ipsum text
When in doubt about whether a misspelled variable name is "intentional" โ it's still a typo. Propagated typos are still typos. Fix them.
3. Fix real typos
- Comments, docs, JSDoc: fix the text directly
- Variable/property names: rename all occurrences consistently
- Test names: fix the name, update corresponding snapshot files
- Filenames: rename the file and update all imports/references โ check for references before renaming
4. Update _typos.toml
Add false positives to [default.extend-words] with a comment explaining why:
[default.extend-words]
als = "als"
For file-level exclusions, use [files].extend-exclude:
[files]
extend-exclude = [
"*.js.map",
"*.svg",
]
If _typos.toml doesn't exist yet, create it.
5. Commit
Commit fixes and config updates together:
chore: fix typos and update _typos.toml