| name | adr |
| description | Use when the user says /adr, "create an ADR", "new decision record", "document this decision", or "supersede ADR". Also triggers when a technical decision needs formal documentation with status tracking and lifecycle management. |
Architectural Decision Record Management
Creates and manages ADRs following the format established in ~/repos/system-design-records/.
Arguments
new <title> โ Create a new ADR
list โ List all existing ADRs
supersede <number> <new-title> โ Create a new ADR that supersedes an existing one
- (no args) โ Interactive: ask what the user wants to do
Workflow
Locate ADR Directory
Search for ADRs in this order:
adrs/ (matches system-design-records global convention)
domains/{Domain}/{System}/ (domain-scoped convention)
docs/adr/ or docs/adrs/
adr/ or adrs/
- Any directory containing files matching
NNNN-*.md ADR naming pattern
If no ADR directory exists, ask the user:
- Global decision? โ create in
adrs/
- Domain-scoped? โ ask for domain and system name, create in
domains/{Domain}/{System}/
Creating a New ADR (new)
-
Determine the next number: Scan existing ADRs, find the highest number, increment by 1. Pad to 4 digits (e.g., 0001, 0012). Support sub-numbers like 0008.1 when creating a related decision โ ask if this is a sub-decision of an existing ADR.
-
Generate the filename: NNNN-<kebab-case-title>.md
-
Gather metadata from the user:
- Responsible Architect (who owns this decision?)
- Author (default: the user)
- Contributors (optional)
- Lifecycle stage: POC, Pilot, Beta, GA, or Sunset
-
Create the ADR using this template:
# ADR #NNNN: <Title, a short present tense phrase>
Date: <today's date, YYYY-MM-DD>
## Responsible Architect
<name>
## Author
<name>
## Contributors
* <names>
## Lifecycle
<POC | Pilot | Beta | GA | Sunset>
## Status
Proposed
## Context
<!-- Describe the forces at play โ technological, political, social, project-local. -->
<!-- These forces are probably in tension. Language should be value-neutral โ just facts. -->
## Decision
<!-- Our response to these forces. Stated in full sentences, active voice. "We will ..." -->
## Consequences
<!-- What becomes easier or more difficult because of this decision. -->
<!-- List all consequences โ positive, negative, and neutral. -->
-
Open the file for the user and tell them to fill in Context, Decision, and Consequences.
-
Glossary hooks (end-of-skill). After the ADR body is filled (Context / Decision / Consequences), fire two hooks against ./CONTEXT.md. Both fire once at end-of-skill (not per-section) per the 2026-05-22 decision and the contract in references/CALLER-HOOKS.md ยง adr. Read hook runs first so its findings can inform what the write-offer surfaces as new terms.
a. Read hook (advisory). If ./CONTEXT.md exists and parses cleanly, parse the ## Language section, build the _Avoid_: alias set, scan the Context / Decision / Consequences sections (plus any Alternatives subsection if the project's ADR template adds one), and surface one advisory line per match โ only when an ADR term hits an _Avoid_ alias (only-on-conflict). NEVER substitute silently in either direction โ CONTEXT.md is a candidate, not authority. Surface candidates for user judgment per rules/memory-discipline.md (verify before assert). Silent no-op if ./CONTEXT.md is absent or malformed.
b. Write-offer hook. Scan Context / Decision / Consequences (and Alternatives if present) for project-specific nouns that recurred โฅ2ร and lack a ./CONTEXT.md entry (option names, system names, decision-context vocabulary). Invoke /glossary --offer-from-caller=adr --candidate-terms=<...> โ offer never auto-write. Skip if every candidate is already canonical.
Both hooks are advisory, not blocking. Promotion to blocking is gated by Phase B eval signal per the decision doc rollback trigger.
Superseding an ADR (supersede)
- Create the new ADR as above.
- Add to the new ADR's Context:
Supersedes [ADR #NNNN](./NNNN-<old-title>.md).
- Update the old ADR's Status to:
Superseded by [ADR #MMMM](./MMMM-<new-title>.md)
Listing ADRs (list)
Display a markdown table:
| # | Title | Status | Lifecycle | Responsible Architect | Date |
|---|-------|--------|-----------|----------------------|------|
Parse the number from the filename, the title from the H1, and extract Status, Lifecycle, and Responsible Architect from the document body.
When NOT to Use
- Trivial decisions that don't warrant formal tracking (naming conventions, small refactors, one-off code style choices)
- Decisions that require a fuller System Design Record โ see Related Templates below for system-level, service-creation, or tool-adoption decisions
- Tenet deviations โ use
/tenet-exception instead
- Technology adoption with lifecycle tracking (Assess/Trial/Adopt/Hold) โ use
/tech-radar instead
Common Mistakes
- Writing Context as solution justification โ Context describes forces in tension in value-neutral language. Save the "why we chose X" for Decision and Consequences.
- Skipping Consequences, or only listing positives โ every decision has trade-offs. Enumerate negative and neutral consequences too.
- Creating ADRs for decisions that are already made and deployed โ ADRs are decision records; if the decision is fait accompli, mark Status accordingly rather than backfilling as "Proposed".
- Forgetting to update the superseded ADR โ when superseding, always update the old ADR's Status field; otherwise future readers can't follow the chain.
- Stuffing system-level designs into an ADR โ if the scope is a whole system or service, suggest the appropriate larger template instead.
Related Templates
The system-design-records repo has additional templates for larger decisions:
- System Overview โ for designing complete systems or large architectural changes
- Service/Component Creation โ for implementing new services
- Data Design โ for schema or data model changes
- Tool/Framework Adoption โ for evaluating new technologies
- Blueprint โ for reference architectures
If the user's decision seems larger than an ADR (e.g., "design a new system", "evaluate a new tool"), suggest the appropriate template instead and point them to ~/repos/system-design-records/templates/.