界面已本地化;技能介绍与说明文档按所选语言由 AI 自动翻译,代码、命令、路径和专业术语保留原文,以原作者文档为准。
探索技能
文档与办公 · SKILL.md

architecture-decision-records

architecture-decision-records

【文档与办公】Structured templates and process for capturing Architecture Decision Records (ADRs) — context, decision, consequences, and status. Use when making any significant or irreversible technical decision (framework selection, API design, database schema, infrastructure choice) to ensure every option considered and trade-off made is permanently documented b…

独立 GitHub 快照 · 自动分类 · 以原作者文档为准

技能说明

GitHub

name: architecture-decision-records description: "Structured templates and process for capturing Architecture Decision Records (ADRs) — context, decision, consequences, and status. Use when making any significant or irreversible technical decision (framework selection, API design, database schema, infrastructure choice) to ensure every option considered and trade-off made is permanently documented before implementation begins." allowed-tools: Read metadata: triggers: ADR, architecture decision record, technical decision, document decision, decision log, architectural record related-skills: architecture-design, ddd-architect, plan-mode-review domain: api-architecture role: architect scope: design output-format: document last-reviewed: "2026-03-15"

Iron Law: Every significant technical decision must produce an ADR before implementation begins; never let irreversible decisions proceed without a documented record.

Architecture Decision Records

Capture the context and rationale behind significant technical decisions using structured ADR formats.

When to Use This Skill

Write ADRSkip ADR
New framework adoptionMinor version upgrades
Database technology choiceBug fixes
API design patternsImplementation details
Security architectureRoutine maintenance
Integration patternsConfiguration changes

Implicit Trigger Detection

Recognize these conversation patterns as ADR signals — ask "Should we document this as an ADR?" before proceeding:

Signal PatternExampleADR Category
"I need X for Y""I need a message queue for async jobs"Technology choice
"Should we use X or Y?""Should we use Kafka or BullMQ?"Technology choice
"We're switching from X to Y""Moving from REST to GraphQL for..."Architecture pattern
"How should we structure X?""How should we structure our auth layer?"Architecture pattern
"We decided to use X""We're going with Prisma for the ORM"Technology choice
"X isn't scaling, we need to Y""Our monolith isn't scaling, thinking microservices"Architecture pattern
Adding a new external serviceIntegrating Stripe, adding Firebase AuthInfrastructure
Changing data model significantly"Users now need multi-tenant support"Data modeling

Rule: If the decision affects more than one service, involves a new dependency, or cannot easily be reversed — it needs an ADR.

Quick Start

  1. Copy the template: cp docs/adr/template.md docs/adr/NNNN-your-title.md
  2. Fill in: Context, Decision Drivers, Options, Decision, Consequences
  3. PR for review (2+ senior engineers)
  4. Update docs/adr/README.md index after merge

Core Concepts

An Architecture Decision Record captures:

  • Context: Why we needed to make a decision
  • Decision: What we decided
  • Consequences: What happens as a result

ADR Lifecycle

Proposed --> Accepted --> Deprecated --> Superseded
                |
             Rejected

Read reference/adr-lifecycle.md for status transitions, deprecation patterns, and review checklists.

Process

1. Choose a Template

Pick the format that fits the decision's complexity:

Decision ComplexityTemplate
Simple tech selectionY-Statement (one paragraph)
Medium decisionLightweight ADR (0.5-1 page)
Significant architecture changeStandard MADR (1-2 pages)
Retiring a decisionDeprecation ADR
Major cross-team proposalRFC Style (2-4 pages)

For Standard MADR (significant decisions): Score each considered option using the dual-lens rubric in reference/adr-scoring.md before selecting a winner. Include the ## Option Scoring table in the ADR. If the winning option is not ADOPT, state mitigations explicitly in the Decision section.

Read reference/adr-templates.md for all template formats ready to copy-paste.

2. Write the ADR

  • Start with context -- explain the problem before the solution
  • List 2-3 real alternatives with honest pros/cons and explicit "why not" reasoning (see Alternatives Considered below)
  • State the decision clearly
  • Document both positive and negative consequences with specifics

3. Review and Approve

  • Submit as PR with 2+ senior engineer reviewers
  • Consult affected teams
  • Assess security, cost, and reversibility implications

4. Maintain

  • Update ADR index after acceptance
  • Create implementation tickets
  • Never edit accepted ADRs -- write new ones to supersede

Read reference/adr-examples.md for complete worked examples (PostgreSQL selection, TypeScript adoption, MongoDB deprecation, event sourcing RFC).

Alternatives Considered

For each alternative: document pros, cons, AND why it was ultimately rejected. The "why not" is as valuable as the decision itself — it prevents relitigating the same choices.

AlternativeProsConsWhy Not Chosen
Option A......[Specific reason it was rejected for THIS context]
Option B......[Specific reason]

Rule: A vague "not chosen" entry (e.g. "too complex") is not acceptable. State the specific constraint, risk, or tradeoff that ruled it out in this context.

Minimal Template (Copy-Paste Starter)

# ADR-NNNN: [Title]

## Status
Proposed | Accepted | Deprecated | Superseded by ADR-XXXX

## Context
[Why do we need to decide this? What's the problem?]

## Decision
We will [decision].

## Consequences
- **Good**: [benefits]
- **Bad**: [drawbacks]
- **Mitigations**: [how we'll address the bad]

Common Mistakes

MistakeFix
Writing ADR after implementationWrite during design phase
Listing only one optionAlways include 2-3 real alternatives
Vague consequencesBe specific: "Adds ~200ms latency to checkout"
Editing accepted ADRsWrite new ADR that supersedes
No decision driversList explicit criteria with priorities
Missing rejected ADRsDocument rejected options too

Directory Structure

docs/adr/
  README.md           # Index of all ADRs
  template.md         # Team's ADR template
  0001-use-postgresql.md
  0002-caching-strategy.md

Reference Files

FileContents
reference/adr-templates.mdAll formats: MADR, lightweight, Y-statement, deprecation, RFC
reference/adr-examples.mdComplete worked examples for each format
reference/adr-lifecycle.mdStatus transitions, review checklists, automation with adr-tools

Resources

Error Handling

Conflicting ADRs: When a new decision contradicts an existing ADR, create a superseding ADR that explicitly references and deprecates the old one.

Missing context: If the decision rationale is unclear or incomplete, flag it and request clarification before recording.

我的收藏