PluginBench
Skill
Pass
Audit score 90

writing-design-docs

riekelt/technical-writer

Structure proposals, RFCs, and design docs with decision boxes, cost accounting, and completeness checks.

What is writing-design-docs?

A skill for writing design documents, proposals, RFCs, specs, and migration plans that argue for a change or record a design. Use it whenever a change needs scoping or persuasion in writing, ensuring conclusions come first, every non-trivial choice is justified in a Why & What box, and costs are named alongside benefits.

  • Provides a numbered skeleton structure (summary, context, analysis, open questions, benefits/costs, residual risks) to organize proposals
  • Encodes Why & What decision boxes that state each choice, its reasoning, alternatives considered, and fallback plans
  • Separates verified facts from proposals and marks unfinished sections with `**[DRAFT - input wanted]**` instead of omitting them
  • Enforces completeness checks: no unresolved placeholders, missing acceptance criteria, undefined references, unverifiable outputs, or outcomes without implementable direction
  • Requires concrete figures and verifiable statements; prohibits superlatives, promise language, and strawman dismissals of alternatives

How to install writing-design-docs

npx skills add https://github.com/riekelt/technical-writer --skill writing-design-docs
Prerequisites
  • The `technical-writing` skill (required background for hard rules, truth rules, and style)
Claude Code
Cursor
Windsurf
Cline

How to use writing-design-docs

  1. 1.Start with the skeleton: title, subtitle, status/owner/scope/audience table, then numbered chapters (summary, context, analysis, open questions, benefits/costs, residual risks)
  2. 2.For each non-trivial choice, create a Why & What box stating the choice, reasoning, alternatives with their strongest arguments, and a fallback
  3. 3.Separate verified facts from proposals; mark unfinished sections with `**[DRAFT - input wanted]**` and cite sources or mark `**[source wanted: ...]**` for facts without sources
  4. 4.Run the completeness check before handing to reviewers: no unresolved placeholders, missing acceptance criteria, undefined references, unverifiable outputs, or outcomes without implementable direction
  5. 5.Use appendices (A, B, etc.) for config examples, glossaries, or inventories that would bury the main text; keep facts in one place and link rather than repeat

Use cases

Good for
  • Writing an RFC or design document proposing a system architecture change with trade-offs and alternatives
  • Drafting a migration plan that names costs, benefits, and residual risks for teams affected by the change
  • Creating a spec or proposal that must persuade stakeholders by separating fact from proposal and showing what was analyzed
  • Scoping a change request or feature proposal with explicit goals, non-goals, and open questions assigned to owners
  • Documenting a technical decision with grounding facts, definitions, and appendices to avoid burying the main argument
Who it's for
  • Technical writers and engineers drafting proposals or design documents
  • Team leads and architects scoping changes that require stakeholder buy-in
  • Anyone writing RFCs, specs, or migration plans that argue for a change
  • Project managers and decision-makers needing structured, fact-based proposals

writing-design-docs FAQ

When should I use this skill instead of recording-decisions or writing-runbooks?

Use this skill for proposals, RFCs, design docs, specs, and migration plans that argue for a change or record a design. Use `recording-decisions` for already-taken decisions and `writing-runbooks` for procedures.

What is a Why & What box and when do I need one?

A Why & What box justifies each non-trivial choice by stating what the choice is, why it was made, what it does NOT solve, alternatives considered with their strongest arguments, and a fallback. Create one for any choice a reader might contest; skip it for uncontested choices.

How do I handle facts I cannot source immediately?

Mark them `**[source wanted: ...]**` and keep writing. Never invent a citation and never silently drop the fact. The `technical-writing` skill rules hold whatever the deadline.

What are the five vagueness defects I should check for?

Unresolved placeholders (TBD, TODO, incomplete sentences), missing acceptance criteria, undefined references (types, endpoints, components), no verifiable output (no file path, command, or observable behavior), and what without how (outcomes with no implementable direction).

How long should a design document be?

No strict line budget, but remove repetition and emphasis. Past roughly 800 lines, split the document and let the main document link to the parts.

Full instructions (SKILL.md)

Source of truth, from riekelt/technical-writer.


name: writing-design-docs description: Use when writing a proposal, RFC, design document, spec, or migration plan - anything that argues for a change, records a design, or asks readers for input on one. Encodes the proposal skeleton, the Why & What decision box, and the completeness checks. Use whenever a change needs arguing or scoping in writing, even if the user just says "write up the approach".

Writing design docs

REQUIRED BACKGROUND: the technical-writing skill (read-first, hard rules, truth rules, style).

Overview

A design document is a proposal made discussable: conclusion first, every non-trivial choice in a Why & What box, costs named next to benefits, and fact separated from proposal.

When to invoke, and not

Invoke for anything that argues for a change or records a design: proposals, RFCs, design docs, specs, migration plans, "should we" documents. Do NOT invoke for recording an already-taken decision (recording-decisions), for procedures (writing-runbooks), or for status reports.

Under pressure: a proposal persuades with its numbers and its named costs, and the register rules hold whatever the deadline (the technical-writing rule; "punchy" is not an override). When supplied facts arrive without sources, mark them **[source wanted: ...]** and keep writing (see references/truth.md in the technical-writing skill); never invent a citation and never silently drop the fact.

Skeleton

# Title: what the document does

**Subtitle pinning the scope in one sentence**

|                |                                            |
| -------------- | ------------------------------------------ |
| **Status**     | Draft / Request for comments               |
| **Owner**      | [team or role]                             |
| **Scope**      | [explicit, including what falls outside]   |
| **Related**    | [links to sibling documents]               |
| **Audience**   | [who must read this]                       |

---

## 1. Summary
[The conclusion immediately. Not the occasion, not the method.]

## 2. [Context / what was analyzed]
## 3. [The analysis, split per question]
## n. Open questions
## n+1. Benefits and costs
[Both. Benefits alone reads as a sales pitch.]
## n+2. Residual risks and what not to do
[Only when the design hands work to other teams.]

---

*Closing line: which parts are fact and which are proposal, and where input is wanted.*

Structure rules

  • Number chapters and cite them as ch. 7.1.
  • Goals and non-goals both. The non-goals (or "explicitly not changed") section states what stays unchanged.
  • Definitions before behavior when a term is ambiguous: pin "responded", "eligible", "stale" before using them.
  • A grounding section pins the facts the design rests on: a fact/source table, checked against a named commit. Separate verified facts from what will be built.
  • Appendices take letters (Appendix A, B) and hold what would bury the main text: config examples, glossaries, inventories.
  • A fact lives in one place. Link to it; never repeat it, not even across documents in the same repo.
  • Mark unfinished parts with **[DRAFT - input wanted]** instead of omitting them.
  • Open questions get owners: a name, a role, or an explicit "to be filled by".
  • Residual risks and what NOT to do close the document when the design ships work to others.
  • No line budget, but length from repetition or emphasis goes; past roughly 800 lines, split and let the main document link to the parts.

The Why & What box

Every non-trivial choice gets one; readers react to the box, not to the conclusion.

> **Why & What - [the choice in four words]**
>
> **What:** [the choice, one sentence, no justification]
>
> **Why:** [the reasoning. Also name what the choice does NOT solve.]
>
> **Alternatives considered:**
> - *[Alternative]:* [its strongest argument, and why it still lost]
>
> **Fallback:** [what survives if this does not work]
  • An alternative dismissed without its strongest argument is a strawman. Name that argument.
  • Admitting what the choice does not solve makes the document more credible.
  • No box for choices nobody would contest; that is noise.
  • An alternative that appears nowhere else in the document does not belong in the box: the reader would never consider it. One such rejection can be justified; several short ones in a row mean the box is padded.

Tone

  • The document stays a proposal: "we propose" and "whether that convinces is up to you", not "this becomes the way of working". It sets the direction and leaves the detailed choices open.
  • Name what it costs. The benefits chapter ends with the price: what gets harder, what people must unlearn, which freedom disappears.
  • No superlatives, no promise language. Concrete figures and verifiable statements.
  • The expected outcome may be negative; say so up front: "the expected outcome is that the current queue beats the proposed rewrite; that is a useful result."

Completeness check

Before handing a spec or plan to a reviewer or executor, check the five vagueness defects:

  1. Unresolved placeholders: any literal TBD, TODO, "fill in later", or clearly incomplete sentence (a marked **[DRAFT - input wanted]** block is deliberate; an unmarked gap is a defect).
  2. Missing acceptance criteria: a requirement with no concrete, independently testable success condition.
  3. Undefined references: a type, endpoint, component, or table mentioned but defined nowhere.
  4. No verifiable output: a task producing nothing a reviewer could inspect (no file path, no command, no observable behavior).
  5. What without how: an outcome with no implementable direction ("handle errors appropriately" with no definition of appropriate).

For execution plans, add per task: goal, exact files, the change shown, tests with concrete scenarios, and the verify command. Explain any confusing leftover (an odd directory name, a legacy alias) rather than leaving it puzzling.