Create Architecture Decision Records (ADRs) documenting key architectural choices. Analyzes context, evaluates alternatives, and captures decisions using standard ADR template...
Create comprehensive Architecture Decision Records following industry best practices. ADRs document architectural choices, alternatives considered, rationale, and consequences to provide context for future development.
ADR Structure:
Action: Find next available ADR number.
# List existing ADRs
ls -la docs/adrs/ 2>/dev/null || echo "ADR directory does not exist"
# Find highest number
find docs/adrs/ -name "adr-*.md" 2>/dev/null | \
sed 's/.*adr-\([0-9]*\)-.*/\1/' | \
sort -n | \
tail -1
Calculate next number:
Create ADR directory if missing:
mkdir -p docs/adrs
Action: Understand what decision needs to be documented.
Context Types:
1. File/Schema Analysis (like Prisma schema):
# Read the file to analyze
Read(file_path: {context_path})
Analyze to identify:
2. Technology Selection:
3. Pattern Adoption:
Action: Extract architectural decisions from context.
For Schema/File Analysis: Scan for decision indicators:
Example from Prisma Schema:
// Decision indicators:
- PostgreSQL chosen (ADR: Database Selection)
- Prisma ORM (ADR: ORM Selection)
- Multi-tenancy via hotelId (ADR: Multi-Tenancy Strategy)
- Clerk for auth (ADR: Authentication Provider)
- Event sourcing pattern (ADR: Event Processing Architecture)
Prioritize decisions:
Focus on 1-3 most significant decisions per ADR.
Action: Identify alternatives that could have been chosen.
For Technology Decisions:
Database: PostgreSQL
Alternatives:
- MySQL (widely used, simpler)
- MongoDB (NoSQL, flexible schema)
- SQLite (embedded, simple)
For each alternative, identify:
Research sources:
Minimum alternatives: At least 2 (typically 3-4)
Action: Explain why the chosen option was selected.
Rationale factors:
Example rationale:
PostgreSQL chosen over MongoDB because:
1. Data is highly relational (users → hotels → conversations)
2. ACID transactions required for billing
3. Team has strong SQL experience (no MongoDB experience)
4. Scale fits PostgreSQL capabilities (100K users proven)
5. Full-text search built-in (eliminates Elasticsearch)
Make rationale specific and measurable.
Action: Document impacts of the decision.
Consequence Types:
Positive Consequences:
Negative Consequences:
Mitigation Strategies: For each negative consequence, document mitigation:
Negative: PostgreSQL vertical scaling limits
Mitigation: Plan read replica strategy, monitor query performance
Neutral Consequences:
Be honest about tradeoffs - every decision has pros and cons.
Action: Create ADR document using standard template.
ADR Template:
# ADR-{NUMBER}: {Decision Title}
**Date:** {YYYY-MM-DD}
**Status:** Accepted
**Deciders:** {Team/Role}
## Context
{What problem are we solving? What constraints exist?}
{For schema analysis: Describe the schema structure and requirements}
## Decision
We will use **{CHOSEN OPTION}** for {PURPOSE}.
## Alternatives Considered
### Option 1: {Chosen Option}
**Pros:**
- {Advantage 1}
- {Advantage 2}
**Cons:**
- {Disadvantage 1}
- {Disadvantage 2}
### Option 2: {Alternative}
**Pros:**
- {Advantage 1}
**Cons:**
- {Disadvantage 1}
### Option 3: {Alternative}
**Pros:**
- {Advantage 1}
**Cons:**
- {Disadvantage 1}
## Rationale
{Explain why chosen option was selected over alternatives}
{Be specific: "PostgreSQL chosen because data is relational and team has SQL expertise"}
## Consequences
**Positive:**
- {Benefit 1}
- {Benefit 2}
**Negative:**
- {Limitation 1}
- *Mitigation:* {How we'll address this}
**Neutral:**
- {Consideration 1}
## Related Decisions
- ADR-XXX: {Related decision}
## Notes
{Additional context, benchmarks, links, team discussions}
File naming:
docs/adrs/adr-{NUMBER}-{kebab-case-title}.md
Examples:
- docs/adrs/adr-001-database-selection.md
- docs/adrs/adr-002-orm-choice.md
- docs/adrs/adr-003-multi-tenancy-strategy.md
Action: Check ADR completeness and quality.
Quality Checklist:
✅ Context section:
✅ Alternatives (minimum 2):
✅ Rationale:
✅ Consequences:
✅ Writing quality:
If quality checks fail:
Return structured output:
{
"adr_created": true,
"adr_path": "docs/adrs/adr-001-database-selection.md",
"decision_number": 1,
"decision_title": "Database Selection",
"alternatives_count": 3,
"telemetry": {
"skill": "create-adr",
"decision_number": 1,
"context_type": "schema_analysis",
"alternatives_count": 3,
"duration_ms": 12000
}
}
Error: "Context required for ADR creation" Action: Ask user for decision context or file to analyze
Error: "Cannot identify architectural decision from context" Action: Ask user to clarify what decision needs documenting
Error: "At least 2 alternatives required" Action: Research additional options or ask user for alternatives
Input: context: "packages/backend/src/schema.prisma"
Output ADR:
# ADR-001: PostgreSQL Database with Prisma ORM
**Date:** 2025-11-05
**Status:** Accepted
**Deciders:** Backend Team
## Context
Need database for multi-tenant SaaS application managing hotels, conversations, and analytics. Requirements:
- Relational data (hotels → users → conversations → messages)
- ACID transactions (billing, user management)
- Full-text search
- Multi-tenancy via hotelId
- TypeScript integration
## Decision
Use **PostgreSQL** with **Prisma ORM** for database layer.
[... rest of ADR with alternatives, rationale, consequences ...]
Input: context: "Choose state management for React app"
Output ADR:
# ADR-002: State Management Strategy
**Date:** 2025-11-05
**Status:** Accepted
## Context
React application needs client state management for:
- User authentication state
- Global UI state (theme, modals)
- Form state (multi-step wizards)
[... alternatives: Zustand, Redux, Context ...]
From Winston subagent:
/winston *create-adr "packages/backend/src/schema.prisma"
/winston *create-adr "Choose between REST and GraphQL"
Directly:
Use create-adr skill with context: "Analyze authentication strategy in src/auth/"
ADRs are living documentation that:
Good ADRs prevent "why did we do this?" questions 6 months later.
references/adr-examples.md for complete examples