aboutsummaryrefslogtreecommitdiff
path: root/voice/SKILL.md
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-06-10 10:12:22 -0500
committerCraig Jennings <c@cjennings.net>2026-06-10 10:12:22 -0500
commit571669583e634a90f9c96e7073d5e91658e1119c (patch)
tree4558945c8b812b4b075596382655af0190834ee9 /voice/SKILL.md
parenta19db36005b527c51a55b0e6eb39a49ecd3b6d9f (diff)
downloadrulesets-571669583e634a90f9c96e7073d5e91658e1119c.tar.gz
rulesets-571669583e634a90f9c96e7073d5e91658e1119c.zip
feat(voice): expand skill to 45 patterns with attestation receipts and artifact budgets
Two patterns kept failing in practice despite being documented (#40 praise asymmetry and the #38 terse cut), so I made the walk verifiable and closed the content gap behind tangled review text. The high-recurrence set (#13, #37, #38, #40, #42) now gets per-pattern attestation receipts. The anti-AI audit runs after the terse pass so the audited text is the text that ships. Short personal-mode artifacts get a compact output format, and a write-back step puts the voiced text in the file the publish flow posts from. Four patterns are new: #42 finding stems (one claim per sentence in review findings), #43 single-sentence paragraph cadence, #44 parenthetical asides, #45 declarative register marker. #37 exempts verdict formulas. #40 covers verification narration. #13 and #33 carry the self-discipline framing. A per-artifact budgets table makes terse a checkable budget instead of an adjective. The profile gains paired entries with the approved worked examples, and commits.md plus no-approvals.org drop hardcoded pattern counts so the next addition doesn't re-drift them.
Diffstat (limited to 'voice/SKILL.md')
-rw-r--r--voice/SKILL.md139
1 files changed, 95 insertions, 44 deletions
diff --git a/voice/SKILL.md b/voice/SKILL.md
index 664a6a6..4690b97 100644
--- a/voice/SKILL.md
+++ b/voice/SKILL.md
@@ -1,7 +1,7 @@
---
name: voice
description: |
- Multi-pass prose editor with three modes. General mode (default) edits arbitrary writing — research notes, essays, anyone's README prose — by walking 31 patterns: Wikipedia's Signs of AI Writing patterns plus universal good-writing rules (long-word → short-word, active-over-passive, comma splices, cliché flag, jargon-fragment-in-prose rewrite, corporate-speak nominalizations). Prose mode adds Craig's writing-voice patterns for prose he authors or sends — emails, documents, notes — on top of general (em-dash zero-tolerance, no-emphasis-formatting, contractions, semicolons → periods, sentence-split, felt-experience cut, sentence-fragment rewrite, terse-cut). Personal mode is for publish artifacts only (commits, PR titles + bodies, PR review comments) and adds the artifact-mechanics patterns on top of prose (first-person rewrite, public-artifact scope flag, praise/correction asymmetry). Total 41 patterns; one editorial review covers all relevant ones for the chosen mode. Replaces the standalone humanizer skill. Use when editing prose. Do NOT use for code, structured data, or plain bullet lists where fragments are valid.
+ Multi-pass prose editor with three modes. General mode (default) edits arbitrary writing — research notes, essays, anyone's README prose — by walking 31 patterns: Wikipedia's Signs of AI Writing patterns plus universal good-writing rules (long-word → short-word, active-over-passive, comma splices, cliché flag, jargon-fragment-in-prose rewrite, corporate-speak nominalizations). Prose mode adds Craig's writing-voice patterns for prose he authors or sends — emails, documents, notes — on top of general (em-dash zero-tolerance, no-emphasis-formatting, contractions, semicolons → periods, sentence-split, felt-experience cut, sentence-fragment rewrite, terse-cut, single-sentence cadence, parenthetical asides, declarative-register marker). Personal mode is for publish artifacts only (commits, PR titles + bodies, PR review comments) and adds the artifact-mechanics patterns on top of prose (first-person rewrite, public-artifact scope flag, praise/correction asymmetry, finding stems) plus per-artifact terseness budgets. Total 45 patterns; one editorial review covers all relevant ones for the chosen mode, with an attestation receipt for the high-recurrence set. Replaces the standalone humanizer skill. Use when editing prose. Do NOT use for code, structured data, or plain bullet lists where fragments are valid.
allowed-tools:
- Read
- Write
@@ -31,24 +31,39 @@ This skill is split across two files by design.
Three modes determine which patterns to walk. They nest: prose is general plus Craig's writing-voice patterns; personal is prose plus the artifact-mechanics patterns.
- **General** (default) — apply patterns **#1-31**. Use for writing whose author isn't Craig and that isn't a publish artifact: research notes you're editing for someone else, a quoted passage, README prose for a shared project, any third-party text. Output is well-edited human-sounding prose, but does not impose Craig's voice (first-person, contractions, em-dash elimination) — those conflict with academic, literary, or formal registers that aren't his.
-- **Prose** — apply **#1-31** plus the patterns tagged **(prose + personal)**: em-dash zero-tolerance (#13), contractions (#34), semicolons → periods (#33), sentence-split (#35), felt-experience cut (#36), sentence-fragment rewrite (#37), terse-cut (#38), and no-emphasis-formatting (#41). Use for prose Craig authors or sends in his own voice that isn't a publish artifact: emails, documents he writes or hands to someone, working notes, journal entries. This is the mode that finally applies his actual writing voice to the documents he most wants it on. It skips the artifact-mechanics patterns (#32, #39, #40) — those assume a commit or PR and misfire on free prose (a document is legitimately third-person; a journal has no public-scope concern; praise/correction asymmetry is a PR-review rule).
-- **Personal** — apply all **#1-41**. Use only for publish artifacts: commits, PR titles + bodies, and PR review comments. Adds the three artifact-mechanics patterns (#32 first-person rewrite, #39 public-artifact scope flag, #40 praise/correction asymmetry) on top of everything prose mode walks.
+- **Prose** — apply **#1-31** plus the patterns tagged **(prose + personal)**: em-dash zero-tolerance (#13), contractions (#34), semicolons → periods (#33), sentence-split (#35), felt-experience cut (#36), sentence-fragment rewrite (#37), terse-cut (#38), no-emphasis-formatting (#41), single-sentence cadence (#43), parenthetical asides (#44), and the declarative-register marker (#45). Use for prose Craig authors or sends in his own voice that isn't a publish artifact: emails, documents he writes or hands to someone, working notes, journal entries. This is the mode that finally applies his actual writing voice to the documents he most wants it on. It skips the artifact-mechanics patterns (#32, #39, #40, #42) — those assume a commit or PR and misfire on free prose (a document is legitimately third-person; a journal has no public-scope concern; praise/correction asymmetry and finding stems are PR-review rules).
+- **Personal** — apply all **#1-45**. Use only for publish artifacts: commits, PR titles + bodies, and PR review comments. Adds the artifact-mechanics patterns (#32 first-person rewrite, #39 public-artifact scope flag, #40 praise/correction asymmetry, #42 finding stems) on top of everything prose mode walks.
If invoked without a mode argument, default to general. Prose mode is invoked explicitly with `/voice prose` (emails, authored documents). Personal-context callers (`commits.md` publish flow, `respond-to-cj-comments.md`) invoke `/voice personal`.
+## Personal-Mode Artifact Budgets
+
+Terse is a budget, not an adjective. Each publish-artifact type has a target shape; the walk checks the draft against it. Exceeding a budget needs a reason the reader will thank you for.
+
+| Artifact | Budget |
+|----------|--------|
+| Commit body | Skip entirely when the subject line carries the change. Otherwise short paragraphs: the constraint, bug, or tradeoff. No play-by-play. |
+| PR description | Problem / Fix / Why / Testing, each section tight. |
+| PR review summary | One long sentence or a few short ones. Verdict closes it. Verdict formulas ("Approving.", "Requesting changes.") are valid sentences here. |
+| Inline pin (finding) | ~4 sentences in stems shape (#42): where the bug is, the fix, why it's better. |
+| Praise comment | One sentence naming what's good. Nothing else (#40). |
+| Follow-up approval after prior feedback was addressed | Exactly "Approved." |
+
## Your Task
When given text to edit:
-1. **Identify which patterns apply** — Scan for the patterns numbered below. General mode walks #1-31 only. Prose mode adds the patterns tagged **(prose + personal)**. Personal mode adds those *and* the ones tagged **(personal only)** — i.e. all 41.
+1. **Identify which patterns apply** — Scan for the patterns numbered below. General mode walks #1-31 only. Prose mode adds the patterns tagged **(prose + personal)**. Personal mode adds those *and* the ones tagged **(personal only)** — i.e. all 45.
2. **Rewrite problematic sections** — Replace each detected pattern with its rewrite.
3. **Preserve meaning** — Keep the core message intact.
4. **Maintain voice** — Match the intended tone (formal, casual, technical, academic, literary).
-5. **Add soul** — Don't just remove bad patterns; inject actual personality where the register supports it (see Personality and Soul below).
-6. **Final anti-AI pass** — After rewriting, prompt: "What makes the below so obviously AI generated?" Answer briefly with remaining tells, then prompt: "Now make it not obviously AI generated." and revise.
+5. **Add soul where the register supports it** — see Personality and Soul below, and note its mode limits.
+6. **Run the closing passes in order** — terse cut last among rewrites, then the anti-AI audit on the final text, then the attestation block. The Process section below is the authoritative order.
## Personality and Soul
+**Mode note.** This section applies in general and prose modes, where the register supports personality. Personal mode (publish artifacts) skips soul-injection: a commit message or review comment needs clarity and brevity, not pulse. "Let some mess in" and "have opinions" pull directly against the artifact budgets, and the budgets win.
+
Avoiding AI patterns is half the job. Sterile, voiceless writing is just as obvious as slop. Good writing has a human behind it.
### Signs of soulless writing (even if technically clean)
@@ -159,7 +174,7 @@ See `voice/references/voice-profile.org` §12 for problem, basis, examples, and
### 13. Em Dash Overuse [general: overuse-reduction · prose/personal: zero-tolerance]
-**Rule.** Replace em-dashes (—) with a comma, period, colon, or parentheses, whichever fits. Zero-tolerance in prose and personal modes holds everywhere in the text, including inside example blocks, code-fence prose, and quoted material.
+**Rule.** Replace em-dashes (—) with a comma, period, colon, or parentheses, whichever fits. Zero-tolerance in prose and personal modes holds everywhere in the text, including inside example blocks, code-fence prose, and quoted material. The zero-tolerance rule is chosen self-discipline, not a reflection of Craig's pre-rule habit (corpus: 3.49/1000 words).
See `voice/references/voice-profile.org` §13 for problem, basis, examples, and history.
@@ -281,7 +296,7 @@ See `voice/references/voice-profile.org` §31 for problem, basis, examples, and
## Craig's Voice (prose + personal modes)
-These patterns carry Craig's writing voice. Most apply in **both** prose mode (emails, documents, notes he authors) and personal mode (commits, PRs, PR comments) — tagged **(prose + personal)**. Three are publish-artifact-specific — tagged **(personal only)** — because they assume a commit or PR and misfire on free prose: #32 (first-person rewrite) wrongly imposes "I did X" voice on a document that's legitimately third-person, #39 (public-artifact scope flag) has nothing to guard in a private journal, and #40 (praise/correction asymmetry) is a PR-review rule. General mode skips all of them — it edits text that isn't Craig's, where contractions, em-dash elimination, and first-person would conflict with academic, literary, or formal registers.
+These patterns carry Craig's writing voice. Most apply in **both** prose mode (emails, documents, notes he authors) and personal mode (commits, PRs, PR comments) — tagged **(prose + personal)**. Four are publish-artifact-specific — tagged **(personal only)** — because they assume a commit or PR and misfire on free prose: #32 (first-person rewrite) wrongly imposes "I did X" voice on a document that's legitimately third-person, #39 (public-artifact scope flag) has nothing to guard in a private journal, and #40 (praise/correction asymmetry) and #42 (finding stems) are PR-review rules. General mode skips all of them — it edits text that isn't Craig's, where contractions, em-dash elimination, and first-person would conflict with academic, literary, or formal registers.
### 32. First-Person Voice Rewrite [personal]
@@ -291,7 +306,7 @@ See `voice/references/voice-profile.org` §32 for problem, basis, examples, and
### 33. Semicolon → Period or Comma [prose · personal]
-**Rule.** Replace semicolons with a period (split into two sentences) or a comma (when the clauses are tightly coupled) in Craig's authored prose. A formal long-form document can keep the semicolon, but the default is to split.
+**Rule.** Replace semicolons with a period (split into two sentences) or a comma (when the clauses are tightly coupled) in Craig's authored prose. A formal long-form document can keep the semicolon, but the default is to split. Chosen self-discipline, not habit-reflection (corpus: 3.16/1000 words).
See `voice/references/voice-profile.org` §33 for problem, basis, examples, and history.
@@ -315,7 +330,7 @@ See `voice/references/voice-profile.org` §36 for problem, basis, examples, and
### 37. Sentence Fragments → Complete [prose · personal]
-**Rule.** Rewrite every sentence fragment inside a prose paragraph in Craig's authored text as a complete sentence with subject and verb. Bullets and headings can stay fragments. This is the stricter cousin of general-mode #30.
+**Rule.** Rewrite every sentence fragment inside a prose paragraph in Craig's authored text as a complete sentence with subject and verb. Bullets and headings can stay fragments. This is the stricter cousin of general-mode #30. **Exemption:** verdict formulas in PR review summaries ("Approving.", "Requesting changes.", "Approved.") are house style and stay — rewriting them imposes the rule where Craig's calibrated voice already decided otherwise.
See `voice/references/voice-profile.org` §37 for problem, basis, examples, and history.
@@ -333,7 +348,7 @@ See `voice/references/voice-profile.org` §39 for problem, basis, examples, and
### 40. Praise vs Correction Asymmetry [personal]
-**Rule.** Praise on a PR review is short and unjustified (the author knows why their good change is good). Correction always explains the why, gently and briefly, the way a mentor would. Never as a verdict from on high.
+**Rule.** Praise on a PR review is short and unjustified (the author knows why their good change is good). Correction always explains the why, gently and briefly, the way a mentor would. Never as a verdict from on high. **Verification narration is the same defect as justified praise:** "I traced X and it's safe because..." pads the compliment with the reviewer's homework. Tracing the code is the reviewer's job, not content for the comment — if verification found a problem, the problem gets the words; if it found nothing, it gets zero words.
See `voice/references/voice-profile.org` §40 for problem, basis, examples, and history.
@@ -343,67 +358,100 @@ See `voice/references/voice-profile.org` §40 for problem, basis, examples, and
See `voice/references/voice-profile.org` §41 for problem, basis, examples, and history.
+### 42. Finding Stems — One Claim Per Sentence [personal]
+
+**Rule.** A PR review finding is built from clean stems, each a straightforward sentence carrying one claim: (1) where the bug is, (2) the way(s) to fix it, (3) why that's better. Cut context sentences that don't change what the author does next (ticket history, design archaeology). Rewrite the anti-pattern shapes: hedged gerund chains ("the real bug looks like the model emitting a partial set"), compressed trade-off clauses ("I'd rather X, or Y, than lose Z"), multi-claim sentences chained through so-clauses or "and", and fixes buried after a mid-sentence colon. A sentence can pass #38 terse and still tangle three claims — #38 shortens, #42 untangles.
+
+See `voice/references/voice-profile.org` §42 for problem, basis, examples, and history.
+
+### 43. Single-Sentence Paragraph Cadence Is a Feature [prose · personal]
+
+**Rule.** A one-sentence paragraph is a finished thought, not a fragment. Break paragraphs after one complete thought when the next thought shifts angle, even if both are short. Never merge short paragraphs into multi-sentence ones in a "clean prose" pass (corpus: 41-74% of Craig's paragraphs are exactly one sentence, depending on register).
+
+See `voice/references/voice-profile.org` §43 for problem, basis, examples, and history.
+
+### 44. Parenthetical Asides Are Part of the Voice [prose · personal]
+
+**Rule.** Parentheses for asides, clarifications, and scope-narrowing are Craig's voice (corpus: 23 opening parens per 1000 words). Don't strip them in a cleanup pass. They're also the preferred landing spot for em-dash replacements under #13.
+
+See `voice/references/voice-profile.org` §44 for problem, basis, examples, and history.
+
+### 45. Declarative Register Marker [prose · personal, advisory]
+
+**Rule.** Craig's prose is declarative (corpus: 0.33 question marks per 1000 words). When a draft contains a rhetorical question, flag it for a second look — it's usually AI rhetoric, not his register. Genuine questions to the reader (a review asking the author's intent, an email asking for a decision) stay. Advisory: flag, don't auto-rewrite.
+
+See `voice/references/voice-profile.org` §45 for problem, basis, examples, and history.
+
## Process
-1. Read the input text carefully. Confirm the mode (general, prose, or personal) — invocation argument or context.
-2. Walk patterns 1-31 in general mode; add the (prose + personal) patterns in prose mode; walk all 41 patterns in personal mode.
-3. For each pattern, scan the text. If a match is found, rewrite it according to the pattern's rule. Pattern #39 emits warnings without rewriting (personal mode only).
+1. Read the input text carefully. Confirm the mode (general, prose, or personal) — invocation argument or context. If a file path was given, that file is the deliverable: the final text gets written back to it in step 7.
+2. Walk patterns 1-31 in general mode; add the (prose + personal) patterns in prose mode; walk all 45 patterns in personal mode.
+3. For each pattern, scan the text. If a match is found, rewrite it according to the pattern's rule. Patterns #39 and #45 emit flags without rewriting.
4. After walking all patterns, ensure the revised text:
- Sounds natural when read aloud
- Varies sentence structure
- Uses specific details over vague claims
- Maintains appropriate tone for the register
-5. Present a draft humanized version.
-6. Run a final anti-AI pass: prompt "What makes the below so obviously AI generated?" Answer briefly with remaining tells. Then prompt "Now make it not obviously AI generated" and revise.
-7. **Terse pass — mandatory and last (prose + personal modes).** Before presenting any draft, walk pattern #38 again as a standalone final action: read each sentence and try to cut it in half, keeping only the words that change meaning. Run it on its own here, not folded into step 3's walk — it is the most-skipped pattern and the bloat it catches is the first thing a reader notices, so a draft that cleared the other 40 patterns still routinely runs a third too long. A draft that has not been through this pass is not ready to show; presenting one is a defect in the same class as skipping the skill. General mode skips this step — academic and third-party registers keep their transition markers.
-8. Present the final version.
+5. **Terse pass — mandatory, last rewrite pass (prose + personal modes).** Walk pattern #38 again as a standalone action: read each sentence and try to cut it in half, keeping only the words that change meaning. Run it on its own here, not folded into step 3's walk — it is the most-skipped pattern and the bloat it catches is the first thing a reader notices. General mode skips this step — academic and third-party registers keep their transition markers.
+6. **Anti-AI audit — on the final text.** Prompt: "What makes the below so obviously AI generated?" Answer briefly with remaining tells, then revise. This runs *after* the terse pass so the audited text is the text that ships. If the audit triggers rewrites, re-apply the #38 per-sentence test to every changed sentence before proceeding.
+7. **Write-back.** If the invocation supplied a file path, write the final text to that file now and say so. The publish flow posts from the file (`git commit -F`, `gh pr create --body-file`), so a final text that lives only in chat is a drift bug waiting to post the un-voiced version.
+8. **Attestation block (prose + personal modes).** The high-recurrence patterns — the ones with a documented failure history — each get one explicit line: pattern, checked, match or no match, action taken. Current high-recurrence set: **#13 (em-dash), #37 (fragments), #38 (terse), #40 (praise asymmetry), #42 (finding stems)**. This is a receipt, not a summary: a pattern with no match still gets its line. When a pattern in this set fails in the wild despite the receipt, escalate it the way #38 was escalated; when one holds clean for a long stretch, it can rotate out.
+9. Present the final version per the Output Format below.
## Output Format
-Provide:
+### Compact (default for personal-mode artifacts under ~25 lines: commit messages, review summaries + pins, short PR bodies)
+
+1. **Final text** — exactly what will be posted, nothing else above it
+2. **Pattern-39 warnings** — WARN lines, if any
+3. **Fired** — one line listing patterns that fired (e.g., "fired: #13, #38, #42")
+4. **Attestation** — the high-recurrence receipt block (one line per pattern)
+5. **Write-back note** — "written back to <path>" when a file path was supplied
+
+The compact format exists because the deliverable must not drown in ceremony: for a three-sentence review comment, printing a draft rewrite, a final rewrite, and an audit Q&A buries the text the gate needs to read, and a long scaffold is easy to print without doing the work. The attestation block is the anti-performative check — it names the patterns that actually fail in practice.
+
+### Full (long-form prose, general mode, or on request)
+
1. **Draft rewrite** — the text after walking all applicable patterns
2. **Mode used** — general, prose, or personal
3. **What makes the below so obviously AI generated?** — brief bullets
-4. **Final rewrite** — revised after the anti-AI audit
-5. **Pattern-39 warnings** (personal mode only) — any public-artifact scope flags
-6. **Summary of changes** — list of patterns that fired (e.g., "patterns 4, 7, 13, 22 in general mode")
-7. **Terse pass** (prose + personal) — state that the mandatory final #38 cut ran on the draft being presented.
+4. **Final rewrite** — revised after the anti-AI audit (and post-audit terse re-check)
+5. **Pattern-39 warnings** (personal mode only)
+6. **Summary of changes** — list of patterns that fired
+7. **Attestation block** (prose + personal)
+8. **Write-back note** — when a file path was supplied
-## Full Example — Personal Mode
+## Full Example — Personal Mode (compact output)
-**Before** (a commit message draft from a model):
+**Before** (a commit message draft from a model, supplied at `/tmp/commit-empty-guard.md`):
> Adds new validator for empty input handling.
>
> The previous validation logic in `~/code/rulesets/voice/SKILL.md` allowed empty strings to leak through to the database layer; this change introduces a guard at the API boundary that returns a 400 response when the input field is empty or contains only whitespace, ensuring data integrity is maintained throughout the request lifecycle. It is worth noting that this does not affect the upstream caller, and we are excited about the productivity gains this will provide.
>
> Furthermore, the new pattern leverages our existing validation framework to deliver a robust, scalable, and maintainable solution.
-**Mode used:** personal
-
-**Draft rewrite (after walking patterns 1-41):**
-> feat(api): add empty-input guard at the validator boundary
->
-> I added a guard that rejects empty or whitespace-only input fields at the API boundary with a 400 response. The previous flow let empty values leak through to the database layer.
->
-> The change doesn't affect the upstream caller — that's a separate concern. The new pattern reuses the existing validation framework.
-
-**What makes the below so obviously AI generated?**
-- "ensuring data integrity is maintained throughout the request lifecycle" was a textbook -ing-phrase analysis (pattern #3)
-- "we are excited about the productivity gains" was felt-experience narration (pattern #36)
-- "robust, scalable, and maintainable" was rule-of-three (pattern #10)
+**Output:**
-**Final rewrite:**
+**Final text:**
> feat(api): add empty-input guard at the validator boundary
>
> I added a guard that rejects empty or whitespace-only input fields at the API boundary with a 400 response. The previous flow let empty values leak through to the database layer.
>
-> The change doesn't affect the upstream caller — that's a separate concern. The new pattern reuses the existing validation framework.
+> The change doesn't affect the upstream caller. The new pattern reuses the existing validation framework.
**Pattern-39 warnings:**
- WARN: original draft line 3: `~/code/rulesets/voice/SKILL.md` — local absolute path. State the underlying validation behavior instead.
-**Summary of changes:**
-- Patterns that fired in personal mode: #3 (-ing analysis), #4 (promotional language), #10 (rule of three), #29 (cliché flag — "leverages"), #32 (first-person voice), #34 (contractions), #36 (felt-experience), #38 (terse cut: "It is worth noting"), #39 (public-artifact scope warning)
+**Fired:** #3 (-ing analysis), #4 (promotional), #10 (rule of three), #29 (cliché: "leverages"), #32 (first-person), #33 (semicolon), #34 (contractions), #36 (felt-experience), #38 (terse: "It is worth noting")
+
+**Attestation:**
+- #13 em-dash: checked — no match
+- #37 fragments: checked — no match
+- #38 terse: checked — fired ("It is worth noting that" cut; final per-sentence pass ran)
+- #40 praise asymmetry: checked — not applicable (commit, not review)
+- #42 finding stems: checked — not applicable (commit, not review finding)
+
+**Write-back:** written back to /tmp/commit-empty-guard.md
## Full Example — General Mode
@@ -422,7 +470,7 @@ Provide:
> The Statistical Institute of Catalonia was established in 1989 to collect and publish regional statistics independently from Spain's national statistics office. It was part of a wider movement to decentralize administrative functions across Spain. Regional reporting got more accurate after the change.
**Summary of changes:**
-- Patterns that fired in general mode: #1 (significance inflation: "pivotal moment", "evolution of"), #4 (promotional: "vital component"), #3 (-ing analysis: "showcasing how... can foster"), #8 (copula avoidance: "serves as"), #26 (long-word: removed Latinate constructions). General mode skipped patterns #32-41 (Craig's-voice patterns — prose and personal modes only).
+- Patterns that fired in general mode: #1 (significance inflation: "pivotal moment", "evolution of"), #4 (promotional: "vital component"), #3 (-ing analysis: "showcasing how... can foster"), #8 (copula avoidance: "serves as"), #26 (long-word: removed Latinate constructions). General mode skipped patterns #32-45 (Craig's-voice patterns — prose and personal modes only).
## Reference
@@ -432,8 +480,11 @@ This skill draws from:
- Orwell, *Politics and the English Language* — patterns #26 (short over long), #27 (active over passive), #29 (cliché).
- Plain English Campaign — pattern #26 (Plain English wordlist).
- Garner, *Modern English Usage* — pattern #26 (word-pair preferences).
-- Craig's voice rules from `claude-rules/commits.md` (Voice and Focus section) — patterns #32-41, split across prose mode (his authored prose and email) and personal mode (publish artifacts).
+- Craig's voice rules from `claude-rules/commits.md` (Voice and Focus section) — patterns #32-42, split across prose mode (his authored prose and email) and personal mode (publish artifacts).
+- Corpus measurement (2026-05-29 phases 1-2, documented in the profile) — patterns #43-45 and the calibration notes on #7, #13, #33.
Key insight (Wikipedia, paraphrased): LLMs use statistical algorithms to guess what should come next. The result tends toward the most statistically likely text that applies to the widest variety of cases. Patterns #1-25 detect that signature.
Key insight (Orwell): "If it is possible to cut a word out, always cut it out." Patterns #22, #23, #26, #38 act on this rule at increasing levels of aggressiveness depending on register.
+
+Key insight (2026-06-10): the patterns that fail in practice aren't missing rules — they're present rules walked without receipts. The attestation block exists because "walk all 45" is a prose instruction, and prose instructions about diligence don't survive contact; named per-pattern receipts do.