Drafts messages that read as you wrote them, not as a model did
Three agent skills that learn your register from your own writing and keep it on your machine.
npx skills add mblode/ghostwriter -g --agent codex claude-code -yRuns on whichever of Codex or Claude Code you already have authenticated. No API keys, no service, no database.
Copy the demo voice in:
mkdir -p ~/.config/ghostwriter
curl -o ~/.config/ghostwriter/soul.md https://raw.githubusercontent.com/mblode/ghostwriter/main/examples/soul.md
curl -o ~/.config/ghostwriter/slack.md https://raw.githubusercontent.com/mblode/ghostwriter/main/examples/slack.mdThen ask your agent:
Use ghostwriter to draft a Slack reply saying I agree and can review the PR tomorrow.
The reply comes back in the demo persona's voice, Sam, with no training step first.
| Skill | What it does |
|---|---|
| ghostwriter | Drafts, rewrites, and reviews from your per-platform profile, and strips the tells that mark prose as AI. |
| train-ghostwriter | Builds those profiles from your own Slack, email, or WhatsApp exports. |
| evaluate-ghostwriter | Runs blind comparisons to see whether a profile actually helps. |
Swap the demo files for your own. soul.md holds your cross-platform core and slack.md holds one platform's register, and you add any <platform>.md you need. A platform file is required; soul.md is optional. Or point train-ghostwriter at your samples and it writes them for you.
Everything lives under GHOSTWRITER_HOME, which defaults to ~/.config/ghostwriter: soul.md, your platform profiles, plus corpus/, evals/, and backups/. The bundled scripts make no network requests. Codex or Claude Code still sends any prompt you generate to its own model provider.
MIT
Crafted by Matthew Blode