Build a personal voice profile from a person's own writing samples, then draft and check new text in that voice. Use when someone asks to write like me, match my voice, capture my style, draft in my tone, ghostwrite from my samples, or check whether a draft sounds like the person it is meant to sound like.
./install.sh write-like-mename: write_like_me description: "Build a personal voice profile from a person's own writing samples, then draft and check new text in that voice. Use when someone asks to write like me, match my voice, capture my style, draft in my tone, ghostwrite from my samples, or check whether a draft sounds like the person it is meant to sound like."
Turn a pile of past writing into a working voice profile, then use that profile to draft new pieces and check them before they ship. Manual profile exercises stop at adjectives. This skill measures the writing, extracts style dimensions an agent can act on, and runs consistency checks on the draft.
Use it only with the person's own samples, or samples they have the right to use. Do not use it to imitate a living writer for deceptive attribution, and do not present a draft as hand-written by the person if it was not.
Ask for samples the person actually wrote, in the register you need to match.
Run the bundled analyzer on the cleaned samples before writing any prose description.
bash
python3 ~/workspace/skills/write-like-me/bin/voice_profile.py analyze sample1.txt sample2.txt sample3.txt --out profile.json
Read the output for: mean sentence length and its spread, sentence-length mix, Flesch Reading Ease and Flesch-Kincaid grade, type-token ratio with root TTR, contraction rate, pronoun rate, function-word rate, and punctuation habits. Full formulas and limits are in references/method.md.
Why measure first: stylometry research (Stamatatos, 2009) sorts style into lexical, character, syntactic, semantic, and application-specific features. Function words carry strong author signal because people use them with little conscious attention and they stay stable across topics. A profile built only on favourite nouns captures subject matter, not voice.
Fill every row. Leave nothing as a bare adjective: each row needs an observable rule plus a short example drawn from the samples.
| Dimension | What to record | |---|---| | 1. Diction | Word length, plain vs Latinate choices, recurring words, banned words, jargon level | | 2. Syntax | Sentence length pattern, fragments allowed or not, clause stacking, active vs passive lean | | 3. Rhythm | Burstiness pattern: how short and long sentences alternate, paragraph length, one-line paragraphs | | 4. Tone position | Place the voice on the four Nielsen Norman Group spectra: funny to serious, formal to casual, respectful to irreverent, enthusiastic to matter-of-fact | | 5. Structure | How pieces open, how they close, list use, heading use, where the point lands | | 6. Stance | First person or not, direct address, hedging level, how opinions and uncertainty are stated | | 7. Signature devices | Repeated moves: asides, questions to the reader, specific transitions, characteristic closers | | 8. Anti-patterns | What this voice never does, stated as hard stops |
Voice stays stable. Tone shifts by situation. Keep that split, following the Mailchimp Content Style Guide distinction: write one stable voice profile, plus a small tone-shift table for contexts such as bad news, celebration, or a formal request. Template: references/voice-profile-template.md.
Produce a one-page profile an agent could draft from without reading the samples again.
Do all three. A draft passes only when all three are clean or every flag has a conscious reason.
Check A, quantitative. Compare draft against profile:
bash
python3 ~/workspace/skills/write-like-me/bin/voice_profile.py compare profile.json draft.txt
Worked result from a real run of this tool: a formal summary of a personal sample had near-identical mean sentence length (11.75 vs 11.86 words) and still flagged 3 of 6 dimensions: burstiness CV 0.236 vs 0.759, Flesch Reading Ease 41.9 vs 82.7, pronoun rate 0.0% vs 13.9%. Lesson: mean length alone proves nothing. Rhythm, readability, and stance carry the voice.
Check B, qualitative. Go dimension by dimension through the eight rows. For each, cite one draft line that satisfies the rule or fix the line. Pay special attention to anti-patterns and to signature words appearing at the wrong rate: twice the sample rate reads as parody.
Check C, read and swap. Read the draft aloud. Then place its opening paragraph beside a sample opening with names removed and ask: could a reader who knows this person sort them correctly? If the honest answer is no, revise rhythm and stance before touching vocabulary.
One focused revision pass against the flags. Re-run Check A. Report the final flag count, what changed, and any shift you accepted on purpose, for example a more formal tone for a formal context under the tone-shift table.
Deliver, in this order:
If no draft was requested, deliver the profile card plus one short test paragraph written from the card, labelled as a test paragraph.
references/method.md. Do not invent thresholds, effect sizes, or study results. Where research gives no settled answer, say so in the profile.unknown, needs more samples instead of guessing. A profile with honest gaps beats a complete profile built on invention.python3 -m py_compile ~/workspace/skills/write-like-me/bin/voice_profile.py must pass after any edit.publisher key 2e43c913833850e6d80f939677e3de76e806d47785c0f1caaca90f9d18c98e1e
No ratings yet — be the first to rate it.