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.
Scan the codebase with typos-cli, classify findings, fix real typos, and maintain _typos.toml so false positives don't recur.
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 |
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.
For every finding, decide:
_typos.tomlCommon false positive patterns:
ba, fo, nd)als for AsyncLocalStorage, PnP for Plug'n'Play).styl, .pcss)afte..., wrapp...)When in doubt about whether a misspelled variable name is "intentional" — it's still a typo. Propagated typos are still typos. Fix them.
_typos.tomlAdd 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.
Commit fixes and config updates together: