aboutsummaryrefslogtreecommitdiff
path: root/voice/SKILL.md
Commit message (Collapse)AuthorAgeFilesLines
* feat(voice): expand skill to 45 patterns with attestation receipts and ↵Craig Jennings4 days1-44/+95
| | | | | | | | | | | | 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.
* fix(voice): make the terse cut a mandatory final passCraig Jennings9 days1-1/+3
| | | | | | | | Pattern #38 (omit needless words) was one of 41 walked mid-list, so it got glossed as a checkbox instead of the real "cut it in half" sweep. A commit message went out today needing two manual Orwell-walk requests before it read terse, even though /voice personal had run. The rule already said to cut hard. The gap was position. Buried in the middle of the walk, #38 lost to the categorical detectors that come back clean while the text still runs a third too long. I moved it to an explicit standalone last step in the SKILL.md Process, run after every other pattern and right before the draft is shown. Now the first draft the user sees is already terse, not terse only after they ask. Profile §38 gains an execution-position rule and a history entry. The commits.md publish gate points at #38 as the last pass.
* docs(voice): generalize §38 from padding list to omit-needless-words walkCraig Jennings12 days1-2/+2
| | | | §38 was a wordlist match against named padding ("worth noting", "obviously"). A PR-review comment cleared that list and still ran a third too long on ordinary verbosity the list never names: "is the same change that already merged via" for "landed on", restated subjects, throat-clearing lead-ins. So §38 becomes two passes. The named list runs first, then a real per-sentence sweep whose forcing test is to delete half the sentence and keep only what changes meaning. I renamed "Rhetorical Padding" to "Omit Needless Words" and added a generic-verbosity example pair that carries no padding word. I updated SKILL.md and voice-profile.org together per the pairing rule.
* docs(voice): complete the SKILL.md / voice-profile.org structural splitCraig Jennings2026-05-291-360/+120
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Backfills the remaining 40 patterns into the paired source-of-truth shape Pattern 13 demonstrated in 296b2e6. Each pattern in SKILL.md now collapses to a mode-tagged header plus a one-line Rule plus a profile pointer. The full Problem, Basis, Before/After, Detection, and History land in the corresponding voice-profile.org §N section. Sizes: - voice/SKILL.md: 678 to 437 lines. - voice/references/voice-profile.org: 134 to 1311 lines. - Net: 1297 insertions, 360 deletions across both files. Mode-tag conventions: general-only patterns (#1-12, 14-16, 18-31) tagged [general]. Prose+personal patterns (#33-38, 41) tagged [prose · personal]. Personal-only patterns (#32, 39, 40) tagged [personal]. Pattern 13 keeps its dual-mode tag (general overuse-reduction vs prose/personal zero-tolerance). Corpus-confirmed Basis entries cite the Phase 1 measurements for patterns 7, 17, 22, 32, 33, 34, 38. All other patterns are tagged observation-derived with the appropriate source (Wikipedia Signs of AI Writing, Strunk and White, Orwell, Plain English, Garner, or Craig's commits.md / interaction.md rules). Seven em-dashes were caught in the new SKILL.md Rule lines during a post-migration spot-check and rewritten as periods or colons. The em-dash on Pattern 13's Rule line stays because the rule references the symbol literally. Known follow-up: the profile's prose sections (Problem, Basis, History) still contain em-dashes carried over from the original SKILL.md Problem paragraphs. They don't break the loading model but they do violate the rule the file documents. A separate hygiene pass can scrub them. The em-dash sweep was not bundled here so the migration shape stays the deliverable. Bulk migration was dispatched to a subagent with strict format requirements. Spot-checks of patterns 1, 13, 17, 32, and 41 confirmed the shape lands correctly across all four mode-tag conventions.
* docs(voice): split SKILL.md and voice-profile.org into paired ↵Craig Jennings2026-05-291-11/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | source-of-truth, Pattern 13 worked example This is option C from the structural-split proposal. SKILL.md becomes the thin rule-set. voice-profile.org becomes the canonical home for rationale, basis, examples, and per-pattern history. Pattern 13 is migrated as the worked example to confirm the form. The remaining 40 patterns are scheduled for a backfill pass. SKILL.md gains a Source of Truth section near the top stating the pairing rule. Every change to a pattern must land in both files. A SKILL.md edit without a profile update is incomplete. A profile update without a SKILL.md edit is fine. Pattern 13 in SKILL.md collapses to a single Rule line plus mode tags plus a pointer to voice/references/voice-profile.org §13. The Problem paragraph, the Mode-dependent-strength paragraph, the Note-on-basis paragraph, and the Before/After examples all move to the profile. voice-profile.org gains a How this combines with SKILL.md preamble that names the pairing rule explicitly. Pattern §13 lands with all the migrated content plus a History section recording the prior commits (original SKILL.md entry, the 2026-05-26 prose-mode addition in 4fac2a0, the 2026-05-29 basis note in c3cf9a5, and this migration). If Craig confirms the shape, the next pass backfills patterns 1 through 12 and 14 through 41 in the same form.
* docs(voice): apply Phase 1 deltas to SKILL.md per Craig's confirmationCraig Jennings2026-05-291-3/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Three rationale-honesty edits land. Craig confirmed (vacation chat 2026-05-29) that the em-dash and semicolon zero-tolerance rules are intentional self-discipline, not codified habit. He also confirmed he's trying to use "comprehensive" sparingly despite its high natural rate in his prose. Pattern 13 (em-dash) gained a Note-on-basis paragraph naming the 3.49-per-1000-words corpus rate. The note states the rule is self-discipline, not habit-reflection. The zero-tolerance directive itself is unchanged. Pattern 33 (semicolons) gained the same shape. The note names the 3.16-per-1000-words rate. The directive is unchanged. One em-dash in the existing Problem paragraph that contradicted the rule was replaced with a comma. Pattern 7 (AI vocabulary watch-list) gained "comprehensive" as an entry. A note explains the rationale. The corpus shows 42 uses vs zero-or-one for every other watch-word, but Craig is consciously reducing his use, so flag-and-suggest is the right action. Three of the six proposed deltas from voice-profile.org are now applied. The other three (new positive patterns: single-sentence paragraph cadence, parenthetical density, declarative-default register) await Craig's call.
* feat(voice): add prose mode for Craig-authored prose + strengthen em-dash, ↵Craig Jennings2026-05-261-28/+45
| | | | | | | | | | | | fragments, formatting The personal voice patterns only ran for commits and PRs, so the emails and documents I author never got my actual writing voice. General mode deliberately skips them. I added a third mode, prose, that applies my voice patterns to prose I write or send without dragging in the publish-artifact mechanics that misfire on free text. The modes now nest. General (#1-31) handles anyone's prose, prose adds my voice patterns (em-dash zero-tolerance, contractions, semicolons to periods, sentence-split, felt-experience cut, fragment rewrite, terse-cut, no-emphasis-formatting), and personal adds the three artifact-mechanics patterns on top (first-person rewrite, public-artifact scope flag, praise/correction asymmetry). Those three stay personal-only because they assume a commit or PR: a document is legitimately third-person, a journal has no public-scope concern, and praise/correction asymmetry is a PR-review rule. Three gaps closed along the way. #13 (em-dash) was "use fewer". It's now zero-tolerance in prose and personal modes, and the rule holds inside examples and quoted text, not just running prose. #37 (every prose sentence needs a subject and a verb) was locked to personal mode. It now applies to my prose too. And #41 is new: I make points with words, not bold or italics or underscores, so emphasis markup gets rephrased so the stress lives in the wording. I updated commits.md to match. The publish flow still uses personal mode, but the pattern count is now 41 and the personal-only set is the three artifact-mechanics patterns.
* docs(skills): add voice pattern 40, praise/correction asymmetryCraig Jennings2026-05-251-5/+21
| | | | | | Voice gains pattern #40: strip the "why" from praise on an approve, since the author already knows why their change is good and the justification reads as flattery. Always keep the why on a finding or change-request, delivered gently. Behavior only changes when the reason lands. review-code now runs a praise/correction gate before posting any summary, and its inline-comment guidance is tightened so the why-it-matters survives the brevity cuts. The reviewer states the stakes (a user hits a 500, a screen reader announces nothing), not just the mechanism.
* docs(skills): expand voice's cliche-flag watch listCraig Jennings2026-05-221-2/+2
| | | | Added more clichés to pattern #29 (keep it loose, touch base, circle up, hit the ground running, move the needle, on the same page, no-brainer, win-win, and others) and a note that a casual or conversational register isn't a license to keep one — cut it there too. Prompted by "keep it loose" slipping through as "acceptable casual," which is exactly the miss the note guards against.
* feat(skills): add voice skill (humanizer + universal + personal passes)Craig Jennings2026-05-071-0/+635
I built voice as a single skill that walks 39 numbered prose-editing patterns. The first 25 patterns come straight from the existing humanizer skill (Wikipedia's Signs of AI Writing). Patterns 26-31 add universal good-writing rules from Strunk & White, Orwell, the Plain English Campaign, and Garner — long-word → short-word, active-over-passive, comma splices, cliché flag, jargon-fragment-in-prose rewrite, and corporate-speak nominalizations. Patterns 32-39 are tagged "personal only" and cover first-person rewrite, semicolon swaps, contractions, sentence-split on conjunctions, felt-experience cut, sentence-fragment-in-prose rewrite, terse cut for rhetorical padding, and a public-artifact scope flag. Two modes determine which patterns get walked. General mode (default) walks 1-31 and is the right fit for research notes, philosophy and history essays, emails, README prose, journal entries, anything that isn't a commit, PR, or PR review comment. Personal mode walks all 39 patterns and is invoked explicitly by the publish flow in commits.md (and similar callers) so first-person and contraction enforcement don't leak into academic or literary writing where they don't belong. The follow-up commits migrate callers to /voice and remove the standalone humanizer skill.