Loading...
Loading...
Create an Architecture Decision Record (ADR) in canonical MADR v4 format capturing the why behind a significant technical choice. Use when user says 'document this decision', 'create an ADR', 'record architecture decision', 'why did we choose X', 'document the rationale', or when adding major dependencies, new frameworks, or changing fundamental patterns. Do NOT use for user-facing feature docs (use document-feature) or syncing existing docs (use update-doc).
npx skill4agent add thommann/skills document-decisiondocs/adr/docs/decisions/docs/arc42/decisions/architecture/decisions/adr/find . -type d -name 'adr*' -o -name 'decisions'template.md0000-template.mdgit diff main...HEAD
git diff --stat main...HEAD### Confirmation# Find ADRs covering adjacent ground
grep -rli "{topic-keyword}" <adr-dir>/ 2>/dev/nullstatus: "superseded by ADR-NNNN"NNNN-short-slug.md0042-adopt-postgres-rls.mdYYYY_MM_DD_short_slug.md2026_04_20_adopt_postgres_rls.md<!-- This is an optional element. Feel free to remove. -->### Confirmation---
status: "{proposed | rejected | accepted | deprecated | superseded by ADR-0123}"
date: {YYYY-MM-DD}
decision-makers: {list everyone involved in the decision}
consulted: {subject-matter experts with two-way communication}
informed: {kept up-to-date with one-way communication}
---
# {short title, representative of solved problem and found solution}
## Context and Problem Statement
{Describe the context and problem in two to three sentences, or as an illustrative
story. You may articulate the problem as a question. Make the scope explicit by
naming the structural architecture elements affected (components, connectors,
modules). Link to issues, collaboration boards, prior ADRs.}
<!-- This is an optional element. Feel free to remove. -->
## Decision Drivers
* {decision driver 1 — a desired quality, faced concern, constraint, or force}
* {decision driver 2}
* …
## Considered Options
* {title of option 1}
* {title of option 2}
* {title of option 3}
* …
## Decision Outcome
Chosen option: "{title of option 1}", because {justification — e.g., only option
that meets a k.o. criterion, resolves a specific force, comes out best in the
pros/cons analysis below}.
<!-- This is an optional element. Feel free to remove. -->
### Consequences
* Good, because {positive consequence — improvement of one or more desired qualities}
* Bad, because {negative consequence — compromising one or more desired qualities}
* …
<!-- Strongly recommended even though MADR marks it optional. -->
### Confirmation
{How will compliance with this ADR be confirmed? Is there an automated or manual
fitness function? E.g., a code review, a test with ArchUnit, a CI check, a
periodic audit. Name the mechanism and where it lives.}
<!-- This is an optional element. Feel free to remove. -->
## Pros and Cons of the Options
### {title of option 1}
{example | description | pointer to more information}
* Good, because {argument a}
* Good, because {argument b}
* Neutral, because {argument c}
* Bad, because {argument d}
### {title of option 2}
* Good, because {argument a}
* Neutral, because {argument b}
* Bad, because {argument c}
<!-- This is an optional element. Feel free to remove. -->
## More Information
{Additional evidence/confidence for the outcome; team agreement; when/how the
decision should be realised; if/when it should be revisited; links to related
decisions and resources.}Context and Problem StatementDecision DriversConsidered OptionsDecision OutcomeConsequencesConfirmationPros and Cons of the OptionsMore InformationConsequencesConfirmation##### Decision Outcomedecision-makersdecidersstatusstatus: "superseded by ADR-0123"index.mdREADME.md| {Number/Date} | [{Title}]({filename}) | {Status} |# The file exists where expected
ls <adr-dir>/{NNNN-slug.md OR YYYY_MM_DD_slug.md}
# Required MADR v4 sections are present (Context, Considered Options, Decision Outcome)
grep -E '^## (Context and Problem Statement|Considered Options|Decision Outcome)$' <adr-dir>/<filename> | wc -l
# Expected: 3
# Confirmation sub-section is present (strongly recommended)
grep -q '^### Confirmation$' <adr-dir>/<filename> && echo "OK" || echo "MISSING — add unless intentionally omitted"
# Frontmatter uses canonical field names
head -10 <adr-dir>/<filename> | grep -E '^(status|date|decision-makers|consulted|informed):'
# The index references it
grep -q "{slug}" <adr-dir>/README.md <adr-dir>/index.md 2>/dev/null| Mistake | Correction |
|---|---|
Using | Heading name is exact in MADR v4. |
Using | Same. |
Promoting | They are |
Frontmatter field | Renamed to |
Listing pros/cons as | Use |
Omitting | MADR v4 elevated this; almost every meaningful ADR has a confirmation mechanism. State it. |
| Writing an ADR for a decision with no real trade-off | Skip it. ADRs document choices with alternatives. |
| Context is the situation. If context and decision sound the same, the context isn't concrete enough. |
Consequences listed only as | Every decision has trade-offs. If you can't name a |
| Duplicating an existing ADR because you didn't search | Step 2 is mandatory. Duplicate ADRs fragment institutional memory. |