Skills

Voice Profile

Extract a written voice profile from your own prior papers, then use it to keep new...

Install

npx skills add pedrohcgs/claude-code-my-workflow --skill voice-profile -g -a claude-code -y
Category
Writing
Updated
1mo ago
License
MIT
Context cost
Lightabout 1,359 tokens
Runs scripts
No, instructions only

What it does

Extract a written voice profile from your own prior papers, then use it to keep new drafts sounding like you. Reads a corpus one document at a time via subagents, produces a reusable profile on disk (lexicon, sentence rhythm, how you open and close, hedging habits, deliberate quirks), and audits a draft against it. Use when the user says "make this sound like me", "match my voice", "profile my writing", "why does this draft not sound like my papers", or before drafting prose that will carry their name. The positive counterpart to /humanize, which only detects AI tells.

Voice profile, write toward something, not just away from tells

/humanize is the negative direction: it finds AI tells and says what to remove. That leaves a draft that is merely less bad.

This is the positive direction: a written description of how you actually write, extracted from your own published work, so a draft can be measured against a target instead of a taboo list.

What this does not do. A voice profile makes prose sound like your prose. It does not make model-generated text stop reading as model-generated to a neural detector, nothing an LLM applies to its own output does. See writing-with-ai.md. Use this to write well in your own register; write the load-bearing sentences yourself.

Building the profile

1. Assemble the corpus, and count it

Three to twelve of your own pieces where you were the primary writer. Published papers are best, they survived editing. Mix genres if you write in several (paper, referee report, grant, teaching notes); the profile should note where your register changes.

find <corpus-dir> -maxdepth 1 \( -name '*.pdf' -o -name '*.tex' \) | wc -l

(find, not a glob, in zsh an unmatched glob aborts the whole command, which reports 0 and defeats the count this step exists for.)

Count before starting. A corpus of eleven is a different task from four, and discovering that halfway through is how a session gets reset.

2. One subagent per document, never load the corpus into one context

Per pdf-processing.md: spawn one subagent per document in a fresh context. Each reads only its own file, writes a ~300-word note to notes/voice/<name>.md against the fixed schema below, and returns only the filename.

The main session then reads only the notes. Loading a whole corpus at once has repeatedly forced a session reset after partial work was already lost.

Read the whole SKILL.md on GitHub

More in Writing