adr-author
Skill12 starsChanged 5 months agoMITView on GitHub
Authors Architecture Decision Records (ADRs) that capture context, considered options with trade-offs, the chosen decision, and its consequences. Use this skill when the user wants to write, draft, document, or revise an architecture decision, an ADR, a design decision record, a technical decision log, or asks "why did we choose X" / "we need to record this decision" / "document this trade-off" for things like database choice, framework selection, API style, build vs. buy, or deprecating a component.
We split this skill into the rules it gives an agent
10 rules. About 0 are common, 8 are distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈8
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 25
Write an ADR when the decision is architecturally significant — it is costly to reverse, affects multiple teams/components, or constrains …
- Very specific: line 32
Confirm significance: Run the decision through references/significance-checklist.md.
- Distinctive: line 33
If it does not qualify, tell the user and suggest a lighter-weight record.
- Distinctive: line 70
Use the canonical structure (a pragmatic blend of Nygard and MADR):
- Distinctive: line 90
Read the matrix, then write the narrative — the matrix informs, judgment decides.
- Distinctive: line 91
Document *why* the winning option wins even if it doesn't top every column.
- Distinctive: line 103
One decision per ADR: If you're tempted to use "and", split it.
- Distinctive: line 112
Link bidirectionally: When ADR-0012 supersedes ADR-0007, update both files.
- Distinctive: line 125
Write a superseding ADR instead.
- Distinctive: line 127
Writing an ADR for a trivial decision: Use the significance checklist.
≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
ADR Author
Overview
An Architecture Decision Record (ADR) is a short, immutable document that captures one architecturally significant decision: the forces at play (context), the realistic options, the option chosen, and the consequences that follow. ADRs form an append-only log so future maintainers can reconstruct why the system looks the way it does — not just what it does.
This skill produces rigorous ADRs that distinguish facts from opinions, force an honest options comparison, and make consequences (good, bad, and neutral) explicit.
Keywords: ADR, architecture decision record, design decision, technical decision log, MADR, Nygard, trade-off analysis, options matrix, decision rationale, superseded decision, build vs buy, framework selection, database choice, API style, architecture governance.
When a Decision Deserves an ADR
Write an ADR when the decision is architecturally significant — it is costly to reverse,
affects multiple teams/components, or constrains future choices. Use the checklist in
references/significance-checklist.md. If none of the criteria fire, capture it as a code
comment or a ticket instead, not an ADR.
Workflow
- Confirm significance. Run the decision through
references/significance-checklist.md. If it does not qualify, tell the user and suggest a lighter-weight record. - Assign an ID and locate the log. ADRs live in a directory such as
docs/adr/ordoc/architecture/decisions/. Number them sequentially with a zero-padded prefix:0001-use-postgresql.md,0002-adopt-rest-over-graphql.md. Usescripts/new_adr.pyto scan the directory, compute the next number, and scaffold the file. - Gather context. Interview the user (or read the codebase) to extract the forces: business drivers, technical constraints, team skills, deadlines, existing systems, non-functional requirements (performance, security, cost, operability). Separate objective facts from assumptions — label assumptions explicitly.
- Enumerate real options. List 2-4 genuinely viable options. "Do nothing" is often a valid option and should appear when relevant. Reject straw-man options. For each option, describe how it works and its pros/cons against the forces from step 3.
- Build the options matrix. Score options against the decision criteria (the
non-functional requirements that matter most here). See the worked example in
examples/database-selection.md. The matrix makes the trade-off legible; it does not replace judgment. - State the decision. One clear sentence in active voice: "We will use X." Then explain the rationale tied directly to the forces and the matrix. Name who decided and when.
- Spell out consequences. Enumerate positive, negative, and neutral consequences. Negative consequences are mandatory — every decision has costs. Include follow-up actions, new risks, and what becomes harder.
- Set status and links. Status is one of
Proposed,Accepted,Rejected,Deprecated,Superseded by ADR-NNNN. Link related and superseded ADRs bidirectionally. - Write the file from
templates/adr-template.md, keep it under ~2 pages, and present it. Remind the user that accepted ADRs are immutable — to change a decision, write a new ADR that supersedes the old one rather than editing it.
ADR Document Structure
Use the canonical structure (a pragmatic blend of Nygard and MADR):
- Title —
ADR-NNNN: <short imperative phrase> - Status — Proposed / Accepted / Rejected / Deprecated / Superseded by ADR-NNNN
- Date — ISO date the status last changed
- Context — the forces, constraints, and problem statement (facts vs. assumptions)
- Decision Drivers — the criteria that matter (the columns of your options matrix)
- Considered Options — each option with how-it-works + pros/cons
- Decision Outcome — the chosen option and the rationale
- Consequences — positive, negative, neutral; follow-ups and new risks
- Links — supersedes / superseded-by / related ADRs and external references
Decision Framework: Picking and Comparing Options
Compare options against weighted decision drivers, not on vibes:
- Identify the 3-6 drivers that actually matter for this decision (e.g., operability, team familiarity, cost, latency, vendor lock-in, time-to-market).
- Optionally weight them if some clearly dominate.
- Score each option per driver (
++,+,o,-,--, or 1-5). - Read the matrix, then write the narrative — the matrix informs, judgment decides. Document why the winning option wins even if it doesn't top every column.
See examples/database-selection.md for a complete matrix and narrative.
Worked Example
examples/database-selection.md shows a full ADR choosing between PostgreSQL, MongoDB, and
DynamoDB for a new service — including the drivers, the scored options matrix, the decision
narrative, and honest negative consequences. Use it as the quality bar.
Best Practices
- One decision per ADR. If you're tempted to use "and", split it.
- Write in the present tense, active voice. "We will…", not "It was decided that…".
- Capture the decision when it's made, while the context is fresh and the alternatives are still remembered. ADRs written months later lose the forces.
- Make assumptions explicit. Tag anything not verifiable as an assumption; it tells future readers what to re-check if reality diverges.
- Always list negative consequences. An ADR with only upsides is marketing, not a record.
- Keep it short. Two pages max. Detail belongs in linked design docs, not the ADR.
- Treat accepted ADRs as immutable. Supersede, don't edit. The log's value is its history.
- Link bidirectionally. When ADR-0012 supersedes ADR-0007, update both files.
- Number consistently with zero-padding so the directory sorts correctly.
- Store ADRs in the repo, next to the code they govern, so they version with it.
Common Pitfalls
- Straw-man options. Listing only the chosen option plus throwaway alternatives. Future readers see through it and lose trust in the log. List options you genuinely weighed.
- Conflating context with decision. Context describes the problem and forces before you decided; it must not leak the conclusion.
- Omitting "do nothing". Often the real baseline; failing to consider it hides cost.
- No consequences, or only good ones. The most-skipped, most-valuable section.
- Editing an accepted ADR to reflect a new choice — this destroys the rationale trail. Write a superseding ADR instead.
- Over-long ADRs that nobody reads. If it needs a design doc, write one and link it.
- Writing an ADR for a trivial decision. Use the significance checklist; don't dilute the log with reversible, local choices.
- Vague titles like "Database decision". Prefer "ADR-0003: Use PostgreSQL for the orders service".
Other versions5 projects use a version of this.
Word for word · 2
- jaskirat1616/grok-skills★ 22100% same
- JayRHa/AgentSkills★ 12100% same
Edited · 0
None found.
Wrote their own version · 3
- microsoft/hve-core★ 1.6ksame name
- Bioconductor/ai-agent-skills★ 8same name
- Atypical-Consulting/AdrMcp★ 1same 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 repository75 other files it gives its agents.
- 0-templateSkill
- ab-test-analyzerSkill
- api-designerSkill
- api-docs-writerSkill
- aws-cost-optimizerSkill
- bash-script-hardeningSkill
- blog-post-writerSkill
- book-summarizerSkill
- changelog-keeperSkill
- chart-chooserSkill
- code-reviewerSkill
- competitive-analysisSkill
- concept-explainerSkill
- cover-letter-writerSkill
- cron-schedulerSkill
- data-pipeline-architectSkill
- debug-detectiveSkill
- decision-matrixSkill
- dependency-upgraderSkill
- dockerfile-proSkill
- email-composerSkill
- error-handling-patternsSkill
- event-plannerSkill
- flashcard-generatorSkill
- gdpr-data-mapperSkill
- gift-advisorSkill
- github-actions-builderSkill
- git-workflowSkill
- habit-builderSkill
- incident-postmortemSkill
- interview-prepSkill
- job-description-writerSkill
- json-schema-authorSkill
- kubernetes-manifest-authorSkill
- language-tutorSkill
- meal-plan-builderSkill
- meeting-summarizerSkill
- mermaid-diagram-builderSkill
- nginx-config-proSkill
- observability-setupSkill
- okr-writerSkill
- pandas-data-cleaningSkill
- people-dataSkill
- performance-profilerSkill
- personal-budget-plannerSkill
- presentation-builderSkill
- project-plannerSkill
- prompt-engineerSkill
- proofreaderSkill
- public-speaking-coachSkill
- rag-pipeline-designerSkill
- readme-generatorSkill
- refactoring-guideSkill
- regex-architectSkill
- release-notes-writerSkill
- resume-writerSkill
- salary-negotiatorSkill
- secrets-managerSkill
- secure-code-reviewSkill
- secure-password-policySkill
- The first 60 shown.
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.

