adr-writing
Skill4 starsChanged 3 months agoApache-2.0View on GitHub
Guide for writing Architecture Decision Records. Reference when creating ADRs, reviewing architectural decisions, or documenting design choices.
3 other projects use a version of this.
Adopted by
Most recently taken up by
- ivanrvpereira/.agentstheir own version, first seen Oct 13, 2026
- marmelab/atomic-crmtheir own version, first seen Oct 8, 2026
- KhaledSaeed18/dotclaudetheir own version, first seen Jul 4, 2026
Other versions3 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 3
- marmelab/atomic-crm★ 1.4ksame name
- ivanrvpereira/.agents★ 19same name
- KhaledSaeed18/dotclaude★ 5same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository25 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- authoring-goal-contractsSkill
- collaborating-asyncSkill
- committing-changesSkill
- cross-agent-dispatchSkill
- documenting-decisionsSkill
- feature-status-registrySkill
- grill-meSkill
- grill-yourselfSkill
- handling-micro-fixesSkill
- multi-instance-dispatchSkill
- notifying-the-developerSkill
- orchestrating-goal-loopsSkill
- orchestrating-lean-dispatchSkill
- performance-playbookSkill
- python-project-patternsSkill
- recovering-from-failuresSkill
- running-build-checkpointsSkill
- searching-prior-artSkill
- security-checklistSkill
- selecting-review-gatesSkill
- severity-calibrationSkill
- syncing-framework-docsSkill
- testing-playbookSkill
- wrapping-up-sessionsSkill
The file
We split this skill into the rules it gives an agent
5 rules. 0 are common, 5 are distinctive, and 0 are very specific to this project.
0
Common
Most of the 3 edited versions we read keep these.
5
Distinctive
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 14
Write an ADR when:
- Distinctive: line 21
Do NOT write an ADR for:
- Distinctive: line 52
Missing alternatives: Only documenting the chosen option → Always document what was NOT chosen and why
- Distinctive: line 66
Deprecated: No longer relevant but not replaced (context changed)
- Distinctive: line 72
When a decision is identified during planning or review but cannot be fully resolved yet, create a deferred ADR placeholder to reserve the …
“Common” is measured: kept by at least 6 in 10 of the 3 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
ADR Writing Guide
What is an ADR?
An Architecture Decision Record captures a single significant architectural decision: what was decided, why, what alternatives were considered, and what consequences follow. ADRs are the framework's backbone — they create an interconnected chain of reasoning.
When to Write an ADR
Write an ADR when:
- Choosing between technologies, frameworks, or libraries
- Defining module boundaries or component responsibilities
- Establishing patterns that will be reused across the codebase
- Making trade-offs that should be documented (performance vs. readability, etc.)
- Changing a previous architectural decision
Do NOT write an ADR for:
- Implementation details that don't affect architecture
- Bug fixes or minor refactoring
- Configuration changes
ADR Quality Criteria
Context Section
- Describes the problem, not the solution
- Explains what forces are at play
- Mentions relevant constraints and requirements
- A reader should understand WHY this decision was necessary
Decision Section
- States the decision clearly and specifically
- Explains the reasoning, not just the conclusion
- Someone unfamiliar with the project should understand what was decided
Alternatives Section
- Lists genuinely considered alternatives (not straw men)
- Each alternative has pros, cons, and a specific reason for rejection
- Demonstrates that the decision space was explored
Consequences Section
- Honest about negative consequences (trade-offs accepted)
- Specific enough to be verifiable later
- Includes neutral consequences (things that change but aren't good or bad)
Common ADR Mistakes
- Too vague: "We decided to use a good architecture" → Be specific about what pattern/tool/approach
- Missing alternatives: Only documenting the chosen option → Always document what was NOT chosen and why
- No consequences: Skipping trade-offs → Every decision has costs; document them
- Missing context: Starting with the decision → Context should make the decision feel inevitable
- Stale status: ADR says "proposed" but was implemented months ago → Keep status current
Template
See docs/templates/adr-template.md for the full template with YAML frontmatter.
ADR Lifecycle
- Proposed: Written during planning or review
- Accepted: Approved by the developer/team
- Superseded: Replaced by a newer ADR (the old one is never deleted, just marked superseded with a link to the replacement)
- Deprecated: No longer relevant but not replaced (context changed)
Nygard's insight: "The consequences of one ADR are very likely to become the context for subsequent ADRs."
Deferred ADR Placeholder Pattern
When a decision is identified during planning or review but cannot be fully resolved yet, create a deferred ADR placeholder to reserve the ADR number and capture the decision context before it's lost.
When to Use
- A spec review identifies an architectural decision that needs its own ADR
- Multiple specs reference the same ADR number and you need to resolve the conflict early
- A decision is blocked on information that will arrive later (e.g., performance benchmarks, external API availability)
Template
---
adr_id: ADR-NNNN
title: "[Decision title — be specific even if deferred]"
status: proposed
date: YYYY-MM-DD
decision_makers: []
discussion_id: null
supersedes: null
risk_level: medium
confidence: 0.50
tags: [deferred]
---
## Context
[Capture the context NOW while it's fresh. This is the most important section
for a deferred ADR — if you lose the context, the ADR becomes much harder to
write later.]
## Decision
**Status: DEFERRED** — [reason for deferral and what will unblock it]
Expected resolution: [date or trigger condition]
## Alternatives Considered
[List known alternatives even if analysis is incomplete]
## Consequences
[To be completed when the decision is made]Rules
- Reserve the ADR number immediately — prevents conflicts when multiple specs need ADRs
- Capture context while fresh — the context section should be complete even if the decision isn't
- Set confidence to 0.50 — signals this is not yet a real decision
- Include the
deferredtag — makes deferred ADRs queryable - Set a resolution trigger — prevents deferred ADRs from being forgotten
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

