Help us improve
Share bugs, ideas, or general feedback.
From crafter
Guides writing minimal Architecture Decision Records (ADRs) with decision filters, Y-statement forcing function, Markdown templates, workflows, and naming conventions for docs/decisions/. Useful for architectural decisions or ADR mentions.
npx claudepluginhub agentpatterns/craft --plugin crafterHow this skill is triggered — by the user, by Claude, or both
Slash command
/crafter:adrThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Before writing an ADR, check if the decision qualifies (Harmel-Law signals):
Records concise Architecture Decision Records (ADRs) capturing what was decided and why, for decisions that are hard to reverse, surprising without context, or involve real trade-offs.
Generates Architectural Decision Records (ADRs) in MADR, Nygard, Alexandrian, or project formats. Researches directory for conventions, gathers context, numbers sequentially, validates, and saves. Use for documenting technical decisions.
Writes Architecture Decision Records (ADRs) with context, decision, consequences, and alternatives sections. Use for new ADRs, recording design decisions, or discussing trade-offs.
Share bugs, ideas, or general feedback.
Before writing an ADR, check if the decision qualifies (Harmel-Law signals):
If unsure: The template itself is the filter. If you can't fill it in, it's probably not a decision worth recording.
# ADR-NNNN: [Imperative verb phrase]
**Date:** YYYY-MM-DD
**Status:** Proposed | Accepted | Superseded by ADR-NNNN
**Author:** [Name]
## Context
[2-3 sentences. Forces and constraints. Value-neutral.]
## Decision
[1-2 sentences. Active voice. "We will..."]
## Options Considered
- **Option A** — [one line]
- **Option B** — [one line]
## Consequences
- Good: [positive outcome]
- Bad: [accepted tradeoff]
## Advice
- [Name, Date]: [What they said]
Full template with field guidance: references/template.md
Decide if an ADR is needed — Run through the decision filter above. Skip if no signals match.
Start with a Y-statement — Forcing function to clarify the decision before writing:
"In the context of _____, facing _____, we decided for _____, to achieve _____, accepting _____." If you can't complete this sentence, the decision isn't clear enough to record yet.
Create the ADR file — Naming: NNNN-kebab-case-title.md (4-digit zero-padded). Directory: docs/decisions/. Check existing files to determine the next number:
ls docs/decisions/
Fill in the template — Section by section:
Finalize — Set status to Proposed. Commit the ADR alongside the code change it documents (same PR). Update status to Accepted after review and approval.
NNNN-kebab-case-title.md — e.g., 0001-use-postgresql-for-persistence.mddocs/decisions/ADRs are immutable once accepted. To change a decision, write a new ADR that supersedes the old one.
Retroactive ADRs — Writing ADRs long after the decision was made. Record decisions when they happen.
Bikeshedding Status — Agonizing over Proposed vs Accepted. Start as Proposed, move to Accepted when the team agrees.
Skipping Options — Recording only the chosen option. The value is in showing what was considered and why alternatives were rejected.
Missing Advice Attribution — "The team agreed" instead of who said what. Name names and dates.
Over-Scoping — Trying to capture every technical choice. ADRs are for architecturally significant decisions, not implementation details.