If you've ever tried to get AI to write in someone's specific voice, you know it usually comes out generic or weirdly formal. This extracts the actual patterns from writing samples (emails, Slack messages, transcripts) and builds a documented voice guide with signature phrases, confidence zones, and anti-patterns. It needs at least 500 words to work properly and runs a validation test at the end to catch bad extractions. Three modes: quick snapshot for fast reference, standard full guide for AI training or ghostwriting, and deep mode with rewrites and checklists for onboarding a whole content team. The sample quality assessment is smart about filtering out platform formatting tics and overly polished copy.
npx -y skills add brianrwagner/ai-marketing-claude-code-skills --skill voice-extractor --agent claude-codeInstalls into .claude/skills of the current project.
AI-generated content all sounds the same. The fix isn't better prompts — it's teaching the AI how you actually communicate.
This skill extracts your communication DNA from writing samples and produces a Voice Guide: documented, tested, and ready to use.
Detect from context or ask: "Quick voice snapshot, full Voice Guide, or full guide with examples?"
| Mode | What you get | Best for |
|---|---|---|
quick | Top 5 voice characteristics + 3 do/don't rules | Fast style reference, single piece |
standard | Full Voice Guide: tone, vocabulary, rhythm, structure | AI training, ghostwriting, brand documentation |
deep | Full Voice Guide + 10 sample rewrites + writing rules checklist + AI training examples | Onboarding writers, building a brand voice system |
Default: standard — use quick if they just need a fast reference. Use deep if they're onboarding a ghostwriter or building a content team.
Before extracting, collect:
Sample priority (most → least authentic):
Minimum sample gate: If samples total under 500 words, stop:
"These samples are too short to extract reliable patterns. Please add 2-3 more — emails, Slack messages, or transcripts work best. The messier and more casual, the better."
Do not attempt full extraction from under 500 words. Offer quick mode instead.
Before extracting, reason through:
Output a sample assessment:
"I have [X samples / Y words] to work with. Quality: [high/medium — why]. I'll use [full/quick] mode. Excluding: [any patterns and why]."
Identify the fundamental communication mode:
Role:
Default energy:
Recurring themes: What topics appear unprompted across samples? These are the things they actually care about.
Scan all samples and extract:
Transition phrases (how they shift topics):
Emphasis phrases (how they land a point):
Closers (how they wrap up):
| Zone | Description | Language Markers |
|---|---|---|
| Full authority | Topics they're an expert in | No hedging, definitive statements, "here's what works" |
| Earned perspective | Topics with experience but not mastery | "In my experience...", "What I've found..." |
| Active exploration | Topics they're learning now | "I'm testing this...", "What I'm seeing..." |
Map their stated expertise areas to each zone. This calibration is what makes the voice feel real vs. one-dimensional.
Extract what they'd NEVER say:
Source these from sample evidence where possible: "You never used [word] across [X samples] — it doesn't fit your voice."
After extracting the full profile, generate 2 test sentences on the same topic:
Version A (using the extracted voice profile):
"[Sample sentence in their voice]"
Version B (wrong voice — contrasting example):
"[Same content, different voice — shows what to avoid]"
Ask the user: "Does Version A actually sound like you when you're not overthinking it? What feels off?"
This validation catches extraction errors before the guide is put into production.
--quick)When samples are thin (300–500 words) or time is short:
Output: Minimum viable voice guide.
Difference from full mode:
After generating the Voice Guide:
Flag any issues: "The anti-pattern section only has 2 entries — not enough for a usable guide. I need more samples or direct input from the user."
## Voice Guide: [Name] — [Date]
### Sample Assessment
- Samples: [count, types]
- Total words: [count]
- Quality: [high/medium — reason]
- Mode: [quick/full]
- Excluded: [patterns excluded + why]
---
### Core Energy
- Role: [teacher/challenger/cheerleader/straight-shooter]
- Default energy: [description]
- Recurring themes: [list]
### Signature Phrases
**Transitions:**
- "[Phrase]" (source: [email/post])
- "[Phrase]"
**Emphasis:**
- "[Phrase]" (source: [email/post])
**Closers:**
- "[Phrase]"
### Confidence Calibration
**Full authority (no hedging):**
Topics: [list]
Sounds like: "[example sentence]"
**Earned perspective:**
Topics: [list]
Sounds like: "[example sentence]"
**Active exploration:**
Topics: [list]
Sounds like: "[example sentence]"
### Anti-Patterns (Never Use)
- [Word/phrase] — why: [evidence from samples]
- [Word/phrase] — why: [evidence]
### Validation Test
**This sounds like you:**
"[Version A]"
**This doesn't:**
"[Version B — contrast]"
### Self-Critique Notes
[Any gaps, things to validate with user]
### Usage Instructions
- For AI: Paste this guide into your system prompt
- For ghostwriter: Share on day 1 — cuts revision cycles in half
- For team: This is the benchmark for "on brand"
Skill by Brian Wagner | AI Marketing Architect | brianrwagner.com
sickn33/antigravity-awesome-skills
moizibnyousaf/ai-agent-skills
github/awesome-copilot