build-write-like-me
Use this skill whenever the user wants to capture, clone, or codify their own (or someone's) writing voice into a reusable skill.
Skill by ronaknnathani
Chalk Labs
Need help deploying build-write-like-me?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/ronaknnathani-build-write-like-me
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: documents, writing, productivity, agent-building
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Python package
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/build-write-like-me
What's inside
- Skill name
build-write-like-me- Description
- Use this skill whenever the user wants to capture, clone, or codify their own (or someone's) writing voice into a reusable skill. Trigger phrases include: "build a write-like-me skill", "build a sound-like-me skill", "analyze how I write", "make agents write or draft in my voice", "learn my style from my docs and PRs", "generate a voice profile from my github", "stop the agent sounding like a robot when it writes for me", "turn my docs and PRs into a personal style guide". It gathers a corpus of the person's real writing (GitHub PRs and comments, docs, blog posts, chat, optional Slack and email), filters out AI-written content, runs stylometric analysis, and synthesizes a reusable voice-profile skill. Prefer this skill over improvising the analysis yourself, because it encodes rate-limit-safe fetching and an agent-content filter you would otherwise get wrong. Do NOT use it to draft or edit a single email, PR, doc, or post, to lint code style, or to define team documentation standards.
- License
- MIT
- Instructions
- 272 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
Files (7)
- SKILL.md
- agent-content-filtering.md · references/
- profile-template.md · references/
- source-gathering.md · references/
- analyze_style.py · scripts/
- extract_transcripts.py · scripts/
- fetch_github.py · scripts/
SKILL.md (first lines)
# Write-Like-Me Builder
This skill builds a *personalized* writing-voice skill for one person. The output
is a `SKILL.md` that any agent can load to draft or edit prose in that person's
voice. You produce it by gathering the person's real writing from sources they
provide, analyzing it (both statistically and by reading it), and synthesizing a
profile grounded in real examples.
The core principle: **a voice profile is only as good as the real writing behind
it.** Don't invent traits. Every claim in the generated skill should trace to
something the person actually wrote. Quote them verbatim wherever you can.
## The workflow
1. **Collect sources** from the invoker (interactive prompt).
2. **Set up the workspace** (an output skill dir with a `source/` subdir for raw data).
3. **Gather raw data** into `source/`: {{subagent:large_context}} for delegated source workers where available, and use bundled scripts.
4. **Analyze** the data: run stylometrics, filter out content the person didn't
actually write, and extract verbatim voice samples per register.
5. **Synthesize** the personalized `SKILL.md` voice profile.
6. **Self-consistency check** and present.
Do these in order. Steps 3 and 4 are where delegated workers do the heavy
lifting so the raw data never floods your context.
---
## Step 1: Collect sources
Ask the invoker which sources they want to include using whatever user-question
mechanism is available (multi-select if supported; otherwise ask a concise
numbered question). **Don't assume anything about their environment or what's
installed** — different users have different MCP servers and skills. Offer:
- **GitHub** — PR descriptions and review/issue comments they authored. Need
their GitHub login and the org(s)/repo(s) to search. Usually the richest source
of working voice.
- **Google Docs** — design docs, proposals, strategy docs, feedback. They provide
doc links/IDs or a folder.
- **Local filesystem** — a blog repo, a docs directory, exported notes, an
`.mbox`, a Slack export, anything on disk. They provide the path(s). **Always
offer this** — it is the most portable source and sidesteps every tooling gap.
- **Session transcripts** — their own typed messages to coding agents. Great for
the casual/chat register. Yes/no.
- **Slack** — yes/no.
- **Email** — yes/no.
If the invoker already named sources in their request, confirm and fill gaps
rather than re-asking everything.
### Discover capability before fetching (don't assume the environment)
Sources that need a tool to fetch (Google Docs, Slack, email, GitHub) are only
usable if that capability exists in *this* environment. So for each source the
invoker asked for, check first, then act, and degrade gracefully:
1. **Check whether a tool or skill can fetch it.**
- Inspect the available MCP tools/capability list for relevant fetch/read/search
capabilities (e.g. "google docs read", "slack messages search",
"gmail email messages", "github").
- Scan the available skills list for a relevant fetcher.
- For GitHub, also confirm `gh auth status` works for the target host.
2. **If a capability exists, use it** (see Step 3 and `references/source-gathering.md`).
3. **If not, skip that source, record it, and continue with everything else.**
Never let one missing source block the analysis. At the end, tell the invoker
which sources were skipped and why (e.g. "Slack: no Slack fetch tool available
in this environment"), and how to add it later (a local export almost always
works, so point them back to the local-filesystem option).
Local-filesystem paths and bundled-script sources (transcripts) don't need this
check — they only need a path or the local transcript dir.
See `references/source-gathering.md` for the exact how-to and gotchas per source.
---
## Step 2: Set up the workspace
Decide where the generated skill goes (ask, or default to a directory named
`write-like-me/`). Inside it, create a `source/` subdir to hold all raw gathered
data:
```
write-like-me/
├── SKILL.md <- the generated voice profile (final output)
└── source/ <- raw data, kept for transparency and re-runs
├── github/
├── gdocs/
├── transcripts/
└── notes/
```
Keeping the raw data lets the invoker audit what the profile was built from, and
lets you re-run the analysis later without re-fetching.
---
## Step 3: Gather raw data
For each chosen source, fetch the raw data into `source/`. For large fetches:
{{subagent:large_context}} with one worker per source (or per batch) so raw data
does not fill your context. Use the bundled scripts for the fiddly parts.
- **GitHub** — `scripts/fetch_github.py` handles authoring + commenting,
descriptions + comments, with rate-limit backoff and agent-content tagging.
Run it from the assigned source worker (or inline for a small fetch) and write
JSON into `source/github/`.
Read `references/source-gathering.md` first — GitHub's search API rate-limits
aggressively and the script encodes the safe pattern.
- **Google Docs** — only if a Docs-reading tool/skill exists (capability check in
Step 1; commonly a document-reading MCP tool). If it does:
{{subagent:large_context}} for each batch of ~3-4 doc IDs; each worker reads via the
available Docs reader (use the `full_text` field, ignore the verbose element
map), assesses authorship, and returns distilled voice notes + verbatim quotes
into `source/gdocs/`. If no Docs capability is available, skip and note it (or
ask for an export/local copies).
- **Local files** — read the markdown/text directly; for large file sets, start
delegated workers: {{subagent:large_context}} to summarize voice per file. Save to
`source/notes/`. This path also handles any export the invoker drops on diskFrom ronaknnathani/relay, MIT.
More from ronaknnathani/relay
- 0.604score
simplify
ronaknnathani
Reduce complexity in recently changed code — cut needless abstraction, dead code, and duplication; improve names and structure — WITHOUT changing behavior.
SkillAFreshness: A★ 3Claude Code +9 - 0.604score
review
ronaknnathani
Review a change for correctness, quality, and guideline compliance using a library of specialized reviewer roles.
SkillAFreshness: A★ 3Claude Code +9 - 0.604score
review-pr
ronaknnathani
Review someone else's pull request (a PR URL or owner/repo#N) and leave a pending (draft) GitHub review in the user's voice, checked against their AGENTS.md…
SkillAFreshness: A★ 3Claude Code +9 - 0.566score
stack-ship
ronaknnathani
Use only for a standalone stack explicitly launched with `relay --workflow stack-ship`; never invoke inside a tech-lead-managed Relay program.
SkillBFreshness: B★ 3Claude Code +9 - 0.564score
pr-fix
ronaknnathani
Bring a PR to mergeable — fix CI failures, address review comments, and resolve merge conflicts.
SkillBFreshness: B★ 3Claude Code +9 - 0.564score
pr-monitor
ronaknnathani
Handle one pull request attention event end to end — read the watcher digest, triage it, delegate the fixing to pr-fix, re-observe the pull request, and exit.
SkillBFreshness: B★ 3Claude Code +9 - 0.564score
deliver-pr
ronaknnathani
Deliver one change end to end as a single pull request — clarify → plan → implement → simplify → review → validate → open-pr — resuming from wherever it left…
SkillBFreshness: B★ 3Claude Code +9 - 0.561score
tl
ronaknnathani
Manage a Relay program as the CEO-facing tech lead: shape goals and contracts, prioritize dependency-aware work, dispatch senior worker agents, and surface…
SkillBFreshness: B★ 3Claude Code +9 - 0.519score
open-pr
ronaknnathani
Stage, commit, push, and open a pull request following the author's repository and AGENTS.md conventions — repo-style commit messages, a prose PR summary, and…
SkillCFreshness: C★ 3Claude Code +9 - 0.514score
explore
ronaknnathani
Build a verified, read-only understanding of a codebase or a slice of it — entry points, code flow, architecture, module boundaries, dependencies, data flow…
SkillCFreshness: C★ 3Claude Code +9 - 0.514score
plan
ronaknnathani
Turn a clarified requirements artifact into a concrete, executable implementation plan — a decisive architecture blueprint and a phased build sequence with…
SkillCFreshness: C★ 3Claude Code +9 - 0.514score
validate
ronaknnathani
Verify a change is ready to ship by checking it against its acceptance criteria and running the repo's own quality gates in order, then report a pass/fail…
SkillCFreshness: C★ 3Claude Code +9
Signals
- Stars
- 3
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Aug 11, 2026 (2 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/ronaknnathani/relay
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from ronaknnathani
- 0.604score
simplify
ronaknnathani
Reduce complexity in recently changed code — cut needless abstraction, dead code, and duplication; improve names and structure — WITHOUT changing behavior.
SkillAFreshness: A★ 3Claude Code +9 - 0.604score
review
ronaknnathani
Review a change for correctness, quality, and guideline compliance using a library of specialized reviewer roles.
SkillAFreshness: A★ 3Claude Code +9 - 0.604score
review-pr
ronaknnathani
Review someone else's pull request (a PR URL or owner/repo#N) and leave a pending (draft) GitHub review in the user's voice, checked against their AGENTS.md…
SkillAFreshness: A★ 3Claude Code +9 - 0.566score
stack-ship
ronaknnathani
Use only for a standalone stack explicitly launched with `relay --workflow stack-ship`; never invoke inside a tech-lead-managed Relay program.
SkillBFreshness: B★ 3Claude Code +9 - 0.564score
pr-fix
ronaknnathani
Bring a PR to mergeable — fix CI failures, address review comments, and resolve merge conflicts.
SkillBFreshness: B★ 3Claude Code +9 - 0.564score
deliver-pr
ronaknnathani
Deliver one change end to end as a single pull request — clarify → plan → implement → simplify → review → validate → open-pr — resuming from wherever it left…
SkillBFreshness: B★ 3Claude Code +9
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get build-write-like-me running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
build-write-like-me skill. Agent Mart. https://agentmart.dev/skills/ronaknnathani-build-write-like-me (last updated 2026-10-24)