Skip to content
Back to skills

Decision Records

ASecurity

Keeps a project's decision log: short decision records (ADRs) in a decisions/ directory with an indexed README linked from AGENTS.md or CLAUDE.md. Use when the user settles a trade-off, asks to record or write up a decision, asks why something was chosen, mentions ADRs or architecture decisions, or when a project has no decision log yet and a structural choice is being made. Also use to adopt or tidy an existing docs/adr or docs/decisions folder.

  • 2 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added October 24, 2026
ai-agentsgogitdatabase

Works with

  • cli

Security analysis

A100/100

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

Scanned November 11, 2026

npx -y skills add theultimate-dev/skills --skill decision-records --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Decision Records?

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

Security grade badge for Decision Records
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/theultimate-dev-decision-records/badge)](https://www.skillsdirectory.com/skills/theultimate-dev-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: decision-records
description: "Keeps a project's decision log: short decision records (ADRs) in a decisions/ directory with an indexed README linked from AGENTS.md or CLAUDE.md. Use when the user settles a trade-off, asks to record or write up a decision, asks why something was chosen, mentions ADRs or architecture decisions, or when a project has no decision log yet and a structural choice is being made. Also use to adopt or tidy an existing docs/adr or docs/decisions folder."
license: MIT
---

# Decision records

A decision record captures one decision, why it was made, and what it costs, in a page a busy engineer reads in five minutes. The log of records is how a project remembers its own reasoning, and how an agent opening the project later avoids undoing a choice whose reason it cannot see.

This skill maintains that log: it creates one where none exists, writes new records, keeps the index in sync, and makes sure agents find it through the project's `AGENTS.md` or `CLAUDE.md`.

## What a good log looks like

```
decisions/
├── README.md                     index: number, title, status, one-line summary
├── 0001-record-decisions.md      the first record is the decision to keep records
├── 0002-kebab-title.md
└── ...
```

Each record: `# NNNN: Title`, then `- Status:` and `- Date:` lines, then Context, Options, Decision, Consequences. Template in `templates/decision-record.md`; writing guidance in `references/writing-a-record.md`.

Statuses: `proposed`, `accepted`, `deprecated`, `superseded`. The decision text of an accepted record never changes; a new record supersedes it and both link to each other. Numbers are never reused or renumbered.

## Workflow

### 1. Find out what state the project is in

Look, in this order:

- `decisions/` with a `README.md` index: the log exists in this skill's shape. Go to step 2.
- `docs/adr/`, `docs/decisions/`, `adr/`, `architecture/decisions/`, files named `ADR-*.md`, an `adr-tools` `.adr-dir` file or a `log4brains` config: the project already keeps records another way. Read `references/existing-adrs.md` before touching anything. The rule is to adopt in place, never to move or renumber.
- Nothing: bootstrap. Read `references/bootstrapping.md`. It covers the directory, the index, record 0001, and the section in `AGENTS.md` or `CLAUDE.md`. Create `AGENTS.md` if the project has neither.

### 2. Confirm there is a decision to record

Record a decision the user has made, or is making now with you. Not one you infer. If the conversation settled a trade-off ("let's go with Postgres", "we keep the monorepo"), name it back in one sentence and ask whether to record it. If the user asks for a record on something still open, write it with `Status: proposed` and say so.

Not every choice deserves a record. The test: would a competent newcomer, or an agent, plausibly undo or re-argue this without knowing the reason? Library and platform picks, data model shapes, process rules, things rejected on purpose: yes. Formatting preferences and config values nobody debated: no.

### 3. Draft the record

Use the template. Next free number, four digits, zero-padded. Filename `NNNN-kebab-title.md`. Title states the decision ("Use Postgres for the event store"), not the topic ("Database").

Context states the forces without arguing. Options list every option seriously considered, the chosen one included, each with the reason it won or lost in a line or two. Decision states what was chosen and the concrete rules that follow. Consequences list what gets easier, what gets harder, and what must now be done. One page, two at most. `references/writing-a-record.md` has the detail and the common mistakes.

Show the draft before writing it to disk when the decision is being made in this conversation. Write directly when the user asked you to record something already agreed.

### 4. Update the index

Add a row to `decisions/README.md`: number linked to the file, title, status, one-line summary. Keep rows in numeric order. When the new record supersedes an older one: set the older record's status to `superseded`, add `- Superseded by:` with a relative link to the new record directly under its Date line (before `- Deciders:`), give the new record `- Supersedes:` with a link in the same place, and update both index rows, the old summary gaining a clause that names its successor.

### 5. Make sure agents will find it

`AGENTS.md`, or `CLAUDE.md` when that is what the project uses, links `decisions/README.md` with a plain markdown link and one sentence: read the index before changing structure or conventions. A link, not an import, so the index loads when a task needs it rather than in every session. If the section is missing, add it; the snippet is in `references/bootstrapping.md`.

### 6. Report

Give the user the record number and path, the index row, and any record whose status changed. If the decision implies follow-up work, name it.

## When you cannot write files

In a chat client without a filesystem, or without the repository at hand, produce the complete record and the index row as Markdown for the user to paste, and say plainly that nothing was written. Never report a record as created when it was not.

## Rules worth keeping in mind

- One decision per record. A draft that contains two decisions gets split.
- Never edit the decision text of an accepted record, never renumber, never delete. Supersede. Typos and dead links may be fixed.
- Never record a decision the user has not made. `proposed` exists for that.
- Write for the reader, not for completeness. Cut whatever the reader does not need to understand the choice.
- Respect an existing convention. A project on MADR stays on MADR; this skill adds the index and the `AGENTS.md` link and follows the house template.

## References

| Read | When |
|---|---|
| `references/bootstrapping.md` | The project has no decision log, or has one without an index or without the `AGENTS.md` link |
| `references/writing-a-record.md` | Drafting any record, choosing a status, superseding |
| `references/existing-adrs.md` | The project already keeps ADRs in another folder, format, or tool |
| `templates/decision-record.md` | The file to copy for every new record |

Files in this skill

  • SKILL.md6 KB
  • references/bootstrapping.md3.8 KB
  • references/existing-adrs.md3.2 KB
  • references/writing-a-record.md3.7 KB
  • templates/decision-record.md849 B

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.

View all in ai-agents →

Comments

Loading comments…

Newsletter

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