git clone https://github.com/sventorben/decider
T=$(mktemp -d) && git clone --depth=1 https://github.com/sventorben/decider "$T" && mkdir -p ~/.claude/skills && cp -r "$T/.claude/skills/adr-system" ~/.claude/skills/sventorben-decider-adr-system && rm -rf "$T"
.claude/skills/adr-system/SKILL.mdADR System Skill
This skill enables Claude to work with Architecture Decision Records (ADRs) managed by DECIDER.
Overview
This repository uses DECIDER to manage ADRs. ADRs document significant architectural decisions with structured metadata that enables automated tooling and AI agent consumption.
Mandatory Rationale Pattern
ALL ADRs MUST use the explicit rationale pattern. This is enforced by the CLI.
For Adopted Decisions
The chosen option MUST include:
### [Option Name]: Adopted **Adopted because:** - Concrete reason tied to decision drivers - Technical, operational, or strategic justification **Adopted despite:** - Known downside we consciously accepted - Trade-off compared to alternatives
For Rejected Alternatives
Each rejected option MUST include:
### [Option Name]: Rejected **Rejected because:** - Concrete reason for rejection - How it failed to meet decision drivers **Rejected despite:** - Legitimate strength of this option - Benefit that made it attractive
Prohibited Patterns
- DO NOT use only pros/cons tables
- DO NOT omit "despite" sections
- DO NOT use vague language like "better fit"
- DO NOT imply rejection without explicit rationale
ADR Format
ADRs use Markdown with YAML frontmatter:
--- adr_id: ADR-NNNN title: "Decision Title" status: proposed|adopted|rejected|deprecated|superseded date: YYYY-MM-DD scope: paths: - "path/to/affected/**" tags: - relevant-tag constraints: - "Rule that MUST be followed" invariants: - "Property that must always hold" supersedes: [] superseded_by: [] related_adrs: [] --- # ADR-NNNN: Decision Title ## Context Decision drivers: - Driver 1 - Driver 2 ## Decision ### [Chosen Option]: Adopted **Adopted because:** - Reason 1 - Reason 2 **Adopted despite:** - Trade-off 1 - Trade-off 2 ## Alternatives Considered ### [Alternative A]: Rejected **Rejected because:** - Reason 1 **Rejected despite:** - Strength 1 ## Consequences **Positive:** - Benefit 1 **Negative:** - Cost 1
Key Concepts
Scope Paths
Glob patterns that indicate which parts of the codebase an ADR applies to. Used by
decider check diff to find relevant ADRs.
Constraints
Rules that MUST be followed when working in the affected scope. These are prescriptive.
Invariants
Properties that must ALWAYS be true. These are conditions to preserve.
Status Lifecycle
→ Under discussionproposed
→ Approved and in effectadopted
→ Considered but not adoptedrejected
→ Was adopted, now discourageddeprecated
→ Replaced by another ADRsuperseded
Commands
# Initialize ADR structure decider init # Create new ADR (includes rationale pattern template) decider new "Title" --tags foo,bar --paths "src/**" # List ADRs decider list decider list --status adopted --tag security # Show ADR details decider show ADR-0001 # Validate ADRs (warns on missing rationale pattern) decider check adr # Validate ADRs strictly (fails on missing rationale pattern) decider check adr --strict # Check which ADRs apply to changes decider check diff --base main # Explain why ADRs apply decider explain --base main # Update index decider index
Working with ADRs
Before Making Changes
- Run
to find applicable ADRsdecider check diff --base main - Read the constraints and invariants
- Ensure your changes comply
Creating a New ADR
- Run
decider new "Title" --tags ... --paths ... - Fill in the Context section with decision drivers
- Document the chosen option with:
- "Adopted because:" (concrete reasons)
- "Adopted despite:" (trade-offs accepted)
- Document each rejected alternative with:
- "Rejected because:" (concrete reasons)
- "Rejected despite:" (acknowledged strengths)
- Run
to validatedecider check adr --strict - Run
to update the indexdecider index
Reviewing an ADR
Check that:
- "Adopted because:" section exists with concrete reasons
- "Adopted despite:" section exists with trade-offs
- Each alternative has "Rejected because:" and "Rejected despite:"
- No prose-only sections without the pattern
-
passesdecider check adr --strict
Index File
The
docs/adr/index.yaml file is auto-generated and provides quick access to ADR metadata:
generated_at: "2026-01-16T10:00:00Z" adr_count: 5 adrs: - adr_id: ADR-0001 title: "Decision Title" status: adopted date: "2026-01-16" tags: [foundation] scope_paths: ["src/**"] file: "0001-decision-title.md"
Never edit this file manually. Always use
decider index to regenerate it.