From docs
Record architectural decisions using MADR templates with full lifecycle support (Proposed, Accepted, Deprecated, Superseded). Supports full, minimal, and bare template variants. Use when making or recording architectural decisions, documenting technology choices, or capturing decision rationale. Triggers on "record this decision", "create an ADR", "document why we chose", "capture rationale".
How this skill is triggered — by the user, by Claude, or both
Slash command
/docs:adr [decision title] e.g. 'use PostgreSQL for persistence'[decision title] e.g. 'use PostgreSQL for persistence'The summary Claude sees in its skill listing — used to decide when to auto-load this skill
**Philosophy:** Decisions are perishable — context fades, people leave, rationale is forgotten. ADRs capture the WHY behind architectural choices when it's fresh. A brief ADR now is worth more than a detailed one never written.
Philosophy: Decisions are perishable — context fades, people leave, rationale is forgotten. ADRs capture the WHY behind architectural choices when it's fresh. A brief ADR now is worth more than a detailed one never written.
Run this skill when:
Do NOT use this skill for:
docs:writedocs:auditdocs:writeStep 0.1 - Resolve Project Root:
PROJECT_ROOT=$(git rev-parse --show-toplevel)
echo "Project root: ${PROJECT_ROOT}"
# Ensure ADR folder exists
mkdir -p "${PROJECT_ROOT}/docs/adr"
Step 0.2 - Check Existing ADRs:
# List existing ADRs to determine next number
ls "${PROJECT_ROOT}/docs/adr/" | grep -E "^[0-9]{4}-" | sort -r | head -5
# Check for related ADRs
grep -rl "{decision keywords}" "${PROJECT_ROOT}/docs/adr/"*.md 2>/dev/null
Verify:
[ ] PROJECT_ROOT resolved correctly
[ ] docs/adr/ folder exists (created if needed)
[ ] Determined next sequential ADR number
[ ] Checked for related existing ADRs
Scan existing ADRs and assign the next sequential number:
SCAN docs/adr/ for files matching NNNN-*.md
HIGHEST = maximum NNNN found
NEXT = HIGHEST + 1 (zero-padded to 4 digits)
IF no existing ADRs:
NEXT = 0001
VERIFY no file exists at docs/adr/{NEXT}-*.md (collision check)
Format: NNNN-kebab-case-title.md
Examples:
0001-use-postgresql-database.md0002-adopt-event-driven-architecture.md0003-choose-react-for-frontend.mdChoose the MADR variant based on decision complexity. Load only one reference file.
| Complexity | Variant | Reference File | When to Use |
|---|---|---|---|
| High | Full | references/adr/madr-full.md | Multiple options, significant consequences, cross-team impact |
| Medium | Minimal | references/adr/madr-minimal.md | Clear options, moderate impact, standard decisions |
| Low | Bare | references/adr/madr-bare.md | Quick capture, decision already made, fill details later |
Default: Minimal (covers most decisions). Suggest full if the decision involves multiple teams, has long-term commitment, or the user mentions trade-offs.
If uncertain, ask:
"How detailed should this ADR be? Full (thorough analysis with pros/cons per option), minimal (key context and outcome), or bare (headings only for quick capture)?"
Collect the information needed to fill the template:
- What decision was made (or needs to be made)?
- What problem or question prompted this decision?
- Decision drivers (requirements, constraints, team capabilities)
- Options considered (at least 2 for full/minimal)
- Pros and cons of each option
- Consequences — positive, negative, and neutral
- Related ADRs or prior decisions
If recording a past decision:
Accepted (it's already decided)If recording a pending decision:
ProposedFill the selected template:
FILENAME = {NNNN}-{kebab-case-title}.md
FILL template sections with gathered context
SET status:
- "Proposed" for pending decisions
- "Accepted" for retrospective recording
Before writing, check:
[ ] Status field present and valid (Proposed | Accepted | Deprecated | Superseded)
[ ] Context section explains the problem clearly
[ ] Decision drivers documented (for full/minimal)
[ ] At least 2 options considered (for full/minimal)
[ ] Consequences noted (for full/minimal)
[ ] Related ADRs linked if applicable
[ ] Filename matches NNNN-kebab-case-title.md pattern
[ ] No number collision with existing ADRs
# Write the ADR file
# Path: ${PROJECT_ROOT}/docs/adr/{NNNN}-{title}.md
Confirm creation with:
ADRs follow this lifecycle:
Proposed → Accepted → Deprecated
→ Superseded by [ADR-NNNN](link)
To update an existing ADR's status:
## Status sectionSuperseded by [ADR-NNNN](NNNN-title.md) and create the new ADR with a link backNever delete an ADR. Mark as Deprecated or Superseded instead.
❌ ADR without context
# ADR 0005: Use Redis
We decided to use Redis.
✅ ADR with full decision context
# ADR 0005: Use Redis for Session Storage
## Status
Accepted
## Context and Problem Statement
We need a session store that supports horizontal scaling.
Current in-memory sessions don't survive restarts.
## Decision Drivers
- Must support cluster deployment
- Team has Redis experience
- Need sub-millisecond latency
## Decision Outcome
Chosen: Redis, because it meets all drivers and the team
has operational experience.
❌ Missing status
# ADR 0003: Choose React
## Context
We need a frontend framework...
(no status section)
✅ Explicit status lifecycle
## Status
Accepted
(or: Superseded by [ADR-0007](0007-migrate-to-svelte.md))
❌ Deleting outdated ADRs
rm docs/adr/0003-choose-angular.md
(history lost)
✅ Superseding with new ADR
# ADR 0003: Choose Angular
## Status
Superseded by [ADR-0007](0007-migrate-to-svelte.md)
❌ Single option "decision"
We considered React. We chose React.
✅ Genuine alternatives
Considered: React, Vue, Svelte
Chose React because: team familiarity, ecosystem maturity
Trade-off: larger bundle size than Svelte
| Signal | Meaning |
|---|---|
| "adr created" | Decision recorded, file written |
| "refine" | Continue iterating on the ADR |
| "abort" | Cancel ADR creation |
| "write docs" | → Redirect to docs:write |
| "audit docs" | → Redirect to docs:audit |
When complete: "ADR created at docs/adr/NNNN-title.md. Status: {Proposed|Accepted}."
npx claudepluginhub dirkkok101/skills --plugin docsProvides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.