Create Architectural Decision Record (ADR)
Creates structured ADRs following the framework's template.
Process
1. Gather Context
Ask if needed:
- What decision is being made?
- What problem does it solve?
- What alternatives were considered?
- What are the trade-offs?
2. Generate ADR Number
# Find highest ADR number
ls .architecture/decisions/adrs/ | grep -E "^ADR-[0-9]+" | sed 's/ADR-//' | sed 's/-.*//' | sort -n | tail -1
New ADR = next sequential number (e.g., if highest is 003, create 004)
3. Validate and Sanitize Input
Security: Sanitize user input to prevent path traversal and injection:
- Remove or replace:
.., /, \, null bytes, control characters
- Convert to lowercase kebab-case: spaces → hyphens, remove special chars
- Limit length: max 80 characters for filename portion
- Validate result: ensure filename contains only [a-z0-9-]
4. Create Filename
Format: ADR-XXX-kebab-case-title.md
Examples:
ADR-001-use-react-for-frontend.md
ADR-002-choose-postgresql-database.md
Valid input: "Use React for Frontend" → use-react-for-frontend
Invalid blocked: "../etc/passwd" → sanitized or rejected
5. Check Configuration
- Read
.architecture/config.yml to check if pragmatic_mode is enabled
- If enabled and applies to ADR creation, include Pragmatic Enforcer analysis
6. Write ADR
Use the template from .architecture/templates/adr-template.md:
Core sections:
- Status, Context, Decision Drivers, Decision, Consequences
- Implementation, Alternatives Considered, Validation, References
If pragmatic_mode is enabled: Add Pragmatic Enforcer Analysis section:
- Necessity Assessment (0-10): Current need, future need, cost of waiting, evidence
- Complexity Assessment (0-10): Added complexity, maintenance, learning curve, dependencies
- Alternative Analysis: Review if simpler alternatives adequately considered
- Simpler Alternative Proposal: Concrete proposal for simpler approach
- Recommendation: Approve / Approve with simplifications / Defer / Recommend against
- Pragmatic Score: Necessity, Complexity, Ratio (target <1.5)
- Overall Assessment: Appropriate engineering vs over-engineering
If deferrals enabled: Track deferred decisions in .architecture/deferrals.md
7. Save ADR
Write to: .architecture/decisions/adrs/ADR-XXX-title.md
8. Report to User
Created ADR-XXX: [Title]
Location: .architecture/decisions/adrs/ADR-XXX-title.md
Status: [Status]
Key Points:
- Decision: [Summary]
- Main benefit: [Key benefit]
- Main trade-off: [Key trade-off]
Next Steps:
- [Immediate action 1]
- [Immediate action 2]
When to Create ADRs
Do create for:
- Technology choices (frameworks, databases, languages)
- Architectural patterns (microservices, event-driven, etc.)
- Infrastructure decisions (cloud provider, deployment)
- Security approaches (authentication, encryption)
Don't create for:
- Implementation details (function names, variable names)
- Temporary decisions
- Minor decisions with limited impact
Status Lifecycle
- Proposed: Documented but not approved
- Accepted: Approved and should be implemented
- Deprecated: No longer best practice
- Superseded: Replaced by newer ADR (reference it)
Related Skills
Before Creating ADR:
- "What's our architecture status?" - Check existing ADRs to avoid duplication
- "List architecture members" - See who should review the decision
After Creating ADR:
- "Ask [specialist] to review [the ADR]" - Get focused expert review
- "Start architecture review for [version]" - Include in comprehensive review
Workflow Examples:
- Create ADR → Ask Security Specialist to review → Revise ADR
- Architecture review → Create ADRs for key decisions → Status check
Notes
- Focus on "why" more than "what"
- Be honest about trade-offs
- Keep it concise but complete
- ADRs can be updated as new information emerges
1---2name: create-adr3description: Creates a NEW Architectural Decision Record (ADR) documenting a specific architectural decision. Use when the user requests "Create ADR for [topic]", "Document decision about [topic]", "Write ADR for [choice]", or when documenting technology choices, patterns, or architectural approaches. Do NOT use for reviews (use architecture-review or specialist-review), checking existing ADRs (use architecture-status), or general documentation.4---56# Create Architectural Decision Record (ADR)78Creates structured ADRs following the framework's template.910## Process1112### 1. Gather Context13Ask if needed:14- What decision is being made?15- What problem does it solve?16- What alternatives were considered?17- What are the trade-offs?1819### 2. Generate ADR Number20```bash21# Find highest ADR number22ls .architecture/decisions/adrs/ | grep -E "^ADR-[0-9]+" | sed 's/ADR-//' | sed 's/-.*//' | sort -n | tail -123```24New ADR = next sequential number (e.g., if highest is 003, create 004)2526### 3. Validate and Sanitize Input27**Security**: Sanitize user input to prevent path traversal and injection:28- Remove or replace: `..`, `/`, `\`, null bytes, control characters29- Convert to lowercase kebab-case: spaces → hyphens, remove special chars30- Limit length: max 80 characters for filename portion31- Validate result: ensure filename contains only [a-z0-9-]3233### 4. Create Filename34Format: `ADR-XXX-kebab-case-title.md`3536Examples:37- `ADR-001-use-react-for-frontend.md`38- `ADR-002-choose-postgresql-database.md`3940**Valid input**: "Use React for Frontend" → `use-react-for-frontend`41**Invalid blocked**: "../etc/passwd" → sanitized or rejected4243### 5. Check Configuration44- Read `.architecture/config.yml` to check if pragmatic_mode is enabled45- If enabled and applies to ADR creation, include Pragmatic Enforcer analysis4647### 6. Write ADR48Use the template from `.architecture/templates/adr-template.md`:4950**Core sections**:51- Status, Context, Decision Drivers, Decision, Consequences52- Implementation, Alternatives Considered, Validation, References5354**If pragmatic_mode is enabled**: Add Pragmatic Enforcer Analysis section:55- Necessity Assessment (0-10): Current need, future need, cost of waiting, evidence56- Complexity Assessment (0-10): Added complexity, maintenance, learning curve, dependencies57- Alternative Analysis: Review if simpler alternatives adequately considered58- Simpler Alternative Proposal: Concrete proposal for simpler approach59- Recommendation: Approve / Approve with simplifications / Defer / Recommend against60- Pragmatic Score: Necessity, Complexity, Ratio (target <1.5)61- Overall Assessment: Appropriate engineering vs over-engineering6263**If deferrals enabled**: Track deferred decisions in `.architecture/deferrals.md`6465### 7. Save ADR66Write to: `.architecture/decisions/adrs/ADR-XXX-title.md`6768### 8. Report to User69```70Created ADR-XXX: [Title]7172Location: .architecture/decisions/adrs/ADR-XXX-title.md73Status: [Status]7475Key Points:76- Decision: [Summary]77- Main benefit: [Key benefit]78- Main trade-off: [Key trade-off]7980Next Steps:81- [Immediate action 1]82- [Immediate action 2]83```8485## When to Create ADRs86**Do create for**:87- Technology choices (frameworks, databases, languages)88- Architectural patterns (microservices, event-driven, etc.)89- Infrastructure decisions (cloud provider, deployment)90- Security approaches (authentication, encryption)9192**Don't create for**:93- Implementation details (function names, variable names)94- Temporary decisions95- Minor decisions with limited impact9697## Status Lifecycle98- **Proposed**: Documented but not approved99- **Accepted**: Approved and should be implemented100- **Deprecated**: No longer best practice101- **Superseded**: Replaced by newer ADR (reference it)102103## Related Skills104105**Before Creating ADR**:106- "What's our architecture status?" - Check existing ADRs to avoid duplication107- "List architecture members" - See who should review the decision108109**After Creating ADR**:110- "Ask [specialist] to review [the ADR]" - Get focused expert review111- "Start architecture review for [version]" - Include in comprehensive review112113**Workflow Examples**:1141. Create ADR → Ask Security Specialist to review → Revise ADR1152. Architecture review → Create ADRs for key decisions → Status check116117## Notes118- Focus on "why" more than "what"119- Be honest about trade-offs120- Keep it concise but complete121- ADRs can be updated as new information emerges