skills/adr_template/SKILL.md
Guidelines, best practices, and templates for authoring Architecture Decision Records (ADRs). Activate when proposing major architectural changes, resolving design/technical debates, or documenting codebase refactorings.
npx skillsauth add danicat/godoctor adr_templateInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This skill provides the guidance and standard templates for writing and maintaining Architecture Decision Records (ADRs). Based on Martin Fowler's bliki and the conversational scaling of software architecture, ADRs are lightweight, plain-text documents that capture significant architectural choices, the context behind them, and their consequences.
According to Martin Fowler and standard industry practice, architecture is not about rigid blueprints but about key decisions that are hard to change. ADRs solve two major engineering problems:
[!IMPORTANT] Rule 1: Keep It Lightweight An ADR should be short (1–2 pages max). If it takes more than 15 minutes to read, it is too long. It is a record of a decision, not a full design specification.
Rule 2: ADRs are Immutable Logs Once an ADR is approved and committed, NEVER edit its decision. If a decision is changed or reverted in the future, do not overwrite the old file. Instead, write a new ADR (e.g.,
0005-use-http-instead-of-grpc.md) and mark the old one's status asSuperseded by ADR-0005.Rule 3: Focus on Consequences & Tradeoffs Every architectural decision has a cost. A senior-level ADR is judged by the honesty of its Consequences section. Document the downsides, technical debt, and new constraints introduced by the choice.
All ADRs should be stored in the project's documentation folder:
design/adr/
├── 0001-record-architecture-decisions.md
├── 0002-use-stdio-mcp-transport.md
└── 0003-transactional-compiler-gated-editing.md
.md)NNNN-short-descriptive-title.md where NNNN is a sequential 4-digit number starting at 0001.Use this standard template when creating a new ADR file in the design/adr/ directory:
# ADR-[Number]: [Active Verb Title]
- **Status:** [Proposed | Approved | Superseded by ADR-XXXX | Rejected]
- **Date:** [YYYY-MM-DD]
- **Author(s):** [Names]
- **Deciders:** [Names of people involved in the decision]
## 1. Context
Describe the current situation, background context, and the problem we are solving. What are the technological, organizational, or operational forces at play? What constraints must we respect?
Keep this section factual. State the facts as they are.
## 2. Decision
State the chosen architectural path clearly and concisely. Explain **why** this path was selected over alternatives.
List the alternative options that were seriously considered and why they were rejected (e.g., "Alternative A was rejected because it introduces a dependency on external Python runtimes").
## 3. Consequences
What is the impact of making this decision? Every decision has tradeoffs. Be honest and explicit about:
- **Positive Consequences (What we gain):** Improved performance, reduced cognitive load, stronger safety gates.
- **Negative Consequences (What we lose or must accept):** Added complexity, performance overhead, temporary backwards-compatibility friction, learning curve.
- **Neutral Consequences:** Structural shifts, directory reorganizations.
## 4. Compliance & Verification
How will we verify that this decision is being respected and implemented correctly? (e.g., "Verified by running unit tests under the go test pipeline" or "Enforced by hooks preventing direct file modifications").
Before final approval, verify that the ADR answers these questions conversationally:
development
Guidelines and templates for structuring software development goals and ideas into actionable, bounded tasks using Context/Todo/AC, enforced by the DoR gate. Activate when scoping user requests, decomposing RFCs into tasks, or creating a new task file.
development
Guidelines and templates for authoring Request for Comments (RFCs). Activate when proposing significant features/refactorings, exploring design alternatives under high ambiguity, or gathering technical consensus.
development
Pre-release checklist and quality gate to verify codebase health, docs, and security before interacting with Git. Activate when preparing to tag/publish a release, concluding milestones, or running final verification on a pull request.
development
Highly actionable step-by-step checklist for diagnosing and resolving Go compilation errors, type errors, build/test failures, and runtime issues. Activate on any build or execution failure.