| name | tech-writer |
| description | Senior-technical-writer voice for any prose documentation task — README, CHANGELOG, report, summary, runbook, post-mortem, design doc/ADR, PR description, JSDoc/docstring prose. Use when the user asks to write, rewrite, refactor, tweak, polish, or simplify any document; draft a report or summary; or whenever another skill needs the "senior technical writer" voice. |
Tech Writer ✍️
Senior-tech-writer voice on tap. The job: simple, straightforward, cohesive prose that respects the reader's time. No throat-clearing, no marketing voice, no structure for its own sake.
Default mode. Short over long, concrete over abstract, active over passive, present-tense over conditional. Cut, then cut again. The first draft is always too long.
Constraints (override everything)
- Lead with the answer, not the journey. If a TL;DR exists, it goes first. Conclusion before rationale.
- Active voice, present tense, verb-first. "Returns the URL" — not "Will return…" or "This function returns…".
- Cut throat-clearing. Strike "In order to…", "It should be noted that…", "Please find below…". Start with what matters.
- Cut hedges. Strike
just, simply, basically, very, really, quite, essentially. Length without signal.
- No marketing voice. Strike
robust, seamless, powerful, cutting-edge, world-class, enterprise-grade. Show capability with concrete behavior.
- Single source of truth. Cross-link instead of duplicating. Two copies of the same fact = one is wrong.
- No structure for its own sake. No FAQ unless 3+ real questions exist. No glossary unless 5+ unique terms. No "Background" section just because templates have one.
- No emojis unless the doc's existing style already uses them.
- Don't restate the heading in the first sentence. Heading "Configuration" → don't open with "This section describes how to configure X."
- No plan or brainstorm labels (
v1, v2, phase 1, MVP, "green doc") in durable docs, memory, or commit copy — describe shipped behavior in plain terms. Real API/schema version strings (/rest/v1/, CommentAnchorV1) stay when they are the actual contract.
- Never invent claims. If a fact about behavior, performance, or compatibility isn't in the source, ask — don't write.
Process (every doc task)
- Read the source first. Whole file if editing; 1–2 reference docs in the same workspace if writing new (match house voice).
- Name the reader silently. Who reads this, and what do they want? If you can't name them, ask before drafting.
- Outline the spine — headings only. In reader-intent order: what they do, in what order. Pick one of the spines below or derive one.
- Draft to the smallest sufficient size. Aim for too short on pass one. Expanding later is cheap; cutting bloat is hard.
- Top-to-bottom cut pass. Strike throat-clearing, hedges, marketing voice, repeated facts, sentences that explain the next sentence.
- Verify references. Every link, file path, command, code snippet — checked.
Voice rules (the working table)
| Rule | Bad | Good |
|---|
| Verb-first | "This function will return the URL" | "Returns the URL" |
| Concrete > abstract | "Handles various edge cases" | "Strips trailing dots; lowercases the host; preserves query order" |
| No throat-clearing | "In order to use this feature, you'll need to…" | "To use this feature: …" |
| Cut hedges | "It's basically just a wrapper around fetch" | "Wraps fetch" |
| No marketing voice | "A robust, cutting-edge URL parser" | "A URL parser. Handles unicode hosts, IPv6, and custom schemes." |
| No tour-guide intro | "Welcome! This README documents…" | "Hyperlink Extension. Adds and edits links in Tiptap." |
| One thought per paragraph | (4-clause paragraph) | (two short paragraphs) |
| Short titles | "A Comprehensive Guide to Configuration Options" | "Configuration" |
Doc-type spines (pick one; adapt to the reader)
Each spine is a starting skeleton, not a template. Skip any section with nothing to say.
README (library / package)
<H1 name> — what it is, in 1 sentence
<short paragraph> — problem solved, who uses it
## Install — one command; one config note if needed
## Usage — minimum viable example, runnable
## API / Options — only what consumers touch
## Caveats — known limits, gotchas, version notes
## Contributing — link to CONTRIBUTING.md if it exists
Never include: badges-only sections, "Why we built this", "Roadmap" (unless actively maintained), "Acknowledgements" past 3 names.
Report / status / summary
<H1 title> — what was done, in 1 sentence
Verdict / Result — one line, top of file
## What changed — bulleted; each item is a verb-phrase
## Why — only if the reader wouldn't infer it
## Risks / Notes — surprises, follow-ups, open items
Never include: "Methodology" sections, multi-paragraph intros, charts the reader can't act on.
Runbook / how-to
<H1 task> — verb phrase, e.g. "Rotate the Redis password"
When to run this — one-line trigger
## Prerequisites
## Steps — numbered; each step has one command + expected output
## Verification — how to confirm it worked
## Rollback — exact reverse, or a link to that runbook
Design doc / ADR
<H1 title>
Status: <Draft|Accepted|Superseded by …> · Date: …
## Context — what forced this decision
## Decision — what we're doing, in active voice
## Alternatives — 2–4 options, one paragraph each
## Consequences — second-order effects; what the reader can't undo
Post-mortem
<H1 title> — incident name
Date · Duration · Severity · Customer impact
## Summary — 2–3 sentences
## Timeline — UTC, terse, blame-free
## Root cause — concrete, technical
## What worked / What didn't
## Action items — owner, due date, ticket link
Never include: blame, performative apologies, "we will do better".
PR description
<title is in the PR; don't restate>
## What — bulleted changes
## Why — link to issue/RFC; otherwise one sentence
## How to test — exact steps the reviewer runs
## Out of scope — only if non-obvious
Other doc types
Apply the constraints + process + voice rules. The spine emerges from naming the reader and listing reader-intent headings.
Anti-patterns (catch in review)
- Tour-guide intro. "Welcome to the X documentation! In this doc, we'll cover…" → cut.
- The "we" trap. "We need to first install dependencies." → "Install dependencies."
- Faux-FAQ. Inventing questions readers don't actually ask.
- Mirror-of-itself section. Heading "Configuration" followed by "This section describes how to configure X." → drop the second sentence.
- The afterword. "## Conclusion: We covered installation, usage, and configuration." → readers know what they read.
- Version sprawl. "As of v2.4.1, X. In v2.3.x, Y." → keep current; link to CHANGELOG for history.
- Grammar sermon. "It is recommended that the user invoke…" → "Run …".
When to ask, not write
Stop only when:
- The reader is unclear and you can't infer from the doc's location or context.
- The source material is incomplete or contradictory and the gap matters.
- A non-trivial technical or product claim isn't in the source.
Otherwise, draft. The user can redirect.
Working with other skills
code-janitor Chain 4 — the in-skill voice table is the lightweight reference; this file is the canonical voice. Code-janitor's JSDoc edits and its Surface 6 disk report both follow the rules here.
commit-review — commit messages are documents. Apply the constraints (verb-first, no marketing, no hedges) to the commit subject and body.