mcpbeat Sign in

Voice Generate Skill for Claude

Generates text in a learned writing voice. Use when drafting content that must match a specific author's style profile extracted by voice-extract.

3k tokens
context cost
the whole folder, loaded on every use
4
files
instructions only
0
copies elsewhere
how many repositories repackaged it
324
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/athola/claude-night-market --skill voice-generate

The instruction itself

12 sections, as written by the author

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 read
  • voice-generate:register-selected - Register chosen
  • voice-generate:source-framed - Material framed as notes
  • voice-generate:generated - Text produced
  • voice-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 features
  • registers/{register}.md - Active register
  • craft-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)

Other skills for the same job

different authors, same section of the catalogue
Dhdna Profiler
by K-Dense-AI
×1

Extract cognitive patterns and thinking fingerprints from any text. Use this skill when the user wants to analyze how someone thinks, understand cognitive style, profile writing or speech patterns, compare thinking styles between people, asks "what's my thinking style", "analyze how this person reasons", "cognitive profile", "thinking pattern", "DHDNA", "digital DNA", or wants to understand the mind behind any text. Also trigger when the user provides text and wants deeper insight into the author's reasoning patterns, decision-making style, or cognitive signature.

4k tokens
Gsap
by openai
vendor ×1

GSAP animation reference for HyperFrames. Covers gsap.to(), from(), fromTo(), easing, stagger, defaults, timelines (gsap.timeline(), position parameter, labels, nesting, playback), and performance (transforms, will-change, quickTo). Use when writing GSAP animations in HyperFrames compositions.

5k tokens scripts
Image Assistant
by ComeOnOliver
×1

配图助手 - 把文章/模块内容转成统一风格、少字高可读的 16:9 信息图提示词;先定“需要几张图+每张讲什么”,再压缩文案与隐喻,最后输出可直接复制的生图提示词并迭代。

15k tokens scripts zh
Youtube Clipper
by nexu-io

| YouTube clip generation and editing with automated workflows — pull source video, slice highlights, add captions, and export.

298 tokens
Interactivity Best Practices
by remotion-dev
vendor

Best practices for writing Remotion animations that stay intuitive for agents and editable in Remotion Studio Visual Mode.

146 tokens
Youtube Transcript
by browser-act

YouTube transcript extraction and content reformatting: given a YouTube video URL, opens the video's transcript panel, extracts all timestamped segments, and transforms the raw transcript into summaries, chapter outlines, Twitter/X threads, blog posts, or notable quotes. Use when the user shares a YouTube URL or video link, asks to summarize a video, get a transcript, extract content from a YouTube video, get YouTube captions, extract YouTube captions, download YouTube captions, transcribe YouTube video, YouTube video to text, make a thread from YouTube, YouTube to blog post, YouTube to article, pull transcript from YouTube, YouTube content extraction, convert YouTube to text, video to transcript. Also applies when user wants to reformat any YouTube video content into structured output (chapters, threads, blog articles, key quotes).

3k tokens scripts
Ecommerce Full Pipeline
by anbeime

跨境电商全链路自动化工具。集成1688采集、智能清洗、多平台上架(微信小店/Shopify/TikTok)、推广方案(关键词/竞品分析/广告文案)、短视频创作(MoviePy竖屏视频)、一键代发、爆品挖掘(趋势聚合+6维评分)、闲鱼二手选品捡漏(品牌识别/虚标过滤/捡漏评分/价格监控)、全自动流水线(挖掘→采集→清洗→上架→推广→视频)。

2k tokens zh
Historical Interview Scripts
by anbeime

生成历史名人现代访谈短视频文案,通过古今反差与网络热梗的爆笑结合,创作具有传播力的虚构趣味内容

50k tokens scripts zh

How to use it

Copy the folder

Take athola/voice-generate from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.