This skill should be used when the user asks "what is an ADR", "when should I create an ADR", "ADR best practices", "architecture decision records", "ADR lifecycle", "how to document architecture...
Architectural Decision Records (ADRs) capture important architectural decisions along with their context and consequences. This skill provides foundational knowledge for creating, managing, and maintaining ADRs effectively.
Create an ADR when making decisions that:
| Category | Examples |
|---|---|
| Technology Selection | Programming language, framework, database, cloud provider |
| Architecture Patterns | Microservices vs monolith, event-driven, CQRS |
| API Design | REST vs GraphQL, versioning strategy, authentication |
| Data Management | Storage strategy, caching, replication, backup |
| Security | Authentication method, encryption, access control |
| Integration | Third-party services, messaging patterns, protocols |
| Infrastructure | Container orchestration, deployment strategy, scaling |
Skip ADRs for:
proposed ā accepted ā [deprecated] ā superseded
ā
rejected
| Status | Meaning |
|---|---|
| proposed | Under consideration, open for discussion |
| accepted | Approved and active, guides current development |
| rejected | Considered but not adopted (document why) |
| deprecated | No longer recommended, pending replacement |
| superseded | Replaced by a newer ADR (link to successor) |
proposed ā accepted: Decision reviewed and approved by stakeholders proposed ā rejected: Decision not adopted after review accepted ā deprecated: Circumstances changed, better alternatives exist accepted/deprecated ā superseded: New ADR replaces this one
Use clear, action-oriented titles:
Provide sufficient background:
List forces influencing the decision:
For each option considered:
Document both positive and negative outcomes:
Standard pattern: {NUMBER}-{slug}.md
Examples:
0001-use-postgresql-for-primary-storage.md0002-adopt-event-driven-architecture.md0003-implement-oauth2-authentication.md| Format | Example | Use Case |
|---|---|---|
| 4-digit | 0001, 0042 |
Default, supports 9999 ADRs |
| 3-digit | 001, 042 |
Smaller projects |
| Date-based | 20250115 |
Chronological emphasis |
Standard structure:
docs/adr/
āāā README.md # Index and guidelines
āāā 0001-first-adr.md
āāā 0002-second-adr.md
āāā templates/ # Optional: custom templates
For large projects, consider module-level ADRs:
src/
āāā module-a/
ā āāā docs/adr/
āāā module-b/
ā āāā docs/adr/
āāā docs/adr/ # Project-wide ADRs
| Relationship | Meaning |
|---|---|
| supersedes | This ADR replaces ADR-XXX |
| superseded-by | ADR-XXX replaces this one |
| relates-to | Related decision, not a replacement |
| amends | Modifies without fully replacing |
Cross-reference ADRs from:
Read project configuration from .claude/adr.local.md for:
For detailed guidance on specific topics:
references/decision-criteria.md - Comprehensive criteria for ADR-worthy decisionsreferences/review-checklist.md - ADR quality review checklist