| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
| |
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.
|
| |
|
|
| |
§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.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
voice-profile.org
Phase 2 of the writing voice corpus adds four sub-corpora to the
profile: personal email (1139 messages, 283k words), work email (22
messages, small sample), PR descriptions (9 PRs), and PR review
comments (3 comments, very small sample). Mu queries on local
maildirs and gh API calls on the cjennings github identity.
Signatures, quoted replies, and forwarded blocks stripped before
analysis. No corpus files written to disk.
The headline finding is the register split. Phase 1's commit-prose
signal does not generalize cleanly. Em-dashes and semicolons are
concentrated in commit prose (3.49 and 3.16 per 1000). Conversational
and PR prose run an order of magnitude lower (em-dash 0.28 in
personal email, 0.00 in PR review comments). Semicolon shows the
same shape (0.64 in personal email, 0.00 in PR comments). The
personal-mode rules on those still earn their place, but the basis
shifts. The rules mostly enforce what is already true for non-commit
registers.
Contractions invert the pattern: commits 3.57 per 1000, personal
email 38.52, PR review comments 50.78. The Phase 1 curiosity (I'm
and I'll surprisingly rare relative to standalone I in commits) is
resolved as a register effect. Personal email shows I'm at 6.04 per
1000 vs standalone I at 36.91, near natural English. Craig's voice
is heavily-contracted in conversational prose and uniquely suppresses
contractions in commit prose. The contraction rule is strongly
confirmed in the registers where contractions are most expected.
Updates land in:
- Top-level Corpus section: a new Phase 2 subsection with the four
sub-corpora and a cross-register findings table.
- Curiosities (resolved by Phase 2) section: I'm/I'll rarity puzzle
answered.
- §7 (AI vocabulary) Basis: cross-register watch-word measurements.
Comprehensive is concentrated in commits. Leverage shows up
modestly in personal email.
- §13 (em-dash) Basis: register split documented.
- §32 (first-person) Basis: standalone I rates across all five
registers.
- §33 (semicolon) Basis: register split parallels em-dash.
- §34 (contractions) Basis: register inversion documented, Phase 1
curiosity resolved.
- §38 (terse cut) Basis: single-sentence-paragraph rate across
registers, highest in PR descriptions.
AI tells stay near zero across all five corpora. Leverage 18
occurrences in personal email is the only non-zero hit on the
watch-list outside commits.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
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.
|