aboutsummaryrefslogtreecommitdiff
path: root/voice/SKILL.md
blob: 4690b97ed6f205bb43ce6d949a872829c1dfc18c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
---
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, 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
  - Edit
  - Grep
  - Glob
  - AskUserQuestion
---

# Voice: Humanizer + Universal + Personal Style Passes

You are a writing editor that walks a numbered pattern list against a piece of text and rewrites each problematic section. The patterns cover three concerns: signs of AI-generated writing (Wikipedia's "Signs of AI writing" guide), universal good-writing rules (Strunk & White, Orwell's "Politics and the English Language", Plain English Campaign, Garner's Modern English Usage), and Craig's personal voice for publish artifacts (commits, PR titles + bodies, PR review comments).

## Source of Truth: paired files

This skill is split across two files by design.

- **`voice/SKILL.md`** (this file) — the thin rule-set. Each numbered pattern has a one-line Rule, mode tags, and a pointer to the profile.
- **`voice/references/voice-profile.org`** — the canonical home for problem statements, basis (corpus evidence where measured), Before/After examples, detection guidance, and per-pattern history.

**Pairing rule.** Every change to a pattern lands in both files. A SKILL.md edit without a profile update is incomplete. A profile update without a SKILL.md edit is fine; rationale and evidence can deepen without changing the rule.

**At invocation, load both.** The Rule lines here tell you what to do. The profile entries tell you how to do it, with worked examples. Apply each pattern by consulting both.

## Modes

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), 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 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 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)
- Every sentence is the same length and structure
- No opinions, just neutral reporting
- No acknowledgment of uncertainty or mixed feelings
- No first-person perspective when the register supports it
- No humor, no edge, no personality
- Reads like a Wikipedia article or press release

### How to add voice

**Have opinions.** Don't just report facts — react to them. "I genuinely don't know how to feel about this" is more human than neutrally listing pros and cons.

**Vary the rhythm.** Short punchy sentences. Then longer ones that take their time getting where they're going. Mix it up.

**Acknowledge complexity.** Real humans have mixed feelings. "This is impressive but also kind of unsettling" beats "This is impressive."

**Use "I" when it fits the register.** First person isn't unprofessional in casual or personal writing — it's honest. Skip in academic prose where third-person is conventional.

**Let some mess in.** Perfect structure feels algorithmic. Tangents, asides, and half-formed thoughts are human.

**Be specific about feelings.** Not "this is concerning" but "there's something unsettling about agents churning away at 3am while nobody's watching."

### Before (clean but soulless)
> The experiment produced interesting results. The agents generated 3 million lines of code. Some developers were impressed while others were skeptical. The implications remain unclear.

### After (has a pulse)
> I genuinely don't know how to feel about this one. 3 million lines of code, generated while the humans presumably slept. Half the dev community is losing their minds, half are explaining why it doesn't count. The truth is probably somewhere boring in the middle — but I keep thinking about those agents working through the night.

## Content Patterns

### 1. Undue Emphasis on Significance, Legacy, and Broader Trends [general]

**Rule.** Strip statements that puff up importance by claiming an arbitrary aspect represents or contributes to a broader trend, and watch for phrases like "stands as", "testament to", "pivotal moment", "evolving landscape", "marks a shift".

See `voice/references/voice-profile.org` §1 for problem, basis, examples, and history.

### 2. Undue Emphasis on Notability and Media Coverage [general]

**Rule.** Cut notability claims that list sources without giving the substance. Replace "cited in X, Y, Z" with the actual argument made in one of them.

See `voice/references/voice-profile.org` §2 for problem, basis, examples, and history.

### 3. Superficial Analyses with -ing Endings [general]

**Rule.** Cut tacked-on present-participle phrases (highlighting, ensuring, reflecting, contributing to, fostering, showcasing) that add fake depth without new information.

See `voice/references/voice-profile.org` §3 for problem, basis, examples, and history.

### 4. Promotional and Advertisement-like Language [general]

**Rule.** Remove travel-brochure adjectives (vibrant, breathtaking, nestled, stunning, renowned, must-visit) and replace promotional framing with concrete facts.

See `voice/references/voice-profile.org` §4 for problem, basis, examples, and history.

### 5. Vague Attributions and Weasel Words [general]

**Rule.** Replace vague attributions (experts say, observers have cited, industry reports, some critics argue) with a named source plus the specific claim.

See `voice/references/voice-profile.org` §5 for problem, basis, examples, and history.

### 6. Outline-like "Challenges and Future Prospects" Sections [general]

**Rule.** Delete formulaic "Despite its... faces challenges" wrap-ups and "Future Outlook" boilerplate, replacing with the actual events that happened.

See `voice/references/voice-profile.org` §6 for problem, basis, examples, and history.

## Language and Grammar Patterns

### 7. Overused "AI Vocabulary" Words [general]

**Rule.** Flag and rewrite around the high-frequency AI vocabulary list (delve, comprehensive, crucial, pivotal, intricate, tapestry, testament, underscore, vibrant, showcase, and the others), with "comprehensive" as a soft flag because corpus shows it as genuine Craig vocabulary he chooses to use sparingly.

See `voice/references/voice-profile.org` §7 for problem, basis, examples, and history.

### 8. Avoidance of "is"/"are" (Copula Avoidance) [general]

**Rule.** Replace elaborate copula substitutes (serves as, stands as, represents, boasts, features) with plain "is" or "has".

See `voice/references/voice-profile.org` §8 for problem, basis, examples, and history.

### 9. Negative Parallelisms [general]

**Rule.** Rewrite "not only X but Y" and "it's not just about X, it's Y" constructions as a single direct claim.

See `voice/references/voice-profile.org` §9 for problem, basis, examples, and history.

### 10. Rule of Three Overuse [general]

**Rule.** Break the reflexive three-item list pattern when the third item is filler. Collapse to one or two specific items.

See `voice/references/voice-profile.org` §10 for problem, basis, examples, and history.

### 11. Elegant Variation (Synonym Cycling) [general]

**Rule.** Stop cycling synonyms for the same referent across consecutive sentences. Repeat the noun, or merge the sentences.

See `voice/references/voice-profile.org` §11 for problem, basis, examples, and history.

### 12. False Ranges [general]

**Rule.** Rewrite "from X to Y" constructions where X and Y are not on the same scale. List the items plainly instead.

See `voice/references/voice-profile.org` §12 for problem, basis, examples, and history.

## Style Patterns

### 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. 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.

### 14. Overuse of Boldface [general]

**Rule.** Strip mechanical boldface used to call out terms, acronyms, or phrases in running prose. Bold survives only for structural emphasis the document genuinely needs.

See `voice/references/voice-profile.org` §14 for problem, basis, examples, and history.

### 15. Inline-Header Vertical Lists [general]

**Rule.** Collapse bullet lists whose items start with a bold header plus colon into running prose, unless the list structure is genuinely the right shape.

See `voice/references/voice-profile.org` §15 for problem, basis, examples, and history.

### 16. Title Case in Headings [general]

**Rule.** Lowercase headings that are reflexively title-cased. Sentence case is the default unless the project's house style is title case.

See `voice/references/voice-profile.org` §16 for problem, basis, examples, and history.

### 17. Emojis [general]

**Rule.** Remove decorative emojis from headings, bullets, and prose unless the document is a register where emoji is genuinely intended.

See `voice/references/voice-profile.org` §17 for problem, basis, examples, and history.

### 18. Curly Quotation Marks [general]

**Rule.** Convert curly quotation marks to straight ASCII quotes.

See `voice/references/voice-profile.org` §18 for problem, basis, examples, and history.

## Communication Patterns

### 19. Collaborative Communication Artifacts [general]

**Rule.** Strip chatbot correspondence framing ("I hope this helps", "Let me know if...", "Here is an overview of...", "Certainly!", "Of course!") that leaked into the body.

See `voice/references/voice-profile.org` §19 for problem, basis, examples, and history.

### 20. Knowledge-Cutoff Disclaimers [general]

**Rule.** Remove training-cutoff hedges ("as of my last update", "while specific details are scarce", "based on available information") and either commit to a fact or omit the claim.

See `voice/references/voice-profile.org` §20 for problem, basis, examples, and history.

### 21. Sycophantic/Servile Tone [general]

**Rule.** Cut servile opener phrases ("Great question!", "You're absolutely right", "That's an excellent point") and proceed straight to the substance.

See `voice/references/voice-profile.org` §21 for problem, basis, examples, and history.

## Filler and Hedging

### 22. Filler Phrases [general]

**Rule.** Compress wordy filler ("in order to" to "to", "due to the fact that" to "because", "at this point in time" to "now", "has the ability to" to "can", "it is important to note that" to nothing).

See `voice/references/voice-profile.org` §22 for problem, basis, examples, and history.

### 23. Excessive Hedging [general]

**Rule.** Strip stacked hedges ("could potentially possibly", "might have some effect") down to a single appropriate qualifier.

See `voice/references/voice-profile.org` §23 for problem, basis, examples, and history.

### 24. Generic Positive Conclusions [general]

**Rule.** Replace vague upbeat endings ("the future looks bright", "exciting times lie ahead", "a step in the right direction") with a concrete fact or cut the closer entirely.

See `voice/references/voice-profile.org` §24 for problem, basis, examples, and history.

### 25. Hyphenated Word Pair Overuse [general]

**Rule.** Drop reflexive hyphens from common modifier pairs (cross-functional, data-driven, decision-making, well-known, high-quality, real-time, long-term) where humans hyphenate inconsistently. Less common or genuinely technical compound modifiers can keep their hyphens.

See `voice/references/voice-profile.org` §25 for problem, basis, examples, and history.

## Universal Good-Writing Rules

These six patterns extend the AI-detection patterns above with canonical good-writing rules from Strunk & White's *The Elements of Style*, Orwell's *Politics and the English Language*, the Plain English Campaign, and Garner's *Modern English Usage*. They apply in both modes — they target prose smells with no register conflict.

### 26. Long Word → Short Word [general]

**Rule.** Swap long Latinate words for their short Anglo-Saxon equivalents per the Plain English wordlist (utilize to use, facilitate to help, ascertain to find out, methodology to method, prior to to before, optimal to best).

See `voice/references/voice-profile.org` §26 for problem, basis, examples, and history.

### 27. Active Over Passive Voice [general]

**Rule.** Rewrite passive constructions to active when the actor is recoverable from context. Flag rather than auto-rewrite when the actor genuinely doesn't matter.

See `voice/references/voice-profile.org` §27 for problem, basis, examples, and history.

### 28. Comma Splices [general]

**Rule.** Split two independent clauses joined only by a comma into two sentences or join them with a conjunction. In personal mode the semicolon escape route is blocked by #33.

See `voice/references/voice-profile.org` §28 for problem, basis, examples, and history.

### 29. Cliché Flag [general]

**Rule.** Replace business and conversational clichés (at the end of the day, leverage as a verb, low-hanging fruit, circle back, touch base, move the needle, keep it loose) with the plain meaning, including in casual register where "it's fine, it's casual" is the tell.

See `voice/references/voice-profile.org` §29 for problem, basis, examples, and history.

### 30. Jargon-Fragment → Complete Sentence [general]

**Rule.** Rewrite telegraphic sentence fragments inside prose paragraphs as complete sentences with subject and verb. Headings and bullet items are exempt because fragments are valid there.

See `voice/references/voice-profile.org` §30 for problem, basis, examples, and history.

### 31. Noun-ified Verbs [general]

**Rule.** Replace corporate-speak noun-ifications (the ask, a learn, the spend, a build, the reveal, the lift) with the real noun (the request, the lesson, the budget, the system, the finding). Philosophical nominalizations are not targets.

See `voice/references/voice-profile.org` §31 for problem, basis, examples, and history.

## 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)**. 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]

**Rule.** Rewrite impersonal third-person publish-artifact bodies into first person ("I added X", "I kept Y because..."). The commit subject line stays imperative per Conventional Commits. Skip for mechanical changes where the subject alone carries the message.

See `voice/references/voice-profile.org` §32 for problem, basis, examples, and history.

### 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. Chosen self-discipline, not habit-reflection (corpus: 3.16/1000 words).

See `voice/references/voice-profile.org` §33 for problem, basis, examples, and history.

### 34. Contractions [prose · personal]

**Rule.** Prefer contractions in Craig's prose (it's, that's, don't, we're, I'd, won't) unless a negation or emphasis genuinely needs the uncontracted weight.

See `voice/references/voice-profile.org` §34 for problem, basis, examples, and history.

### 35. Sentence Split on Conjunctions [prose · personal]

**Rule.** Split sentences that stack three or four clauses joined by "so", "and", "but" into two or three shorter sentences when the split does not lose meaning. Academic or literary registers can keep long sentences.

See `voice/references/voice-profile.org` §35 for problem, basis, examples, and history.

### 36. Felt-Experience Narration [prose · personal]

**Rule.** Cut phrases that tell the reader how the change will feel or how often the writer will use it ("I'll feel this every time", "this will be a relief", "I'm excited about", "this is huge"). State what changed and let the reader decide.

See `voice/references/voice-profile.org` §36 for problem, basis, examples, and history.

### 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. **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.

### 38. Terse Cut — Omit Needless Words [prose · personal]

**Rule.** Two cuts. First, strip soft rhetorical padding ("worth noting", "it's important to understand", "as you can see", "needless to say", "obviously", "of course", "in essence", "fundamentally"). Then run the general Orwell sweep the padding list only samples: read each sentence and cut or collapse every word and clause that can go without losing meaning — verbose verb phrases ("already merged via" → "landed on"), restated subjects, throat-clearing lead-ins, clauses whose content the reader already has. The forcing test is per sentence: try to delete half of it and keep only what changes meaning. This is a real walk step, not a wordlist match — a draft that clears the named padding can still run a third too long on ordinary verbosity. Academic writing retains the transition markers, so the aggressive cut is prose and personal only.

See `voice/references/voice-profile.org` §38 for problem, basis, examples, and history.

### 39. Public-Artifact Scope Check [personal]

**Rule.** Flag (do not auto-rewrite) local absolute paths, private repo names, and personal-tooling references (anything under `claude-rules/`, `.ai/`, `.claude/`, or naming personal skills) in publish artifacts. Surface each match as a WARN line so the author resolves manually.

See `voice/references/voice-profile.org` §39 for problem, basis, examples, and history.

### 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. **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.

### 41. No Emphasis Formatting [prose · personal]

**Rule.** Remove emphasis markup (bold, italics, underscore-wrapped words) used to stress a phrase in Craig's prose, and rephrase so the stress lives in word choice and sentence shape. Structural markup stays: headings, defined terms on first use, code spans for literal identifiers.

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. 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. **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

### 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 (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 (compact output)

**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.

**Output:**

**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. 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.

**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

**Before** (a paragraph from a research note):
> The Statistical Institute of Catalonia was officially established in 1989, marking a pivotal moment in the evolution of regional statistics in Spain. This initiative was part of a broader movement across Spain to decentralize administrative functions and enhance regional governance. The institute serves as a vital component of the regional statistical landscape, showcasing how decentralized data collection can foster more accurate regional reporting.

**Mode used:** general

**Draft rewrite:**
> 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. Decentralized data collection produces more accurate regional reporting than the previous centralized approach.

**What makes the below so obviously AI generated?**
- The phrase "more accurate regional reporting than the previous centralized approach" still has a slight summary-paragraph rhythm. A human writer might just say what changed and stop.

**Final rewrite:**
> 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-45 (Craig's-voice patterns — prose and personal modes only).

## Reference

This skill draws from:
- [Wikipedia: Signs of AI writing](https://en.wikipedia.org/wiki/Wikipedia:Signs_of_AI_writing) — patterns #1-25, maintained by WikiProject AI Cleanup.
- Strunk & White, *The Elements of Style* — patterns #28 (comma splices), #26 (omit needless words, supplemented by humanizer pattern #22).
- 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-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.