/draft-in-voice
Ghostwrite content in a specific person's voice from a VALIDATED voice profile — tweets, replies, short posts, launch copy, recruiting blurbs, emails. Loads the subject's voice profile (people/<slug>-voice) plus first-party context from the brain, drafts 2-3 options in-register,
Claude Code
$ npx -y skills add garrytan/gbrain --skill draft-in-voice --agent claude-code
Codex
$ npx skills add garrytan/gbrain --skill draft-in-voice -a codex -y
Cursor
$ npx skills add garrytan/gbrain --skill draft-in-voice -a cursor -y
Gemini CLI
$ npx skills add garrytan/gbrain --skill draft-in-voice -a gemini-cli -y
GitHub Copilot
$ npx skills add garrytan/gbrain --skill draft-in-voice -a github-copilot -y
OpenCode
$ npx skills add garrytan/gbrain --skill draft-in-voice -a opencode -y
Windsurf
$ npx skills add garrytan/gbrain --skill draft-in-voice -a windsurf -y
SKILL.md
draft-in-voice.SKILL.mdname: draft-in-voice
version: 1.0.0
description: >
Ghostwrite content in a specific person's voice from a VALIDATED voice
profile — tweets, replies, short posts, launch copy, recruiting blurbs,
emails. Loads the subject's voice profile (people/<slug>-voice) plus
first-party context from the brain, drafts 2-3 options in-register, then
runs a hard voice-fidelity self-check before showing anything. Includes
the profile BUILDER: if no validated profile exists, drafting hard-stops
and this skill walks the corpus-to-fingerprint build instead. Never
auto-posts.
triggers:
- "draft in voice"
- "write this as"
- "make this sound like"
- "ghostwrite"
- "draft a tweet as"
- "write a post as"
- "in their voice"
- "in my voice"
- "build a voice profile"
mutating: true
writes_pages: true
writes_to:
- people/
upstream: draft-in-voice@fc834ee
draft-in-voice — Memory-Grounded Ghostwriting
> **Convention:** see [conventions/brain-first.md](../conventions/brain-first.md) — > the voice profile and all substance come from the brain, never from memory > or improvisation. > > **Convention:** see [conventions/quality.md](../conventions/quality.md) for > citation and back-link rules, and > [_brain-filing-rules.md](../_brain-filing-rules.md) — voice profiles are > person-subject pages and file under `people/`.
What this is
Ghostwrite in a specific person's voice with high fidelity. The voice work is done UPSTREAM: a validated voice profile already exists in the brain at `people/<slug>-voice` (e.g. `people/alice-example-voice`), and this skill is the disciplined *application* of it. Never freehand "founder voice" or "their voice" from memory — always load the profile and obey its hard rules.
If no validated profile exists, drafting **stops** — see [Building a voice profile](#building-a-voice-profile) below. A made-up voice is worse than asking.
> **The user's own voice is a special case.** If the subject is the user and > the harness ships a dedicated personal voice skill (with its own register > tuning and anti-AI patterns), prefer that. Use `draft-in-voice` for anyone > else with a validated profile — colleagues, founders, partners, the people > the user ghostwrites for — or for the user when no dedicated skill exists.
Source of truth (read these FIRST, every time)
1. **The validated voice profile** — `gbrain get people/<slug>-voice`. The fingerprint, quantitative stats (median length, diction, rhythm), and the "how to write as this person" directive block. **This is binding.** If the page is missing, or its `status` is anything other than `validated` (a `status: stub` page, such as the empty me/voice form setup writes, is missing), STOP drafting and go to the builder appendix. 2. **First-party context** — the subject's main page (`gbrain get people/<slug>`) plus timeline and backlinks (`gbrain timeline <slug>`, `gbrain backlinks people/<slug>`): how they actually frame their work, their origin arc, their texture. Use for *substance* so the content is true to how they think, not just how they sound. 3. **(optional) Topic-specific pages** — if the draft is about a specific idea or company, pull the relevant page (`gbrain search "<topic>"`, then `gbrain get <slug>`) so every claim is accurate, not invented.
The hard rules (read them OFF the profile)
A good voice profile encodes the person's non-negotiables. Honor whatever the profile states. The six recurring categories to extract and obey:
1. **Tells to avoid.** Most profiles name a #1 giveaway (often em-dashes, a stock opener, a punctuation habit). A draft that trips the named tell is automatically wrong. 2. **Length discipline.** Match the profile's median length. One thought per short post. Cut. 3. **Register, picked not blended.** Most people have a casual register and a statement/technical register with different rules (caps, emoji, slang, jargon). Pick ONE per draft; never blend — emoji plus corporate jargon in the same line reads fake. 4. **Signature moves.** The profile names the person's characteristic constructions — use them. 5. **Banned boilerplate.** Whatever the profile bans (hashtags, "excited to announce", "1/n" threads, specific buzzwords) stays out. 6. **Worldview to channel.** Substance should reflect how they actually see the thing.
Procedure
1. **Resolve the subject + load** `people/<slug>-voice` and first-party context from the brain. No validated profile → stop drafting and offer to build one (appendix below); do not fake it. 2. **Clarify register + intent** in one line if ambiguous: casual (chat energy) or statement (launch/technical)? Default casual for replies, statement for announcements. 3. **Draft 2-3 options**, not one. Keep each tight. Vary the angle, not the voice. 4. **Run the voice self-check** (below). Fix anything that flunks before showing the draft. 5. **Show the options + the self-check verdict.** Drafting only — posting or sending is the human's call and goes through the normal approval-gated path. This is a contract the agent upholds, not a mechanical guarantee: never wire a draft directly into a send.
Voice self-check (run before showing any draft)
Score each draft against the loaded profile; fix fails, don't ship them:
- [ ] **Named-tell check:** the profile's #1 tell does not appear (auto-fail
if it does).
- [ ] **Length:** within the profile's stated band, ideally at its median.
One thought.
- [ ] **Register purity:** one register, not a blend.
- [ ] **No banned boilerplate:** nothing the profile explicitly bans.
- [ ] **Sounds like them, not generic:** would it sit naturally between two
of their real posts? If unsure, pull 3 real adjacent samples from the corpus referenced in the profile's provenance block and compare cadence.
- [ ] **Substance is true:** every factual claim traces to a real brain page
or first-hand fact — never invent metrics, cus
Read more
name: draft-in-voice version: 1.0.0 description: > Ghostwrite content in a specific person's voice from a VALIDATED voice profile — tweets, replies, short posts, launch copy, recruiting blurbs, emails. Loads the subject's voice profile (people/<slug>-voice) plus first-party context from the brain, drafts 2-3 options in-register, then runs a hard voice-fidelity self-check before showing anything. Includes the profile BUILDER: if no validated profile exists, drafting hard-stops and this skill walks the corpus-to-fingerprint build instead. Never auto-posts. triggers: - "draft in voice" - "write this as" - "make this sound like" - "ghostwrite" - "draft a tweet as" - "write a post as" - "in their voice" - "in my voice" - "build a voice profile" mutating: true writes_pages: true writes_to: - people/ upstream: draft-in-voice@fc834ee
draft-in-voice — Memory-Grounded Ghostwriting
> **Convention:** see [conventions/brain-first.md](../conventions/brain-first.md) — > the voice profile and all substance come from the brain, never from memory > or improvisation. > > **Convention:** see [conventions/quality.md](../conventions/quality.md) for > citation and back-link rules, and > [_brain-filing-rules.md](../_brain-filing-rules.md) — voice profiles are > person-subject pages and file under `people/`.
What this is
Ghostwrite in a specific person's voice with high fidelity. The voice work is done UPSTREAM: a validated voice profile already exists in the brain at `people/<slug>-voice` (e.g. `people/alice-example-voice`), and this skill is the disciplined *application* of it. Never freehand "founder voice" or "their voice" from memory — always load the profile and obey its hard rules.
If no validated profile exists, drafting **stops** — see [Building a voice profile](#building-a-voice-profile) below. A made-up voice is worse than asking.
> **The user's own voice is a special case.** If the subject is the user and > the harness ships a dedicated personal voice skill (with its own register > tuning and anti-AI patterns), prefer that. Use `draft-in-voice` for anyone > else with a validated profile — colleagues, founders, partners, the people > the user ghostwrites for — or for the user when no dedicated skill exists.
Source of truth (read these FIRST, every time)
1. **The validated voice profile** — `gbrain get people/<slug>-voice`. The fingerprint, quantitative stats (median length, diction, rhythm), and the "how to write as this person" directive block. **This is binding.** If the page is missing, or its `status` is anything other than `validated` (a `status: stub` page, such as the empty me/voice form setup writes, is missing), STOP drafting and go to the builder appendix. 2. **First-party context** — the subject's main page (`gbrain get people/<slug>`) plus timeline and backlinks (`gbrain timeline <slug>`, `gbrain backlinks people/<slug>`): how they actually frame their work, their origin arc, their texture. Use for *substance* so the content is true to how they think, not just how they sound. 3. **(optional) Topic-specific pages** — if the draft is about a specific idea or company, pull the relevant page (`gbrain search "<topic>"`, then `gbrain get <slug>`) so every claim is accurate, not invented.
The hard rules (read them OFF the profile)
A good voice profile encodes the person's non-negotiables. Honor whatever the profile states. The six recurring categories to extract and obey:
1. **Tells to avoid.** Most profiles name a #1 giveaway (often em-dashes, a stock opener, a punctuation habit). A draft that trips the named tell is automatically wrong. 2. **Length discipline.** Match the profile's median length. One thought per short post. Cut. 3. **Register, picked not blended.** Most people have a casual register and a statement/technical register with different rules (caps, emoji, slang, jargon). Pick ONE per draft; never blend — emoji plus corporate jargon in the same line reads fake. 4. **Signature moves.** The profile names the person's characteristic constructions — use them. 5. **Banned boilerplate.** Whatever the profile bans (hashtags, "excited to announce", "1/n" threads, specific buzzwords) stays out. 6. **Worldview to channel.** Substance should reflect how they actually see the thing.
Procedure
1. **Resolve the subject + load** `people/<slug>-voice` and first-party context from the brain. No validated profile → stop drafting and offer to build one (appendix below); do not fake it. 2. **Clarify register + intent** in one line if ambiguous: casual (chat energy) or statement (launch/technical)? Default casual for replies, statement for announcements. 3. **Draft 2-3 options**, not one. Keep each tight. Vary the angle, not the voice. 4. **Run the voice self-check** (below). Fix anything that flunks before showing the draft. 5. **Show the options + the self-check verdict.** Drafting only — posting or sending is the human's call and goes through the normal approval-gated path. This is a contract the agent upholds, not a mechanical guarantee: never wire a draft directly into a send.
Voice self-check (run before showing any draft)
Score each draft against the loaded profile; fix fails, don't ship them:
- [ ] **Named-tell check:** the profile's #1 tell does not appear (auto-fail
if it does).
- [ ] **Length:** within the profile's stated band, ideally at its median.
One thought.
- [ ] **Register purity:** one register, not a blend.
- [ ] **No banned boilerplate:** nothing the profile explicitly bans.
- [ ] **Sounds like them, not generic:** would it sit naturally between two
of their real posts? If unsure, pull 3 real adjacent samples from the corpus referenced in the profile's provenance block and compare cadence.
- [ ] **Substance is true:** every factual claim traces to a real brain page
or first-hand fact — never invent metrics, cus
Other skills on gbrain.
More skills from other plugins.
agent-cost-report
Believable agent cost report for any period, default the last 7 full days PT, not counting today. Measured tokens from Claude…
bot-handoff
Keep a durable record of work passed between Bots in the shared Hindsight memory bank. Use when handing work to another Bot, when…
mempalace
Install, configure, and operate MemPalace, including a private local palace, a shared-brain hub, or a client joining an existing…
mempalace
Install, configure, and operate MemPalace, including a private local palace, a shared-brain hub, or a client joining an existing…
Questions about draft-in-voice.
- Which coding agents can use draft-in-voice?
- draft-in-voice installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.

