Skip to content
Back to skills

Write As Me

ASecurity

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.

  • 44 stars
  • 0 votes
  • 0 copies
  • 5 views
  • Added August 30, 2026
toolsgo

Works with

  • claude code

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned September 20, 2026

npx -y skills add hex/claude-sessions --skill write-as-me --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Write As Me?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Write As Me
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/hex-write-as-me/badge)](https://www.skillsdirectory.com/skills/hex-write-as-me)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: write-as-me
description: 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.
---

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`
- 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

1. Read the profile. If it exists, go to step 4.
2. 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.
3. Distill the corpus into a profile (next section), then continue.
4. 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.
5. 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.
6. 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.

Files in this skill

  • SKILL.md4 KB
  • scripts/build-corpus.sh8.4 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.