npx skills add ...
npx skills add riekelt/technical-writer --skill technical-writing
Use when writing, restructuring, or revising any technical document - specs, design docs, READMEs, reference documentation, plans, reports - or any prose that must survive being read twice by someone in a hurry. Encodes the house style, the truth and sourcing rules, and the banned-constructions list. Use whenever you produce repository-bound text longer than a paragraph, even if nobody says "document". Foundation for the sibling document-type skills.
npx skills add riekelt/technical-writer --skill technical-writing
House style for technical documents. The rules are in English; documents keep their own language: a Dutch document is written and reviewed in Dutch. The structural and truth rules apply in any language; the vocabulary lists in references/style.md are English-specific and other languages carry their own. Core principle: a document states current, verified behavior, conclusion first, with every claim traceable to a source, and every fact living in exactly one place. A thin document beats an overstated one.
These rules govern documents, not chat replies. Length and section rules apply to running prose, not to reference lists like this file.
Load this skill for any technical prose, then the matching document-type skill on top. These are routing hints; each skill's own body is the authority.
When a repository regularly produces documents, record the invocation in project memory: one line in its CLAUDE.md or the platform's equivalent, telling agents to load this skill for any technical prose there.
| The task is | Also load |
|---|---|
| A proposal, RFC, design doc, spec, or migration plan | writing-design-docs |
| Recording a decision, an ADR, a decision log entry | recording-decisions |
| A changelog entry, release notes, "what shipped" | writing-changelogs |
| A runbook, setup guide, procedure, troubleshooting entry | writing-runbooks |
| A tracker item: epic, story, task, bug report, spike, acceptance criteria | writing-issues |
| A migration or deprecation guide | writing-runbooks |
| A postmortem, incident report, root-cause analysis | writing-postmortems |
| Documenting an existing, under-documented system; regrounding stale docs against code | documenting-legacy-codebases |
| A process, lifecycle, or interaction diagram; drawing business logic | diagramming-processes |
| An API reference: endpoints, message payloads, DTOs, CLI commands, file formats, webhooks | documenting-contracts |
| Reviewing or rewriting someone else's text; the final pass before delivering any document | reviewing-technical-prose |
references/truth.md still bind those.Before drafting a new document or substantial section, derive and state in working notes:
Kind: <normative|descriptive|historical|runbook|reference> | Audience: <who> | Purpose: <the verb the reader must accomplish> | Non-goals: <what this deliberately does not cover>
Fill the fields from the request, sources, and repository context. State a safe assumption and continue when it does not materially change the result. Ask only when an unknown would change the audience, substance, or scope. Never invent a fact to complete the checkpoint; do not insert the checkpoint into the finished document unless its schema requires it.
Before writing a line:
README.md that indexes the documents. If it exists, add the new document to it.When instructions conflict, apply them in this order:
references/style.md.Existing practice controls only choices that a higher rule does not settle. It cannot weaken sourcing, rewrite accepted history, or represent unverified work as shipped. A document-type exception must name the rule it bends and the boundary of the exception.
An author's stated style choice outranks the shared style preferences, and nothing else. When the author says leave my voice alone, the style pass stops; truth, safety, and history stay binding whoever objects.
The edit rule differs per kind. "Update docs to match code" is actively wrong for two of the five.
| Kind | Examples | Edit rule |
|---|---|---|
| Normative | architecture principles, contracts, style guides | If code violates the contract, do NOT water the contract down; record the violation. Edit only when the contract itself names deleted or renamed concepts. |
| Descriptive | flows, component docs, state machines | Update to match code exactly. Verify against implementations, not names. |
| Historical | changelogs, old specs, decision logs, applied migrations | Never rewrite history. Flag discrepancies; supersede with a new entry. |
| Runbook | operations, troubleshooting, release procedures | Update to match reality; every step must have been actually run. |
| Reference | API docs, config references, indexes | Exhaustive: every key, every flag, with defaults and a Usage column. |
If an entire document describes something deleted, do not delete the file: mark it obsolete with a one-line banner ("> NOTE: describes removed component X; see Y") and leave the removal to the owner.
Non-negotiable, in every document:
-- dashes. Use commas, colons, semicolons, periods, parentheses, or - with spaces as an aside marker. A plain hyphen serves ranges (2026-2030). Check all three forms before delivery.references/truth.md.references/truth.md.references/style.md.reviewing-technical-prose for the checklist. Check references by actually following them.Know who you write for before starting. Not "users": the actual person, where they are, and the verb they must accomplish.
| Reader | What they need |
|---|---|
| Developers | The why behind the choice, and what changes about their work tomorrow |
| Tech leads / architects | Trade-offs, alternatives, long-term consequences |
| Management / product owner | What it yields, what it costs, which risks |
| External parties | No internal team names or jargon without explanation |
Several groups at once: the summary reads for the broadest group, the rest may deepen. A phrase that would need a footnote needs rewriting, not a footnote.