Make Decision Doc
Overview
Decision docs live at the repo root in decisions/NNN-kebab-name.md. They explain why a choice was made — the tradeoff, the alternatives that were actually considered, and (when useful) the conditions under which we'd revisit. They are not feature specs, not how-to guides, and not changelog entries.
When to write one
- A non-obvious architectural choice was made and a future contributor would reasonably ask "why didn't we do X instead?".
- A choice has tradeoffs that are easy to second-guess without context (perf vs. simplicity, lock-in vs. flexibility, ergonomics vs. correctness).
- We diverged from a common default or industry-standard alternative and the reasoning matters.
Skip a decision doc when the choice is obvious, the alternatives weren't seriously considered, or the rationale already lives in code comments / change file / PR description.
Workflow
- Read the existing files under
decisions/ (e.g. decisions/001-*.md) to match tone and structure.
- Pick the next number by counting existing files (
ls decisions/ | wc -l) and add 1. Filename is NNN-kebab-slug.md with a 3-digit zero-padded prefix.
- Pick a slug that names the thing being decided, not the verb (
single-matcher, not pick-single-matcher).
- Draft the doc following the structure below. Keep it grounded — no hypothetical alternatives, no aspirational language.
- If the decision relates to other decisions, link them as footnotes (
[NNN]: ./NNN-other.md).
Structure
No rigid template — match the style of existing docs. The shape that tends to work:
- H1 title: a short statement or question that a reader scanning the folder can grok at a glance.
- Opening framing (1–3 short paragraphs): what the choice was, why it came up, and what the realistic alternatives were. Lead with concrete context, not abstractions.
- Tradeoff sections: typically "What gets simpler / harder", "Why we chose X", or named sections per dimension (perf, complexity, ergonomics). Use H2s.
- When to revisit (optional but encouraged): a numbered list of conditions that would flip the decision. Keeps the doc honest and gives future contributors a clear off-ramp.
- Footnote links to related decisions or external sources cited in the body.
Content rules
- Ground every claim. Cite benchmarks, blog posts, code references, or measured behavior. If the decision is "feels nicer", say so explicitly rather than dressing it up.
- Only list alternatives that were actually deliberated. Inventing options to knock down weakens the doc.
- Past tense for the decision ("we chose X"), present tense for ongoing implications ("X means we don't need Y").
- Keep prose tight. These docs reward density — readers come looking for a specific answer.
- Code references use the repo's standard
path/to/file.ts style; line ranges with backtick fences when illustrating a specific snippet.
- No marketing tone, no hedging filler ("it's worth noting that…", "in many cases…"). State the call.
Checklist
- Did you read at least one existing decision doc to match style?
- Is the filename
NNN-kebab-slug.md with the next available number?
- Does the H1 communicate the decision in one line?
- Are the alternatives ones that were actually considered?
- Did you cite concrete evidence (benchmarks, sources, code) instead of assertions?
- Is there a "when to revisit" section if the decision could plausibly flip?
1---2name: make-decision-doc3description: Add a numbered decision document under `decisions/` to capture a non-obvious architectural choice. Use when the user asks for a decision doc, ADR, design rationale, or wants to record why we picked one approach over alternatives.4---56# Make Decision Doc78## Overview910Decision docs live at the repo root in `decisions/NNN-kebab-name.md`. They explain _why_ a choice was made — the tradeoff, the alternatives that were actually considered, and (when useful) the conditions under which we'd revisit. They are not feature specs, not how-to guides, and not changelog entries.1112## When to write one1314- A non-obvious architectural choice was made and a future contributor would reasonably ask "why didn't we do X instead?".15- A choice has tradeoffs that are easy to second-guess without context (perf vs. simplicity, lock-in vs. flexibility, ergonomics vs. correctness).16- We diverged from a common default or industry-standard alternative and the reasoning matters.1718Skip a decision doc when the choice is obvious, the alternatives weren't seriously considered, or the rationale already lives in code comments / change file / PR description.1920## Workflow21221. Read the existing files under `decisions/` (e.g. `decisions/001-*.md`) to match tone and structure.232. Pick the next number by counting existing files (`ls decisions/ | wc -l`) and add 1. Filename is `NNN-kebab-slug.md` with a 3-digit zero-padded prefix.243. Pick a slug that names the _thing being decided_, not the verb (`single-matcher`, not `pick-single-matcher`).254. Draft the doc following the structure below. Keep it grounded — no hypothetical alternatives, no aspirational language.265. If the decision relates to other decisions, link them as footnotes (`[NNN]: ./NNN-other.md`).2728## Structure2930No rigid template — match the style of existing docs. The shape that tends to work:3132- **H1 title**: a short statement or question that a reader scanning the folder can grok at a glance.33- **Opening framing** (1–3 short paragraphs): what the choice was, why it came up, and what the realistic alternatives were. Lead with concrete context, not abstractions.34- **Tradeoff sections**: typically "What gets simpler / harder", "Why we chose X", or named sections per dimension (perf, complexity, ergonomics). Use H2s.35- **When to revisit** (optional but encouraged): a numbered list of conditions that would flip the decision. Keeps the doc honest and gives future contributors a clear off-ramp.36- **Footnote links** to related decisions or external sources cited in the body.3738## Content rules3940- Ground every claim. Cite benchmarks, blog posts, code references, or measured behavior. If the decision is "feels nicer", say so explicitly rather than dressing it up.41- Only list alternatives that were actually deliberated. Inventing options to knock down weakens the doc.42- Past tense for the decision ("we chose X"), present tense for ongoing implications ("X means we don't need Y").43- Keep prose tight. These docs reward density — readers come looking for a specific answer.44- Code references use the repo's standard `path/to/file.ts` style; line ranges with backtick fences when illustrating a specific snippet.45- No marketing tone, no hedging filler ("it's worth noting that…", "in many cases…"). State the call.4647## Checklist4849- Did you read at least one existing decision doc to match style?50- Is the filename `NNN-kebab-slug.md` with the next available number?51- Does the H1 communicate the decision in one line?52- Are the alternatives ones that were actually considered?53- Did you cite concrete evidence (benchmarks, sources, code) instead of assertions?54- Is there a "when to revisit" section if the decision could plausibly flip?