adr-documentation
Standardizes the documentation of architectural decisions to maintain project context and history.
Install
mkdir -p .claude/skills/adr-documentation && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/6220" && unzip -o skill.zip -d .claude/skills/adr-documentation && rm skill.zipInstalls to .claude/skills/adr-documentation
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Architecture Decision Records (ADR) documentation practice. Use when documenting architectural decisions, recording technical trade-offs, creating decision logs, or establishing architectural patterns. Trigger keywords - "ADR", "architecture decision", "decision record", "trade-offs", "architectural decision", "decision log".Key capabilities
- →Captures context, trade-offs, and rationale for architectural decisions
- →Standardizes the creation of decision logs and records
- →Facilitates the superseding of outdated architectural patterns
- →Documents rejected alternatives for future team context
- →Maintains historical records for onboarding and system evolution
How it works
It provides a documentation framework that mandates recording the context, the decision made, the alternatives considered, and the resulting consequences in an immutable record.
Inputs & outputs
When to use adr-documentation
- →Documenting architectural choices
- →Recording technical trade-offs
- →Creating decision logs for teams
- →Establishing shared design patterns
About this skill
ADR Documentation
Overview
What are ADRs?
Architecture Decision Records (ADRs) are lightweight documents that capture important architectural decisions along with their context and consequences. They serve as a historical record of why certain choices were made, helping teams avoid revisiting settled debates and providing context for future developers.
Key characteristics:
- Immutable: Once accepted, ADRs are rarely modified (supersede instead)
- Context-rich: Capture the environment and constraints at decision time
- Outcome-focused: Document what was decided and why
- Alternative-aware: Show what options were considered and rejected
Why Document Decisions?
Context Preservation:
- Future team members understand why things are the way they are
- Avoid "we've always done it this way" without knowing the reason
- Preserve institutional knowledge across team changes
Onboarding:
- New developers can read ADR history to understand system evolution
- Reduces repetitive explanations of architectural choices
- Provides learning path through project decisions
Avoiding Repeat Mistakes:
- Document why certain approaches were rejected
- Prevent re-proposing failed solutions
- Learn from past trade-offs
Alignment:
- Create shared understanding across team
- Resolve disagreements with documented rationale
- Enable asynchronous decision-making
When to Write an ADR
Write an ADR when:
- Significant architectural choices: Microservices vs monolith, event-driven vs request/response
- Technology selections: Database choice, framework adoption, language decisions
- Pattern decisions: State management approach, authentication strategy, error handling patterns
- Breaking changes: API redesigns, data model changes, migration strategies
- Performance-critical decisions: Caching strategies, optimization approaches, scalability patterns
- Security-related choices: Authentication methods, encryption strategies, access control models
- Infrastructure decisions: Deployment strategy, hosting platform, CI/CD approach
- Dependency selections: Major library choices, third-party service integrations
Don't write an ADR for:
- Minor implementation details
- Temporary workarounds
- Personal coding style preferences
- Reversible low-impact choices
ADR Structure
Standard Format
# ADR-XXXX: [Short Title]
## Status
[Proposed | Accepted | Deprecated | Superseded by ADR-YYYY]
## Date
YYYY-MM-DD
## Context
[Problem statement and environment]
## Decision
[What was decided]
## Consequences
[What results from this decision]
## Alternatives Considered
[Other options evaluated]
## Related ADRs
[Links to related decisions]
## References
[External links and documentation]
Section Guidelines
Title:
- Format:
ADR-XXXX: Short Decision Title - Be specific: "ADR-0012: Use PostgreSQL for Primary Database"
- Not generic: "ADR-0012: Database Choice"
Status:
- Proposed: Under discussion, not yet accepted
- Accepted: Decision is final and being implemented
- Deprecated: No longer recommended but not replaced
- Superseded by ADR-YYYY: Replaced by a newer decision
Date:
- Use ISO format: YYYY-MM-DD
- Date of status change, not original proposal
Context:
- Describe the forces at play
- Technical constraints
- Business requirements
- Team capabilities
- Timeline pressures
- Budget considerations
- Example: "We need to store structured data with complex relationships. Team has limited database expertise. Must support 100k+ users within 6 months."
Decision:
- State clearly what was decided
- Include scope and boundaries
- Specify what is NOT included
- Example: "We will use PostgreSQL as our primary database for all structured data. NoSQL solutions may be used for specific use cases (caching, session storage) but PostgreSQL is the default."
Consequences:
- Positive: What benefits we gain
- Negative: What drawbacks we accept
- Neutral: What trade-offs we're making
Example:
### Positive
- Strong ACID guarantees for transactions
- Rich query capabilities with SQL
- Mature ecosystem and tooling
### Negative
- Requires careful index management for performance
- Scaling horizontally is more complex than NoSQL
- Team needs PostgreSQL training
### Neutral
- Need to establish backup/restore procedures
- Must define connection pooling strategy
Alternatives Considered:
- List 2-4 alternatives seriously evaluated
- For each: Pros, Cons, Why rejected
- Be fair to alternatives (avoid strawman arguments)
Related ADRs:
- Link to decisions that influenced this one
- Link to decisions this one influences
- Create a decision graph over time
References:
- Documentation links
- Blog posts or articles that influenced decision
- Benchmark results
- Proof of concepts
ADR Numbering and Naming
Sequential Numbering
Use zero-padded sequential numbers:
ADR-0001,ADR-0002, ...,ADR-0010, ...,ADR-0100- Four digits handles up to 9,999 ADRs (enough for most projects)
- Don't skip numbers when superseding (new ADR gets next number)
File Naming
Format: ADR-XXXX-short-title.md
Examples:
ADR-0001-use-postgresql-database.mdADR-0002-adopt-react-19-frontend.mdADR-0003-implement-jwt-authentication.md
Naming guidelines:
- Use lowercase
- Use hyphens (not underscores or spaces)
- Keep title short but descriptive
- Include key technology/pattern name
Location
Recommended locations:
- Option 1:
ai-docs/decisions/(alongside other AI-focused docs) - Option 2:
docs/adr/(standard documentation location) - Option 3: Root
adr/directory (if ADRs are primary docs)
Choose consistently across project.
For Claude Code plugins:
- Use
ai-docs/decisions/to co-locate with CLAUDE.md and other AI docs - Makes ADRs easily discoverable by Claude
When to Write an ADR
Technology Adoption
Write an ADR when:
- Adopting a new framework or major library
- Choosing between competing technologies
- Upgrading to a new major version with breaking changes
Examples:
- ADR-0015: Migrate from Webpack to Vite
- ADR-0023: Adopt TypeScript for Backend Services
- ADR-0031: Use Bun Runtime Instead of Node.js
Architectural Pattern Selection
Write an ADR when:
- Choosing architectural style (monolith, microservices, serverless)
- Selecting state management approach
- Defining API design patterns
- Establishing error handling strategies
Examples:
- ADR-0008: Use Event-Driven Architecture for Order Processing
- ADR-0012: Implement Repository Pattern for Data Access
- ADR-0019: Adopt REST over GraphQL for Public API
Breaking Changes
Write an ADR when:
- Making changes that break backward compatibility
- Migrating data models
- Redesigning core APIs
- Changing authentication mechanisms
Examples:
- ADR-0025: Remove Legacy API v1 Endpoints
- ADR-0033: Migrate from Sessions to JWT Tokens
- ADR-0041: Change User ID from Integer to UUID
Performance-Critical Decisions
Write an ADR when:
- Implementing caching strategies
- Making database optimization choices
- Selecting algorithms for hot paths
- Deciding on async vs sync processing
Examples:
- ADR-0017: Implement Redis for Session Caching
- ADR-0022: Use WebSockets for Real-Time Updates
- ADR-0028: Adopt Background Job Queue for Heavy Processing
Security-Related Choices
Write an ADR when:
- Choosing authentication methods
- Implementing authorization strategies
- Selecting encryption approaches
- Defining security policies
Examples:
- ADR-0010: Use OAuth 2.0 with PKCE for Mobile Auth
- ADR-0014: Implement Row-Level Security in PostgreSQL
- ADR-0020: Adopt OWASP Guidelines for API Security
ADR Lifecycle
Proposal Phase
Creating a Proposal:
- Draft ADR with status "Proposed"
- Share with team for feedback
- Discuss in team meeting or async comments
- Iterate on Context and Alternatives sections
Review Process:
- Ensure all alternatives are fairly represented
- Verify consequences are realistic
- Check that context captures current constraints
- Validate decision aligns with project goals
Acceptance
When to Accept:
- Team consensus reached (or decision maker approves)
- Decision is being implemented
- No major unresolved concerns
Accepting an ADR:
- Change status to "Accepted"
- Update date to acceptance date
- Commit to repository
- Communicate to team
Post-Acceptance:
- ADR becomes immutable (don't edit decision or alternatives)
- May add notes or references sections if new info emerges
- Use comments to clarify, don't rewrite history
Deprecation Process
When to Deprecate:
- Decision is no longer recommended but not replaced
- Technology or pattern is obsolete
- Security vulnerability makes approach unsafe
Deprecating an ADR:
- Change status to "Deprecated"
- Add "Deprecation Note" section explaining why
- Update date to deprecation date
- Don't remove ADR from repository
Example deprecation note:
## Deprecation Note (2026-01-15)
This decision has been deprecated due to security vulnerabilities
discovered in the XYZ library. See ADR-0045 for the replacement
approach using the ABC library.
Superseding Old ADRs
When to Supersede:
- Making a decision that replaces an old one
- Reversing a previous decision
- Evolving a decision with significant changes
Superseding Process:
- Create new ADR with next sequential number
- Reference old ADR in "Context" section
- Update old ADR status to "Superseded by ADR-XXXX"
- Explain why old decision is being replaced
Example: Old ADR-0012:
## Status
Superseded by ADR-0034
New ADR-0034:
## Context
ADR-0012 chose MongoDB for our primary database. After 2 years
of production use, we've encountered scaling issues with our
relational data model. This ADR supersedes
---
*Content truncated.*
When not to use it
- →For documenting daily task updates or ephemeral PR comments
- →For trivial implementation choices that do not affect system architecture
Limitations
- →ADRs are difficult to maintain as the only source of truth
- →Does not verify whether the implementation actually adheres to the ADR
- →Requires team buy-in to be effective
How it compares
It replaces informal design discussions with a formal, persistent record, ensuring the 'why' is preserved alongside the 'what'.
Compared to similar skills
adr-documentation side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| adr-documentation (this skill) | 1 | 6mo | No flags | Beginner |
| architecture-decision-records | 54 | 5mo | Review | Beginner |
| wiki-architect | 11 | 3mo | No flags | Advanced |
| smart-docs | 4 | 9mo | Review | Intermediate |
Try saying
Example prompts that trigger this skill in your AI assistant.
More by MadAppGang
View all by MadAppGang →You might also like
architecture-decision-records
wshobson
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.
wiki-architect
microsoft
Analyzes code repositories and generates hierarchical documentation structures with onboarding guides. Use when the user wants to create a wiki, generate documentation, map a codebase structure, or understand a project's architecture at a high level.
smart-docs
sopaco
AI-powered comprehensive codebase documentation generator. Analyzes project structure, identifies architecture patterns, creates C4 model diagrams, and generates professional technical documentation. Use when users need to document codebases, understand software architecture, create technical specs, or generate developer guides. Supports all programming languages. Alternative to Litho/deepwiki-rs that uses Claude Code subscription without external API costs.
codebase-documenter
mhattingpete
Generates comprehensive documentation explaining how a codebase works, including architecture, key components, data flow, and development guidelines. Use when user wants to understand unfamiliar code, create onboarding docs, document architecture, or explain how the system works.
c4-architecture-c4-architecture
sickn33
Generate comprehensive C4 architecture documentation for an existing repository/codebase using a bottom-up analysis approach.
dagger-design-proposals
dagger
Write design proposals for Dagger features. Use when asked to draft, review, or iterate on Dagger design documents, RFCs, or proposals.