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.
Ghostwrite content in a specific person's voice from a VALIDATED voice profile — tweets, replies, short posts, launch copy, recruiting blurbs, emails.
$ npx skills add garrytan/gbrain --skill draft-in-voice -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install garrytan/gbrain draft-in-voice --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ 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-srcUse ~/.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/
Install the "draft-in-voice" agent skill from https://github.com/garrytan/gbrain/tree/master/skills/draft-in-voice into .claude/skills/draft-in-voice/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "draft-in-voice", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/garrytan/gbrain/tree/master/skills/draft-in-voiceType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add garrytan/gbrain --skill draft-in-voice -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install garrytan/gbrain draft-in-voice --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/garrytan/gbrain.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/draft-in-voice .agents/skills/draft-in-voice && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "draft-in-voice" agent skill from https://github.com/garrytan/gbrain/tree/master/skills/draft-in-voice into .agents/skills/draft-in-voice/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "draft-in-voice", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add garrytan/gbrain --skill draft-in-voice -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install garrytan/gbrain draft-in-voice --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/garrytan/gbrain.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/draft-in-voice .cursor/skills/draft-in-voice && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "draft-in-voice" agent skill from https://github.com/garrytan/gbrain/tree/master/skills/draft-in-voice into .cursor/skills/draft-in-voice/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "draft-in-voice", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/garrytan/gbrain.git --path skills/draft-in-voice--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add garrytan/gbrain --skill draft-in-voice -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install garrytan/gbrain draft-in-voice --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/garrytan/gbrain.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/draft-in-voice .gemini/skills/draft-in-voice && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "draft-in-voice" agent skill from https://github.com/garrytan/gbrain/tree/master/skills/draft-in-voice into .gemini/skills/draft-in-voice/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "draft-in-voice", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install garrytan/gbrain draft-in-voiceInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add garrytan/gbrain --skill draft-in-voice -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/garrytan/gbrain.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/draft-in-voice .github/skills/draft-in-voice && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "draft-in-voice" agent skill from https://github.com/garrytan/gbrain/tree/master/skills/draft-in-voice into .github/skills/draft-in-voice/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "draft-in-voice", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add garrytan/gbrain --skill draft-in-voice -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install garrytan/gbrain draft-in-voice --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/garrytan/gbrain.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/draft-in-voice .opencode/skills/draft-in-voice && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "draft-in-voice" agent skill from https://github.com/garrytan/gbrain/tree/master/skills/draft-in-voice into .opencode/skills/draft-in-voice/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "draft-in-voice", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
draft-in-voiceGhostwrite 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. 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.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit fc54831. It shows what the files ask for, not the result of running them.
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.
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.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
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.
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.
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.
The full file from garrytan/gbrain at commit fc54831, republished under its MIT licence (© garrytan). 1,804 words, ~3,728 tokens.
.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.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/.
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-voicefor anyone else with a validated profile — colleagues, founders, partners, the people the user ghostwrites for — or for the user when no dedicated skill exists.
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.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.gbrain search "<topic>", then
gbrain get <slug>) so every claim is accurate, not invented.A good voice profile encodes the person's non-negotiables. Honor whatever the profile states. The six recurring categories to extract and obey:
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.Score each draft against the loaded profile; fix fails, don't ship them:
Do NOT improvise. Either:
This refuse-to-draft-without-memory stance is the point of the skill: it is brain-first discipline applied to voice.
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.
status: draft — which does NOT unlock
drafting.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.Analyze the corpus and fill all six categories — each one becomes a section of the profile page:
| Fingerprint field | What to extract |
|---|---|
tells_to_avoid | The #1 giveaway plus any others: punctuation habits, stock openers, constructions they never use. |
length | Median length + band per format (tweet, reply, post, email), from actual counts — not vibes. |
registers | Each distinct register (casual / statement / technical) with its own rules: caps, emoji, slang, jargon. |
signature_moves | Characteristic constructions, openers, rhythms, recurring turns of phrase. |
banned_boilerplate | Everything they demonstrably never do: hashtags, "excited to announce", thread numbering, buzzwords. |
worldview | How they actually frame their domain — positions, recurring theses, what they care about. Cite brain pages. |
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:
# 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).
A profile only earns status: validated after it survives a blind test:
status: validated, validated_at, validated_by, and
bump nothing. If they do stand out, note WHICH tell exposed them, refine
the fingerprint, and repeat.status: stale and refresh —
a stale profile blocks drafting the same as a missing one.profile_version and re-runs the blind
check. gbrain history people/<slug>-voice is the audit trail.This skill guarantees:
status: validated voice profile at
people/<slug>-voice; missing, draft, or stale profiles hard-stop into
the builder.people/, per writes_to:.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 passBuilder 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.
Follow the agent operator protocol for any gbrain error code, exit code, [AGENT] block or notice block. Specific to this skill:
status: draft: the skill refuses to draft by design. Ask the user to confirm who authorized the ghostwriting and for what scope.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.revision_conflict: re-read and merge; the profile is binding, so never overwrite it from an old read.draft/stale profile as good enough. Only validated
unlocks drafting.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.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
SKILL.md and 1 other file in skills/draft-in-voice of garrytan/gbrain.
Open the folder on GitHubat commit fc54831
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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Draft In Voice this skillgarrytan/gbrain | 31k | — | ~3.7k | Automated safety check: Pass | MIT | |
| Voice Buildercharlie947/social-media-skills | 3.8k | — | ~3.3k | Automated safety check: Pass | MIT | |
| Content Writerchrispangg/deepagentsdk | 128 | — | ~3.3k | Automated safety check: Pass | MIT | |
| Write Like Meng On Xnirholas/three.ws | 228 | 1 repos | ~2k | Automated safety check: Pass | Apache-2.0 | |
| Platform Strategy Smsblacktwist/social-media-skills | 559 | — | ~3.8k | Automated safety check: Pass | MIT | |
| Same Idea Both Platformssickn33/agentic-awesome-skills | 47k | 1 repos | ~1.4k | Automated safety check: Pass | MIT |
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.
chrispangg/deepagentsdk
Writing content across different platforms and styles. An agent skill from chrispangg/deepagentsdk.
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…
blacktwist/social-media-skills
When the user wants platform-specific tactical guidance for LinkedIn, Twitter/X, Threads, or Bluesky.
sickn33/agentic-awesome-skills
Write one idea as a Twitter/X post and a LinkedIn post that read as written separately, not pasted twice.
Felo-Inc/felo-skills
Dual-mode Twitter/X writing tool. An agent skill from Felo-Inc/felo-skills.
garrytan/gbrain
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.
garrytan/gbrain
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.
garrytan/gbrain
Ingest links, articles, tweets, and ideas into the brain. An agent skill from garrytan/gbrain.
garrytan/gbrain
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.
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.
garrytan/gbrain
Run gbrain skillpack-check to produce an agent-readable JSON health report for the gbrain install.
Works with
Categories
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.
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.
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.
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.
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.
SKILL.md names no scripts, command-line tools or credentials: Draft In Voice is instructions for the agent only.
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.
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.
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.
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.
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.
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.