write · ohad6k — Claude Code skill: copy in your own voice
This skill loads your Emulo writing profile and drafts marketing copy, posts and replies in your voice. It picks the register from context.
npx skills add ohad6k/emulo --skill write -a claude-codeWhat write does
The skill pulls in your Emulo writing profile and applies it to marketing, social, replies, product copy and launch copy. It looks for emulo.py two directories above the skill, and falls back to ./emulo.py only for a direct repo checkout. The resolved path goes into EMULO_PY, then it runs python "$EMULO_PY" plugin profile-path --domain write.
A nonzero exit stops the load: the skill hands you the recovery instruction from that command instead of pulling personal context. Otherwise it reads every returned path in full — the core working profile first, the writing profile second — and applies both.
Register is inferred, never asked about. An explicit audience statement from you wins over everything else. A profile with register sections always loads the voice laws plus exactly one register. When the picked register has no section, only the voice laws apply and the other register is never substituted; the skill says so and points at run emulo and deepen write to mine it.
What it helps with
- draft a launch announcement in the author's voice
- reply in a thread without corporate tone
- write product copy for a specific register
- keep one voice across posts and emails
- rewrite a formal email for a given recipient
Example prompts for the agent
- Write a post about the new release for a builder community
- Reply to this thread as me, casual tone
- Draft a formal email to a client about the slipped deadline
How to install write
1Skills CLI (Vercel)
npx skills add ohad6k/emulo --skill write -a claude-code2Manually: put the files in place
~/.claude/skills/write/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/write/
1Skills CLI (Vercel)
npx skills add ohad6k/emulo --skill write -a codex2Manually: put the files in place
.agents/skills/write/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add ohad6k/emulo --skill write -a cursor2Manually: put the files in place
.cursor/skills/write/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install ohad6k/emulo write2Manually: put the files in place
.github/skills/write/SKILL.md1Skills CLI (Vercel)
npx skills add ohad6k/emulo --skill write -a gemini-cli2Platform CLI
gemini skills install https://github.com/ohad6k/emulo --path skills/writeManually: put the files in place
.devin/skills/write/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add ohad6k/emulo --skill write -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about write
How do I install write in Claude Code?
Run npx skills add ohad6k/emulo --skill write -a claude-code. The skill lands at ~/.claude/skills/write/SKILL.md.
What does the write skill do?
It loads your Emulo writing profile and drafts marketing copy, posts, replies and product copy in your voice. Register comes from the task context.
What does write need to work?
An emulo.py file and a mined writing profile. If the profile-path command exits nonzero, the skill stops and does not load personal context.
Source text
SKILL.md · MIT
---
name: write
description: Use for marketing, social, replies, product copy, launch copy, and writing in the user's voice when their Emulo writing profile should guide the task. Do not use for unrelated execution or UI/UX design alone.
---
# Emulo write
1. Locate `emulo.py` two directories above this skill; fall back to `./emulo.py` only for a direct repo checkout.
2. Store the resolved absolute runtime path as `EMULO_PY`, then run `python "$EMULO_PY" plugin profile-path --domain write`.
3. If it exits nonzero, give its exact recovery or targeted-deepen instruction and stop loading personal context.
4. Read every returned path completely. The first is the core working profile; the second is the writing profile. Apply both.
5. Pick the register from context; never ask. A writing profile with register sections (`## Voice laws`, `## Casual register`, `## Professional register`) loads voice laws always, plus exactly one register:
- An explicit audience statement from the user ("for my boss", "make it formal") always wins.
- Otherwise infer from what is in the task: a pasted thread with a manager, client, or customer, a formal email, documentation, or official product copy selects professional; a community reply, social post, chat banter, or a builder-to-builder thread selects casual; a pasted conversation selects the register matching that thread's own audience and tone.
- State the pick in one short line ("using professional register") so it is correctable, then write; never block on register confirmation.
- If the picked register has no section in the profile, load the voice laws only and never substitute the other register; say so in the same line ("professional register not mined yet, using voice laws only") and suggest `run emulo and deepen write` to mine it.
- A flat profile without register sections applies in full, unchanged.
6. Never imitate a generic voice when the writing domain is inactive.
© ohad6k · MIT · ohad6k/emulo
Similar skills
Everything for Marketing and content →write by other authors comes first.