Skip to content
Back to skills

Architecture Decision Records

ASecurity

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.

  • 71 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added May 27, 2026
data-aitypescriptgobashsqlreactawsapidatabasefrontendsecurity

Works with

  • api

Security analysis

A100/100

Scanned May 27, 2026

npx -y skills add tranhieutt/software_development_department --skill architecture-decision-records --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Architecture Decision Records?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Architecture Decision Records
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/tranhieutt-architecture-decision-records/badge)](https://www.skillsdirectory.com/skills/tranhieutt-architecture-decision-records)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
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
```

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.