Agent skill

Voice Extract

by athola in athola/claude-night-market

Extracts a user's writing voice from text samples via SICO comparative analysis.

MITAuto-check passedTesting & QA

Install Voice Extract

skills CLI
$ npx skills add athola/claude-night-market --skill voice-extract -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install athola/claude-night-market voice-extract --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/athola/claude-night-market.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/scribe/skills/voice-extract .claude/skills/voice-extract && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
voice-extract
GitHub stars
341
Token cost
~1.8k tokens
SKILL.md length
462 words
Files
5
Skills in repo
154
Repo updated
First seen
Licence
MIT

At a glance

Extracts a user's writing voice from text samples via SICO comparative analysis.

  • Works in 5 steps: Sample Intake → Baseline Generation → SICO Extraction Pass 1 → …
  • Building a voice profile for consistent generation
  • SKILL.md covers When NOT To Use, Method: Comparative Feature…, Key Principles (from research) and Required TodoWrite Items, plus 6 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Voice Extract is an agent skill from athola/claude-night-market. Extracts a user's writing voice from text samples via SICO comparative analysis. Use when building a voice profile for consistent generation.

Its SKILL.md is about 1.8k tokens, which your agent loads only when the skill is triggered. The skill folder holds 5 other files (for example `modules/register-creation.md`, `modules/research-basis.md` and `modules/sample-intake.md`).

It sits in Testing & QA, covering Brand voice and tone. The repository describes itself as: 23 Claude Code plugins: TDD enforcement hooks, git/PR workflows, spec-driven development, code review, project lifecycle, fix-from-error, maintenance automation, context… The licence is MIT.

When your agent uses it

  • Building a voice profile for consistent generation
  • Tasks that involve Brand voice and tone

Example prompts

  • “Use the voice-extract skill to extract a user's writing voice from text samples via SICO comparative analysis”
  • “/voice-extract”

Workflow steps

5 steps, taken from the step headings in SKILL.md.

  1. Sample Intake
  2. Baseline Generation
  3. SICO Extraction Pass 1
  4. Extraction Pass 2 (Pressure Test)
  5. Write Profile

What it can do on your machine

Read from SKILL.md and the folder at commit 9f3eb00. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are bash, json and markdown).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Voice Extract loads about 1.8k tokens when it runs. Until then it costs about 39 tokens; SKILL.md has 462 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~39
When it runs · the whole SKILL.md, loaded when a task matches
~1.8k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from athola/claude-night-market at commit 9f3eb00, republished under its MIT licence (© athola). 462 words, ~1,805 tokens.

Download SKILL.mdSave it as .claude/skills/voice-extract/SKILL.md (or your agent's skills folder). This skill also uses 4 other files; get the full folder from GitHub.
name
voice-extract
description
Extracts a user's writing voice from text samples via SICO comparative analysis. Use when building a voice profile for consistent generation.
globs
**/*.{md,txt}
alwaysApply
false
category
writing-quality
tags
voice, extraction, sico, style-transfer, writing
complexity
high
model_hint
opus
estimated_tokens
3200
progressive_loading
true
modules
modules/sico-extraction.md, modules/sample-intake.md, modules/register-creation.md, modules/research-basis.md
dependencies
scribe:style-learner, scribe:slop-detector

Voice Extraction Skill

Extract a user's writing voice through SICO comparative analysis.

When NOT To Use

  • Writing text in a profile that already exists (use scribe:voice-generate)
  • Refining a profile from edits (use scribe:voice-learn)

Method: Comparative Feature Extraction

Rather than measuring surface metrics, this skill uses SICO Phase 1: feed the model user writing samples alongside its own default output on the same topics. The model describes what the user does differently. This produces voice descriptions that encode implicit structural patterns no metrics can capture.

The papers and reports behind these choices, and what each one changed in the extraction passes, are in modules/research-basis.md. Read it before changing what the passes ask for.

Key Principles (from research)

  1. Anonymize samples: Label as "Sample 1", "Sample 2", etc. Context labels cause the extractor to anchor on content rather than reading a unified voice.

  2. Variety over volume: 10 samples across different topics beats 20 on the same subject. The extraction needs to see what stays constant when everything else changes.

  3. Casual writing is distinctive: Reddit comments, slack messages, quick emails. Polished pieces have rough edges edited away, and those edges are where voice lives.

  4. Pressure test for specificity: If extraction output sounds generic ("uses varied sentence lengths"), run pass 2 and force specificity. Good output reads like followable instructions, not a book report.

  5. Use Opus for extraction: More nuanced feature descriptions, especially for registers where subtle tonal shifts matter.

Required TodoWrite Items

  1. voice-extract:samples-collected - Writing samples gathered
  2. voice-extract:samples-anonymized - Labels stripped, numbered
  3. voice-extract:baseline-generated - Claude's default output on same topics
  4. voice-extract:extraction-pass-1 - Broad comparative features
  5. voice-extract:extraction-pass-2 - Pressure test for specificity
  6. voice-extract:profile-written - extraction.md created
Show full SKILL.md (186 more words)Show less

Step 1: Sample Intake

Load: @modules/sample-intake

Directory Mode
bash
# Scan for samples
PROFILE_DIR="$HOME/.claude/voice-profiles/{name}"
mkdir -p "$PROFILE_DIR/samples"

# Copy samples from user-provided directory
# Rename to Sample-01.md, Sample-02.md, etc.
Interactive Mode

Present the user with:

Paste your writing sample below (minimum 200 words).
Type END on a new line when done.

Repeat until user says "done collecting" or reaches 10+ samples.

Manifest

Create manifest.json:

json
{
  "profile_name": "{name}",
  "created": "YYYY-MM-DD",
  "samples": [
    {
      "id": "sample-01",
      "original_source": "anonymized",
      "word_count": 450,
      "date_added": "YYYY-MM-DD"
    }
  ],
  "extraction_model": "opus",
  "extraction_date": null,
  "registers": ["default"]
}
Validation
  • Minimum 3 samples
  • Minimum 500 words total
  • Each sample minimum 100 words
  • Variety check: warn if all samples share obvious topic

Step 2: Baseline Generation

For each sample's topic/context, generate Claude's default output on the same subject. This creates the comparison pair.

Prompt for baseline:

Write a short piece about [topic extracted from sample].
Use your natural default style. Do not try to match any
particular voice or style. Just write naturally about this
subject in approximately [word_count] words.

Store baselines alongside samples for comparison.

Step 3: SICO Extraction Pass 1

Load: @modules/sico-extraction

The core comparative prompt:

I'm going to show you pairs of text. In each pair:
- Text A is written by a specific person
- Text B is your default output on the same topic

Your task: describe what the writer of Text A does
differently from your default style. Focus on:

- Structural patterns (paragraph shapes, section architecture)
- Rhetorical moves (how they build arguments, make transitions)
- Tonal devices (hedging patterns, commitment patterns)
- Sentence-level techniques (clause structure, rhythm)
- Vocabulary tendencies (physical vs abstract language,
  technical vs conversational)
- Distinctive habits (parentheticals, fragments, questions)

Do NOT describe surface metrics (average sentence length,
word count). Describe the voice in terms a writer could
follow. Be specific enough that someone could use your
description to imitate this voice.

[Pairs follow]
Quality Gate

If the extraction output contains any of these generic phrases, reject and re-run with higher specificity demand:

  • "uses varied sentence lengths"
  • "maintains a conversational tone"
  • "balances formal and informal"
  • "engages the reader"
  • "creates a sense of"

Step 4: Extraction Pass 2 (Pressure Test)

Review your feature description. For each characteristic
you identified, answer:

1. Could this describe 50% of writers? If yes, be more
   specific or remove it.
2. Can someone follow this as a concrete instruction?
   If not, add an example from the samples.
3. Are there patterns you noticed but didn't name?
   Writers often have unnamed habits. Look for:
   - How they use parentheticals
   - Where they commit vs hedge
   - Physical language for abstract concepts
   - Rhythm of building caution then dropping unhedged claims
   - How they anticipate reader objections

Revise your description to be more specific and followable.

Step 5: Write Profile

Write the extraction to ~/.claude/voice-profiles/{name}/extraction.md:

markdown
# Voice Extraction: {name}

## Feature Description

[SICO extraction output here]

## Craft Rules (Detection-Neutral)

These techniques improve writing without increasing
AI detectability:

- Concrete-first: Lead with specific, physical details
- Naming: Label patterns and dynamics explicitly
- Opening moves: Start mid-thought or with a specific moment
- Human-moment anchoring: Ground abstractions in lived experience
- Aphoristic destinations: Write sentences worth repeating alone

## Banned Phrases

[Standard AI vocabulary list + user additions]

## Notes

- Extraction model: {model}
- Extraction date: {date}
- Sample count: {n}
- Total word count: {words}

Create default register at registers/default.md from the extraction output.

Exit Criteria

  • Profile directory exists with manifest
  • extraction.md contains specific, followable voice description
  • Default register created
  • No generic phrases in extraction output
  • User has reviewed and confirmed the extraction captures their voice

© athola, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 4 other files in plugins/scribe/skills/voice-extract of athola/claude-night-market.

  • SKILL.md
  • modules/register-creation.md
  • modules/research-basis.md
  • modules/sample-intake.md
  • modules/sico-extraction.md

Open the folder on GitHubat commit 9f3eb00

Compare with similar skills

Voice Extract next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Voice Extract compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Voice Extract this skillathola/claude-night-market341—~1.8kAutomated safety check: PassMIT
Good Docs AuditComposioHQ/composio30k—~293Automated safety check: PassMIT
Adk Style GuideBrainDAO/adk-ts119—~1.8kAutomated safety check: PassMIT
Checkindranilbanerjee/digital-marketing-pro8591 repos~4.4kAutomated safety check: NotesMIT
Filter Syntaxmicrosoft/testfx1k3 repos~1.5kAutomated safety check: PassMIT
Bmad Prfaqdelorenj/mcp-server-trello4451 repos~2.7kAutomated safety check: PassMIT

Similar skills

  • Good Docs Audit

    ComposioHQ/composio

    Audit a doc, guide, README, or block of prose against the good-docs-writing style guide and report violations.

    30k GitHub stars~293 tokensUpdated today
    Writing & ContentAuto-check passed
  • Adk Style Guide

    BrainDAO/adk-ts

    ADK-TS brand voice, terminology, and writing conventions. An agent skill from BrainDAO/adk-ts.

    119 GitHub stars~1.8k tokensUpdated 3 mo ago
    Writing & ContentAuto-check passed
  • Check

    indranilbanerjee/digital-marketing-pro

    Run the unified pre-publish quality gate on marketing content — wraps scripts/eval-runner.py to score hallucination risk, claim substantiation (with --evidence), brand-voice fit (with --brand)…

    859 GitHub starsUsed in 1 repo~4.4k tokens
    Writing & ContentAuto-check: notes
  • Filter Syntax

    microsoft/testfx

    Official

    Reference data for test filter syntax across all platform and framework combinations: VSTest --filter expressions, MTP filters for MSTest/NUnit/xUnit v3/TUnit, and VSTest-to-MTP filter translation.

    1k GitHub starsUsed in 3 repos~1.5k tokens
    Testing & QAAuto-check passed
  • Bmad Prfaq

    delorenj/mcp-server-trello

    Working Backwards PRFAQ challenge that stress-tests a product concept customer-first.

    445 GitHub starsUsed in 1 repo~2.7k tokens
    Testing & QAAuto-check passed
  • Tlaplus

    swingerman/engineer

    A skill your agent uses to model-check real code or a design with TLA+ and TLC.

    154 GitHub stars~1.8k tokensUpdated 16 days ago
    Testing & QAAuto-check passed

More from athola/claude-night-market

All 154 skills in this repo
  • Night Market Diagnostics Toolkit

    athola/claude-night-market

    Run and interpret repo diagnostic scripts (ratchets, validators, token stats).

    341 GitHub stars~3.4k tokensUpdated 3 days ago
    Auto-check passed
  • Skills Eval

    athola/claude-night-market

    Evaluate Claude skill quality through auditing. An agent skill from athola/claude-night-market.

    341 GitHub stars~1.6k tokensUpdated 3 days ago
    Auto-check passed
  • Agent Teams

    athola/claude-night-market

    Coordinates Claude agent teams via filesystem protocol. An agent skill from athola/claude-night-market.

    341 GitHub stars~2.5k tokensUpdated 3 days ago
    Auto-check passed
  • Delegation Core

    athola/claude-night-market

    Delegates execution to eight CLIs (Gemini, Qwen, MiniMax, GLM, Muse, Codex, OpenCode, Glimmer).

    341 GitHub stars~2.5k tokensUpdated 3 days ago
    Auto-check passed
  • Elegant Code

    athola/claude-night-market

    Guide minimal code via a decision ladder with full safety, edge, and negative-case coverage.

    341 GitHub stars~2.1k tokensUpdated 3 days ago
    Auto-check passed
  • Skill Library Mission

    athola/claude-night-market

    Build a project skill library in .claude/skills/ via discovery, parallel authoring, and review.

    341 GitHub stars~1.6k tokensUpdated 3 days ago
    Auto-check passed

Questions about Voice Extract

What does Voice Extract do?

Extracts a user's writing voice from text samples via SICO comparative analysis. Voice Extract is an agent skill from athola/claude-night-market. Extracts a user's writing voice from text samples via SICO comparative analysis.

When should I use Voice Extract?

Voice Extract fits situations like: building a voice profile for consistent generation; tasks that involve Brand voice and tone.

How do I install Voice Extract in Claude Code?

Run `npx skills add athola/claude-night-market --skill voice-extract -a claude-code`. Or copy the skill folder (plugins/scribe/skills/voice-extract in athola/claude-night-market) into .claude/skills/voice-extract in your project. Claude Code loads it when a task matches its description.

How do I install Voice Extract in Codex?

Run `npx skills add athola/claude-night-market --skill voice-extract -a codex`. Or copy the skill folder (plugins/scribe/skills/voice-extract in athola/claude-night-market) into .agents/skills/voice-extract in your project. Codex loads it when a task matches its description.

Can I use Voice Extract in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add athola/claude-night-market --skill voice-extract -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/voice-extract, .gemini/skills/voice-extract, .github/skills/voice-extract and .opencode/skills/voice-extract in your project.

What does Voice Extract need to run?

SKILL.md names no scripts, command-line tools or credentials: Voice Extract is instructions for the agent only.

Does Voice Extract access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Voice Extract safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Voice Extract use?

Voice Extract is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Voice Extract use?

About 1.8k tokens (SKILL.md is roughly 7.2k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Voice Extract?

Skills that share tags, products or a category with Voice Extract: Good Docs Audit (ComposioHQ/composio, 30k stars), Adk Style Guide (BrainDAO/adk-ts, 119 stars), Check (indranilbanerjee/digital-marketing-pro, 859 stars) and Filter Syntax (microsoft/testfx, 1k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Voice Extract?

athola (a GitHub user) maintains it in athola/claude-night-market, which has 341 GitHub stars. The repository holds 154 skills in this directory. The repository was last updated on October 6, 2026.

Source: athola/claude-night-market on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.