write-as-me
Skill54 starsChanged 9 days agoMITView on GitHub
Draft messages, replies, PR/issue/commit text, or longer prose in the user's own writing voice, learned from their Claude Code transcripts. Invoke when the user asks for a draft "in my voice", "as me", or asks for a message or reply they will send under their own name.
1 other project uses a version of this.
Adopted by
Most recently taken up by
- TheVeller/claude-skillstheir own version, first seen Nov 8, 2026
Other versions1 project uses a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 1
- TheVeller/claude-skills★ 4same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository5 other files it gives its agents.
- featureSkill
- finishSkill
- prose-hygieneSkill
- rotateSkill
- store-secretSkill
The file
We split this skill into the rules it gives an agent
8 rules. About 0 are common, 7 are distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈7
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 6
Write AS the user, not as an assistant writing about them.
- Distinctive: line 26
Read the profile. If it exists, go to step 4.
- Distinctive: line 27
No profile: run the builder script.
- Distinctive: line 39
If the profile's Provenance date is older than 30 days, offer a rebuild (re-run the builder, re-distill) AFTER delivering the draft — …
- Distinctive: line 45
Read the corpus (with offset/limit chunks when it exceeds ~200 KB) and write the profile with exactly these sections:
- Distinctive: line 77
Never fabricate quotes, facts, decisions, or commitments on the user's behalf.
- Very specific: line 80
Never reproduce [redacted line] markers or anything credential-shaped from the corpus into the profile or a draft.
- Distinctive: line 84
Every draft gets an anti-slop pass before delivery: no em dashes, no throat-clearing openers, no "not X, it's Y" contrasts, no quotable …
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Write AS the user, not as an assistant writing about them. The voice comes from a distilled profile document, never from improvisation.
Files
- Profile:
${CS_SESSIONS_ROOT:-$HOME/.claude-sessions}/.voice/profile.md - Corpus:
${CS_SESSIONS_ROOT:-$HOME/.claude-sessions}/.voice/corpus.md - Builder:
~/.claude/skills/write-as-me/scripts/build-corpus.sh - Check:
~/.claude/skills/write-as-me/scripts/corpus-check.sh [corpus]counts the entries a built corpus holds that are not the user's typing (side-agent notes, side checks, tagged pastes, test-session projects) and exits 1 when it finds any. - Supplementary sources:
${CS_SESSIONS_ROOT:-$HOME/.claude-sessions}/.voice/sources/*.md— writing no transcript holds (an exported chat, sent mail), kept by hand. Entries mirror the corpus:[tag, YYYY-MM-DD], the text, then---. The builder appends each file to the corpus under## Supplementary source: <file name>on every build and redacts credential-shaped lines in it.
Flow
- Read the profile. If it exists, go to step 4.
- No profile: run the builder script. If it exits with "nothing to learn from", tell the user exactly that — there are no transcripts to distill on this machine — and stop.
- Distill the corpus into a profile (next section), then continue.
- Infer the register from the request: Chat & comms (Slack, email, DM), Dev artifacts (PR description, review comment, issue reply, commit message), or Long-form (README, announcement, post). If genuinely ambiguous, ask one question.
- Load the profile, draft in the user's voice, deliver the draft for the user to edit and ship. Iterate on feedback. You never send anything — no Slack, no email, no gh commands; the draft is text in the conversation.
- If the profile's Provenance date is older than 30 days, offer a rebuild (re-run the builder, re-distill) AFTER delivering the draft — staleness never blocks a draft.
Distilling the profile
Read the corpus (with offset/limit chunks when it exceeds ~200 KB) and write the profile with exactly these sections:
# Voice profile## Fingerprint— portable traits that survive any register: directness, sentence rhythm and length, vocabulary, how disagreement is voiced, how questions are asked, greeting/sign-off habits (or their absence).## Registers— three subsections:### Chat & comms,### Dev artifacts,### Long-form. Each records a casualness dial (lowercase starts, punctuation weight, contraction use) and typical length. The corpus is coding-chat; extrapolate registers from the fingerprint plus the corpus evidence, and say in the profile which registers are corpus-backed and which are extrapolated. A supplementary source is direct evidence for the register and language it covers, so there it outranks extrapolation from coding-chat: describe that register from the source, and name the source in the profile.## Phrase bank— verbatim phrases the user actually types (draw from the corpus body and the short-ack frequency appendix).## Languages— languages observed and where they are used.## Anti-patterns— what the user never writes (e.g. corporate pleasantries, exclamation-heavy enthusiasm) — derived from the corpus, not invented.## Provenance— Built date, messages used, files scanned (copy from the corpus stats header).
The profile is a document the user can open and correct by hand; their edits are authoritative on the next draft.
Rules
- The profile is the single source of style truth. Do not apply traits the profile does not record.
- Never fabricate quotes, facts, decisions, or commitments on the user's behalf. A draft may carry placeholders like [date] for facts you lack.
- Typos in the corpus are a described trait; drafts are spelled correctly.
- Never reproduce
[redacted line]markers or anything credential-shaped from the corpus into the profile or a draft. The corpus redactor is a deny-list and cannot catch every shape, so a token that reaches the corpus must stop at you: the profile persists and is reloaded on every draft. - Every draft gets an anti-slop pass before delivery: no em dashes, no throat-clearing openers, no "not X, it's Y" contrasts, no quotable closers that restate the message, no filler adverbs, no three same-length sentences in a row. The profile's Anti-patterns section carries what this user specifically rejects; apply both layers.
- Deliver drafts for the user to edit and send; never send or post anything yourself.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

