From speckit-generator
Authors Architecture Decision Records (ADRs) using MADR templates at lightweight, standard, and full levels to document context, options, drivers, and consequences of technical decisions.
npx claudepluginhub ddunnock/claude-plugins --plugin speckit-generatorThis skill uses the workspace's default tool permissions.
Write clear, useful ADRs that capture the context, options, and rationale behind technical decisions. Good ADRs prevent re-litigation of decisions and help new team members understand the codebase.
Generates Architecture Decision Records (ADRs) in Nygard format for technical decisions, including context, options with pros/cons, rationale, consequences, and tradeoffs.
Creates Architecture Decision Records (ADRs) in Nygard format to document significant technical decisions, context, and consequences. Use for system architecture, technology selection, or development patterns.
Generates Architecture Decision Records (ADRs) capturing context, rationale, alternatives, and consequences in numbered status-tracked Markdown format. Useful for documenting architectural decisions with lifecycle management.
Share bugs, ideas, or general feedback.
Write clear, useful ADRs that capture the context, options, and rationale behind technical decisions. Good ADRs prevent re-litigation of decisions and help new team members understand the codebase.
| Level | When to Use | Required Fields |
|---|---|---|
| Lightweight | Quick decisions, low impact | Status, Context, Decision, Consequences |
| Standard | Most architectural decisions | + Date, Decision-makers, Drivers, Options |
| Full | Critical/reversible decisions | + Confirmation, Traceability |
proposed → accepted → [deprecated → superseded]
↘ rejected
For quick decisions with limited impact:
### ADR-XXX: [Short Title]
**Status**: proposed | accepted | rejected | deprecated | superseded
**Context and Problem Statement**
[2-3 sentences describing the situation and what needs to be decided]
**Decision Outcome**
Chosen option: "[Option name]"
[1-2 sentences explaining why]
**Consequences**
- Good: [positive outcomes]
- Bad: [negative outcomes or trade-offs]
For most architectural decisions:
### ADR-XXX: [Short Title]
**Status**: proposed | accepted | rejected | deprecated | superseded
**Date**: YYYY-MM-DD
**Decision-makers**: [names or roles]
**Context and Problem Statement**
[2-3 sentences describing the situation requiring a decision.
What is the issue? Why does it need to be addressed now?]
**Decision Drivers**
- [Driver 1: e.g., "Need to support 10x current load"]
- [Driver 2: e.g., "Team has no experience with technology X"]
- [Driver 3: e.g., "Budget constraint of $X/month"]
**Considered Options**
1. [Option 1 name]
2. [Option 2 name]
3. [Option 3 name]
**Decision Outcome**
Chosen option: "[Option N]" because [1-2 sentence rationale linking to drivers].
**Consequences**
- Good: [positive outcome 1]
- Good: [positive outcome 2]
- Bad: [trade-off or negative outcome]
- Neutral: [side effect that's neither good nor bad]
For critical decisions requiring traceability:
### ADR-XXX: [Short Title]
**Status**: proposed | accepted | rejected | deprecated | superseded
**Date**: YYYY-MM-DD
**Decision-makers**: [names or roles]
**Context and Problem Statement**
[Detailed context with background information.
Include relevant constraints and dependencies.]
**Decision Drivers**
- [Driver 1 with quantifiable metric if possible]
- [Driver 2]
- [Driver 3]
**Considered Options**
1. **[Option 1 name]**: [Brief description]
2. **[Option 2 name]**: [Brief description]
3. **[Option 3 name]**: [Brief description]
**Pros and Cons of Options**
#### Option 1: [Name]
- Good: [Pro 1]
- Good: [Pro 2]
- Bad: [Con 1]
#### Option 2: [Name]
- Good: [Pro 1]
- Bad: [Con 1]
- Bad: [Con 2]
#### Option 3: [Name]
- Good: [Pro 1]
- Neutral: [Neither good nor bad]
- Bad: [Con 1]
**Decision Outcome**
Chosen option: "[Option N]" because [rationale].
**Consequences**
- Good: [outcome 1]
- Bad: [outcome 2]
**Confirmation**
[How will we verify this decision was correct?]
- [Metric or checkpoint 1]
- [Metric or checkpoint 2]
**Traceability**
- Requirements: REQ-XXX, REQ-YYY
- Tasks: TASK-XXX, TASK-YYY
- Supersedes: ADR-ZZZ (if applicable)
Do:
Don't:
Quantify when possible:
| Vague | Specific |
|---|---|
| "Need better performance" | "Must handle 1000 req/sec" |
| "Team preference" | "3 of 4 developers have React experience" |
| "Cost concerns" | "Budget limit: $500/month" |
Include at least 2 options. Always include:
Be honest about trade-offs:
**Consequences**
- Good: Reduces API latency by 40%
- Good: Team already knows this technology
- Bad: Adds operational complexity (new service to maintain)
- Bad: Vendor lock-in to AWS
- Neutral: Requires migration of existing data (one-time effort)
Use sequential numbering within the project:
ADR-001: Database Selection
ADR-002: Authentication Strategy
ADR-003: API Versioning Approach
For domain-specific ADRs in larger projects:
ADR-AUTH-001: OAuth Provider Selection
ADR-DATA-001: Cache Strategy
ADR-INFRA-001: Container Orchestration
| Situation | ADR Level |
|---|---|
| Choosing a database | Standard or Full |
| Selecting a framework | Standard |
| API design patterns | Standard |
| Deployment strategy | Standard or Full |
| Library selection | Lightweight |
| Code organization | Lightweight |
| Naming conventions | Lightweight (or skip) |
ADRs created during /speckit.plan should:
/speckit.analyze checks ADR completenessFor detailed patterns and examples, see:
references/madr-full-template.md - Complete MADR template with all fieldsreferences/adr-examples.md - Real-world ADR examples