From grimoire
Documents significant technical decisions (technology choices, architecture patterns, API contracts) as lightweight ADR files in the repo.
How this skill is triggered — by the user, by Claude, or both
Slash command
/grimoire:write-adrThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Capture a technical decision as a lightweight, permanent record so future engineers understand what was decided, why, and what alternatives were rejected.
Capture a technical decision as a lightweight, permanent record so future engineers understand what was decided, why, and what alternatives were rejected.
Adopted by: Amazon (ADRs are standard practice in AWS teams — referenced in AWS Well-Architected Framework documentation), Spotify (engineering blog documents ADR usage across tribes), GitHub (engineering blog 2020), ThoughtWorks (recommends ADRs in Technology Radar since 2016 as "Adopt" status — the highest recommendation tier).
Impact: ThoughtWorks reports that teams using ADRs reduce "archaeology time" — time spent reverse-engineering past decisions — by 60–80% during onboarding and incident review. Nygard (2011) observed that without ADRs, the same architectural discussions recur every 6–12 months as team members turn over, burning 2–4 hours per revisit. An ADR takes 15–30 minutes to write and provides permanent context.
Why best: Comments in code capture the what, not the why. Wiki pages drift out of date. Meeting notes are not indexed or searchable. ADRs are committed to the repository alongside the code they describe — they version with the code, appear in git log, and are never lost. The format (Context → Decision → Consequences) forces clarity about trade-offs that verbal decisions never achieve.
Sources: Nygard, "Documenting Architecture Decisions" (cognitect.com, 2011); ThoughtWorks Technology Radar Vol. 22 (2020); Keeling "Design It!" (Pragmatic Programmers, 2017)
Write an ADR for decisions that are:
Do NOT write an ADR for: library version bumps, code style choices enforced by a linter, or decisions that are trivially reversible.
Place ADRs in docs/adr/ or adr/ at the repo root. Number sequentially:
docs/adr/
0001-use-postgresql-as-primary-database.md
0002-adopt-event-sourcing-for-order-service.md
0003-reject-graphql-in-favor-of-rest.md
Filenames are immutable once merged — the number and slug become a stable reference. Never renumber.
# ADR-NNNN: <Short imperative title>
**Date:** YYYY-MM-DD
**Status:** Proposed | Accepted | Deprecated | Superseded by ADR-MMMM
**Deciders:** <names or team>
## Context
<What situation, constraint, or requirement forced this decision?
Be specific: include scale numbers, team constraints, timeline pressures.
Do not editorialize — just describe the situation.>
## Decision
<What was decided, stated as a clear declarative sentence.
"We will use X." Not "We considered X.">
## Alternatives Considered
| Option | Pros | Cons | Reason Rejected |
|--------|------|------|-----------------|
| Option A | ... | ... | ... |
| Option B | ... | ... | ... |
## Consequences
**Positive:**
- <What improves as a result of this decision>
**Negative / Trade-offs:**
- <What gets harder, slower, or more expensive>
- <What debt is being accepted>
**Risks:**
- <What could go wrong, and what is the mitigation>
The Context section must answer:
Avoid: "We needed something better." Write instead: "At 50,000 writes/sec our single PostgreSQL primary saturated at 80% CPU. We need a write-scalable solution before Q3 peak traffic."
One sentence. Present tense. Active voice.
Good: "We will use Apache Kafka as the event bus for all inter-service communication." Bad: "Kafka was evaluated and found to be suitable for our needs going forward."
Always include "status quo" or "do nothing" as an alternative — sometimes it is the right choice and the ADR should say so explicitly.
For each alternative, explain why it was rejected in concrete terms, not vague preferences:
Commit the ADR in the same PR as the first code that implements the decision, or as a standalone PR if the decision precedes implementation.
Good Context:
Our user table has grown to 800M rows. Single-node PostgreSQL queries against unindexed columns take 45 seconds at p99, exceeding our 5-second SLO. Adding indexes is no longer feasible — index size exceeds available RAM. We must shard or move to a distributed database before the next growth cycle.
Good Decision:
We will horizontally shard the users table by
user_id mod 16across 16 PostgreSQL instances, managed by Citus.
Good Consequence (negative):
Cross-shard joins are no longer possible in SQL. Analytics queries that span multiple users must be moved to the data warehouse (BigQuery). This affects 3 existing reports; the analytics team has been notified and has capacity to migrate them in Q2.
npx claudepluginhub jeffreytse/grimoire --plugin grimoire2plugins reuse this skill
First indexed Jun 5, 2026
Creates a structured Architecture Decision Record (ADR) documenting context, options, decision, consequences, and tradeoffs for any technical choice.
Writes Architecture Decision Records (ADRs) documenting decisions, rationale, alternatives, and trade-offs from codebases or conversations. Triggers on 'write an ADR' or 'document decision'.
Documents significant architectural and technical decisions with context, alternatives, trade-offs, and consequences. Creates a decision trail for teams. Use when choosing technologies, making infrastructure decisions, or establishing standards.