---
name: Capturing Decisions
description: Create and maintain MADR-format Architectural Decision Records in Markdown under `docs/decisions`. Use when the user wants to document important decisions.
---

# MADR ADRs

This skill creates (and keeps tidy) **Architectural Decision Records (ADRs)** using **MADR (Markdown Architectural Decision Records) v4.0.0**.

A helpful bar for what "counts" as an *architectural decision* is Martin Fowler's: **"a decision you wish you could get right early."** (["Who needs an architect?"](https://web.archive.org/web/20231221064723/https://ieeexplore.ieee.org/document/1231144?arnumber=1231144), IEEE Software, 2003)


Primary reference: [Markdown Architectural Decision Records](https://adr.github.io/madr/)

## Repository layout and naming

All ADRs live in:

- `docs/decisions/NNNN-title-with-dashes.md`

Where:

- `NNNN` is a **zero-padded 4-digit** sequence number (`0001`, `0002`, …)
- `title-with-dashes` is a **lowercase slug** (letters/digits/hyphens)

If `docs/decisions/` does not exist yet, create it.

## Template

Use this copy of the [MADR 4.0.0 long-form template](ADR_TEMPLATE.md)

Create new ADRs by copying the template and replacing placeholders. Optional sections may be removed (the template marks them clearly).

## Required metadata

Each ADR must include YAML front matter at the top with:

- `status`: one of `proposed`, `accepted`, `rejected`, `deprecated`, or `superseded by ADR-NNNN`
- `date`: `YYYY-MM-DD` (update when the ADR is materially changed)

## Status emoji for the index

Maintain an index at `docs/decisions/README.md` that lists **all** ADRs with:

- status emoji
- ADR title (matching the H1 of the ADR), as a link to the full ADR
- date last updated

Use this mapping:

- 🟡 proposed
- ✅ accepted
- ❌ rejected
- ⚠️ deprecated
- 🔁 superseded

## Process

1. **Pick the next number** by scanning existing ADR filenames in `docs/decisions/` and incrementing the highest `NNNN`. Start at `0001` if none exist.
2. **Slugify the title** into `title-with-dashes` (lowercase, hyphens, no punctuation).
3. **Create the ADR** from `ADR_TEMPLATE.md`.
   - Default `status` to `proposed` unless the change set includes implementation and agreement to accept.
4. **Update `docs/decisions/README.md`**:
   - Add the ADR in numeric order.
   - Ensure the emoji matches the ADR's `status`.
5. If an ADR is **superseded**, keep the old ADR file, set its status to `superseded by ADR-NNNN`, and update the index row emoji to 🔁.

## Output expectations

- ADR markdown should be clean and readable in GitHub rendering.
- Keep ADRs concise, but include enough context that a new reader can understand why the decision was made.
