adr-new · git:20260524.2b5a790 · 2026-05-24 · sha256 184eaa6f6f4cb69a
adr-new git:20260524.2b5a790A
Immutable. This exact content never changes and is served at /api/v1/blob/184eaa6f6f4cb69a.
--- name: adr-new description: Create a new Architecture Decision Record with append-only, status-gated supersession, and update the ADR index. Invoke with /adr-new, often from the /tdd-author close-out. disable-model-invocation: true --- # New ADR Record a durable architectural decision or established pattern. ADRs are the sparse, forward-feeding memory loaded into every future TDD — keep the bar high and the set small. ## Rules — enforce strictly - APPEND-ONLY ON SUBSTANCE. Once an ADR is `accepted` (or built upon), its Context/Decision/Consequences are historical record. Light editorial touch-ups are fine — typos, a broken link, flipping `proposed`→`accepted`, marking `superseded by`. Anything that changes the SUBSTANCE of the decision is a new superseding ADR, never an edit. Rewriting the body destroys the record of what was decided and why at the time. - Assign the next zero-padded number: highest existing in `docs/adr/` + 1. - Every ADR has Status: `proposed` | `accepted` | `superseded by NNNN`. - To reverse or replace a prior decision: create a NEW ADR with `Supersedes: NNNN` that captures the new context, decision, and consequences in FULL; then change ONLY the old ADR's Status line to `superseded by <new>`. Never delete the old ADR. Update any design docs that referenced the old ADR's substance to point at the new one. - Challenging an accepted decision is encouraged when new information surfaces (a dependency's license, a competitor's architecture, a UX constraint) — say so plainly and supersede. Changing a decision early is far cheaper than discovering it was wrong after weeks of building on it. ADRs are accepted, not immutable. - After writing, update `docs/adr/INDEX.md` (create if absent): add the new row and refresh the superseded ADR's status so both rows reflect the new state. ## ADR template ``` # NNNN. <title> Status: accepted Date: <YYYY-MM-DD> Scope: <domain — used by the index and by TDD relevance matching> Supersedes: <NNNN, if applicable> ## Context ## Decision ## Consequences ``` ## Index format — docs/adr/INDEX.md ``` # ADR Index > Only `accepted` ADRs are binding constraints for new TDDs. | # | Title | Status | Scope | |------|---------|----------|---------| | 0001 | <title> | accepted | <scope> | ``` Keep each row to one line so the whole index stays cheap to keep in context. ## Commits This skill only WRITES files (the ADR and the index). It does not commit or branch. ADRs are committed by the design phase (`/tdd-author`) together with the TDD set, so they travel in the design PR that justifies them.