architecture-decision-record skill produces a single, permanent Architecture Decision Record that captures why a significant technical choice was made, what alternatives were evaluated and rejected, and what the known consequences are. ADRs are immutable by design — once accepted, they are never edited, only superseded by a new ADR. This skill can be invoked at any point in the engineering lifecycle, not just during scheduled phases.
At a glance
Best for
Significant architectural choices
Any choice of language, framework, database, pattern, library, or protocol that a future engineer would need to understand the reasoning behind.
Hard-to-reverse decisions
Decisions that will affect multiple teams or services, or that will be expensive to reverse once implementation has begun.
Outcome of technical debates
Capturing the outcome of a design review, architecture discussion, or consensus process — including minority positions and the tie-breaking reasoning.
Historical system record
Building a permanent, searchable record of why the system is structured the way it is — so engineers who join later can reconstruct reasoning without asking anyone.
When to write an ADR
Write an ADR for any decision that:- Is significant enough that you would regret not having documented it in 2 years
- Affects multiple components, teams, or services
- Will be difficult or expensive to reverse
- Requires understanding the “why” to maintain the system correctly
How to invoke it
Example scenarios
- “Document our decision to use Redis for session storage instead of database-backed sessions”
- “Write an ADR for choosing PostgreSQL over MongoDB for our primary data store”
- “Record the decision to adopt the Repository pattern for all database access”
- “Document why we chose JWT over opaque tokens for our API authentication”
Key concepts
The immutability principle
ADRs are append-only. This is not a convention — it is the core design principle:
The history of changed minds is as valuable as the decisions themselves. Silent reversals — changing behavior without a new ADR — are the most destructive form of organizational knowledge loss.
ADR lifecycle
- Proposed — Under discussion. May still change.
- Accepted — Binding. Implementation should follow this decision.
- Deprecated — The decision is outdated but not actively reversed.
- Superseded — A newer ADR (referenced) replaces this one.
MADR format
This skill uses a variant of the MADR (Markdown Architectural Decision Records) format — the most widely adopted standard for Git-based ADR workflows. The output is a single Markdown file stored indocs/adr/ with a zero-padded sequential number: ADR-0001-use-postgresql-as-primary-database.md.
What qualifies as ADR-worthy
ADR numbering
- Sequential, zero-padded:
ADR-0001,ADR-0002, etc. for consistent sorting - No gaps: Never skip numbers, even for a rejected or abandoned ADR
- No reuse: Once assigned, a number is never reused — it is a permanent identifier
- Monorepo: Prefix with domain:
ADR-API-0001,ADR-INFRA-0001. Each domain maintains its own sequence - Multi-repo: Each repo has its own independent sequence. Cross-repo references use:
service-a/ADR-0003
Consensus failure handling
When the team cannot reach consensus:- Document all positions — record each advocated approach with its proponent’s reasoning; do not discard minority opinions
- Identify the decision-maker — who has the authority to break the tie (tech lead, architect, CTO); make it explicit
- Set a deadline — consensus-seeking without a deadline is infinite debate
- Record the override — if the decision-maker overrides majority opinion, document it as an explicit override with reasoning to prevent re-litigation
- Post-decision commitment — once decided, all team members implement it faithfully regardless of prior position
Decision revisit mechanism
ADRs are not permanent edicts. The skill supports:- Scheduled review — for high-impact decisions, a review date can be set in the ADR
- Trigger conditions — events that should prompt a revisit (e.g., “if the chosen library’s GitHub activity drops below X commits/month”)
- No silent reversals — a decision is never reversed without a new ADR, even if everyone agrees the original was wrong
Interview process
1
Context loading
Reads all existing
.engineering-docs/ files and the existing docs/adr/ directory to determine the next sequential ADR number and understand the current architectural context.2
Socratic clarification (max 2–3 questions)
Asks: (1) What other options did you explore (at least 2), and why were they rejected? (2) What are the negative consequences (technical debt, overhead, limits) of accepting this decision? Questions are tool calls with multiple-choice options.
3
Document generation
Assigns the next ADR number, fills out every section with precision — especially Alternatives Considered — and stores the file in
docs/adr/ADR-NNN-[decision-slug].md.4
Review and acceptance
Gets review from at least one other senior engineer. Status changes from
Proposed to Accepted only after review sign-off.5
Log update
Updates the ADR log table in
7-system-architecture.md if a System Architecture Document exists for this project.Output structure
An example ADR produced by this skill:Handoff
Reads from:4-technical-specification.md— requirements and constraints that inform the decision context7-system-architecture.md— existing architectural context and prior ADR log
8-database-design-document.md— data model decisions influenced by this ADR9-api-design-document.md— API design choices informed by this ADR14-technical-blueprint.md— implementation decisions referencing this ADR15-implementation-plan.md— build sequencing informed by this ADR7-system-architecture.md— ADR log summary table updated
Quality gate
Before changing status fromProposed to Accepted, verify:
- The Context section describes the problem without advocating for the chosen solution — a reader understands the problem space without any prior knowledge
- At least two alternatives are documented with specific, evidence-based rejection reasons (not “too complex” without evidence)
- Both positive and negative consequences are listed honestly, including new risks introduced
- The Decision section is specific enough that an engineer can implement it without follow-up questions
- At least one other senior engineer has reviewed and approved before status changes to
Accepted
