skyspell¶
A dictionary-based spell checker Scrutin drives as a plugin. Like the linters (jarl, ruff) it maps diagnostics to warn events, so misspellings appear alongside test results in the TUI and web dashboard. skyspell is opt-in: enable it with an explicit [[suite]] tool = "skyspell" entry in .scrutin/config.toml, or pass files on the command line with -t skyspell in file mode.
Installing skyspell¶
skyspell is not shipped with Scrutin. Follow the upstream install instructions at codeberg.org/your-tools/skyspell.
Directory structure¶
myproject/
├── .scrutin/
│ └── config.toml # [[suite]] tool = "skyspell" + optional [skyspell] tuning
├── skyspell-ignore.toml # auto-managed project whitelist (committed)
├── README.md
└── docs/
└── guide.md
Minimal example¶
.scrutin/config.toml
Tuning (language, whitelist scope) lives under [skyspell] in the same file; see Configuration below.
README.md
Running¶
skyspell runs as its own suite alongside any other suites you've declared; suites run sequentially (one at a time), but within the skyspell suite every matched file is checked in parallel. Default run patterns cover **/*.md, **/*.markdown, **/*.txt, **/*.rst, **/*.qmd, and **/*.Rmd.
Fix flow (TUI)¶
In Detail view (Enter on a file with misspellings), each misspelling shows its suggestions inline below the message. Hotkeys:
| Key | Action |
|---|---|
1..9 |
Accept the Nth ranked suggestion: Scrutin rewrites the file on disk and triggers a rerun so the warning disappears. |
0 |
Whitelist the word: runs skyspell add with whatever [skyspell].add_args specifies. The default --project writes to a committable skyspell-ignore.toml at the project root, so your teammates inherit the whitelist. |
j/k / ↑↓ |
Move between misspellings. |
Configuration¶
Tuning lives in .scrutin/config.toml under [skyspell]:
[skyspell]
# Args spliced between `skyspell` and every subcommand. Must include
# --lang (skyspell requires it). Default:
extra_args = ["--lang", "en_US"]
# Args appended to `skyspell add` (from the TUI's 0 key), before the
# word. Default --project scopes the whitelist to this project so
# skyspell-ignore.toml lives at the project root and can be committed.
# Set to [] to hit ~/.local/share/skyspell/global.toml instead.
add_args = ["--project"]
The minimal opt-in is [[suite]] tool = "skyspell". Override the targets on the same block to scope the sweep: