voice-generate
Generates text in a learned writing voice. Use when drafting content that must match a specific author's style profile extracted by voice-extract.
它会碰到什么
这一栏是扫描器报的事实,不是结论。命中多不等于有毒(安全工具、规则库、示例脚本本来就会包含危险写法),命中少也不等于干净。它和你手上的凭据、文件、网络有什么关系,需要你自己看。
技能内容
Voice Generation Skill
Generate text in a user's extracted writing voice.
When NOT To Use
- No profile exists yet (use
scribe:voice-extract) - Checking the output for drift (use
scribe:voice-review)
Core Principle: Source Material Framing
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.
Required TodoWrite Items
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 agents
Step 1: Load Voice Profile
PROFILE_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:
if [ -f ".voice/override.md" ]; then
# Merge project overrides with profile
fi
Step 2: Register Selection
Load: @modules/register-selection
Select register by:
- Explicit user request ("use casual register")
- Context matching from register metadata
- Default fallback to
registers/default.md
Step 3: Frame Source Material
Load: @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):
- "structured outline" - when user wants to preserve structure
- "key points to cover" - when user provides bullet points
- "conversation to draw from" - when source is a transcript
Step 4: Generation Prompt
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}
Step 5: Post-Generation
After generation:
- Scan output for banned phrases (auto-fix silently)
- Check for em dashes (replace with appropriate punctuation)
- Dispatch to voice-review skill if user wants review
- Save pre-review snapshot if learning mode is active
Model Routing
- Generation: Use Opus. Tonal shifts, parenthetical
subversion, and subtle voice qualities require the larger
model. Sonnet flattens these.
- Banned phrase scan: Can run locally (regex/grep)
- Review agents: Sonnet is sufficient (the prompts are
templated, so Opus tonal range is not needed)
Per-Project Voice
If .voice/override.md exists in the current project:
- Read override content
- Merge with profile (overrides take precedence)
- Note in output: "Applied project voice override"
Exit Criteria
- Text generated in the specified voice
- No banned phrases present
- Craft techniques applied (concrete-first, naming, etc.)
- Source material framed as raw notes
- Review dispatched (if requested)
- Snapshot saved (if learning mode active)
想直接用这个技能?
本站把开放许可(MIT / Apache 等)的技能按仓库打包整理到网盘,点一下转存到你自己的网盘,不用一个个从 GitHub 拉。许可未声明的技能只给原始仓库链接,不打包。
它属于哪个仓库
同一个仓库里的其他技能
- claude-code-plugin-reference
- night-market-architecture-contract
- night-market-build-and-env
- night-market-change-control
- night-market-collective-memory
- night-market-completion-integrity-campaign
- night-market-config-catalog
- night-market-debugging-playbook
- night-market-diagnostics-toolkit
- night-market-docs-and-writing
- night-market-failure-archaeology
- night-market-model-and-harness-updates