Voice Vocabulary Check tool
The Voice Vocabulary Check tool is the deterministic gate a voice profile
carries: the forbidden terms, the competitor terms and the prohibited style
patterns, matched over each block's source text with no model and no network.
A forbidden term reports at major severity and a competitor term at critical,
each defaulting from the profile and overridable per rule; where the rule names
a replacement, the finding carries it as the suggestion. Terms match whole-word
and Unicode-aware, so use never fires inside user; style patterns match as
the regular expression the author wrote them as.
When the project binds a terms store, the tool enforces that too: the
vocabulary the project decided, alongside the lists the profile carries. A
competitor entry reports critical, a forbidden one major and a retired one
minor, the softer reading for a word that was the project's own until a
decision replaced it. The alternative comes from the concept: its preferred
term in the same language, or the replacement the term's note names. Lookup
asks in the block's own language and, when that names a region, in the bare
language beneath it, so a project writing en-GB is still held to a decision
recorded as en.
Findings and an overall score are attached as a voice annotation. The profile
and the terms store are supplied by the host rather than by step configuration:
a recipe names this tool as a step (kapi init scaffolds exactly that) and the
project's defaults.voice binding decides what it enforces. The standalone
command is kapi check --profile.
This is the half to run before voice-check, its LLM-judged sibling: what a
rule can decide should not be spent on a model.
This tool has no configurable parameters.
Run it
Examples
Add to a flow
The profile and terms come from the project binding, so the step needs no configuration of its own.
{}
Processing notes
Operates on blocks; a block with no findings is left unannotated.
Monolingual by declaration, because it reads the source; a bilingual declaration would yield no pass at all on a project with no target languages.
A term recorded in both a regional and a bare language is one decision and reports once.
Every finding carries the run range it matched, so a preview can highlight the exact words.
Limitations
The profile and the terms store are supplied programmatically; neither is a schema parameter.
Matching is lexical, whole-word and case-insensitive, with no account of inflection or morphology.
Judges source text only, and skips a block whose source is empty or whitespace-only.
Required style patterns are a document-scope question and are evaluated by the check venue, not here.
← Back to the Tool Reference