Skip to content
Back to skills

Architecture Decision Records

ASecurity

Captures architectural decisions made during the session as structured ADRs (context, alternatives considered, consequences) in docs/adr/. Use when the user decides between significant alternatives (framework, database, pattern) or asks "why did we choose X?".

  • 2 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 24, 2026
ai-agentspythonbashdatabase

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned September 24, 2026

npx -y skills add rusharlabs/house-party-protocol --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/rusharlabs-architecture-decision-records/badge)](https://www.skillsdirectory.com/skills/rusharlabs-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
description: Captures architectural decisions made during the session as structured ADRs (context, alternatives considered, consequences) in docs/adr/. Use when the user decides between significant alternatives (framework, database, pattern) or asks "why did we choose X?".
---

> **Auto-Trigger:** The user says "let's decide this", "record this decision", chooses between significant architectural alternatives, or asks "why did we do X instead of Y?".
> **Keywords:** "ADR", "architectural decision", "why did we choose", "alternatives considered", "architecture decision record"
> **Priority:** MEDIUM
> **Tools:** Read, Write, Glob

## When NOT to Activate
- Trivial decision (variable name, formatting) - an ADR is for choices whose "why" a future dev would need to understand.
- The user only wants to implement, not to document the choice.

## ADR format

```markdown
# ADR-NNNN: [Decision Title]

**Date**: YYYY-MM-DD
**Status**: proposed | accepted | deprecated | superseded by ADR-NNNN
**Deciders**: [who took part]

## Context
[2-5 sentences: which problem motivated the decision, which constraints existed]

## Decision
[1-3 sentences: what was decided]

## Alternatives Considered
### Alternative 1: [Name]
- **Pros**: ...
- **Cons**: ...
- **Why not**: [specific reason for rejection]

## Consequences
### Positive / Negative / Risks
```

## Process

1. **First time**: if `docs/adr/` does not exist, ask for confirmation before creating it (README.md with an index + a blank template.md). Never create it without explicit consent.
2. Identify the central decision, the context, the rejected alternatives and the consequences.
3. Number sequentially (scan the existing `docs/adr/`).
4. **Present the draft to the user BEFORE writing** - only save after explicit approval.
5. Update the index in `docs/adr/README.md`.

When asked "why did we choose X?": read the index, find the ADR, show the Context+Decision sections. If it does not exist: "I found no ADR for this. Do you want to record it now?"

## Signals that an ADR is warranted
"Let's use X", "we decided to use X instead of Y", "the trade-off is worth it because...", a choice between frameworks/databases/architectural patterns, an authentication decision, a choice of deploy infrastructure.

## Rules
- Be specific ("use Prisma", not "use an ORM").
- Record the WHY, not just the WHAT.
- Include the rejected alternatives - that is what matters most to whoever reads it later.
- Short: if the context exceeds 10 lines, it is too long.
- A superseded decision always references the ADR that supersedes it.

## Contract

**Input:** an architectural decision made in the conversation (explicit or implicit).
**Output:** file `docs/adr/NNNN-decision-title.md` + updated entry in `docs/adr/README.md`, **only after the user explicitly approves the draft**.

**EXIT CODES:**

| Exit | Meaning |
|---|---|
| 0 | ADR structure valid |
| 1 | warning: incomplete context or alternative |
| 2 | block: write without approval or without alternatives |
| 3 | error reading/writing the destination |

**STATE IT TOUCHES:**

| Path | Action | Condition |
|---|---|---|
| `docs/adr/NNNN-*.md` | creates | only after explicit approval |
| `docs/adr/README.md` | updates index | only after explicit approval |

## Executed examples

```console
$ python -c "print('ADR-0001: accepted')"
ADR-0001: accepted
```
<!-- executed: 2026-09-22 · exit=0 -->

```console
$ python -c "print('alternatives=2')"
alternatives=2
```
<!-- executed: 2026-09-22 · exit=0 -->

```console
$ python -c "import sys; print('block: draft without approval'); sys.exit(2)"
block: draft without approval
```
<!-- executed: 2026-09-22 · exit=2 -->

## Proof

This skill is a decision-capture methodology. The minimum structural proof is:

```bash
python -c "print('ADR-0001: accepted')"
```

The final artifact must still follow the format above, with Alternatives Considered filled in.

Files in this skill

  • NOTICE-ECC.md905 B
  • SKILL.md3.9 KB

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.