architecture-decision-records
Write and maintain Architecture Decision Records (ADRs) following best practices for technical decision documentation. Use when documenting significant technical decisions, reviewing past architectural choices, or establishing decision processes.
By wshobson · 16,776 installs
npx skills add wshobson/agents --skill architecture-decision-records
Source repository · Upstream listing
Architecture Decision Records
Comprehensive patterns for creating, maintaining, and managing Architecture Decision Records (ADRs) that capture the context and rationale behind significant technical decisions.
When to Use This Skill
Making significant architectural decisions
Documenting technology choices
Recording design trade offs
Onboarding new team members
Reviewing historical decisions
Establishing decision making processes
Core Concepts
1. What is an ADR?
An Architecture Decision Record captures:
Context : Why we needed to make a decision
Decision : What we decided
Consequences : What happens as a result
2. When to Write an ADR
Write ADR Skip ADR
New framework adoption Minor version upgrades
Database technology choice Bug fixes
API design patterns Implementation details
Security architecture Routine maintenance
Integration patterns Configuration changes
3. ADR Lifecycle
Templates
Template 1: Standard ADR (MADR Format)
Template 2: Lightweight ADR
Template 3: Y Statement Format
Template 4: ADR for Deprecation
Template 5: Request for Comments (RFC) Style
OrderCreated { orderId, customerId, items[], timestamp }
OrderItemAdded { orderId, item, timestamp }
OrderItemRemoved { orderId, itemId, timestamp }
PaymentReceived { orderId, amount, paymentId, timestamp }
OrderShipped { orderId, trackingNumber, timestamp }
ADR Management
Directory Structure
ADR Index (README.md)
Automation (adr tools)
Review Process
Best Practices
Do's
Write ADRs early Before implementation starts
Keep them short 1 2 pages maximum
Be honest about trade offs Include real cons
Link related decisions Build decision graph
Update status Deprecate when superseded
Don'ts
Don't change accepted ADRs Write new ones to supersede
Don't skip context Future readers need background
Don't hide failures Rejected decisions are valuable
Don't be vague Specific decisions, specific consequences
Don't forget implementation ADR without action is waste