Agent skill

Draft In Voice

by garrytan in garrytan/gbrain

Ghostwrite content in a specific person's voice from a VALIDATED voice profile — tweets, replies, short posts, launch copy, recruiting blurbs, emails.

MITAuto-check passedWriting & Content

Install Draft In Voice

skills CLI
$ npx skills add garrytan/gbrain --skill draft-in-voice -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install garrytan/gbrain draft-in-voice --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/garrytan/gbrain.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/draft-in-voice .claude/skills/draft-in-voice && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
draft-in-voice
GitHub stars
31k
Token cost
~3.7k tokens
SKILL.md length
1,804 words
Files
2
Skills in repo
47
Repo updated
First seen
Licence
MIT

At a glance

Ghostwrite content in a specific person's voice from a VALIDATED voice profile — tweets, replies, short posts, launch copy, recruiting blurbs, emails.

  • Works in 5 steps: Consent → Gather the corpus (threshold: 20+… → Extract the fingerprint (schema mirrors… → …
  • Tasks that involve Brand voice and tone
  • SKILL.md covers What this is, Source of truth (read these…, The hard rules (read them OFF… and Procedure, plus 8 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Draft In Voice is an agent skill from garrytan/gbrain. 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.

Its SKILL.md is about 3.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 1 other file.

It sits in Writing & Content, covering Brand voice and tone, Verification before completion and Social media posts. It works with X (Twitter). The repository describes itself as: Garry's Opinionated OpenClaw/Hermes Agent Brain. The licence is MIT.

When your agent uses it

  • Tasks that involve Brand voice and tone
  • Tasks that involve Verification before completion
  • Tasks that involve Social media posts

Example prompts

  • “/draft-in-voice”

Workflow steps

5 steps, taken from the step headings in SKILL.md.

  1. Consent
  2. Gather the corpus (threshold: 20+ samples, 6+ months)
  3. Extract the fingerprint (schema mirrors the six hard rules)
  4. Write the profile page
  5. Validate (blind check)

What it can do on your machine

Read from SKILL.md and the folder at commit fc54831. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are markdown).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Draft In Voice loads about 3.7k tokens when it runs. Until then it costs about 131 tokens; SKILL.md has 1,804 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~131
When it runs · the whole SKILL.md, loaded when a task matches
~3.7k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from garrytan/gbrain at commit fc54831, republished under its MIT licence (© garrytan). 1,804 words, ~3,728 tokens.

Download SKILL.mdSave it as .claude/skills/draft-in-voice/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
draft-in-voice
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.
version
1.0.0
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 — the voice profile and all substance come from the brain, never from memory or improvisation.

Convention: see conventions/quality.md for citation and back-link rules, and _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 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, 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, customers, or specifics. Private details stay private unless the person has said them publicly.

When the voice profile is thin or missing

Do NOT improvise. Either:

  • build the profile first (appendix below), or
  • tell the user the profile is missing/thin and ask for real samples to anchor on.

This refuse-to-draft-without-memory stance is the point of the skill: it is brain-first discipline applied to voice.

Building a voice profile

The builder half of the skill. Run this when drafting hard-stops on a missing or unvalidated profile, or when the user asks to "build a voice profile".

Confirm the user is authorized to ghostwrite for this person and record who granted it and for what scope (e.g. "tweets and launch copy, not email"). Consent goes in the profile page (schema below). No consent recorded → build stops the same way drafting stops without a profile.

Step 1 — Gather the corpus (threshold: 20+ samples, 6+ months)
  • First-party writing only. Their published posts, essays, emails they wrote, talks they gave. Never third-party descriptions, press coverage, or paraphrases — those capture reputation, not voice.
  • Minimum bar: 20+ samples spanning 6+ months. Fewer samples overfit to a mood; a shorter span misses register variation. Below the bar, the profile can only be saved as status: draft — which does NOT unlock drafting.
  • Cover the target format. If the user will ask for tweets, at least 5 samples must be short posts; launch copy needs at least a few statement- register samples.
  • Check what the brain already holds before asking for uploads: gbrain search "<person name>", gbrain backlinks people/<slug>, and any media/ archives. Ingest new samples through the normal ingest skills first so the profile's provenance can point at real pages.
Step 2 — Extract the fingerprint (schema mirrors the six hard rules)

Analyze the corpus and fill all six categories — each one becomes a section of the profile page:

Fingerprint fieldWhat to extract
tells_to_avoidThe #1 giveaway plus any others: punctuation habits, stock openers, constructions they never use.
lengthMedian length + band per format (tweet, reply, post, email), from actual counts — not vibes.
registersEach distinct register (casual / statement / technical) with its own rules: caps, emoji, slang, jargon.
signature_movesCharacteristic constructions, openers, rhythms, recurring turns of phrase.
banned_boilerplateEverything they demonstrably never do: hashtags, "excited to announce", thread numbering, buzzwords.
worldviewHow they actually frame their domain — positions, recurring theses, what they care about. Cite brain pages.
Show full SKILL.md (703 more words)Show less
Step 3 — Write the profile page

File at people/<slug>-voice (person-subject page per _brain-filing-rules.md), via gbrain put people/<slug>-voice with the page content on stdin. Required top-of-page metadata block:

markdown
# Alice Example — Voice Profile

```yaml
subject: people/alice-example
status: draft            # draft | validated | stale — only `validated` unlocks drafting
profile_version: 1       # bump on every rebuild; prior versions via `gbrain history`
built_at: 2026-08-11
validated_at: null
validated_by: null
consent:
  granted_by: the user
  granted_at: 2026-08-11
  scope: "tweets + launch copy"
provenance:
  corpus_size: 26
  corpus_span: "2026-01 to 2026-08"
  sources:
    - media/x/alice-example/
    - writing/acme-example-launch-draft.md
```

## Fingerprint
### 1. Tells to avoid
### 2. Length discipline
### 3. Registers
### 4. Signature moves
### 5. Banned boilerplate
### 6. Worldview to channel

## How to write as this person
(the binding directive block the drafting half reads)

Back-link the profile from the subject's main page (gbrain link people/alice-example people/alice-example-voice --link-type has-voice-profile or the equivalent add_link op in your surface).

Step 4 — Validate (blind check)

A profile only earns status: validated after it survives a blind test:

  1. Hold out 5 real samples the fingerprint was NOT extracted from.
  2. Draft 3 test pieces from the profile and interleave them with the held-out real samples.
  3. Show the mixed set to the user (or the subject). If the drafts don't stand out, set status: validated, validated_at, validated_by, and bump nothing. If they do stand out, note WHICH tell exposed them, refine the fingerprint, and repeat.
Maintenance
  • Staleness: if the newest corpus sample is over ~12 months old, or the person's public voice visibly shifted, mark status: stale and refresh — a stale profile blocks drafting the same as a missing one.
  • Versioning: every rebuild bumps profile_version and re-runs the blind check. gbrain history people/<slug>-voice is the audit trail.

Contract

This skill guarantees:

  • Routing matches the canonical triggers in the frontmatter.
  • Drafting NEVER proceeds without a status: validated voice profile at people/<slug>-voice; missing, draft, or stale profiles hard-stop into the builder.
  • 2-3 draft options per request, each passed through the voice self-check before display.
  • Output is drafts only — posting/sending stays a human decision on the approval-gated path.
  • The only brain write this skill performs is the voice-profile page (and its back-link) under people/, per writes_to:.
  • Privacy contract preserved: no real names in examples, no fork-specific filesystem path literals, no upstream-fork references; drafts never surface private details the subject hasn't made public.

Output Format

Drafting mode: 2-3 labeled options, each with register + length noted, followed by a self-check verdict per option (pass, or what was fixed). Nothing is posted, sent, or written to the brain.

Option A (casual, 92 chars): ...
Option B (casual, 140 chars): ...
Option C (statement, 210 chars): ...

Self-check: A pass · B pass (trimmed to band) · C pass

Builder mode: the people/<slug>-voice page in the schema above (metadata block + six fingerprint sections + directive block), plus a one-line report of corpus size, span, and validation status.

When it fails

Follow the agent operator protocol for any gbrain error code, exit code, [AGENT] block or notice block. Specific to this skill:

  • No consent recorded on the voice profile, or status: draft: the skill refuses to draft by design. Ask the user to confirm who authorized the ghostwriting and for what scope.
  • The profile page returns page_not_found or the corpus search is empty with a degraded notice: do not draft from general knowledge; tell the user the voice memory is missing or the search was keyword-only.
  • Saving the profile returns revision_conflict: re-read and merge; the profile is binding, so never overwrite it from an old read.

Anti-Patterns

  • Freehanding a voice from memory. No validated profile → no draft. Ever.
  • Treating a draft/stale profile as good enough. Only validated unlocks drafting.
  • Register blending. One register per draft; mixing reads fake.
  • Inventing substance. No made-up metrics, customers, or specifics — every claim traces to a brain page.
  • Auto-posting. Wiring a draft into a send/publish path skips the human gate that makes ghostwriting safe.
  • Building a fingerprint from third-party writing ABOUT the person. Corpus is first-party only.
  • Skipping consent. Ghostwriting without recorded authorization is impersonation, not assistance.
  • One draft instead of 2-3. A single option hides the voice-vs-angle tradeoff from the user.

Dedup (sharp boundaries)

  • voice-note-ingest (skills/voice-note-ingest/SKILL.md) — ingests the user's AUDIO into brain pages with exact phrasing preserved; it captures voice-as-content. draft-in-voice produces NEW prose in a person's textual voice from a profile. The only overlap is the word "voice". A voice memo that should become a post routes through voice-note-ingest first (capture), then draft-in-voice (rewrite in-register).
  • reports / briefing (skills/reports/SKILL.md, skills/briefing/SKILL.md) — produce agent-voice summaries of brain content. draft-in-voice produces person-voice content for a human to publish as their own. If nobody's fingerprint is being imitated, it is not this skill.
  • Harness-level humanizer-style skills — remove generic AI tells from any text. draft-in-voice targets ONE specific person's fingerprint from a validated profile; "make this less AI-sounding" without a named subject is not this skill.
  • media-ingest (skills/media-ingest/SKILL.md) — corpus gathering for the builder appendix routes through the normal ingest skills; this skill reads the resulting pages, it does not own bulk ingestion.

© garrytan, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file in skills/draft-in-voice of garrytan/gbrain.

  • SKILL.md
  • routing-eval.jsonl

Open the folder on GitHubat commit fc54831

Compare with similar skills

Draft In Voice next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Draft In Voice compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Draft In Voice this skillgarrytan/gbrain31k—~3.7kAutomated safety check: PassMIT
Voice Buildercharlie947/social-media-skills3.8k—~3.3kAutomated safety check: PassMIT
Content Writerchrispangg/deepagentsdk128—~3.3kAutomated safety check: PassMIT
Write Like Meng On Xnirholas/three.ws2281 repos~2kAutomated safety check: PassApache-2.0
Platform Strategy Smsblacktwist/social-media-skills559—~3.8kAutomated safety check: PassMIT
Same Idea Both Platformssickn33/agentic-awesome-skills47k1 repos~1.4kAutomated safety check: PassMIT

Similar skills

  • Voice Builder

    charlie947/social-media-skills

    Build a personalised voice profile inside a Codex or Claude project from a short interview plus 3 to 5 sample pieces of writing.

    3.8k GitHub stars~3.3k tokensUpdated 25 days ago
    Writing & ContentAuto-check passed
  • Content Writer

    chrispangg/deepagentsdk

    Writing content across different platforms and styles. An agent skill from chrispangg/deepagentsdk.

    128 GitHub stars~3.3k tokensUpdated 7 mo ago
    Writing & ContentAuto-check passed
  • Write Like Meng On X

    nirholas/three.ws

    Write, rewrite, review, or continuously refine X/Twitter posts in Meng To's current voice using his deduplicated authored-post corpus, personal and product context, shared resources, and Content…

    228 GitHub starsUsed in 1 repo~2k tokens
    Writing & ContentAuto-check passed
  • Platform Strategy Sms

    blacktwist/social-media-skills

    When the user wants platform-specific tactical guidance for LinkedIn, Twitter/X, Threads, or Bluesky.

    559 GitHub stars~3.8k tokensUpdated 5 mo ago
    Writing & ContentAuto-check passed
  • Same Idea Both Platforms

    sickn33/agentic-awesome-skills

    Write one idea as a Twitter/X post and a LinkedIn post that read as written separately, not pasted twice.

    47k GitHub starsUsed in 1 repo~1.4k tokens
    Writing & ContentAuto-check passed
  • Felo Twitter Writer

    Felo-Inc/felo-skills

    Dual-mode Twitter/X writing tool. An agent skill from Felo-Inc/felo-skills.

    249 GitHub stars~6k tokensUpdated 2 mo ago
    Writing & ContentAuto-check passed

More from garrytan/gbrain

All 47 skills in this repo
  • Traces a factual error the user points out back to its source (a brain page, a memory file, SOUL.md or USER.md, or a hallucination) and fixes that source instead of just noting the correction.

    31k GitHub stars~3.4k tokensUpdated today
    Auto-check passed
  • Searches and writes a company-wide knowledge brain through the gbrain CLI, so durable decisions and facts about people, projects and history stay findable beyond one session.

    31k GitHub stars~875 tokensUpdated today
    Auto-check passed
  • Idea Ingest

    garrytan/gbrain

    Ingest links, articles, tweets, and ideas into the brain. An agent skill from garrytan/gbrain.

    31k GitHub stars~1.6k tokensUpdated today
    Auto-check passed
  • Sends what your notes already know about a topic to Perplexity, so the cited web search reports only what is new, such as entity updates or deal changes.

    31k GitHub stars~2k tokensUpdated today
    Auto-check: notes
  • Schema Unify

    garrytan/gbrain

    Migrate a brain from gbrain-base (or any pack) to gbrain-base-v2's 14-canonical-type taxonomy via gbrain onboard --check + the unify-types Minion handler.

    31k GitHub stars~3.4k tokensUpdated today
    Auto-check passed
  • Skillpack Check

    garrytan/gbrain

    Run gbrain skillpack-check to produce an agent-readable JSON health report for the gbrain install.

    31k GitHub stars~1.4k tokensUpdated today
    Auto-check passed

Works with

Questions about Draft In Voice

What does Draft In Voice do?

Ghostwrite content in a specific person's voice from a VALIDATED voice profile — tweets, replies, short posts, launch copy, recruiting blurbs, emails. Draft In Voice is an agent skill from garrytan/gbrain. Ghostwrite content in a specific person's voice from a VALIDATED voice profile — tweets, replies, short posts, launch copy, recruiting blurbs, emails.

When should I use Draft In Voice?

Draft In Voice fits situations like: tasks that involve Brand voice and tone; tasks that involve Verification before completion; tasks that involve Social media posts.

How do I install Draft In Voice in Claude Code?

Run `npx skills add garrytan/gbrain --skill draft-in-voice -a claude-code`. Or copy the skill folder (skills/draft-in-voice in garrytan/gbrain) into .claude/skills/draft-in-voice in your project. Claude Code loads it when a task matches its description.

How do I install Draft In Voice in Codex?

Run `npx skills add garrytan/gbrain --skill draft-in-voice -a codex`. Or copy the skill folder (skills/draft-in-voice in garrytan/gbrain) into .agents/skills/draft-in-voice in your project. Codex loads it when a task matches its description.

Can I use Draft In Voice in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add garrytan/gbrain --skill draft-in-voice -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/draft-in-voice, .gemini/skills/draft-in-voice, .github/skills/draft-in-voice and .opencode/skills/draft-in-voice in your project.

What does Draft In Voice need to run?

SKILL.md names no scripts, command-line tools or credentials: Draft In Voice is instructions for the agent only.

Does Draft In Voice access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Draft In Voice safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Draft In Voice use?

Draft In Voice is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Draft In Voice use?

About 3.7k tokens (SKILL.md is roughly 15k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Draft In Voice?

Skills that share tags, products or a category with Draft In Voice: Voice Builder (charlie947/social-media-skills, 3.8k stars), Content Writer (chrispangg/deepagentsdk, 128 stars), Write Like Meng On X (nirholas/three.ws, 228 stars) and Platform Strategy Sms (blacktwist/social-media-skills, 559 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Draft In Voice?

garrytan (a GitHub user) maintains it in garrytan/gbrain, which has 30,701 GitHub stars. The repository holds 47 skills in this directory. The repository was last updated on October 9, 2026.

Source: garrytan/gbrain on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.