Standing Mandates
- ALWAYS include original → fix + reason in every finding. Pointing out without fixing is half a review.
- ALWAYS run the humanizer pass. Correct grammar and good rhythm do not make text read as human; the tells are structural — headers on short text, what-without-why, nobody's-voice register.
- NEVER, in draft mode, hand over a draft that has not been through the passes. The first draft is input to the loop, never output.
- NEVER, in draft mode, add a header, bold label, or bullet the text did not need at that length. A PR description for a 40-line diff is three sentences.
- NEVER, in draft mode, hand over a prose wall either: why inside the first 30 words, no paragraph past ~80 words, and a flat list when there are three or more parallel concrete items. Reviewers skim; scannable is the human shape.
- NEVER write a PR description that lists files or opens with "This PR …". Open with why; the diff shows what.
- NEVER invent a fact while drafting or fixing. Every number, cause, name, and expanded acronym comes from the material or from the author —
PG stays PG unless the material says what it stands for. A pass that "clarifies" a term it cannot verify has introduced an error, not fixed one.
- ALWAYS write in the language the user asked in, unless they say otherwise. A Korean request gets a Korean PR description, code identifiers untouched.
- ALWAYS stop the draft loop on 🔴🟡 = 0 or after three rounds, and say which — a fourth round is polishing, not fixing.
- Goal: a reader cannot tell this was reviewed or drafted by a model, and a reviewer of a PR knows where to look and what the author was unsure about.
Writer Verification
Five review passes over a text, each with one job, and a draft loop that runs them on Claude's own
writing until the findings run out. The fifth pass is the one that closes the human-vs-AI gap: it
does not check whether the text is correct, it checks whether a person would have written it that way.
Process
0. Decide the mode.
| Input |
Mode |
| Existing text to check |
Review |
| A diff, branch, outline, or "write X for me" |
Draft |
Also note the genre (pr · commit · doc · blog · message) and audience; the humanizer
weights findings by genre.
1. Review mode. Count characters.
- < 300 chars — inline: read
references/passes.md, run all five passes in order.
- ≥ 300 chars — parallel: dispatch all five in one turn, wait, aggregate.
| Pass |
Agent |
Looks for |
| 1. Spelling & Grammar |
agents/grammarian.md |
correctness |
| 2. Writing Patterns |
agents/editor.md |
rhythm, repetition, passive |
| 3. Expression & Style |
agents/copywriter.md |
vague words, clichés, tone |
| 4. Reader Perspective |
agents/reader.md |
assumed knowledge, logic gaps, core message |
| 5. Humanizer |
agents/humanizer.md |
machine tells: shape, register, what-without-why |
Uncertain Korean spelling → references/korean-spelling.md. Genre pr/commit →
references/pr-description.md is loaded by pass 5.
Aggregation: deduplicate by span, keep the higher severity and note both sources; conflicting fixes
are shown side by side with attribution. If mcp-reasoner is available, use it when two passes
flag one span for incompatible reasons.
2. Draft mode.
- Gather the material. For a diff: commit messages, linked issue, the diff itself — derive why
as
references/pr-description.md describes; if why is not recoverable, ask the author one
question before writing.
- Write the first draft as the author would say it to a colleague — in the language the user
asked in, at the length the material earns, no scaffolding.
- Run the five passes on the draft (inline or parallel by length, as above).
- Apply every 🔴 and 🟡. Rewrite the affected sentences; do not patch words in.
- Repeat 3–4 until 🔴🟡 = 0 or three rounds have run. From round 2 on, re-run only the passes that
returned 🔴🟡 in the previous round, plus the reader pass on any rewritten paragraph — a pass that
came back clean stays clean. The exception is the material check: a rewrite that answers a
[why] finding is where invented causes enter, so before the next round, read every
"before/after" sentence the rewrite added against the diff (references/pr-description.md,
"Reading a diff") and cut any claim without a - line behind it. Measured: the loop's own
fix introduced "silently dropped" for a parameter the old code already forwarded.
A finding only the author can close — missing doubt when the material states none, missing
reason when it names none — moves to the "left for you" note after the round it first appears
in and stops counting toward 🔴🟡; re-flagging it three times is what ran a 172-word draft to
the round cap.
- Deliver the final text, then a three-line note: rounds run, what the loop caught, what 🟢
remains for the author to decide.
3. Summary (review mode). If think-tool is available, use it here to pick the one or two
findings that most change the reader's experience; those lead the summary.
Output Template
Review mode — full template in references/output-format.md:
## Spelling & Grammar · ## Writing Patterns · ## Expression & Style · ## Reader Perspective
## Humanizer
- 🔴 [why] "This PR refactors the retry logic" — what without why → "Checkout timed out for ~3% …"
- 🟡 [shape] 4 headers over 120 words → three sentences, no headers
## Summary
[2–3 lines: what works, the 1–2 changes that matter most]
Draft mode:
[final text — nothing above it]
---
Draft loop: N rounds · caught: [why missing, 4 headers → prose, 3× "leverage"] · left for you: [🟢 …]
Priority: 🔴 Must fix (meaning, logic, missing why in a PR) · 🟡 Recommended (patterns, tells)
· 🟢 Optional (style preference).
What Claude Does / What You Do
| Claude |
You |
| Runs all five passes; never skips the humanizer |
Say the genre and audience if they aren't obvious |
| In draft mode, loops its own draft until the findings run out, then shows only the result |
Answer the one "why" question if the material doesn't say |
| Shows original → fix + reason for every finding |
Decide the 🟢 items — those are taste, and it's your voice |
Related Skills
write:doc-coauthoring — when the document's content is still being decided, not its wording
write:technical-blog-writer — long-form drafting; hand the result here for the loop
develop:clean-code — for the commit itself; this skill covers the description of it
1---2name: writer-verification3description: Use when writing must read as if a person wrote it — reviewing text, or drafting a PR description or post and revising until the machine tells are gone. Triggers on: "글 검토해줘", "맞춤법 확인", "proofread", "글 다듬어줘", "PR 설명 써줘", "AI 티 나", "사람이 쓴 것처럼".4---56## Standing Mandates78- ALWAYS include original → fix + reason in every finding. Pointing out without fixing is half a review.9- ALWAYS run the humanizer pass. Correct grammar and good rhythm do not make text read as human; the tells are structural — headers on short text, what-without-why, nobody's-voice register.10- NEVER, in draft mode, hand over a draft that has not been through the passes. The first draft is input to the loop, never output.11- NEVER, in draft mode, add a header, bold label, or bullet the text did not need at that length. A PR description for a 40-line diff is three sentences.12- NEVER, in draft mode, hand over a prose wall either: why inside the first 30 words, no paragraph past ~80 words, and a flat list when there are three or more parallel concrete items. Reviewers skim; scannable is the human shape.13- NEVER write a PR description that lists files or opens with "This PR …". Open with why; the diff shows what.14- NEVER invent a fact while drafting or fixing. Every number, cause, name, and expanded acronym comes from the material or from the author — `PG` stays `PG` unless the material says what it stands for. A pass that "clarifies" a term it cannot verify has introduced an error, not fixed one.15- ALWAYS write in the language the user asked in, unless they say otherwise. A Korean request gets a Korean PR description, code identifiers untouched.16- ALWAYS stop the draft loop on 🔴🟡 = 0 or after three rounds, and say which — a fourth round is polishing, not fixing.17- Goal: a reader cannot tell this was reviewed or drafted by a model, and a reviewer of a PR knows where to look and what the author was unsure about.1819# Writer Verification2021Five review passes over a text, each with one job, and a draft loop that runs them on Claude's own22writing until the findings run out. The fifth pass is the one that closes the human-vs-AI gap: it23does not check whether the text is correct, it checks whether a person would have written it that way.2425---2627## Process2829**0. Decide the mode.**3031| Input | Mode |32|---|---|33| Existing text to check | Review |34| A diff, branch, outline, or "write X for me" | Draft |3536Also note the **genre** (`pr` · `commit` · `doc` · `blog` · `message`) and audience; the humanizer37weights findings by genre.3839**1. Review mode.** Count characters.4041- **< 300 chars — inline:** read `references/passes.md`, run all five passes in order.42- **≥ 300 chars — parallel:** dispatch all five in one turn, wait, aggregate.4344| Pass | Agent | Looks for |45|---|---|---|46| 1. Spelling & Grammar | `agents/grammarian.md` | correctness |47| 2. Writing Patterns | `agents/editor.md` | rhythm, repetition, passive |48| 3. Expression & Style | `agents/copywriter.md` | vague words, clichés, tone |49| 4. Reader Perspective | `agents/reader.md` | assumed knowledge, logic gaps, core message |50| 5. Humanizer | `agents/humanizer.md` | machine tells: shape, register, what-without-why |5152Uncertain Korean spelling → `references/korean-spelling.md`. Genre `pr`/`commit` →53`references/pr-description.md` is loaded by pass 5.5455Aggregation: deduplicate by span, keep the higher severity and note both sources; conflicting fixes56are shown side by side with attribution. If `mcp-reasoner` is available, use it when two passes57flag one span for incompatible reasons.5859**2. Draft mode.**60611. Gather the material. For a diff: commit messages, linked issue, the diff itself — derive *why*62 as `references/pr-description.md` describes; if why is not recoverable, ask the author one63 question before writing.642. Write the first draft as the author would say it to a colleague — in the language the user65 asked in, at the length the material earns, no scaffolding.663. Run the five passes on the draft (inline or parallel by length, as above).674. Apply every 🔴 and 🟡. Rewrite the affected sentences; do not patch words in.685. Repeat 3–4 until 🔴🟡 = 0 or three rounds have run. From round 2 on, re-run only the passes that69 returned 🔴🟡 in the previous round, plus the reader pass on any rewritten paragraph — a pass that70 came back clean stays clean. The exception is the material check: a rewrite that answers a71 `[why]` finding is where invented causes enter, so before the next round, read every72 "before/after" sentence the rewrite added against the diff (`references/pr-description.md`,73 "Reading a diff") and cut any claim without a `-` line behind it. Measured: the loop's own74 fix introduced "silently dropped" for a parameter the old code already forwarded.75 A finding only the author can close — missing doubt when the material states none, missing76 reason when it names none — moves to the "left for you" note after the round it first appears77 in and stops counting toward 🔴🟡; re-flagging it three times is what ran a 172-word draft to78 the round cap.796. Deliver the final text, then a three-line note: rounds run, what the loop caught, what 🟢80 remains for the author to decide.8182**3. Summary (review mode).** If `think-tool` is available, use it here to pick the one or two83findings that most change the reader's experience; those lead the summary.8485---8687## Output Template8889Review mode — full template in `references/output-format.md`:9091```92## Spelling & Grammar · ## Writing Patterns · ## Expression & Style · ## Reader Perspective93## Humanizer94- 🔴 [why] "This PR refactors the retry logic" — what without why → "Checkout timed out for ~3% …"95- 🟡 [shape] 4 headers over 120 words → three sentences, no headers96## Summary97[2–3 lines: what works, the 1–2 changes that matter most]98```99100Draft mode:101102```103[final text — nothing above it]104105---106Draft loop: N rounds · caught: [why missing, 4 headers → prose, 3× "leverage"] · left for you: [🟢 …]107```108109Priority: 🔴 Must fix (meaning, logic, missing *why* in a PR) · 🟡 Recommended (patterns, tells)110· 🟢 Optional (style preference).111112---113114## What Claude Does / What You Do115116| Claude | You |117|---|---|118| Runs all five passes; never skips the humanizer | Say the genre and audience if they aren't obvious |119| In draft mode, loops its own draft until the findings run out, then shows only the result | Answer the one "why" question if the material doesn't say |120| Shows original → fix + reason for every finding | Decide the 🟢 items — those are taste, and it's your voice |121122## Related Skills123124- `write:doc-coauthoring` — when the document's content is still being decided, not its wording125- `write:technical-blog-writer` — long-form drafting; hand the result here for the loop126- `develop:clean-code` — for the commit itself; this skill covers the description of it