
This one handles the full spectrum of technical documentation, from user guides and API docs to architecture diagrams and troubleshooting guides. It structures everything with the audience in mind, whether you're writing for beginners or experts, and enforces good practices like active voice, short sentences, and scannable sections. The templates are solid: user guides get prerequisites and common tasks sections, tutorials include time estimates and verification steps, architecture docs break down components and data flow. What I appreciate is the emphasis on showing expected outputs and including troubleshooting upfront rather than as an afterthought. It's built for maintainability too, with checklist verification and notes on when to review docs.
npx -y skills add onewave-ai/claude-skills --skill technical-writer --agent claude-codeInstalls into .claude/skills of the current project.
Write documentation that lets a specific reader finish a specific task without asking anyone.
Name the reader and the job. One sentence: "[Reader] needs to [do what] and already knows [what]." A new contributor setting up the repo, an admin configuring SSO, and an executive evaluating the architecture need different documents. If the request does not say, infer from context and state the assumption at the top of your draft.
Pick the document type. Each type answers one question; mixing them is the most common reason docs feel unclear.
| Reader wants to... | Type | Shape |
|---|---|---|
| learn by doing, first time | Tutorial | One guaranteed-to-work path, start to finish |
| complete a known task | How-to guide | Goal, prerequisites, numbered steps, verify |
| look something up | Reference | Tables and lists, complete and consistent |
| understand why | Explanation / architecture | Context, design, trade-offs |
| fix something broken | Troubleshooting | Symptom, cause, fix |
A README is a front door: what it is, quickstart, links to the rest. Templates for every type are in references/templates.md.
Gather facts from the source, not from memory. In a codebase, read the entry points, package.json / pyproject.toml / Makefile scripts, config files, env var usage (grep -r "process.env\|os.environ"), and existing docs. Every command, flag, file path, env var, and default value in the doc must come from something you read or ran. When a fact cannot be verified, mark it [VERIFY: ...] rather than guessing.
Draft with the template, then apply references/style-guide.md. Lead with the most common task. Put prerequisites before step 1, not in the middle.
Test the doc. If you can run commands, walk the steps in order in a clean state and fix anything that fails or needs an unstated step. Otherwise, reread as the reader: is every step possible with only what the doc and prerequisites provide?
Deliver as the actual file (for example README.md or docs/setup.md), not wrapped in commentary. After it, list any [VERIFY] markers, assumptions about the reader, and what should trigger an update (a config format change, a new required env var).
Request: "Write setup docs for this repo for new devs."
package.json scripts dev, test, db:migrate; .env.example lists DATABASE_URL and STRIPE_SECRET_KEY; docker-compose.yml runs Postgres 17; engines.node is >=22..env.example to .env.local and what each variable is for -> docker compose up -d -> npm run db:migrate -> npm run dev with the expected URL -> npm test with the expected output -> Troubleshooting for port 5432 already in use and a missing DATABASE_URL.npm run db:seed) that the app needs; it was added as step 6.