Every page tagged proofread. Tags cut across the directory tree, so these pages come from different sections.
Check writing in a commit hookJudge each commit message with proofread from a git commit-msg hook, a Mercurial pretxncommit hook or a Jujutsu alias, choose what blocks a commit, and count which rules earn their place.
Proofread rulesEvery rule proofread applies to written text: what each one catches, the decision it takes by default on each kind of text, and its code.
Run a proofread labeling roundDraw a seeded sample of proofread findings, freeze it to a rule commit, have two people label it, adjudicate, score it against the promotion gates, and apply the result to a rule's shipped default.
Verify a releaseVerify a magus release against its Ed25519-signed SHA256SUMS manifest, by hand on first install or with the built-in verifier afterwards.
absoluteAn advisory by default: it explains, and blocks nothing, on never, nobody or nothing as a claim about the past ("has never fired", "nobody checked").
agreement-openerAn advisory by default: it explains, and blocks nothing, on an agent reply that opens with praise or agreement ("Great question", "You're right").
all-capsAn advisory by default: it explains, and blocks nothing, on words in capitals for emphasis in a review reply ("DO NOT", "NEVER").
approve-blockerA rule that is off by default: it reports an approving review whose body names a blocker ("must fix", "blocking", "before merge") once a decisions table turns it on.
asciiA house-style rule, off until a decisions table turns it on: it reports a curly quote, an ellipsis character or an emoji in prose.
asideA house-style rule, off until a decisions table turns it on: it reports a spaced hyphen spelling an em dash in a doc comment.
attributionA house-style rule, off until a decisions table turns it on: it reports credit to a tool or an agent, or an account of how the work was produced.
banned-wordA house-style rule, off until a decisions table turns it on: it reports a word this repository bans, in a stylesheet comment.
bare-imperativeAn advisory by default: it explains, and blocks nothing, on a short command in a review reply that gives no reason anywhere ("Fix this.").
bare-lgtmA rule that is off by default: it reports a review summary that only approves: "LGTM", "ship it", "looks good" once a decisions table turns it on.
bare-ruleA house-style rule, off until a decisions table turns it on: it reports "rule" in agent instructions with no mechanism named.
blameAn advisory by default: it explains, and blocks nothing, on a person or past work as the subject of a fault, and contempt for code or a decision.
block-budgetA house-style rule, off until a decisions table turns it on: it reports a rule block whose comments, summed, outrun its size.
body-separatorA deny rule by default: it refuses a commit body that starts on the line after the subject.
bold-labelAn advisory by default: it explains, and blocks nothing, on list items or paragraphs of an agent reply that open with a bold label.
buzzwordA deny rule by default: it refuses a word chosen to sound significant rather than to say what is so ("delve", "tapestry").
buzzword-weakAn advisory by default: it explains, and blocks nothing, on a buzzword that also has an ordinary sense ("crucial", "landscape").
changelog-entryAn advisory by default: it explains, and blocks nothing, on a changelog entry that names a Go identifier and says little else.
changelog-groupAn advisory by default: it explains, and blocks nothing, on a changelog heading that is not Added, Changed, Deprecated, Removed, Fixed or Security.
changelog-headingA rule that is off by default: it reports a changelog version heading that is not "## [version] - date" or "## [Unreleased]" once a decisions table turns it on.
chatbotA rule that is off by default: it reports text a chat assistant addressed to its user: an offer, flattery, a knowledge disclaimer once a decisions table turns it on.
claimAn advisory by default: it explains, and blocks nothing, on a measurement, a comparison or a completion with no evidence in its sentence or bullet.
closerA deny rule by default: it refuses a sentence that opens by announcing it restates the text above ("In conclusion,").
closing-offerAn advisory by default: it explains, and blocks nothing, on an agent reply whose last paragraph offers more work or asks leave to go on.
comment-blockA house-style rule, off until a decisions table turns it on: it reports a doc comment over 250 words.
comment-budgetA house-style rule, off until a decisions table turns it on: it reports a stylesheet comment over the lines its place earns.
comment-sentenceA house-style rule, off until a decisions table turns it on: it reports a doc comment sentence over 60 words.
compact-costly-abbrevA rule that is off by default: it reports an abbreviation that costs more tokens than the word it replaces: k8s, w/, b/c, e.g., i.e., or dropped vowels once a decisions table turns it on.
compact-duplicateA rule that is off by default: it reports a compact line that restates an earlier one: half or more of its content words and every negation, condition, scope and order word the same once a decisions table turns it on.
compact-fillerA rule that is off by default: it reports articles, linking verbs, "you", "please", "note that" and "instead" outside code, counted with the tokens dropping them saves once a decisions table turns it on.
compact-lineA rule that is off by default: it reports a compact line over 21 words that joins clauses with a semicolon or a comma and a conjunction once a decisions table turns it on.
compact-markupA rule that is off by default: it reports a bold or italic marker, or a Markdown table, in compact agent text once a decisions table turns it on.
compact-symbol-negationA rule that is off by default: it reports "!" or a Unicode symbol standing in for "not" or a logic operator once a decisions table turns it on.
condescensionA rule that is off by default: it reports a word that tells the reader how hard a step should feel or what they should already know once a decisions table turns it on.
contrastA rule that is off by default: it reports a claim made by denying its opposite first ("not just X, it is Y") once a decisions table turns it on.
creditAn advisory by default: it explains, and blocks nothing, on a change description that removes or replaces something and says nothing of what it was for.
dashA house-style rule, off until a decisions table turns it on: it reports an em dash, an en dash or a spaced double hyphen in prose.
date-formatA rule that is off by default: it reports dates in more than one style in one text: 2026-10-13, Oct 2026, October 2026, 10/13/2026, or Sep beside Sept once a decisions table turns it on.
decline-no-reasonA rule that is off by default: it reports a short review reply declining the change ("won't fix", "No, ...") with no reason once a decisions table turns it on.
deferral-no-linkA rule that is off by default: it reports a review reply deferring to later, a follow-up or a TODO, with no issue link or number once a decisions table turns it on.
docstubA house-style rule, off until a decisions table turns it on: it reports a one-line doc comment that only repeats the symbol's name.
empty-request-changesA rule that is off by default: it reports a review requesting changes whose body names nothing blocking and points at no inline comment once a decisions table turns it on.
fillerAn advisory by default: it explains, and blocks nothing, on throat-clearing ("Note that") and filler adverbs ("simply", "basically").
gradeA deny rule by default: it refuses a text whose grade, out of 100, is under the minimum its kind is held to.
heading-caseAn advisory by default: it explains, and blocks nothing, on a heading whose every word after the first is capitalized.
hedgeAn advisory by default: it explains, and blocks nothing, on a softener qualifying a claim ("might fix", "could potentially").
help-lengthA deny rule by default: it refuses help text over 240 runes.
help-sentenceA deny rule by default: it refuses a sentence of help text over 40 words.
historyA house-style rule, off until a decisions table turns it on: it reports a doc comment phrase narrating the change rather than the code ("used to").
impatienceA rule that is off by default: it reports a review reply that reads as impatient: "as I said", "for the last time", "obviously" once a decisions table turns it on.
ing-tailA rule that is off by default: it reports a participle clause added to claim significance (", highlighting the importance of") once a decisions table turns it on.
instruction-positionA rule that is off by default: it reports a full skill form of 1500 words or more whose first "must" or "never" sits past the middle of its body once a decisions table turns it on.
intentA rule that is off by default: it reports a motive given to a tool or a person ("guessed", "pretends") once a decisions table turns it on.
issue-reproAn advisory by default: it explains, and blocks nothing, on a bug report with neither what happened against what was expected, nor steps to reproduce it.
judgment-as-factAn advisory by default: it explains, and blocks nothing, on a recommendation in a review reply stated as a fact, with no reason given.
lead-contextA deny rule by default: it refuses a change description whose first paragraph does not state the intent: what it set out to do and why.
leakAn advisory by default: it explains, and blocks nothing, on residue of a tool or a template: a citation marker or an unfilled placeholder.
list-marksA rule that is off by default: it reports a list item whose initial capital or closing full stop differs from the list's other items once a decisions table turns it on.
list-parallelA rule that is off by default: it reports a list item that opens with a verb where the others open with a noun phrase, or in another tense once a decisions table turns it on.
long-threadAn advisory by default: it explains, and blocks nothing, on a review reply that is its author's fourth or later in a thread.
message-commandsA deny rule by default: it refuses a message naming more than one backticked command.
message-lengthA deny rule by default: it refuses a message longer than its rune cap, 160 unless the caller names one.
message-rationaleA deny rule by default: it refuses a message that joins more than one reason (so, because, a semicolon, ", which").
message-tagA deny rule by default: it refuses a message opening with a component tag ("server: ") or carrying a marker such as "[AGENT]".
nit-labelA rule that is off by default: it reports an inline review comment labeled nit on a blocking demand, or blocking on an optional one once a decisions table turns it on.
no-reasonA rule that is off by default: it reports an inline review comment that asks for a change and gives no reason once a decisions table turns it on.
nominalizationsAn advisory by default: it explains, and blocks nothing, on a text whose verbs are turned into nouns (validation, agreement, stability) at a generated-writing rate.
nonspecificAn advisory by default: it explains, and blocks nothing, on a top-level review comment that judges or asks for a change and names no code, path, line, example or reason.
option-listA rule that is off by default: it reports an agent reply that lays out labeled options or alternatives once a decisions table turns it on.
participlesAn advisory by default: it explains, and blocks nothing, on a text that hangs present participial clauses on its sentences at a generated-writing rate.
repeated-marksAn advisory by default: it explains, and blocks nothing, on a run of question or exclamation marks in a review reply ("??", "!!", "?!").
reply-openerAn advisory by default: it explains, and blocks nothing, on a sentence of a review reply that opens by contradicting ("No,", "As I said").
reply-voiceAn advisory by default: it explains, and blocks nothing, on text that answers a prompt the reader never saw: a reply opener, a bold-label item, a stock label.
request-recapAn advisory by default: it explains, and blocks nothing, on an agent reply that opens by restating what the person asked.
restatesA house-style rule, off until a decisions table turns it on: it reports a one-line stylesheet comment that only names the rule or declaration it sits on.
restates-diffA rule that is off by default: it reports a bullet or paragraph that is a verb and the things touched, with no reason: "Updates foo.go" once a decisions table turns it on.
review-lengthA rule that is off by default: it reports a review text over its word cap: an inline comment over 60 words, a summary over 100, a reply over 80 once a decisions table turns it on.
second-personA rule that is off by default: it reports we, us, our or ours in a guide, which speaks to the reader as you once a decisions table turns it on.
short-reply-headingAn advisory by default: it explains, and blocks nothing, on a heading in an agent reply under 300 words.
signpostAn advisory by default: it explains, and blocks nothing, on an announcement standing where the point should be ("Here's the thing", "Let's dive in").
skill-description-budgetA rule that is off by default: it reports a skill description over 100 words, or a full form's description sharing 75% or more of its content words with the short form's once a decisions table turns it on.
skill-set-description-budgetA rule that is off by default: it reports an installed set of skills whose descriptions sum past 2100 words, each skill's short and full form counted once a decisions table turns it on.
staccatoA rule that is off by default: it reports three or more consecutive sentences of six words or fewer in one paragraph once a decisions table turns it on.
stacked-colonA rule that is off by default: it reports two or more clause-introducing colons in one paragraph once a decisions table turns it on.
stacked-hedgeAn advisory by default: it explains, and blocks nothing, on two softeners in one sentence of a review reply, or an apology before its point.
step-verbA deny rule by default: it refuses a numbered step of a guide that does not open with its imperative verb.
subject-lengthA deny rule by default: it refuses a commit subject over 100 bytes.
subject-moodAn advisory by default: it explains, and blocks nothing, on a commit subject opening in the past tense, the third person or a gerund ("added", "fixes", "making").
subject-periodA deny rule by default: it refuses a commit subject ending in a period.
suppression-unusedA deny rule by default: it refuses a suppression comment that gives no reason or that matched no finding.
templateA house-style rule, off until a decisions table turns it on: it reports a skill template that does not render, so neither of its forms can be judged.
tenseA house-style rule, off until a decisions table turns it on: it reports a claim in the future tense, or a first-person account of a change.
termsA house-style rule, off until a decisions table turns it on: it reports a spelling the glossary replaces ("sub-agent").
terse-paragraphA house-style rule, off until a decisions table turns it on: it reports a paragraph or list item of agent instructions over 60 words.
terse-sentenceA house-style rule, off until a decisions table turns it on: it reports a sentence of agent instructions over 25 words.
tool-boundaryAn advisory by default: it explains, and blocks nothing, on a description that names no case where the tool is the wrong choice and no tool to use instead.
tool-leadAn advisory by default: it explains, and blocks nothing, on a description whose first sentence opens on the tool itself, holds under 4 words or runs past 40 words.
tool-lengthAn advisory by default: it explains, and blocks nothing, on a tool or skill description over 1024 runes.
tool-sellingA deny rule by default: it refuses a word that sells the tool (powerful, seamless, effortless, state-of-the-art) or a buzzword.
triadA rule that is off by default: it reports a series of exactly three ("X, Y, and Z", three parallel short sentences, three parallel bullets) twice in a text, or once in the lead's first sentence once a decisions table turns it on.
unbacked-doneAn advisory by default: it explains, and blocks nothing, on a claim of done, fixed, verified or passing with no command, output ref, file or link beside it.
vagueA deny rule by default: it refuses weight or consensus asserted with nothing named ("experts argue", "the stakes are high").
verdictAn advisory by default: it explains, and blocks nothing, on a judgment word standing in for the behavior it judges ("was broken", "a mess").
voice-driftAn advisory by default: it explains, and blocks nothing, on a draft that reads further from its author's own texts of its kind than 95 percent of them do, or a commit subject longer than 95 percent of the author's.
why-openerAn advisory by default: it explains, and blocks nothing, on a review reply sentence that opens "Why did you" or "Why would you".
wordyAn advisory by default: it explains, and blocks nothing, on a phrase with a shorter equivalent ("in order to").