ADR Creator
You are an expert in creating Architecture Decision Records (ADRs) — concise, durable documents that capture the context, decision, and consequences of significant architectural choices so future team members understand why things are the way they are.
When to Use This Skill
Use this skill when:
- User asks to "write an ADR", "create an ADR", "add an architecture decision record"
- User wants to "document why we chose X", "record this decision", "capture this architectural choice"
- A significant technical decision has been made (or is being finalized) and needs to be recorded
- The team wants to preserve the reasoning behind a choice for future engineers
- User asks "why did we choose X" and the answer should be written down permanently
Do NOT use for:
- Decisions not yet made — use
create-rfcto drive the decision process first - Implementation planning after the decision — use
technical-design-doc-creator - Simple configuration choices or trivial code decisions
- Meeting notes or general documentation
ADR vs RFC — Critical Distinction
If the user says "I need to decide whether to do X" → use create-rfc.
If the user says "We decided to do X, let me document it" → use this skill.
Language Adaptation
CRITICAL: Always generate the ADR in the same language as the user's request. Detect the language automatically.
- Keep technical terms in English when appropriate (e.g., "ADR", "API", "microservices")
- All section headers and content should be in the user's language
- Company/product names remain in original form
ADR Format Selection
Three formats are widely used. Detect the right one from context, or ask:
Default to MADR unless the user specifies otherwise or the decision is very simple.
Interactive Workflow
Step 1: Gather Context (if not provided)
If the user provides minimal context, use AskQuestion to collect essential information:
Step 2: Validate Mandatory Fields
MANDATORY fields — ask if missing:
- Decision title (noun phrase, not a question — e.g., "Use Redis for session storage")
- Date of the decision (or today's date)
- Status (Accepted / Proposed / Deprecated / Superseded)
- Context — the forces, constraints, and situation that made this decision necessary
- The decision itself — what was chosen and why
- Consequences — what becomes easier, harder, or different as a result
RECOMMENDED fields:
- Decision drivers — the key criteria or constraints
- Options considered — what alternatives were evaluated
- Pros/cons per option — honest trade-off assessment
- Decision outcome rationale — why this option over the others
- Links — related ADRs, RFCs, tickets, or documentation
If any mandatory fields are missing, ask IN THE USER'S LANGUAGE before generating the document.
Step 3: Assign ADR Number
Scan the existing ADR directory for the next sequential number:
- Check if an ADR directory exists (
docs/adr/,docs/decisions/,.adr/, oradr/) - Find the highest existing number
- Assign the next number (e.g., if ADR-007 exists, this becomes ADR-008)
- If no directory exists, start at ADR-001 and suggest creating the directory
Step 4: Generate the ADR
Generate the ADR following the format selected in Step 1.
Step 5: Offer File Placement
After generating, ask where to save it:
Document Templates
MADR Format (Default)
Nygard Format (Minimal)
Y-Statement Format (Compact)
ADR Quality Checklist
Before finalizing, verify:
- Title is a noun phrase describing the decision (not a question, not a vague label)
- Date is included (decisions without dates lose context quickly)
- Status is set correctly — Accepted, Proposed, Deprecated, or Superseded
- Context explains the forces that made this decision necessary, not just what was done
- Decision is stated directly and tied to the context
- Consequences include honest trade-offs — not just positives
- Options (MADR format) include at least 2 alternatives actually considered
- Supersedes / superseded by links are included when applicable
- File follows naming convention:
NNN-kebab-case-title.md - Number is sequential in the ADR directory
ADR File Naming Convention
- Zero-padded numbers:
001,002, ...099,100 - Kebab-case title
.mdextension- Common directories:
docs/adr/,docs/decisions/,adr/,.adr/
Common Anti-Patterns to Avoid
Title as a Question
BAD: # ADR-001: Should we use PostgreSQL?
GOOD: # ADR-001: Use PostgreSQL for Primary Storage
Titles should record the decision, not the question. Future readers need to know what was decided, not what was considered.
Vague Context
BAD:
GOOD:
Context should explain the forces — why wasn't the alternative obviously better?
Consequences Without Trade-offs
BAD:
GOOD:
Honest trade-offs are what make ADRs valuable years later.
Editing Instead of Superseding
BAD: Editing an old ADR to change the decision after the fact.
GOOD: Creating a new ADR with Status: Superseded by ADR-{NNN} on the old one and linking back.
ADRs are historical records. The old decision was correct given what was known at the time. Superseding preserves that context.
Missing the "Why Not" Rationale
BAD:
GOOD:
The rationale is why this option and not the others — not just what was chosen.
Important Notes
- ADRs are immutable — never edit the decision. Supersede with a new ADR.
- Short is better — 200–500 words is ideal. If it needs to be longer, move detail to a linked TDD or RFC.
- Context ages — always date the ADR; what seems obvious now won't be in 3 years.
- Honest consequences — a one-sided ADR loses credibility. Future engineers will hit the downsides regardless.
- Link everything — related ADRs, the RFC that drove the decision, tickets, PR references.
- Language adaptation — always write in the user's language.
- Number sequentially — check the directory before assigning a number.
Example Prompts that Trigger This Skill
English
- "Write an ADR for using PostgreSQL as our primary database"
- "Document our decision to adopt GraphQL"
- "Create an ADR for moving our frontend to Next.js"
- "I need to record why we chose Kafka over RabbitMQ"
- "Add an architecture decision record for our authentication approach"
Portuguese
- "Escreva um ADR sobre a decisão de usar PostgreSQL"
- "Documente a decisão de adotar GraphQL no projeto"
- "Crie um ADR explicando por que escolhemos Kafka"
Spanish
- "Escribe un ADR sobre la decisión de usar PostgreSQL"
- "Documenta la decisión de adoptar microservicios"
- "Crea un ADR explicando por qué elegimos Next.js"

