Voice profile
Skill mickzijdel/dev-hooks/plugins/writing/skills/voice-profile
Use when drafting or revising prose that should match a specific person's writing voice — when the user says "match my voice", "in my style", "sound like me", "use my voice profile", or has a voice_profile.md; and when building or updating such a profile from samples. For expository/academic write-ups, docs, essays, and newsletters.From its SKILL.md
npx -y skills add mickzijdel/dev-hooks --skill voice-profileAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
3.9 KB, 853 tokens by cl100k_base, as published. Nobody here has run it
Voice profile
Match a person's writing voice instead of defaulting to generic AI prose. A voice profile is a markdown file of that person's rules — a Do list, a Don't list, a Banned-words list, and before/after pairs — built from their own writing. This skill applies an existing profile, builds a new one, or falls back to baseline expository rules when no profile exists.
This skill is the personal-voice layer. The humanizer skill removes generic AI tells (em-dash
overuse, rule of three, AI vocabulary, sycophancy); run it first or alongside. voice-profile
adds one person's specific habits and expository concision on top.
Which mode
digraph { rankdir=LR;
"asked to write/revise prose" -> "profile exists?";
"profile exists?" -> "APPLY" [label="yes"];
"profile exists?" -> "DEFAULT" [label="no, just write"];
"asked to capture a voice" -> "BUILD";
}
Find the profile
Look in this order; the first hit wins:
$WRITING_VOICE_PROFILE(a file path).claude/voice_profile.mdin the repo~/.claude/voice_profile.md
Apply a profile
- Read the profile in full. Do not work from a one-line summary — load the actual rules.
- Draft or revise the prose, following its Do / Don't lists and avoiding its banned words.
- Audit the draft before returning it:
voice_audit.py --profile <profile> <file>(inscripts/) flags banned words with line numbers. Read each hit — some banned words have valid uses in context — and fix the real ones. - If unsure which paragraph to match, ask the person to point at a sample of their own and say "match this".
Build a profile
Use references/template.md as the scaffold. The strongest profiles come from contrast, not
introspection:
- Gather 2-3 real samples of the person's own writing they are happy with.
- Draft the same kind of content yourself, then set your draft beside their writing.
- Name the recurring differences — what they do that you omit (their Do list), what you add that they never write (their Don't list and banned words).
- For each banned word wrap it in backticks under a
## Banned wordsheading so the audit script can scan it; add the plainer rewrite after a->. - Capture at least one before/after pair (your draft -> their rewrite). One real pair beats a dozen abstract rules.
- Save the filled profile to one of the lookup paths above. To enforce it automatically, the
writingplugin'svoice-reminderhook scans.md/.mdx/.markdown/.tex/.txtedits against the discovered profile (opt out withWRITING_VOICE=false).
A profile is never finished. When the person rewrites your draft, add the new tic to their Don't list or banned words.
Default rules (no profile)
When no profile exists, apply references/default-rules.md — baseline expository discipline:
state each point once, thesis-first paragraphs, first person for choices, no contrast framing,
no cleft constructions, no announcing-importance, concrete subjects over inanimate agents. Run
the audit against default-rules.md to catch its banned words.
Common mistakes
- Summarizing the profile instead of reading it. Load the full file; the rules are specific.
- Mass-replacing every banned-word hit. The scanner cannot judge context — read each one.
- Inventing rules from a description of someone's style. Derive rules from real samples.
- Skipping the audit step and claiming the draft matches. Run
voice_audit.pyand fix the hits.
What ships with it: 3 files
13.6 KB alongside SKILL.md, 1 of them executable
references/
- default-rules.md7.3 KB
- template.md1.4 KB
scripts/
- voice_audit.pyruns4.8 KB