Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Generates text in a learned writing voice. Use when drafting content that must match a specific author's style profile extracted by voice-extract.
.claude/skills/athola-voice-generate/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-09 | ✗→✓ | ▲ Improved | -14% | 0% |
| case-08 | ✗→✓ | ▲ Improved | -5% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 334% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 90% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 7% | 0% |
Generate text in a user's extracted writing voice.
scribe:voice-extract)scribe:voice-review)The single largest variable in output quality is how source material is framed in the prompt. Material framed as "raw notes I'm still thinking through" produces text that feels like thinking. Material framed as summaries produces reporting.
Always frame user-provided source material as raw notes unless the user explicitly requests otherwise.
voice-generate:profile-loaded - Voice profile readvoice-generate:register-selected - Register chosenvoice-generate:source-framed - Material framed as notesvoice-generate:generated - Text producedvoice-generate:review-dispatched - Sent to review agentsbashPROFILE_DIR="$HOME/.claude/voice-profiles/{name}"
Read in order:
extraction.md - Core voice featuresregisters/{register}.md - Active registercraft-rules.md - Shared craft techniques (if exists)banned-phrases.md - Anti-patterns to avoid (if exists)Check for per-project override:
bashif [ -f ".voice/override.md" ]; then # Merge project overrides with profile fi
Load: @modules/register-selection
Select register by:
registers/default.mdLoad: @modules/source-framing
Default framing (always use unless user overrides):
Below are my rough notes on this topic. I'm still thinking
through these ideas. Use them as the raw material for the
piece, not as a structure to follow:
---
{user_provided_source_material}
---Alternative framings (only if user requests):
Compose the generation prompt:
You are writing a piece in a specific voice. The voice
features below were extracted from the writer's own work.
Follow them as concrete instructions, not suggestions.
## Voice Features
{extraction.md content}
## Active Register: {register_name}
{register content}
## Craft Techniques (apply all)
- Concrete-first: Lead with specific, physical details before
any abstraction
- Naming: When you describe a pattern in 2+ sentences, compress
it into a 2-4 word label
- Opening moves: Start mid-thought, with a specific moment, or
with a counterintuitive claim. Never start with throat-clearing
- Human-moment anchoring: Ground every abstraction in a specific
scene or lived experience
- Aphoristic destinations: At least one sentence per section
should be worth repeating out of context
## Banned (never use)
{banned_phrases content, or default list:}
- Em dashes (use commas, colons, semicolons, parentheses)
- "delve", "utilize", "leverage", "facilitate"
- "it's important to note", "in today's world"
- "here's the thing", "let that sink in"
- "furthermore", "moreover", "comprehensive"
- Negation-correction patterns ("This isn't X. This is Y.")
## Source Material
{framed source material from Step 3}
## Task
Write the piece. Follow the voice features precisely. Apply
craft techniques. Do not use any banned phrases. The output
should read as if the writer produced it themselves.
Length: {user_specified or ~same as source material}
Format: {user_specified or prose paragraphs}After generation:
subversion, and subtle voice qualities require the larger model. Sonnet flattens these.
templated, so Opus tonal range is not needed)
If .voice/override.md exists in the current project:
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-09 | fail→pass | 11,208 | 2,699 | -76% | 1 | 1 | 0% | 1,773 | 1,518 | -14% | 0 | 0 | — |
case-08 | fail→pass | 11,294 | 2,164 | -81% | 1 | 1 | 0% | 1,602 | 1,529 | -5% | 0 | 0 | — |
case-01 | fail→fail | 15,574 | 6,670 | -57% | 1 | 1 | 0% | 2,316 | 1,504 | -35% | 0 | 0 | — |
case-02 | fail→fail | 18,391 | 13,481 | -27% | 1 | 1 | 0% | 2,520 | 3,260 | +29% | 0 | 0 | — |
case-03 | fail→fail | 16,602 | 19,661 | +18% | 1 | 1 | 0% | 2,299 | 4,253 | +85% | 0 | 0 | — |
case-04 | fail→pass | 3,204 | 5,512 | +72% | 1 | 1 | 0% | 463 | 2,009 | +334% | 0 | 0 | — |
case-05 | fail→pass | 7,762 | 5,601 | -28% | 1 | 1 | 0% | 1,117 | 2,117 | +90% | 0 | 0 | — |
case-06 | fail→fail | 12,272 | 8,451 | -31% | 1 | 1 | 0% | 1,862 | 2,554 | +37% | 0 | 0 | — |
case-07 | pass→pass | 7,557 | 4,053 | -46% | 1 | 1 | 0% | 1,138 | 1,914 | +68% | 0 | 0 | — |
case-10 | pass→pass | 9,458 | 3,003 | -68% | 1 | 1 | 0% | 1,510 | 1,588 | +5% | 0 | 0 | — |
case-11 | pass→pass | 8,614 | 4,271 | -50% | 1 | 1 | 0% | 1,312 | 1,864 | +42% | 0 | 0 | — |
case-12 | fail→pass | 11,899 | 4,235 | -64% | 1 | 1 | 0% | 1,744 | 1,870 | +7% | 0 | 0 | — |
case-13 | fail→fail | 7,155 | 8,247 | +15% | 1 | 1 | 0% | 1,181 | 1,532 | +30% | 0 | 0 | — |
case-14 | pass→fail | 8,816 | 16,125 | +83% | 1 | 1 | 0% | 1,238 | 3,253 | +163% | 0 | 0 | — |
case-15 | pass→fail | 11,554 | 13,638 | +18% | 1 | 1 | 0% | 1,630 | 3,727 | +129% | 0 | 0 | — |
case-16 | pass→pass | 9,480 | 9,767 | +3% | 1 | 1 | 0% | 1,303 | 2,824 | +117% | 0 | 0 | — |
case-17 | pass→pass | 10,415 | 11,287 | +8% | 1 | 1 | 0% | 1,459 | 2,954 | +102% | 0 | 0 | — |
case-18 | pass→pass | 6,161 | 2,976 | -52% | 1 | 1 | 0% | 1,038 | 1,720 | +66% | 0 | 0 | — |
case-19 | fail→pass | 15,151 | 1,669 | -89% | 1 | 1 | 0% | 2,178 | 1,430 | -34% | 0 | 0 | — |
case-20 | fail→pass | 8,797 | 2,499 | -72% | 1 | 1 | 0% | 1,280 | 1,473 | +15% | 0 | 0 | — |
case-21 | fail→pass | 7,449 | 1,809 | -76% | 1 | 1 | 0% | 1,194 | 1,449 | +21% | 0 | 0 | — |
case-22 | fail→pass | 9,259 | 1,976 | -79% | 1 | 1 | 0% | 1,383 | 1,476 | +7% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 20 counted toward the lift figure. The other 2 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +32 percentage points is the difference between those two pass rates over the 20 comparable cases. 3 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.