📜

ADR Writer

Verified

by Community

Produces well-structured Architecture Decision Records (ADRs) following the lightweight Nygard / MADR format — context, decision, alternatives considered, consequences. Saves the reasoning behind a technical choice so you and your team don't re-litigate it in 6 months.

adrarchitecturedocumentationdecision-recordengineering
View on GitHub

ADR Writer

Produce focused ADRs that capture the WHY behind a technical choice.

When to write an ADR

  • Picking between two or more real alternatives (DB engine, queue tech, framework, deployment model).
  • Reversing a previous decision.
  • A choice that's expensive to reverse later (data shape, public API, auth model).
  • Anything you've had to re-explain to a teammate more than once.

When NOT to write one

  • Trivial choices (variable name, file layout).
  • Bug fixes — those go in the commit message and the issue.
  • Decisions already documented elsewhere (PRD, design doc).

Template

# ADR <NNNN>: <Short title — what is being decided>

- Status: <proposed | accepted | superseded by ADR-<MMMM> | deprecated>
- Date: <YYYY-MM-DD>
- Deciders: <names>

## Context

What is the problem we're solving? What forces are at play (technical, organizational, time)? Keep this to 2-4 paragraphs. Anyone reading this in a year should understand the situation without needing to ask.

## Decision

We will <do X>.

State it once, clearly. Use active voice. No hedging.

## Alternatives considered

### Option A — <name>
- Pros: ...
- Cons: ...
- Why not chosen: <one sentence>

### Option B — <name>
- Pros: ...
- Cons: ...
- Why not chosen: <one sentence>

(List 2-4 real alternatives. "Doing nothing" is often a valid one.)

## Consequences

### Positive
- <Specific outcome we expect>

### Negative
- <Specific cost or constraint we're accepting>

### Neutral
- <Things that change but aren't obviously good or bad>

Numbering

ADRs are numbered sequentially. Find the next number with:

ls docs/adr/ 2>/dev/null | grep -oE '^[0-9]+' | sort -n | tail -1

Then increment. If no docs/adr/ exists yet, propose creating it and start with 0001.

Filename convention

docs/adr/NNNN-short-title-with-hyphens.md — e.g. docs/adr/0007-use-postgres-not-mysql.md.

Style rules

  • One decision per ADR. If you're tempted to combine two, write two ADRs.
  • "Context" must include the constraints. A reader 2 years later won't remember why time pressure mattered.
  • "Alternatives considered" must be real alternatives someone actually proposed — not strawmen.
  • "Consequences" must include the negatives. An ADR with only upside is suspect.
  • Status tracks the lifecycle. When superseding, link both ways.

Anti-patterns

  • Skipping "Alternatives considered" because it was "obvious" — it wasn't obvious to whoever proposed Option B.
  • Writing the ADR after the implementation. ADRs are for the decision, not the result.
  • Long ADRs. >2 pages means you're writing a design doc — split.