Back to Skills

decision-records

Draft, promote, archive, and supersede ADR-style decision records (types are open: architecture, product, security, policy, legal, …) and keep INDEX.md and cross-links generated, via the bundled scripts/decisions.py tool. Use when creating or promoting decision drafts, superseding or archiving a decision, fixing a promotion breach, or running build, check, promote, rename-draft-id, or install.

Updated 8/14/2026

Security Assessment

Safe(96/100)
Security Score96/100

About decision-records

decision-records is a skill for managing ADR-style architecture (and product, security, policy, legal, and other open-typed) decision records via a bundled Python tool, `scripts/decisions.py`. It solves the recurring problem of keeping a repository's decision log consistent: minting stable IDs, generating a central INDEX.md, self-healing cross-links across all docs, and enforcing the lifecycle that separates draft candidates from finalized, held-firm decisions.

The tool exposes commands to build/regenerate the index (with `--relink`), check the tree in CI (exiting non-zero when stale), promote drafts into accepted records, rename draft IDs, and install itself into a repo via a symlink plus a pre-commit check. Records live under `docs/decisions/` in three stages — drafts (four-uppercase-letter mnemonic IDs), accepted (`accepted/<type>/` with a global zero-padded counter), and archived (retired, superseded or deprecated). Types are open lowercase slugs whose directories define the set. The convention treats accepted decisions as immutable except by supersession; on a superseding promotion the tool automatically retires the old record, flips its status, and records the forward/backward links. A key safety rule is enforced in software: an accepted decision may never reference a draft, and the tool refuses breaching promotions with a copy-paste fix.

It targets engineering and governance teams that want their decision history to stay authoritative and machine-validated rather than drifting. The skill is explicit that promotion and supersession are finalizing, semi-irreversible acts requiring the user's explicit human sign-off in the current turn — an unusually strong, safety-conscious guardrail against an agent finalizing decisions on its own.

FAQ

What commands does the tool provide?

`build` (regenerate INDEX.md and refresh links), `check` (CI-safe validation), `promote` (draft to accepted), `rename-draft-id`, and `install` (symlink plus pre-commit adoption in a repo).

How are records organized?

Under `docs/decisions/`: `drafts/` for WIP candidates, `accepted/<type>/` for finalized records with a global counter, and `archived/` for retired ones. Type is any lowercase slug you define.

Can an accepted decision be edited or reversed?

Accepted records are held firm — course changes require superseding with a new decision, not rewriting. Only decider-approved maintenance edits (clarity, staleness, consistency) are allowed.

Does the skill promote drafts automatically?

No. Promotion and supersession require the user's explicit go-ahead in the current turn; the skill instructs the agent never to infer approval from an adjacent choice.

How do cross-references stay correct when files move?

You write a bare record ID as inline code and never hand-author a path; `build --relink` generates and self-heals every link across all docs.

All Files

10 files
scripts/decisions.py58.9 KB
View
templates/README.md4.0 KB
View
templates/_template.md1.7 KB
View
tests/test_decisions.py35.6 KB
View
references/promotion.md4.6 KB
View
templates/AGENTS.md2.1 KB
View
SKILL.md6.4 KB
View
tests/conftest.py0.3 KB
View
requirements-dev.txt0.1 KB
View
templates/drafts/_template.md1.7 KB
View

Install decision-records

Download and extract the skill files to your .claude/skills/ directory.

Quick Setup:

  1. Copy the skill folder to .claude/skills/
  2. Claude will automatically detect and use the skill

Repository

skymavis/skills