Skip documentation navigation
Documentation menu

Categories

The aiWriting feature ships 47 categories. Each category is one pack file under hooks/lib/patterns/, except claude-tells, which spans claude-tells.json, closing-offer.json, and backtick-branches.mjs. This page lists every category, the presets that turn it on, and the scopes it runs in.

Pick categories with features.aiWriting.preset, or replace the preset list with features.aiWriting.categories. Both keys are described in configuration.md. The flagged text and the replacement for every pattern are in ../skills/concise-rules/references/ai-speak-patterns.md.

Scope names: files (prose files and plans), comments (comment runs in code files), code (whole code files, string literals included), gh (gh pr, gh issue, and gh release titles and bodies, gh api bodies, and MCP tool posts), commit (git commit, git tag, git merge, jj, and hg messages), command (the full command line), reply (the agent’s final reply, task text, and questions to the user).

Phrase categories

Scopes across this group: files, comments, gh, commit, reply. The scope column below gives the scopes for each category.

idWhat it catchesFlagged exampleFixPresetsScopes
british-spellingBritish spellings in text that otherwise uses American English.behaviouruse the American spellingryan, allfiles, comments, gh, commit, reply
chatbotAssistant boilerplate that belongs to a chat window.Great questiondelete the linedefault, ryan, technical, minimal, allfiles, comments, gh, commit, reply
claude-tellsPhrasing that Claude 5.x models write far more often than people do.still not committed, on purposestill intentionally not committeddefault, ryan, technical, allfiles, comments, gh, commit, reply
closersEndings that restate the text instead of stopping.In conclusionend on the last factdefault, ryan, technical, allfiles, comments, gh, commit, reply
contrastFrames that define the subject by what it is not.it's not a config change, it's a rewritestate the positive claimdefault, ryan, technical, allfiles, comments, gh, commit, reply
copulaVerbs that interpret the subject instead of naming what it does.serves assay what it doesryan, ste, allfiles, comments, gh, commit, reply
fillerOpeners and asides that carry no fact.at its corecut it, state the pointdefault, ryan, technical, allfiles, comments, gh, commit, reply
formattingEmoji and bold runs used as structure.an emoji in a headingremove the emojidefault, ryan, allfiles, gh, commit, reply
hedgingQualifiers that leave the claim unowned.note thatcut it, state the factryan, ste, allfiles, comments, gh, commit, reply
inflationWording that makes a change sound larger than it is.a significant step forwardstate what changeddefault, ryan, technical, allfiles, comments, gh, commit, reply
steWord choices from Simplified Technical English.ensureuse the approved wordste, allfiles, comments, gh, commit, reply
structureOpeners and frames that delay the point.Picture this:state the factdefault, ryan, technical, allfiles, comments, gh, commit, reply
sycophancyPraise aimed at the reader instead of the work.You're absolutely rightdelete it, give the fixdefault, ryan, technical, minimal, allfiles, comments, gh, commit, reply
transitionsConnectors and scene setters that add length without adding a fact.Moreovercut it, or use anddefault, ryan, technical, allfiles, comments, gh, commit, reply
vocabularyWords that appear far more often in model output than in human writing.delvelook at, examinedefault, ryan, technical, allfiles, comments, gh, commit, reply
wordinessLong forms of short words.in order totoryan, ste, allfiles, comments, gh, commit, reply

Rhetorical categories

Scopes across this group: files, comments, gh, commit, reply. The scope column below gives the scopes for each category.

idWhat it catchesFlagged exampleFixPresetsScopes
elegant-variationRotating synonyms for one referent instead of repeating the name.aforementionedname it againryan, allfiles, gh, reply
false-rangesA “from X to Y” span whose endpoints share no real scale.everything from X to Ylist the itemsdefault, ryan, technical, allfiles, comments, gh, reply
negative-parallelismA chain of two or more negated clauses resolved by one affirmation.not X, not Y, but Zstate the one claimdefault, ryan, technical, allfiles, comments, gh, reply
outline-conclusionA closing paragraph that re-lists the section headings instead of adding a new fact.a closing paragraph that re-lists 3 headingsend on the last factryan, allfiles, gh, reply
overgeneralizationA universal claim about people or the industry with no source.everyone knowsname whodefault, ryan, technical, allfiles, comments, gh, reply
parallel-bulletsA bulleted list where every item shares one rigid shape.3 bullets that open on the same wordvary the item openings, keep the listryan, allfiles, gh, reply
promotionalMarketing language for a technical change.superchargename the effectdefault, ryan, technical, allfiles, gh, commit, reply
rule-of-threeTriads of adjectives, nouns, or clauses used past the point of restraint.3 triads in one textkeep the items that matterryan, allfiles, comments, gh, reply
superficial-analysisA significance claim with no evidence behind it.cannot be overstatedstate the fact plainlyryan, allfiles, gh, reply
undue-emphasisIntensifiers, stacked qualifiers, or markup used to manufacture stress.extremelycut itryan, allfiles, comments, gh, commit, reply
vague-attributionA claim attributed to an unnamed authority.studies showcite the studydefault, ryan, technical, allfiles, gh, reply

Commit and review categories

Scopes across this group: comments, gh, commit, command, reply. The scope column below gives the scopes for each category.

idWhat it catchesFlagged exampleFixPresetsScopes
ai-attributionA commit or PR trailer credits an AI tool as co-author, generator, or signer.Co-authored-by: Claudedrop the trailerdefault, ryan, technical, minimal, git, allcommit, gh, command
ai-identityThe commit author or committer field names an AI tool instead of a person.GIT_AUTHOR_NAME=Claude Codeuse a human author namedefault, ryan, technical, minimal, git, allcommand
ai-tool-mentionNames of AI coding tools, or the agent narrating its own process instead of the change.as requested by the userstate the changedefault, ryan, technical, git, allcommit, gh, comments, command
benefit-tailA sentence ends in a justification clause tacked on after a comma., which improves readabilitycut the clauseryan, technical, git, allcommit, gh, comments, reply
canned-reviewStock PR-review phrasing used regardless of what the diff actually does.LGTM with minor nitsname the findingdefault, ryan, technical, git, allgh, reply
file-narrationText narrates a trivial file operation instead of stating the change.This PR introducesstate what changedryan, technical, git, allcommit, gh, reply, comments
praise-sandwichReview or reply text opens and closes with praise around a middle critique.praise, critique, praise over 3 paragraphsstate the critiqueryan, git, allgh, reply

Punctuation categories

Scopes across this group: files, comments, code, gh, commit, command, reply. The scope column below gives the scopes for each category.

idWhat it catchesFlagged exampleFixPresetsScopes
hidden-charactersInvisible or look-alike characters that model output and chat UIs leave in text.a zero-width spaceremove the characterdefault, ryan, technical, git, allfiles, code, gh, commit, command, reply
smart-punctuationCurly quotes and the ellipsis character typical of text pasted from a chat UI.a curly apostropheuse a straight apostrophedefault, ryan, technical, allcomments, commit, gh, command, reply
unicode-glyphsArrows, box drawing, dingbats, and geometric symbols used in place of plain ASCII or words.an arrow characteruse ->default, ryan, technical, allcommit, gh, command, reply

Text statistics categories

Scopes across this group: files, gh, reply. The scope column below gives the scopes for each category.

idWhat it catchesFlagged exampleFixPresetsScopes
lexical-diversityFlags text that reuses the same words instead of varying vocabulary.type-token ratio under 0.55vary the wordsstatistical, allfiles, gh, reply
paragraph-coherenceFlags formulaic paragraphs: near-identical lengths, repeated opening words, or repeated topic sentences.5 paragraphs of near-equal lengthvary the paragraphsryan, statistical, allfiles, gh, reply
passive-voiceFlags text where passive voice runs past a third of the sentences.passive voice over 30% of sentencesname the actorryan, statistical, allfiles, gh, reply
punctuation-patternsFlags punctuation habits that agree: colon and semicolon rate, no exclamations, a uniform Oxford comma, no sentence-initial conjunctions.4 of 5 punctuation signals agreewrite as you would say itstatistical, allfiles, gh, reply
rare-wordsFlags text with an unusually high share of long, low-frequency words.over 25% long, rare wordsuse the short wordstatistical, allfiles, gh, reply
readability-gradeFlags text with a Flesch-Kincaid grade level above what technical writing needs.Flesch-Kincaid grade over 16shorter sentences and wordsryan, statistical, allfiles, gh, reply
sentence-variationFlags text where every sentence runs about the same length.sentence-length variation under 0.35vary the sentence lengthryan, statistical, allfiles, gh, reply
terminal-punctuationFlags list items that all carry a trailing period even though they read as short fragments.8 short list items that all end in a perioddrop the periods on fragmentsstatistical, allfiles, gh
transition-densityFlags text where too many sentences open on a transition or connector word.over 30% of sentences opening on a connectorcut the connectorsryan, statistical, allfiles, gh, reply
word-frequencyFlags text that leans on one favorite word far more than natural word spread predicts.one content word over 3.5% of the wordsvary or cut the wordstatistical, allfiles, gh, reply

The emDash feature has its own category, em-dash, in hooks/lib/patterns/prose/em-dash.json. No preset controls it. features.emDash.enabled does.