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:
| Method | Command |
|---|---|
| cargo | cargo install typos-cli |
| brew | brew install typos-cli |
| pipx | pipx install typos |
| Binary | Download from https://github.com/crate-ci/typos/releases |
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:
# Count unique typo words by frequency
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 (
alsfor AsyncLocalStorage,PnPfor 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]
# AsyncLocalStorage abbreviation
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