Skills/Humanize a draft/Voice match from a corpus

Voice match from a corpus: measure the fingerprint, then close the biggest gap

Extracts a countable fingerprint from a corpus of the author's real writing, measures the draft on the same features, then closes the gaps in order of size.

Not yet measured skill 3,247 words MIT by Locul Verified safe · 0 secrets Written 2026-08-19
No account, no install, nothing to sign up for. Copy it or download it and it works in Claude Code today. One-click import lands here shortly.
We have not measured this skill. There is no result on this page because we have not run one. It is written, it has been read for accuracy, and it is free to take. Nothing below claims it improves an output, because we have not shown that. This is different from a skill that failed our test: those are not published at all.
What it is, and what we are not claiming

The feature list is the asset, and contraction rate is the one nobody thinks to count.

We have not measured this one. It is published because the method is checkable on its own terms, not because we have run it against a control.

What it knows that a general instruction does not: a list of fourteen features that can actually be counted, and the correct way to count several of them. Contraction rate is the clearest example. Most people never think to measure it, it is one of the strongest register signals in English, and the obvious measurement is wrong: counting contractions per thousand words confounds the habit with the frequency of the underlying verbs, so the rate has to be taken against opportunities, contractions divided by contractions plus their expanded equivalents. The file also carries a real corpus-size threshold with a reason attached, roughly ten pieces and five thousand words before the sparse features mean anything, and a decision rule with an explicit "you cannot tell" branch for the case where the corpus contains too few instances of a feature to establish a target at all. That branch matters more than it sounds, because the alternative is inventing a target and editing towards noise.

It also says plainly what it cannot reach. Matching sentence length, punctuation and hedging rate gets the surface. It does not get the thing that makes a voice recognisable, which is what the writer chooses to leave out and what they are willing to assert.

Who this is not for. If you have never written the thing before, there is no corpus and this does nothing. If the piece is a product changelog or a policy note, the register is fixed by the form and personal voice is not the variable. And if you have one piece to match rather than a body of work, the procedure will not run, because a corpus of one cannot separate a habit from an occasion.

When to reach for it

  • The moment a draft comes back and the reaction is 'this is fine but it is not mine', which is the point where an adjective will not fix it.
  • Before ghostwriting anything that goes out under a named person's byline, while there is still time to collect their real writing.
  • When onboarding a new writer onto an existing publication that has a house voice nobody has ever written down.
  • After a rewrite pass has stripped the generated tells, because removing tells makes prose neutral rather than anyone's.
  • When a client says the copy does not sound like them but cannot say why, and you need a list of specific differences to show them.

Why there is no number on this page

Measuring one skill honestly costs about twenty model sessions: five runs with it, five without, on real material, each output graded alone by a session that is not told the other arm exists, against a rubric written by somebody who never saw the skill. We have not spent that on this one yet, so it ships labelled rather than ships silently.

How it would be measured. Tier B. Take six published essays by one author in one register, use four as the corpus, hold one back as a hidden reference, generate a draft on the held-back topic, then run blind pairwise preference between this skill's output and a plain 'match this author's voice, here are four samples' rewrite, with the author's real piece as the anchor. There is a partial objective spine: the fingerprint features are countable, so gap closure can be scored even where preference cannot.

The objective spine here is only partial. The fingerprint features are countable, so you can score whether a rewrite closed the gaps it was asked to close, and that half is cheap. The half that matters is whether the result reads as the author, and that needs blind pairwise preference from readers who know the author's work, against the author's own held-back piece as an anchor. That is a slow test to build and an expensive one to run, and it needs a real author who has agreed to have six pieces measured in public. We would also expect the control to do reasonably well when it is simply given four writing samples in the prompt, which is the honest reason this skill might turn out not to matter much.

The rule that decides pass or fail was written down before any run was executed and it does not move afterwards. It is in the method note on the hub, along with the full results table including every skill that was tested and cut.

What it does not do

Stated plainly, because a skill that claims everything is useful for nothing.

  • It matches surface features. It cannot supply the writer's judgement about what is worth saying, which is most of what a voice actually is.
  • It needs a real corpus. With fewer than about ten pieces the rare features, semicolons and exclamation marks and stock phrases, are too sparse to measure and the fingerprint is only half a fingerprint.
  • It will match a bad habit as faithfully as a good one. If the author overuses a construction, the target says to overuse it.
  • A human editor who has read the author for years beats this on everything except consistency and speed, and will spot the judgement gap that the feature list cannot see.
  • It is register-bound. A fingerprint taken from blog posts does not transfer to a conference talk, a legal letter, or a product release note, and applying it across registers makes the output worse.
  • It is only for a voice you are entitled to write in: your own, a ghostwriting engagement the named author knows about, or a house voice you have been asked to use. A publicly readable corpus is not consent.

Install it

  1. Open Locul, go to Library, and choose Import. One-click import from this page lands shortly.
  2. Locul writes the file to the right folder for every assistant you have connected, so you do not have to know where each one keeps its skills.
  3. Environment variables and headers in any shared config are replaced with a placeholder before they reach you, so importing a stranger's setup cannot hand you their credentials or take yours.
  4. Locul is free to start, on Mac and Windows. Get it here.
  1. Download SKILL.md using the button above, or copy the file.
  2. Save it at .claude/skills/voice-match-edit/SKILL.md in your project, or under ~/.claude/skills/voice-match-edit/SKILL.md on Mac and Linux, or %USERPROFILE%\.claude\skills\voice-match-edit\SKILL.md on Windows, to make it available everywhere.
  3. Start a new session. Claude Code picks up the skill from the name and description in the file's frontmatter, so you can also invoke it by name.
  1. Download or copy the file.
  2. For Claude Desktop, add it through the skills panel in settings, or drop the folder into your skills directory.
  3. For Cursor and other assistants that read plain instruction files, paste the body into your project rules file. The skill is plain markdown with no tool bindings, so it carries across.

Pairs well with

What else does this job

The best alternative is a person. An editor who has read the author for a year carries the fingerprint implicitly and will catch the judgement gap, the paragraph the author would simply have cut, which no feature table sees. If that person is available, use them.

Failing that, giving the model four or five real samples and asking it to match them is a genuinely reasonable baseline and costs nothing. It tends to catch tone and miss rate features: it will pick up that the author is informal without matching how often they actually contract, and it will not notice that the author has never once used a semicolon.

The readability tools do the numeric half against a general target rather than a person. Hemingway Editor and textstat are both listed above. They are useful inputs to the fingerprint and are not substitutes for it, because neither has a concept of whose writing this is meant to be.

Read the full source
---
name: voice-match-edit
description: Matches a draft to a specific author's voice by measuring it rather than describing it. Builds a corpus from the author's real writing, extracts a fingerprint of countable features including sentence and paragraph length distributions, contraction rate against opportunities, pronoun proportions, punctuation inventory, opener patterns, the small closed set of transitions the author actually uses, and hedging rate, then measures the draft on the same features and edits down the list by size of gap. This skill should be used when a draft has to sound like a particular person and a corpus of that person's writing exists.
---

# Voice match from a corpus

## Whose voice you may match

Settle this before you collect a single piece of writing, because the rest of the file assumes it is
already settled.

Match a voice you are entitled to write in. In practice that means one of three things: your own
voice; a voice you have been engaged to ghostwrite, with the named author's knowledge and their
sign-off on what goes out; or a house voice belonging to an organisation that has asked you to write
in it.

It is not for reproducing the voice of a public figure, a competitor's founder, a former colleague,
or anybody else who has not agreed. A corpus being publicly readable is not consent. Writing is
published to be read, not to be used as a template for sentences its author never wrote.

Say this plainly: the technique works well enough that the distinction matters. A close match
attached to someone's name, or placed anywhere a reader would reasonably assume they wrote it, is
impersonation whatever the intention behind it was, and the better the match the worse the problem.
If you cannot name the person who agreed, stop at this section.

## The claim this skill is built on

"Write in my voice" contains no information. It names a target without giving coordinates, so the
model does what anyone would do with no coordinates: it produces competent, mid-register prose and
labels it as yours. The same is true of every adjective people reach for next. Conversational,
punchy, warm, authoritative, human. Each of these is a direction rather than a destination, and two
readers will not agree on where any of them lands.

A voice is a set of habits, and habits are frequencies. How often this person contracts. How often
they start a paragraph with a conjunction. Whether they have ever used a semicolon. How long their
shortest sentences are and how often they use one. These are all countable, which means the gap
between a draft and a voice is measurable, which means the edit can be prioritised by size of gap
instead of by whatever the editor notices first.

This skill is that measurement. It has three parts: build a corpus, extract a fingerprint, then
compare and close. The order matters, because a fingerprint taken from the wrong corpus is worse
than no fingerprint at all: it gives you a precise target that points somewhere the author has
never been.

## Step 1. Build the corpus

**Include** pieces the author wrote themselves, in the same register as the draft, ideally from the
last two years. Blog posts, newsletters, internal memos they actually typed, long-form social posts,
conference talk transcripts if the draft is a talk.

**Exclude, and this list is where most corpora go wrong:**

- Anything ghostwritten. You will be matching the ghost.
- Anything heavily edited by someone else. A piece that went through a magazine's copy desk carries
  the copy desk's punctuation habits, not the author's. If you cannot tell how much was changed,
  leave it out.
- Anything from a different register. Legal correspondence, formal announcements, performance
  reviews, regulatory filings. These are written in the register's voice, not the person's, and
  including them drags every feature towards the middle.
- Co-authored work, unless you know which paragraphs are theirs.
- Anything generated or partly generated, which is now common enough that you have to ask.

**How much.** As a working threshold: at least ten pieces and roughly five thousand words. Below
about two thousand words you can measure the coarse features, sentence length and paragraph length
and pronoun proportions, and nothing else, because the sparse features do not appear often enough to
have a rate. A writer who uses a semicolon once every three thousand words will show zero semicolons
in a two thousand word corpus, and you will confidently instruct the draft never to use one.

**Why a corpus of one is worthless.** A single piece cannot separate a stable habit from the
occasion that produced it. Short sentences in that piece might be the author's rhythm or might be
what that particular argument needed. With one document you have no variance, and without variance
you cannot tell which features are the author and which are the topic. Any feature that varies more
between the author's own pieces than it does between the author and the draft is not a voice feature
at all, and you can only discover that with several pieces.

## Step 2. Extract the fingerprint

Fourteen features. For each one, measure it the way described, not the obvious way.

| Feature | How to measure it | What the number tells you |
|---|---|---|
| **Sentence length distribution** | Not the mean. Report the middle value, the quartiles, the proportion under 8 words, the proportion over 30, and the longest sentence in the corpus. | The mean hides everything. Two writers with the same average can look nothing alike: one writes every sentence at 17 words, the other alternates 6 and 34. |
| **Paragraph length distribution** | Sentences per paragraph, same shape: middle, range, and the proportion that are a single sentence. | The one-sentence-paragraph rate is a strong stylistic marker and varies enormously between writers. |
| **Contraction rate** | Contractions divided by contractions plus expanded equivalents. Count the opportunities: every "it is", "do not", "we are", "that is". | A per-thousand-words rate confounds the habit with how often those verbs occur. Rate against opportunity is the honest number. Many writers sit near 0 or near 1 rather than in the middle. |
| **Person mix** | First person singular, first person plural, and second person, each per thousand words, plus their proportions of each other. | "I" versus "we" is often a deliberate positioning choice, and a draft that swaps them reads as a different author entirely. |
| **Punctuation inventory** | Per thousand words: semicolons, colons, parentheses, exclamation marks, question marks, ellipses. Also the proportion of documents containing at least one of each. | The document proportion matters as much as the rate. A writer with one semicolon in ten pieces is not a semicolon user, and one semicolon in your draft will stand out. |
| **Register proxy** | Proportion of words with three or more syllables, which is the "hard words" definition used by the Gunning Fog index published in 1952, plus a count of Latinate suffixes: -tion, -ment, -ity, -ance, -ise, -ency. | A practical stand-in for Latin versus Germanic vocabulary without needing an etymological dictionary. Track the direction, not the absolute value. |
| **Vocabulary variety** | Type-token ratio computed on fixed windows of 500 or 1,000 tokens, then averaged. | Raw type-token ratio falls as text gets longer, so comparing a 6,000 word corpus with an 800 word draft directly is meaningless. Fixed windows fix this. |
| **Piece openers** | The first sentence of every piece in the corpus, listed verbatim. Classify: anecdote, direct claim, question, definition, scene, number. | Openers are the most patterned thing most writers do and the thing a generated draft gets most obviously wrong. |
| **Paragraph openers** | The first word of every paragraph. Count how many start with "The", "It", "This", "But", "And", "So", "There". | Two numbers to carry: the proportion starting with a conjunction, and the proportion starting with a subordinate clause. |
| **Transition set** | Every explicit transition used, with counts. | Almost every writer has a small closed set, often five or six items, used repeatedly. The presence of a transition outside that set is more diagnostic than the frequency inside it. |
| **Hedging rate** | Hedges per hundred sentences. Count qualifiers on claims: perhaps, arguably, tends to, generally, may, somewhat. | The single most reliable separator between a generated draft and most human writing, and the direction is nearly always the same. See the sibling file below. |
| **Stock formations** | Recurring phrases, idioms, sentence shapes, and any construction appearing in three or more pieces. | This is the part that reads as personality. It includes bad habits, and you should record them anyway. |
| **Humour** | Whether it appears at all, what kind, and where it sits: in asides, in parentheses, at the end of a section, never in the opening. | Position is more transferable than content. A writer who only jokes in parentheses will look wrong with a joke in a topic sentence. |
| **The never list** | Constructions absent from the entire corpus despite many opportunities. | Often the most diagnostic feature in the whole table. Zero rhetorical questions in 6,000 words is a decision. Zero exclamation marks is a decision. |

The never list deserves the emphasis. Presence features tell you what is possible for this writer.
Absence features tell you what is impossible, and violating an impossible feature is what makes a
reader say "they would never write that" without being able to explain why.

## Step 3. The comparison pass

Measure the draft on all fourteen features using identical methods, then build one table with three
columns: corpus value, draft value, and gap. Sort by gap size.

Work down that list. Do not work in the order you notice things, and do not start with whatever is
easiest to fix, because the easy fixes are usually the small gaps. The biggest gap is where the
draft stops sounding like the author, and it is frequently a feature nobody would have raised in
conversation: the draft hedges four times as often, or it uses eleven distinct transitions where the
author uses five, or it opens every paragraph with "The".

## The decision rule

For each feature, in order of gap size:

- **If the draft's value falls outside the range observed across the corpus pieces**, change it. This
  is the strongest signal available: the author has never, in any piece, done this.
- **If the value is inside the range but far from the centre**, change it only when the feature is
  high salience. The high salience four are contraction rate, hedging rate, sentence length spread,
  and paragraph openers. Readers notice these. They do not notice type-token ratio.
- **If the corpus contains fewer than five instances of the feature, or fewer than three pieces
  containing it at all, you cannot tell.** Leave the draft alone and record the feature as
  unmeasured. Do not construct a target from two observations. This branch fires most often on
  semicolons, exclamation marks, and humour, and the temptation to guess is strongest exactly where
  guessing is least supported.
- **If the corpus varies more within itself on a feature than the draft differs from the corpus
  average**, ignore the feature. The author is not consistent on it, so it is not part of the voice.

## The two features hardest to match

**Confidence level.** A generated draft hedges more than almost any human writer. It qualifies
claims that need no qualification, attributes opinions to unnamed groups, and softens the ends of
sentences. Matching an author who asserts things flatly means deleting the qualifiers and accepting
the exposure that creates, and it is the single change most likely to make a draft sound like a
person. This overlaps with the claim-and-hedge-audit skill, which does the epistemic version of the
job: that file asks whether a hedge is carrying real uncertainty, this one asks whether the rate
matches the author. Run the epistemic pass first, then the rate match, because a hedge that survives
the epistemic pass is one you should keep even if it pushes the rate up.

**Omission.** Every real writer leaves things out. They skip the definition, they do not explain the
obvious counterargument, they let a reference go unexplained because their reader will get it. A
generated draft covers. It answers the objection nobody raised and defines the term everyone knows,
because completeness is the safe default. You cannot measure this from a fingerprint. What you can
do is look at what the corpus pieces do not contain, and cut the parts of the draft that fill in
gaps the author would have left open.

## The derived style guide

Once the fingerprint exists, write it down as instructions with numbers in them: contract at roughly
this rate, keep one sentence paragraphs at about this proportion, never use a semicolon, open with a
claim rather than a question, use these six transitions and no others.

A derived guide beats a declared one because people do not accurately describe their own writing.
Asked to characterise their style, writers report aspirations and self-image. They say they write
short sentences when the corpus says otherwise. They say they avoid jargon while using six terms of
art per page. They are not lying, they simply have no access to their own frequencies. Ask a writer
for a style guide and you get what they wish they wrote. Measure the corpus and you get what they
write.

Where the declared guide and the derived one disagree, the derived one wins for matching the
existing voice. The declared one may still win as a target if the author is deliberately changing
how they write, and that is a different job, which this skill does not do.

## Worked example

An author's newsletter, twelve pieces, roughly 9,000 words. A draft has come back on a new topic.

| Feature | Corpus | Draft | Gap |
|---|---|---|---|
| Sentence length, middle value | 14 | 19 | +5 |
| Under 8 words | 22% | 4% | -18pt |
| Over 30 words | 6% | 14% | +8pt |
| Contraction rate | 0.81 | 0.22 | -0.59 |
| One-sentence paragraphs | 31% | 6% | -25pt |
| Semicolons | 0 in 12 pieces | 3 | outside range |
| "I" per 1,000 words | 12.4 | 1.1 | -11.3 |
| Hedges per 100 sentences | 4 | 23 | +19 |
| Distinct transitions | 6 | 14 | +8 |
| Paragraph opens with "The" | 9% | 38% | +29pt |

Sorted by size and salience, the order of work is: contraction rate, hedging rate, first person,
one-sentence paragraphs, paragraph openers, short sentence proportion, semicolons. Sentence length
middle value is last, because it will largely fix itself once the short sentences come back.

Draft paragraph as received:

> It is generally advisable to consider the possibility that a pricing change may have downstream
> effects on customer retention; in many cases, organisations find that the impact is not
> immediately apparent. The data suggests that a measured approach is typically warranted.

Corrected against the fingerprint, closing the four largest gaps:

> Change the price and you will find out about retention three months later. I have watched it
> happen twice. Both times the first month looked fine.

Contraction rate is not represented here because no opportunity arose, which is the correct
outcome: you do not insert contractions, you stop avoiding them. Hedges went from four to zero. The
semicolon is gone. First person appeared. Two of three sentences are under eight words, matching a
corpus where 22 percent are.

**Verdict on this example: six of the seven features in the work order closed, contraction rate
left alone because the rewrite gave it no opportunity, and one feature unmeasured.** Humour could
not be scored, because the corpus contained three instances across twelve pieces, which is below
the threshold, so the draft was left alone on that feature rather than given a joke.

## Failure modes

**Matching the ghost.** The corpus included two pieces written by an agency. Every feature is now
pulled towards a house style the author has never had, and the author will reject the output without
being able to say why.

**Register bleed.** Blog posts and legal correspondence in the same corpus. The fingerprint lands
between the two and matches neither, producing prose that is too stiff for the newsletter and too
loose for the letter.

**Measuring the mean and stopping.** Sentence length averaged to 16 in both corpus and draft, so the
feature was marked closed, while the corpus alternated 5 and 30 and the draft sat flat at 16
throughout. This is the failure the sentence-rhythm-edit skill exists to catch, and averaging is how
you hide it from yourself.

**Inventing a target from two observations.** Two semicolons in a corpus became a target semicolon
rate, and the edit inserted semicolons into a draft by a writer who barely uses them. The "you
cannot tell" branch exists for exactly this and gets skipped because a blank cell in a table feels
like a failure.

**Faithful reproduction of a bad habit.** The author opens 40 percent of paragraphs with "The", and
the match dutifully reproduces it. This is correct behaviour for a voice match and wrong for the
piece. Flag it, do not silently fix it, and let the author decide.

**Cargo-culting the stock phrases.** Recurring formations get inserted at three times their natural
rate because they are the most visible part of the fingerprint. The result reads as a parody, which
is the characteristic failure of impersonation: the signature moves are all present and the
frequencies are wrong.

**Confusing voice with format.** The corpus is newsletters with a sign-off and a postscript; the
draft is a landing page. Structural habits get transplanted into a form that cannot carry them. The
structure-de-templating skill handles document shape, and the two jobs should not be merged.

**Editing until every gap is zero.** A perfectly matched fingerprint is not a good piece of writing.
Some gaps exist because this topic genuinely needs longer sentences. Close the gaps that are habits
and leave the ones that are the argument.

## What this skill does not do

- It does not supply judgement. Matching the surface of a voice cannot tell you what this author
  would have thought was worth saying, which is most of what makes them recognisable.
- It cannot work without a corpus, and it degrades quietly rather than loudly when the corpus is too
  small: you get a fingerprint with confident numbers on features that had four observations.
- It does not distinguish a habit worth keeping from one worth losing. It reproduces both, and the
  author has to make that call.
- It does not transfer between registers, and using a blog fingerprint on a talk or a filing makes
  the output worse rather than neutral.
- It does not remove generated tells or fix document shape. Those are the ai-tell-removal,
  sentence-rhythm-edit and structure-de-templating skills, and this one assumes they have already
  run.
- It has nothing to say about whether the piece should disclose that a model was involved. That is
  the ai-disclosure-audit skill, and matching a voice well makes the disclosure question more
  pressing rather than less.
Why import instead of copy

A skill is only as good as what it can read.

These skills all ask your assistant to check things against your actual codebase, your actual schema, your actual design system. Locul keeps that context current on its own, from the files you already have, on your machine. Mac and Windows, free to start.

Start free