publish-plugins
(project) Use when editing any file under skills/ or plugins/ to bump the plugin version and check the manifests
Use before producing any English text the user signs — READMEs, PRs, issues, PR and issue comments, code comments, emails, blog posts, human-facing docs — drafted or rewritten at native fluency in the voice of the skill's author, Vinta Chen. Fires mid-task too: a comment drafted
$ npx -y skills add vinta/hal-9000 --skill write-like-me --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/write-like-meContext preview
The summary Claude sees to decide when to auto-load this skill.
Use before producing any English text the user signs — READMEs, PRs, issues, PR and issue comments, code comments, emails, blog posts, human-facing docs — drafted or rewritten at native fluency in the voice of the skill's author, Vinta Chen. Fires mid-task too: a comment drafted
name: write-like-me description: "Use before producing any English text the user signs — READMEs, PRs, issues, PR and issue comments, code comments, emails, blog posts, human-facing docs — drafted or rewritten at native fluency in the voice of the skill's author, Vinta Chen. Fires mid-task too: a comment drafted inside another skill's workflow, or text the user will approve before it ships. Not for text addressed to agents unless the user asks" argument-hint: [text, file, or pointer to draft or rewrite] model: claude-opus-5-5 effort: medium
Draft or rewrite English prose that reads as the user's own writing at native fluency: their sentence structure and casual-opinionated register, never a ghostwriter's. One voice for everything the user signs. English only: never output Chinese.
Start from the user's sentence structure, smooth grammar and word choice to native fluency, keep sentences short and plain. Every other rule in this skill loses to this one.
The user's stated reason unifies the length and density rules: English is not their mother language, so they prefer writing less to make fewer errors. You don't make their errors, but the page must still look like theirs — when in doubt, drop a sentence rather than polish it.
| Instead of | Write | | ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | | an em-dash chain | two short sentences | | packed caveats ("Two caveats: ...") | drop them, or one plain sentence | | a tricolon over unlike items | a list, or the single item that matters; a three-beat over matched cases stays (style spec section 8) | | a template phrase over unlike list items | each item standing alone; matched phrasing stays where the items are matched cases (style spec section 8) | | bold or CAPS for excitement | plain words; the emphasis budget is in style spec section 8 | | three or more nouns in a row | a preposition or a verb between them; proper names, fixed terms, and a tagline's leading search phrase stay — name the cost once, the user picks |
1. **Load the voice.** Read [references/style-spec.md](references/style-spec.md) and [references/exemplars.md](references/exemplars.md) in full. Then find the user's closest existing text of the same kind, nearest in topic first, else the most recent: a sibling blog post, READMEs and docs in this repo or the user's other repos, the user's recent PRs and issues, the comments around the edit (style spec section 10). Match its shape and length, never its phrasing: sections, list depth, and word count carry over, while wording still follows the style spec. The exemplars set the voice, not the length. Done when you can name the target register (blog, README or its one-line tagline, issue/PR/email, or code comments), the sibling text you are matching or that none exists, and the sentence-length cap that applies.
2. **Collect the source.** For a rewrite, gather the user's draft from the conversation or the files they pointed at. Prose already in the user's files is facts, never voice, unless the user vouched it line by line: an unvouched comment or doc is rewritten from what it states, not from its phrasing. For a fresh draft, gather the facts to state, and keep every sentence the user already wrote about the topic — those sentences are the skeleton. The ask is the user's sentence, never the invoker's paraphrase: when you wrote the skill arguments yourself, re-read the user's message and drop every goal it does not state — a request for fancy AI words asked for discoverability nouns, and the invented "keep the humor" produced three rejected jokes. Before naming a feature or picking a term, grep the user's docs in the current repo: reuse a named feature verbatim, capitals included, and prefer a word t
Opinionated AI coding agent and dev environment automation for macOS that dominates your dev setup like cats rule the Internet. This project is named after Arthur C.
(project) Use when editing any file under skills/ or plugins/ to bump the plugin version and check the manifests
(project) Use when upgrading install tasks in playbooks/roles/ against upstream docs — bumping a pinned version, adopting a newly…
Use when auditing Claude Code or Codex settings and env vars against the latest docs to suggest tailored changes
Use when about to choose, configure, or refine a tool, library, config format, API pattern, or project setup, or before proposing…
Use when the user asks for a blindspot pass or to find their unknown unknowns, or signals unfamiliarity with a domain, tool, or…
Use when making any git commit. Pass the failure, false claim, or risk the changes fix as the argument; for an addition or a…