Skip to main content
The 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
Do NOT write an ADR for: routine implementation details, naming conventions (use a style guide), or decisions that will obviously change soon.
The architecture-decision-record skill is invoked ad-hoc — whenever a significant decision is made — not as a sequential step in the pipeline. An ADR written retroactively (after the decision was already implemented) captures rationalization, not honest trade-off analysis. Write it during the decision, not after.

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 in docs/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:
  1. Document all positions — record each advocated approach with its proponent’s reasoning; do not discard minority opinions
  2. Identify the decision-maker — who has the authority to break the tie (tech lead, architect, CTO); make it explicit
  3. Set a deadline — consensus-seeking without a deadline is infinite debate
  4. Record the override — if the decision-maker overrides majority opinion, document it as an explicit override with reasoning to prevent re-litigation
  5. 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 context
  • 7-system-architecture.md — existing architectural context and prior ADR log
Feeds into:
  • 8-database-design-document.md — data model decisions influenced by this ADR
  • 9-api-design-document.md — API design choices informed by this ADR
  • 14-technical-blueprint.md — implementation decisions referencing this ADR
  • 15-implementation-plan.md — build sequencing informed by this ADR
  • 7-system-architecture.md — ADR log summary table updated

Quality gate

Before changing status from Proposed 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