aboutsummaryrefslogtreecommitdiff
path: root/voice
Commit message (Collapse)AuthorAgeFilesLines
* docs(voice): scrub prose em-dashes from voice-profile.orgCraig Jennings2026-05-291-20/+20
| | | | | | | | | | | | | | | | | | This hygiene sweep covers the profile's prose sections (Problem, Basis, History, Phase 1 findings, Phase 2 list) where em-dashes had carried over from the original SKILL.md text. 21 prose em-dashes were replaced with context-appropriate punctuation (periods, colons, parentheses, or rewords). Eight em-dashes are preserved as legitimate exceptions: the literal symbol reference in §13 Rule, §13 Before example (shows source text with em-dashes), §36 Before example (felt-experience tic), §38 heading "Terse Cut — Rhetorical Padding" (paired with SKILL.md heading verbatim), §39 Before example (WARN output format), §40 example dialogue (shows what a kind correction reads like). The profile now follows its own rule for prose voice. The known follow-up flagged in 10d0bc1's commit message is closed.
* docs(voice): complete the SKILL.md / voice-profile.org structural splitCraig Jennings2026-05-292-360/+1297
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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-292-12/+60
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* docs(voice): land Phase 1 voice profile derived from git-commit corpusCraig Jennings2026-05-291-0/+89
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Phase 1 of the writing voice profile TODO (filed 7a861ed). The work covers corpus assembly, statistics, and a cross-check against the 41 SKILL.md patterns. Email, PR, Slack, and long-form sources deferred to Phase 2. Corpus: 5355 commits, 1895 with non-trivial bodies, 128608 words across 33 repos. Strong findings: - Pattern 17 (no emojis), Pattern 7 (AI vocabulary), Pattern 22 (filler), Pattern 32 (first-person), Pattern 34 (contractions), and Pattern 38 (terse cut) are all confirmed by direct corpus measurement. - Pattern 13 (em-dash zero-tolerance) and Pattern 33 (semicolons to period) contradict the corpus. Craig USES em-dashes at 3.49 per 1000 words and semicolons at 3.16 per 1000 words, rates comparable to AI-generated prose. The rules are self-discipline, not habit-reflection. SKILL.md should say so honestly. - Pattern 7 watch-word "comprehensive" appears 42 times in the corpus while every other watch-word clocks zero or one. "comprehensive" is genuine Craig vocabulary. The rule should pull it from the watch-list or flag only when it co-occurs with other AI tells. New patterns the corpus suggests adding: single-sentence-paragraph cadence (41.1% of paragraphs are exactly one sentence), parenthetical density (23 opening parens per 1000), declarative-default register (0.33 question marks per 1000). Six concrete SKILL.md edits proposed in the doc, none applied. The deltas await Craig's call. Phase 2 sources are documented in the doc body.
* 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.