Manages the ADR (Architecture Decision Record) registry. Use when recording tech-stack choices, design patterns, or infrastructure decisions with context, alternatives, and rationale. Supports listing, searching, or creating formal ADR documents.
Scanned 5/27/2026
Install via CLI
openskills install tranhieutt/software_development_department---
name: architecture-decision-records
type: workflow
description: "Manages the ADR (Architecture Decision Record) registry. Use when recording tech-stack choices, design patterns, or infrastructure decisions with context, alternatives, and rationale. Supports listing, searching, or creating formal ADR documents."
context: fork
agent: technical-director
allowed-tools: Read, Glob, Grep, Write, Bash
argument-hint: "[title or decision topic]"
user-invocable: true
effort: 4
when_to_use: "When needing to make a formal technology decision and record the underlying reasoning in docs/internal/adr/."
---
# Architecture Decision Records
## Workflow Protocol
1. **Determine the next ADR number** by scanning `docs/internal/adr/` for existing ADRs.
2. **Run the decision-ledger read gate** before drafting:
`/trace-history --risk High --last 20`.
Include relevant prior decisions, or state that no relevant high-risk prior
decision was found.
3. **Gather context** by reading related code and existing ADRs.
4. **Guide the user through the decision** by asking clarifying questions if the title alone is insufficient.
5. **Generate the ADR** following the template below.
6. **Save the ADR** to `docs/internal/adr/ADR-[NNN]-[slug].md`.
7. **Update the Index** Table in `docs/technical/DECISIONS.md`.
## When to write an ADR vs skip
| Write ADR | Skip ADR |
|---|---|
| New framework/database adoption | Minor version upgrades |
| API design patterns | Bug fixes |
| Security architecture | Implementation details |
| Integration patterns | Routine maintenance |
## ADR lifecycle
```
Proposed → Accepted → Deprecated → Superseded
↓
Rejected
```
## Template (MADR format — use this)
```markdown
# ADR-NNN: [Title]
## Status
Accepted | Proposed | Deprecated | Superseded by ADR-NNN
## Context
[Problem statement, current situation, constraints, scale]
## Prior Decision Check
[Result of `/trace-history --risk High --last 20`; cite relevant prior entries
or state "No relevant prior high-risk decisions found."]
## Decision Drivers
- [Must/Should/Could requirement]
## Considered Options
### Option 1: [Name] — [one-line summary]
Pros: ... | Cons: ...
### Option 2: [Name]
Pros: ... | Cons: ...
## Decision
We will use **[Option N]** because [key rationale].
## Consequences
**Positive:** ...
**Negative:** ...
**Risks:** ... Mitigation: ...
## Related ADRs
- ADR-NNN: [relationship]
```
## Quick examples
**Lightweight ADR (for clear-cut decisions):**
```markdown
# ADR-0012: Adopt TypeScript for Frontend
**Status**: Accepted | **Date**: 2024-01-15 | **Deciders**: @alice, @bob
## Context
50+ React components with prop-type-mismatch bugs. PropTypes are runtime-only.
## Decision
TypeScript for all new frontend code. Migrate incrementally with `allowJs: true`.
## Consequences
Good: Compile-time errors, better IDE support.
Bad: Learning curve, initial slowdown.
```
**Y-Statement (for concise formal record):**
```markdown
In the context of **building a microservices architecture**,
facing **need for centralized auth and rate limiting**,
we decided for **Kong Gateway**
and against **AWS API Gateway and custom Nginx**,
to achieve **vendor independence and plugin extensibility**,
accepting **we manage Kong infrastructure ourselves**.
```
## File structure
```
docs/internal/adr/
├── ADR-0001-use-postgresql.md
└── ADR-0003-mongodb-deprecated.md # [SUPERSEDED by ADR-0020]
```
## Index table (maintain in docs/technical/DECISIONS.md)
| ADR | Title | Status | Date |
|---|---|---|---|
| 0001 | Use PostgreSQL | Accepted | 2024-01-10 |
| 0003 | MongoDB for profiles | Deprecated | 2023-06-15 |
## Key rules
- **Never modify accepted ADRs** — write a new one to supersede
- **Write early** — before implementation starts, not after
- **Max 1-2 pages** — if longer, decision scope is too broad
- **State real cons** — an ADR without honest tradeoffs has no value
- **Update status** — mark deprecated when superseded; link the new ADR
## Automation
```bash
# Custom repo path:
# 1. Create docs/internal/adr/ADR-[NNN]-[slug].md
# 2. Append one summary row and one summary entry to docs/technical/DECISIONS.md
# 3. Do not overwrite docs/technical/DECISIONS.md; it is append-only
```
No comments yet. Be the first to comment!