Writing technical docs
Overview
Technical writing runs through almost every development task: the README, the PR
description, the doc comment, the design doc. This skill provides a repeatable writing
process — audience, gather, structure, draft, review — whose depth scales with the
doc, plus reference docs to consult for specific questions.
The scale rule: size every step of the process to the doc. A doc-block comment
has a conventional structure and needs no outline; a one-line review comment needs
no review checklist; an engineering blog post or design doc earns the full loop.
When in doubt, do less — but the review step scales down, never to zero.
Not for: authoring skills (slow-powers:writing-skills owns the skill doc type
and takes precedence; see Related skills), or non-documentation replies (chat
answers, status updates).
Step 0: decide the audience and style
Before writing, decide who reads this and what register fits. This decision is the
metric every later choice is checked against — structure, depth, terminology, tone.
One line of thought for a comment; an explicit audience sentence near the top of a
long doc. doc-types.md lists per-type audience and
structure defaults; use them when the doc matches a type.
The process
flowchart TD
start([Doc to write]) --> audience[Decide audience<br/>and style]
audience --> gather[Gather only what<br/>the doc needs]
gather --> structure{Conventional structure<br/>for this doc type?}
structure -->|yes| use[Use it — done deciding]
structure -->|no| outline[Outline; split large docs into<br/>self-contained sections]
use --> draft[Draft for the audience,<br/>evergreen]
outline --> draft
draft --> review{Doc size?}
review -->|small| spot[Reread once: evergreen,<br/>right for the reader]
review -->|large| full[Review checklist +<br/>reference docs]
spot --> done([Hand off])
full --> findings{Actionable findings?}
findings -->|yes| draft
findings -->|no| done
Gather information
The goal is a good doc, not a thorough investigation. Collect only what the doc needs:
- Reuse what the session already established; don't re-verify confirmed facts or
re-read code you just wrote.
- Verify the specific claims the doc will make — no more. If gathering starts to feel
like its own research project, stop and write what you know; note genuine open
questions in the draft instead.
Structure the doc
- First check doc-types.md: if the doc matches a type, its
conventional structure applies and this step is done. A doc-block comment has an
exact structure; there is nothing extra to consider.
- For a large doc, write the outline and treat each section as its own small doc —
the process applies recursively: each section makes sense alone, and together they
make sense combined.
Draft
This is the step where the skill has the least to say — you already write well. Two
orientations, held as spirit, not boxes to tick:
- Write for the step-0 audience. Depth, terms, and tone follow from who reads it.
When a choice is hard, re-ask the audience question.
- Write evergreen. Describe the system or topic as it is, not the session that
produced the text: no "now supports", "currently", "the new parser", "I moved this
into
utils.ts". Assume the output lives for months; justify exceptions (release
notes, changelogs) rather than assuming them. The word list and exceptions live in
style-principles.md
— skim it once, don't memorize it.
Review the draft
Review always happens; only its depth scales. A comment or one-paragraph doc gets a
single reread through two lenses — is it evergreen? and is it right for this
reader? A substantial doc (a page or more) earns the checklist:
- [ ] Audience and style: every section serves the reader decided in step 0; depth
and terminology match what they know
- [ ] Evergreen: no time-anchored words ("now", "currently", "new", "soon"), no
session narration, no promises of future features
- [ ] Claims: every performance, cost, or security claim is verifiable and sourced;
no superlatives or guarantees
- [ ] Structure: follows the doc-type convention; headings nest without gaps; each
section stands alone
- [ ] Formatting: code, commands, placeholders, lists, tables, and notices verified
against references/formatting.md
- [ ] Links: each one necessary, descriptive, and resolving
Copy the checklist into your persistent task tracker when it applies. Judge each item
— a real "not applicable" is a pass, a shrug is not. Keep findings actionable and
verifiable: fix it or consciously drop it, but no open-ended style debates and no
back-and-forth over taste.
The reference docs are review-time and lookup tools, not pre-draft reading. Open
formatting.md when a content type appears in the doc;
open style-principles.md to ground a style
decision or a review finding. Consult the online source guides only for details that
may have changed since these references were distilled.
Failure modes — both directions
| Failure |
Reality |
| "It's just a small doc — skip the process" |
The process scales down to seconds, never to zero. The two-lens reread is the floor. |
| Researching "a bit more" before writing |
Gathering serves the doc. When it becomes its own investigation, write what you have. |
| Reading style guides before drafting |
References are for drafting lookups and review verification. Pre-draft reading is the time sink this skill exists to prevent. |
| Full checklist on a one-line comment |
Over-ceremony is as much a failure as no review. Scale is the rule. |
| Checklisting — justifying each item away |
A rule satisfied in letter but not spirit was not applied. Weigh justifications or make the edit. |
| Narrating the session in the doc |
"I changed X", "this now works", "as of this PR" describe the edit, not the system. Describe the system. |
Reference docs
| File |
Read it when… |
| references/style-principles.md |
A style or tone question comes up while drafting; a review finding needs grounding; you need the evergreen word list. |
| references/formatting.md |
A doc contains headings, lists, tables, procedures, notices, code, commands, placeholders, UI references, API comments, filenames, links, dates, or numbers — verify the formatting against it. |
| references/doc-types.md |
Deciding a doc's structure or audience defaults: comments, commit messages, PRs, reviews, READMEs, design docs, release notes. |
Related skills
slow-powers:writing-skills — the doc-type authority for skills: it owns skill
structure, frontmatter, and skill-specific prose conventions (descriptions,
rationalization-proofing, discipline framing). When writing a skill, this skill's
style principles still govern the prose where writing-skills is silent — on any
conflict, writing-skills takes precedence.
slow-powers:verifying-development-work — owns the review pass before handing back
code changes; its comment-hygiene checks defer to this skill's evergreen rules.
1---2name: writing-technical-docs3description: Use when writing or editing technical documentation of any size — code comments, doc blocks, commit messages, PR descriptions, review comments, READMEs, design docs, wikis, or user guides — whether drafting new content or revising existing text.4---56# Writing technical docs78## Overview910Technical writing runs through almost every development task: the README, the PR11description, the doc comment, the design doc. This skill provides a repeatable writing12process — audience, gather, structure, draft, review — whose depth **scales with the13doc**, plus reference docs to consult for specific questions.1415> **The scale rule:** size every step of the process to the doc. A doc-block comment16> has a conventional structure and needs no outline; a one-line review comment needs17> no review checklist; an engineering blog post or design doc earns the full loop.18> When in doubt, do less — but the review step scales down, never to zero.1920**Not for:** authoring skills (`slow-powers:writing-skills` owns the skill doc type21and takes precedence; see Related skills), or non-documentation replies (chat22answers, status updates).2324## Step 0: decide the audience and style2526Before writing, decide who reads this and what register fits. This decision is the27metric every later choice is checked against — structure, depth, terminology, tone.28One line of thought for a comment; an explicit audience sentence near the top of a29long doc. [doc-types.md](references/doc-types.md) lists per-type audience and30structure defaults; use them when the doc matches a type.3132## The process3334```mermaid35flowchart TD36 start([Doc to write]) --> audience[Decide audience<br/>and style]37 audience --> gather[Gather only what<br/>the doc needs]38 gather --> structure{Conventional structure<br/>for this doc type?}39 structure -->|yes| use[Use it — done deciding]40 structure -->|no| outline[Outline; split large docs into<br/>self-contained sections]41 use --> draft[Draft for the audience,<br/>evergreen]42 outline --> draft43 draft --> review{Doc size?}44 review -->|small| spot[Reread once: evergreen,<br/>right for the reader]45 review -->|large| full[Review checklist +<br/>reference docs]46 spot --> done([Hand off])47 full --> findings{Actionable findings?}48 findings -->|yes| draft49 findings -->|no| done50```5152### Gather information5354The goal is a good doc, not a thorough investigation. Collect only what the doc needs:55- Reuse what the session already established; don't re-verify confirmed facts or56 re-read code you just wrote.57- Verify the specific claims the doc will make — no more. If gathering starts to feel58 like its own research project, stop and write what you know; note genuine open59 questions in the draft instead.6061### Structure the doc6263- First check [doc-types.md](references/doc-types.md): if the doc matches a type, its64 conventional structure applies and this step is done. A doc-block comment has an65 exact structure; there is nothing extra to consider.66- For a large doc, write the outline and treat each section as its own small doc —67 the process applies recursively: each section makes sense alone, and together they68 make sense combined.6970### Draft7172This is the step where the skill has the least to say — you already write well. Two73orientations, held as *spirit*, not boxes to tick:7475- **Write for the step-0 audience.** Depth, terms, and tone follow from who reads it.76 When a choice is hard, re-ask the audience question.77- **Write evergreen.** Describe the system or topic as it is, not the session that78 produced the text: no "now supports", "currently", "the new parser", "I moved this79 into `utils.ts`". Assume the output lives for months; justify exceptions (release80 notes, changelogs) rather than assuming them. The word list and exceptions live in81 [style-principles.md](references/style-principles.md#timeless-evergreen-documentation)82 — skim it once, don't memorize it.8384### Review the draft8586Review always happens; only its depth scales. A comment or one-paragraph doc gets a87single reread through two lenses — *is it evergreen?* and *is it right for this88reader?* A substantial doc (a page or more) earns the checklist:8990```91- [ ] Audience and style: every section serves the reader decided in step 0; depth92 and terminology match what they know93- [ ] Evergreen: no time-anchored words ("now", "currently", "new", "soon"), no94 session narration, no promises of future features95- [ ] Claims: every performance, cost, or security claim is verifiable and sourced;96 no superlatives or guarantees97- [ ] Structure: follows the doc-type convention; headings nest without gaps; each98 section stands alone99- [ ] Formatting: code, commands, placeholders, lists, tables, and notices verified100 against references/formatting.md101- [ ] Links: each one necessary, descriptive, and resolving102```103104Copy the checklist into your persistent task tracker when it applies. Judge each item105— a real "not applicable" is a pass, a shrug is not. Keep findings **actionable and106verifiable**: fix it or consciously drop it, but no open-ended style debates and no107back-and-forth over taste.108109The reference docs are **review-time and lookup tools, not pre-draft reading**. Open110[formatting.md](references/formatting.md) when a content type appears in the doc;111open [style-principles.md](references/style-principles.md) to ground a style112decision or a review finding. Consult the online source guides only for details that113may have changed since these references were distilled.114115## Failure modes — both directions116117| Failure | Reality |118|---------|---------|119| "It's just a small doc — skip the process" | The process scales down to seconds, never to zero. The two-lens reread is the floor. |120| Researching "a bit more" before writing | Gathering serves the doc. When it becomes its own investigation, write what you have. |121| Reading style guides before drafting | References are for drafting lookups and review verification. Pre-draft reading is the time sink this skill exists to prevent. |122| Full checklist on a one-line comment | Over-ceremony is as much a failure as no review. Scale is the rule. |123| Checklisting — justifying each item away | A rule satisfied in letter but not spirit was not applied. Weigh justifications or make the edit. |124| Narrating the session in the doc | "I changed X", "this now works", "as of this PR" describe the edit, not the system. Describe the system. |125126## Reference docs127128| File | Read it when… |129|------|---------------|130| [references/style-principles.md](references/style-principles.md) | A style or tone question comes up while drafting; a review finding needs grounding; you need the evergreen word list. |131| [references/formatting.md](references/formatting.md) | A doc contains headings, lists, tables, procedures, notices, code, commands, placeholders, UI references, API comments, filenames, links, dates, or numbers — verify the formatting against it. |132| [references/doc-types.md](references/doc-types.md) | Deciding a doc's structure or audience defaults: comments, commit messages, PRs, reviews, READMEs, design docs, release notes. |133134## Related skills135136- `slow-powers:writing-skills` — the doc-type authority for skills: it owns skill137 structure, frontmatter, and skill-specific prose conventions (descriptions,138 rationalization-proofing, discipline framing). When writing a skill, this skill's139 style principles still govern the prose where writing-skills is silent — on any140 conflict, writing-skills takes precedence.141- `slow-powers:verifying-development-work` — owns the review pass before handing back142 code changes; its comment-hygiene checks defer to this skill's evergreen rules.