Decision Tracking Skill
CRITICAL: The description field above controls when Claude auto-loads this skill.
Overview
Provides comprehensive Architecture Decision Record (ADR) management following Michael Nygard's ADR format. Includes automatic sequential numbering, decision lifecycle tracking, superseding workflows, and decision search capabilities.
Instructions
Creating New ADRs
- Use
scripts/create-adr.sh <title> [docs-path] to create a new ADR with automatic numbering
- Script automatically determines next sequential number (0001, 0002, etc.)
- Creates ADR file with Michael Nygard format:
NNNN-title-in-kebab-case.md
- Populates ADR with proper frontmatter (date, status, deciders)
- Updates the ADR index automatically
Listing ADRs
- Use
scripts/list-adrs.sh [docs-path] [--status=accepted|proposed|deprecated|superseded] to view all ADRs
- Displays ADR number, title, status, date, and file path
- Supports filtering by status: accepted, proposed, deprecated, superseded
- Shows ADRs in chronological order by number
- Optionally displays quick summary of each ADR
Searching ADRs
- Use
scripts/search-adrs.sh <search-term> [docs-path] to search ADR content
- Searches titles, context, decisions, and consequences sections
- Returns matching ADRs with relevant snippets
- Highlights search terms in results
- Supports regex patterns for advanced searches
Updating ADR Index
- Use
scripts/update-adr-index.sh [docs-path] to regenerate ADR index
- Scans all ADR files and extracts metadata
- Generates comprehensive index with links to all ADRs
- Groups ADRs by status (accepted, proposed, deprecated, superseded)
- Updates
docs/adr/index.md or specified path
Superseding ADRs
- Use
scripts/supersede-adr.sh <old-adr-number> <new-title> [docs-path] to supersede an ADR
- Marks old ADR status as "superseded" with link to new ADR
- Creates new ADR with reference to superseded ADR
- Maintains decision history and rationale chain
- Updates ADR index automatically
Available Scripts
- create-adr.sh: Create new ADR with auto-numbering and proper format
- list-adrs.sh: List all ADRs with filtering and status display
- search-adrs.sh: Search ADR content with regex support
- update-adr-index.sh: Regenerate comprehensive ADR index
- supersede-adr.sh: Mark ADR as superseded and create replacement
Templates
- adr-template.md: Michael Nygard ADR format with all sections
- adr-frontmatter.yaml: YAML frontmatter structure for ADR metadata
- adr-index-template.md: ADR index format with status groupings
- decision-matrix.md: Decision comparison matrix for evaluating options
- consequences-template.md: Detailed consequences documentation format
Examples
See examples/ directory for detailed usage examples:
example-adr-technology.md - Technology choice ADR (database selection)
example-adr-architecture.md - Architectural decision (microservices vs monolith)
example-adr-security.md - Security decision (authentication strategy)
example-adr-superseded.md - Superseded ADR with replacement links
example-adr-index.md - Complete ADR index with multiple entries
ADR Format (Michael Nygard)
Standard Sections
- Title: Short noun phrase describing the decision
- Status: proposed | accepted | deprecated | superseded
- Context: Forces at play, including technological, political, social, and project constraints
- Decision: Response to these forces, stated in full sentences with active voice
- Consequences: Context after applying the decision, including positive, negative, and neutral effects
Frontmatter Fields
---
number: 0001
title: Use PostgreSQL for Primary Database
date: 2025-10-28
status: accepted
deciders: [Tech Lead, Backend Team]
consulted: [DevOps, Security Team]
informed: [Frontend Team, Product]
---
Numbering Convention
- Use 4-digit zero-padded sequential numbers: 0001, 0002, 0003, etc.
- Filename format:
NNNN-title-in-kebab-case.md
- Examples:
0001-use-postgresql.md, 0042-adopt-microservices.md
- Never reuse numbers even if ADR is deleted
Decision Lifecycle
Status Transitions
- proposed → Initial state when ADR is created
- accepted → Decision has been approved and implemented
- deprecated → Decision is no longer recommended but still in use
- superseded → Decision has been replaced by a newer ADR
Superseding Workflow
- Identify ADR to supersede (e.g., ADR-0005)
- Run
supersede-adr.sh 0005 "New Decision Title"
- Old ADR updated: status → "superseded", link added to new ADR
- New ADR created with reference to superseded ADR
- Index updated automatically
ADR Storage Structure
Recommended directory structure:
docs/
adr/
index.md # Master index of all ADRs
0001-first-decision.md
0002-second-decision.md
0003-third-decision.md
templates/
adr-template.md # Template for new ADRs
Decision Matrix Usage
When evaluating multiple options:
- Use
templates/decision-matrix.md to structure comparison
- Define criteria (performance, cost, maintainability, etc.)
- Score each option against criteria
- Weight criteria by importance
- Calculate weighted scores to guide decision
- Include completed matrix in ADR context section
Search Capabilities
The search script supports:
- Full-text search: Search all ADR content
- Regex patterns: Use patterns like
"auth.*strategy"
- Section-specific: Search only in specific sections
- Status filtering: Combine with status filter
- Date range: Search ADRs within date range
Integration
This skill is used by:
planning:adr-create command - Create new ADRs interactively
planning:adr-list command - List and filter ADRs
planning:adr-supersede command - Supersede existing ADRs
- All planning agents requiring decision documentation
Best Practices
Writing Effective ADRs
- Be specific: Clearly state what is being decided
- Document context: Explain why the decision is needed
- List alternatives: Show what options were considered
- Describe consequences: Include positive and negative impacts
- Use active voice: "We will use PostgreSQL" not "PostgreSQL will be used"
When to Create ADRs
- Choosing between architectural patterns (monolith vs microservices)
- Selecting core technologies (databases, frameworks, languages)
- Defining system boundaries and interfaces
- Establishing security or authentication strategies
- Setting coding standards or development practices
When NOT to Create ADRs
- Routine bug fixes or minor refactoring
- Implementing already-decided features
- Temporary workarounds or experiments
- Decisions that can be easily reversed
- Team process decisions (use meeting notes instead)
Output Format
All scripts output in consistent formats:
- list-adrs.sh: Table format with columns: Number | Title | Status | Date
- search-adrs.sh: List format with ADR number, title, and matching snippet
- create-adr.sh: Outputs path to created ADR file
- supersede-adr.sh: Outputs paths to both old and new ADR files
Requirements
- ADRs must follow Michael Nygard format exactly
- Sequential numbering must be maintained without gaps
- Frontmatter must include all required fields
- Status must be one of: proposed, accepted, deprecated, superseded
- Superseded ADRs must link to replacement ADRs
- Index must be updated after every ADR creation
Purpose: Comprehensive Architecture Decision Record management and documentation
Used by: All planning agents and commands requiring decision tracking
1---2name: decision-tracking-23description: Architecture Decision Records (ADR) templates, sequential numbering, decision documentation patterns, and decision history management. Use when creating ADRs, documenting architectural decisions, tracking decision rationale, managing decision lifecycle, superseding decisions, searching decision history, or when user mentions ADR, architecture decision, decision record, decision tracking, or decision documentation.4---5
6# Decision Tracking Skill
7
8**CRITICAL: The description field above controls when Claude auto-loads this skill.**
9
10## Overview
11
12Provides comprehensive Architecture Decision Record (ADR) management following Michael Nygard's ADR format. Includes automatic sequential numbering, decision lifecycle tracking, superseding workflows, and decision search capabilities.
13
14## Instructions
15
16### Creating New ADRs
17
181. Use `scripts/create-adr.sh <title> [docs-path]` to create a new ADR with automatic numbering
192. Script automatically determines next sequential number (0001, 0002, etc.)
203. Creates ADR file with Michael Nygard format: `NNNN-title-in-kebab-case.md`
214. Populates ADR with proper frontmatter (date, status, deciders)
225. Updates the ADR index automatically
23
24### Listing ADRs
25
261. Use `scripts/list-adrs.sh [docs-path] [--status=accepted|proposed|deprecated|superseded]` to view all ADRs
272. Displays ADR number, title, status, date, and file path
283. Supports filtering by status: accepted, proposed, deprecated, superseded
294. Shows ADRs in chronological order by number
305. Optionally displays quick summary of each ADR
31
32### Searching ADRs
33
341. Use `scripts/search-adrs.sh <search-term> [docs-path]` to search ADR content
352. Searches titles, context, decisions, and consequences sections
363. Returns matching ADRs with relevant snippets
374. Highlights search terms in results
385. Supports regex patterns for advanced searches
39
40### Updating ADR Index
41
421. Use `scripts/update-adr-index.sh [docs-path]` to regenerate ADR index
432. Scans all ADR files and extracts metadata
443. Generates comprehensive index with links to all ADRs
454. Groups ADRs by status (accepted, proposed, deprecated, superseded)
465. Updates `docs/adr/index.md` or specified path
47
48### Superseding ADRs
49
501. Use `scripts/supersede-adr.sh <old-adr-number> <new-title> [docs-path]` to supersede an ADR
512. Marks old ADR status as "superseded" with link to new ADR
523. Creates new ADR with reference to superseded ADR
534. Maintains decision history and rationale chain
545. Updates ADR index automatically
55
56## Available Scripts
57
58- **create-adr.sh**: Create new ADR with auto-numbering and proper format
59- **list-adrs.sh**: List all ADRs with filtering and status display
60- **search-adrs.sh**: Search ADR content with regex support
61- **update-adr-index.sh**: Regenerate comprehensive ADR index
62- **supersede-adr.sh**: Mark ADR as superseded and create replacement
63
64## Templates
65
66- **adr-template.md**: Michael Nygard ADR format with all sections
67- **adr-frontmatter.yaml**: YAML frontmatter structure for ADR metadata
68- **adr-index-template.md**: ADR index format with status groupings
69- **decision-matrix.md**: Decision comparison matrix for evaluating options
70- **consequences-template.md**: Detailed consequences documentation format
71
72## Examples
73
74See `examples/` directory for detailed usage examples:
75- `example-adr-technology.md` - Technology choice ADR (database selection)
76- `example-adr-architecture.md` - Architectural decision (microservices vs monolith)
77- `example-adr-security.md` - Security decision (authentication strategy)
78- `example-adr-superseded.md` - Superseded ADR with replacement links
79- `example-adr-index.md` - Complete ADR index with multiple entries
80
81## ADR Format (Michael Nygard)
82
83### Standard Sections
84
851. **Title**: Short noun phrase describing the decision
862. **Status**: proposed | accepted | deprecated | superseded
873. **Context**: Forces at play, including technological, political, social, and project constraints
884. **Decision**: Response to these forces, stated in full sentences with active voice
895. **Consequences**: Context after applying the decision, including positive, negative, and neutral effects
90
91### Frontmatter Fields
92
93```yaml
94---
95number: 0001
96title: Use PostgreSQL for Primary Database
97date: 2025-10-28
98status: accepted
99deciders: [Tech Lead, Backend Team]
100consulted: [DevOps, Security Team]
101informed: [Frontend Team, Product]
102---
103```
104
105### Numbering Convention
106
107- Use 4-digit zero-padded sequential numbers: 0001, 0002, 0003, etc.
108- Filename format: `NNNN-title-in-kebab-case.md`
109- Examples: `0001-use-postgresql.md`, `0042-adopt-microservices.md`
110- Never reuse numbers even if ADR is deleted
111
112## Decision Lifecycle
113
114### Status Transitions
115
1161. **proposed** → Initial state when ADR is created
1172. **accepted** → Decision has been approved and implemented
1183. **deprecated** → Decision is no longer recommended but still in use
1194. **superseded** → Decision has been replaced by a newer ADR
120
121### Superseding Workflow
122
1231. Identify ADR to supersede (e.g., ADR-0005)
1242. Run `supersede-adr.sh 0005 "New Decision Title"`
1253. Old ADR updated: status → "superseded", link added to new ADR
1264. New ADR created with reference to superseded ADR
1275. Index updated automatically
128
129## ADR Storage Structure
130
131Recommended directory structure:
132```
133docs/
134 adr/
135 index.md # Master index of all ADRs
136 0001-first-decision.md
137 0002-second-decision.md
138 0003-third-decision.md
139 templates/
140 adr-template.md # Template for new ADRs
141```
142
143## Decision Matrix Usage
144
145When evaluating multiple options:
1461. Use `templates/decision-matrix.md` to structure comparison
1472. Define criteria (performance, cost, maintainability, etc.)
1483. Score each option against criteria
1494. Weight criteria by importance
1505. Calculate weighted scores to guide decision
1516. Include completed matrix in ADR context section
152
153## Search Capabilities
154
155The search script supports:
156- **Full-text search**: Search all ADR content
157- **Regex patterns**: Use patterns like `"auth.*strategy"`
158- **Section-specific**: Search only in specific sections
159- **Status filtering**: Combine with status filter
160- **Date range**: Search ADRs within date range
161
162## Integration
163
164This skill is used by:
165- `planning:adr-create` command - Create new ADRs interactively
166- `planning:adr-list` command - List and filter ADRs
167- `planning:adr-supersede` command - Supersede existing ADRs
168- All planning agents requiring decision documentation
169
170## Best Practices
171
172### Writing Effective ADRs
173
1741. **Be specific**: Clearly state what is being decided
1752. **Document context**: Explain why the decision is needed
1763. **List alternatives**: Show what options were considered
1774. **Describe consequences**: Include positive and negative impacts
1785. **Use active voice**: "We will use PostgreSQL" not "PostgreSQL will be used"
179
180### When to Create ADRs
181
182- Choosing between architectural patterns (monolith vs microservices)
183- Selecting core technologies (databases, frameworks, languages)
184- Defining system boundaries and interfaces
185- Establishing security or authentication strategies
186- Setting coding standards or development practices
187
188### When NOT to Create ADRs
189
190- Routine bug fixes or minor refactoring
191- Implementing already-decided features
192- Temporary workarounds or experiments
193- Decisions that can be easily reversed
194- Team process decisions (use meeting notes instead)
195
196## Output Format
197
198All scripts output in consistent formats:
199- **list-adrs.sh**: Table format with columns: Number | Title | Status | Date
200- **search-adrs.sh**: List format with ADR number, title, and matching snippet
201- **create-adr.sh**: Outputs path to created ADR file
202- **supersede-adr.sh**: Outputs paths to both old and new ADR files
203
204## Requirements
205
206- ADRs must follow Michael Nygard format exactly
207- Sequential numbering must be maintained without gaps
208- Frontmatter must include all required fields
209- Status must be one of: proposed, accepted, deprecated, superseded
210- Superseded ADRs must link to replacement ADRs
211- Index must be updated after every ADR creation
212
213---
214
215**Purpose**: Comprehensive Architecture Decision Record management and documentation
216**Used by**: All planning agents and commands requiring decision tracking