---
name: create-adr
description: Create a new Architecture Decision Record. Use when documenting significant technical decisions with context, options, and rationale.
allowed-tools: Read, Glob, Grep, Write, Skill
argument-hint:
[--status proposed|accepted|deprecated|superseded] [--template basic|madr|extended]
---
# Create Architecture Decision Record
Create a new ADR documenting a significant technical decision.
## Process
### 1. Parse Arguments
Extract from user input:
- **Title**: Decision topic (required) - e.g., "Use PostgreSQL for primary database"
- **Status**: `proposed`, `accepted`, `deprecated`, `superseded` (default: `proposed`)
- **Template**: `basic` (Nygard), `madr`, or `extended` (default: `madr`)
### 2. Determine ADR Number
1. Find existing ADRs in the project:
```text
Look in: docs/decisions/, docs/adr/
Pattern: ADR-*.md, [0-9][0-9][0-9][0-9]-*.md
```
2. Calculate next number:
- If no ADRs exist, start at 001
- Otherwise, increment highest existing number
### 3. Gather Context
If context is not provided, prompt for or infer:
1. **Problem Statement**: What issue motivated this decision?
2. **Constraints**: What limitations affect the decision?
3. **Options Considered**: What alternatives exist?
4. **Decision Drivers**: What factors are most important?
### 4. Load Skill and Generate
1. Load the `enterprise-architecture:adr-management` skill for templates and guidance
2. Select template based on `template` argument
3. Generate ADR content with:
- Proper frontmatter/header
- All required sections
- Placeholder guidance for sections needing human input
### 5. Create File
Determine file location based on project conventions:
```text
Priority order:
1. docs/decisions/ADR-{number}-{slug}.md (if docs/decisions/ exists)
2. docs/adr/ADR-{number}-{slug}.md (if docs/adr/ exists)
4. docs/decisions/ADR-{number}-{slug}.md (create directory)
```
Slug format: lowercase, hyphens, from title
Example: "Use PostgreSQL" → `ADR-001-use-postgresql.md`
### 6. Update Index
If an ADR index/registry exists, add entry:
- Add to ADR-INDEX.md or README.md in decisions folder
- Include: number, title, status, date
## Output Content
### Basic Template (Nygard)
```markdown
# ADR-{NUMBER}: {TITLE}
## Status
{STATUS}
## Context
[What is the issue that we're seeing that is motivating this decision?]
## Decision
[What is the change that we're proposing and/or doing?]
## Consequences
[What becomes easier or more difficult to do because of this change?]
```
### MADR Template
```markdown
# ADR-{NUMBER}: {TITLE}
## Status
{STATUS}
Date: {YYYY-MM-DD}
## Context and Problem Statement
[Describe the context and problem statement]
## Decision Drivers
* [Driver 1]
* [Driver 2]
## Considered Options
1. [Option 1]
2. [Option 2]
3. [Option 3]
## Decision Outcome
**Chosen option:** "[Option X]", because [justification].
### Consequences
**Good:**
* [Positive consequence]
**Bad:**
* [Negative consequence]
## Pros and Cons of Options
### [Option 1]
* Good, because [argument]
* Bad, because [argument]
### [Option 2]
* Good, because [argument]
* Bad, because [argument]
```
### Extended Template
Include additional sections:
- Executive Summary
- Constraints and Assumptions
- Trade-offs table
- Implementation action items
- Validation criteria
- Related decisions
- References
## Example Invocations
```text
/create-adr "Use PostgreSQL for primary database"
→ Creates ADR-XXX-use-postgresql.md with MADR template, status=proposed
/create-adr "Switch to event sourcing" status=accepted template=extended
→ Creates ADR-XXX-switch-to-event-sourcing.md with extended template
/create-adr "Deprecate REST API v1" status=deprecated
→ Creates ADR-XXX-deprecate-rest-api-v1.md marking v1 as deprecated
```
## Post-Creation Guidance
After creating the ADR, remind user to:
1. **Fill in placeholders** marked with `[brackets]`
2. **Add specific options** with pros/cons
3. **Document the actual decision** once made
4. **Link related ADRs** if applicable
5. **Update status** when decision is finalized
6. **Get review** from stakeholders
## Quality Criteria
Generated ADR must:
- [ ] Have unique, sequential number
- [ ] Follow project's ADR location conventions
- [ ] Include all required sections for template type
- [ ] Have clear placeholder guidance
- [ ] Be linked from ADR index (if exists)
- [ ] Use consistent date format (ISO 8601)