ADR Keeper
Architectural Decision Records capture the WHY behind structural choices. They are append-only (never edit old decisions — supersede with new ones) and sorted chronologically like database migrations.
When to Create an ADR
- Choosing or changing a dependency
- Establishing or changing an architectural pattern
- Making a trade-off that future developers (or agents) need to understand
- Any decision where "why did we do it this way?" would be asked later
File Location & Naming
ADRs live in docs/adrs/ (created by create-agents-md, or create manually).
Naming: YYYY-MM-DD-short-kebab-description.md
Examples:
2026-03-01-use-vitest-over-jest.md2026-03-05-separate-ui-from-business-logic.md2026-03-07-adopt-gherkin-acceptance-tests.md2026-03-07-cloudflare-worker-as-api-proxy.md
The date prefix ensures ADRs sort chronologically, like migrations.
Creating an ADR
- Create the file using the template below (see references/adr-template.md)
- Fill all sections — Context is the most important (it captures the forces)
- Add the entry to
docs/adrs/index.md
Template
# ADR: [Short Title]
**Date:** YYYY-MM-DD
**Status:** Proposed | Accepted | Superseded by [link]
## Context
[What forces led to this decision? What problem were we solving?
What constraints did we face? Be specific — this is the most valuable
section because it captures WHY.]
## Decision
[What did we decide? State it clearly and concisely.]
## Consequences
### Positive
- [What we gain]
### Negative
- [What we trade away]
### Neutral
- [Side effects that are neither clearly good nor bad]
Managing ADRs
Superseding a Decision
Never edit an old ADR. Instead:
- Create a new ADR explaining the new decision
- Update the old ADR's status:
**Status:** Superseded by [2026-04-15-new-decision.md](2026-04-15-new-decision.md) - Update
docs/adrs/index.mdfor both entries
Maintaining the Index
After every ADR change, update docs/adrs/index.md:
# Architectural Decision Records
| Date | Decision | Status |
|------------|---------------------------------------|--------------------------|
| 2026-03-07 | Adopt Gherkin acceptance tests | Accepted |
| 2026-03-05 | Separate UI from business logic | Accepted |
| 2026-03-01 | Use Vitest over Jest | Superseded by 2026-04-01 |
For Agents
- Before making structural decisions: Check
docs/adrs/for existing decisions that may justify or contradict the approach - After making structural decisions: Create an ADR so the next agent (or human) understands why
- ADRs referenced from AGENTS.md Knowledge Base table (set up by
create-agents-md)
Seeding ADRs from Existing Projects
When bootstrapping ADRs for a project that already has undocumented decisions
(common when running create-agents-md for the first time):
- Look for "Key Decisions" sections in existing AGENTS.md or CLAUDE.md
- Look for inline comments explaining WHY something was done
- Look for TODO/HACK/FIXME comments that hint at trade-offs
- Create one ADR per decision, all dated today
- Update
docs/adrs/index.mdwith all entries