voice
Style matching usually fails the same way. It copies the surface (sentence length, punctuation habits, a favourite word) and misses the thing that actually makes writing sound like a person, which is what they never say.
A useful voice profile is mostly negative space. Not "uses short sentences" but "never opens with a compliment", "never says 'excited to'", "will not claim a tool they have only opened once". Those rules come from corrections, not from reading samples, which is why this skill is built to grow rather than to be written once.
The mechanism, stated plainly
A skill cannot remember anything on its own. This one persists by reading and writing a file:
~/.claude/voice/<person>.md # default, applies everywhere
.claude/voice/<person>.md # project-local, wins if both exist
Everything below is operations on that file. There is no magic; if the file is not updated, nothing was learned.
Mode 1, build the profile
Triggered by "learn how I write", or automatically when asked to write in a voice with no profile on disk.
Only use samples the person actually wrote themselves. This is the rule that decides whether the profile is any good. Text they approved, edited, or accepted from an assistant is contaminated with the assistant's voice, and a profile built from it will drift further from them every cycle. Ask for raw samples: sent emails, Slack messages, commit messages, notes to themselves. Messy is better than polished. Six to ten is enough.
Read them and extract, in this order of value:
- Prohibitions. Constructions absent across every sample. If nobody ever opens with a greeting-plus-compliment, that is a rule.
- Openers and closers. How they start and end is the most recognisable and most frequently botched part of a voice.
- Register per context. How they write to a client is not how they write to a friend. Record contexts separately or the profile flattens into an average that matches nothing.
- Claim discipline. What they will and will not assert about themselves. Some people round up, some round down. Getting this wrong is worse than any stylistic miss because it puts words in their mouth.
- Vocabulary they own, and words they visibly avoid.
- Mechanics last. Punctuation, sentence length, paragraph shape. Real, but the least of it.
Write the profile with an example beside every rule, quoted from a sample. A rule without an example gets misread later.
Mode 2, write in the voice
Read the profile first. Every time. Do not write from memory of the profile, because memory of a voice drifts toward the assistant's own.
Then draft, and before returning it run the prohibition list against the draft line by line. That check catches more than any amount of trying to sound like someone.
State which parts you were least sure about. It is more useful than presenting a uniformly confident draft, because it tells the person where to look.
Mode 3, learn from a correction
This is the mode that makes the skill worth having, and it is the one that gets skipped. Every time the person rewrites something you drafted, that edit is training data and it expires in about a minute. Capture it before moving on.
For each meaningful edit:
- Record what was written, what it became, and the rule that explains it.
- Generalise carefully. One correction is an instance. Two of the same shape is a rule. Do not write a rule from a single edit unless the person stated it as a rule.
- Append to the profile with the date and the correction that produced it.
- If a new rule contradicts an old one, do not silently overwrite. Keep both with their dates and say which now applies. Voices change, and the history is how you tell a change from a one-off.
Corrections stated out loud outrank corrections inferred from edits. If someone says "stop using em dashes", that is a rule immediately, no second instance required.
Profile format
# Voice profile: <name>
Updated: <date> · Samples: <n> · Corrections: <n>
## Prohibitions
- Never <X>. Corrected <date>: "<what was written>" became "<what it became>".
## Openers and closers
- Opens with <pattern>. Example: "<quote>"
## Register by context
### <context, e.g. writing to a client>
- ...
## Claim discipline
- Will say: ...
- Will not say: ...
## Mechanics
- ...
## Open questions
- Things not yet observed. Ask rather than guess.
The Open questions section matters. A profile that pretends to be complete produces confident wrong output. One that names its gaps produces a question, which is cheaper than a bad draft.
Rules
- Never invent a fact to fit the voice. Sounding like someone is not licence to claim things on their behalf. When a sentence needs a fact you do not have, leave a marked gap and ask.
- The profile is theirs. Show any rule you add. People are the authority on their own voice and will correct a wrong rule instantly, which is cheap. A wrong rule left in place quietly poisons every future draft.
- Do not use the profile to imitate someone who has not asked. Voice profiles are for a person's own writing, or writing they have explicitly asked to have drafted for them.
- Match the register, not the topic. Someone informal in Slack is not necessarily informal in a contract.
- When the draft has to be good rather than fast, write it plainly first, then apply the voice. Trying to do both at once produces text that sounds like them and says nothing.