- 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
```bash
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:
```bash
# 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 (`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:
```toml
[default.extend-words]
# AsyncLocalStorage abbreviation
als = "als"
```
For file-level exclusions, use `[files].extend-exclude`:
```toml
[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
```
Voir sur GitHub