Critical rules
- •ALWAYS check existing ADRs before proposing architectural changes
- •NEVER contradict an ADR without either updating it or writing a superseding ADR
- •ALWAYS document architectural decisions that impact structure, boundaries or dependencies
- •ALWAYS keep ADRs concise, factual and written in British English
- •NEVER edit historical ADR content; add a new ADR to supersede it
Scope
ADRs are required when:
- •Introducing a new architectural pattern or framework
- •Changing boundaries between domain, application, and adapters
- •Adding or replacing infrastructure dependencies
- •Making decisions that affect runtime characteristics (performance, security, resilience)
- •Establishing cross-cutting concerns (logging, observability, error handling)
ADRs are not required for:
- •Pure refactoring with no architectural impact
- •Test-only changes
- •Cosmetic or formatting changes
Workflow
- •Locate ADRs by checking
.adr-dirfile if it exists, otherwise usedocs/adrby default - •Review relevant decisions from the ADR directory
- •Assess impact of the proposed change against existing ADRs
- •Choose action:
- •Follow existing ADR (no new ADR)
- •Supersede with a new ADR if the decision changes
- •Suggest the creation of a new ADR if no decision exists
- •Draft ADR using the standard format
- •Reference the ADR in the change description or PR summary
ADR Format
Use a simple, consistent structure:
code
# Title ## Status Accepted | Proposed | Superseded | Deprecated ## Context What problem are we solving and why now? ## Decision What is the decision? ## Consequences What are the trade-offs and impacts?
Decision Tree
code
Does the change affect architecture or system boundaries? ├─ YES → Is there an ADR covering this? │ ├─ YES → Follow it │ └─ NO → Create a new ADR └─ NO → No ADR needed
Common Pitfalls
- •Silent divergence — Changing architecture without updating ADRs
- •Overwriting history — Editing old ADRs instead of superseding them
- •Vague consequences — Not stating trade-offs or impacts clearly
- •Mixed scope — Combining multiple unrelated decisions in one ADR
Checklist
Before submitting changes, verify:
- • Relevant ADRs were reviewed
- • New architectural decisions are captured in a new ADR
- • Superseded decisions have a new ADR referencing the prior decision
- • ADR is concise and written in British English
- • ADR status is appropriate and consistent
Related Skills
- •
hexagonal-architecture— For architectural boundaries and ports/adapters - •
code-quality— For Clean Code, SOLID and Object Calisthenics