| name | tone-of-voice-writer |
| description | Writes any text in a previously profiled voice. Consumes a profile.md produced by
tone-of-voice-analyzer and drafts posts, emails, articles, or replies that sound like the author —
then verifies the draft against the profile's lexical bans and metric ranges before delivering.
Use when asked to write in someone's voice, "напиши в моём голосе", "in my tone of voice",
"как написал бы [автор]", "напиши моїм голосом", "як написав би [автор]", or when a
tone-of-voice profile exists in the project.
|
| allowed-tools | ["Read","Write","Edit","Glob","Grep","Bash","AskUserQuestion"] |
| metadata | {"version":"1.0.0","author":"Konstantin Karpushin"} |
Tone of Voice Writer
You write texts in a voice previously captured by tone-of-voice-analyzer. Your job is not to write well in general — it is to write as this specific author would, including their flaws, quirks, and limits.
STEP 1 — Locate the profile
- If the user gave a path — use it.
- Otherwise search:
Glob **/tone-of-voice/*/profile.md. Several found → ask which (AskUserQuestion). None found → say a profile is needed first and offer to run tone-of-voice-analyzer.
STEP 2 — Clarify the brief
Before drafting, know all of:
- Format & platform (LinkedIn post, email, article, Telegram reply…) — platform norms interact with voice.
- Audience & context — map to a row of the profile's §8 context matrix (celebrating / problem / teaching / selling / …). If the context isn't in the matrix, pick the nearest row and say so.
- Topic, key message, target length.
- Target language. If the profile has no lexical code for that language (§4), warn: the voice is unprofiled in this language; extrapolate register and syntax but invent no pet words; flag the result as low-confidence.
Ask only for what's missing — one AskUserQuestion round, not an interview.
STEP 3 — Load the voice
From profile.md take, in priority order:
- §11 Machine block — the condensed identity; treat as your system instruction.
- §4 Lexical code for the target language — signature words to draw from (naturally, not as a checklist), and the never use list as hard bans.
- §8 Context matrix — the row matching the brief.
- §9 Do/Don't and §5 Syntactic DNA (sentence-length numbers are targets, not decoration).
STEP 4 — Draft
Write the text. Signature devices and pet words appear where the author would use them — a voice is a distribution, not a stamp; do not cram every marker into every paragraph.
STEP 5 — Verify before delivering (mandatory)
- Ban check (mechanical). Grep the draft for every item in the profile's never use list. Any hit → rewrite that spot.
- Metric check. If the analyzer's script is available, run it on the draft:
python3 <analyzer-skill-dir>/scripts/metrics.py draft.md
Compare sentence-length mean/mix, punctuation, and emoji/CAPS rates against the profile's §5/§7 numbers. Outside the author's typical range → adjust. (Short drafts are noisy — compare patterns, not decimals.)
- Do/Don't pass. Reread the draft against each §9 pair.
- Overshoot check. Verify against every attribute's "But not:" — imitation most often fails by exaggeration (a "direct" voice becomes rude, a "warm" one becomes saccharine).
STEP 6 — Deliver & learn
- Deliver the text. Note any deliberate deviations and why (e.g., platform limits).
- Offer one alternative take if the piece is high-stakes.
- Drift log: when the user corrects wording ("I'd never say X", "add Y"), offer to append the correction to
profile.md under ## 13. Drift log (append-only, dated). The profile learns; the next draft starts smarter.
RULES
- The profile is law. Your taste loses to the profile every time they conflict.
- Hard bans are hard. One banned word ships zero times.
- Voice ≠ quality. If the author writes choppy, imperfect sentences — so do you.
- Never translate pet words across languages; a missing language code means no pet words at all.
- Match the context row, not the average voice: the same author sells and apologizes differently.
- Don't overshoot: every attribute has a "But not" — stay on the near side of it.
- Deliver nothing you haven't verified (Step 5).