decision-records
Skill5 starsChanged 45 days agoMITView on GitHub
A records directory is a repository's durable registry for decisions and implementation plans. A record explains what the team decided, why, and what follows from that decision. Records are historical evidence: they are appended to and amended, not rewritten. Do not use a record for a routine code change, a temporary task, a release note, or an investigation without a durable outcome. 1. Look for an existing registry, in this order: docs/records/, docs/adr/, docs/decisions/, adr/, decisions/, or any directory that…
8 other projects use a version of this.
Adopted by
Most recently taken up by
- axodouble/skillstheir own version, first seen Nov 8, 2026
- zxyycom/skillstheir own version, first seen Nov 8, 2026
- musterd-io/musterdtheir own version, first seen Nov 1, 2026
- swestfall21/claude-skillstheir own version, first seen Oct 15, 2026
- theultimate-dev/skillstheir own version, first seen Oct 11, 2026
- skymavis/skillstheir own version, first seen Oct 11, 2026
Other versions8 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 8
- kellerlabs/homeracker★ 553same name
- kellervater/homeracker★ 553same name
- theultimate-dev/skills★ 2same name
- zxyycom/skills★ 2same name
- musterd-io/musterd★ 1same name
- skymavis/skills★ 1same name
- axodouble/skills★ 0same name
- swestfall21/claude-skills★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository15 other files it gives its agents.
- AGENTS.mdAGENTS.md
- development/AGENTS.mdAGENTS.md
- cli-designSkill
- codebase-landing-copySkill
- context-file-tuneupSkill
- course-notesSkill
- feature-mapSkill
- github-pr-fixupSkill
- github-self-hosted-runnerSkill
- oss-marketingSkill
- oss-repo-readinessSkill
- session-log-auditSkill
- technical-manualSkill
- verify-bugSkill
- whiteboardSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
34 rules. 0 are common, 25 are distinctive, and 9 are very specific to this project.
0
Common
Most of the 7 edited versions we read keep these.
25
Distinctive
This author's own choices. Worth a look.
9
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 20
Do not use a record for a routine code change, a temporary task, a release note, or an investigation without a durable outcome.
- Very specific: line 25
Look for an existing registry, in this order: docs/records/, docs/adr/, docs/decisions/, adr/, decisions/, or any directory that contains a …
- Distinctive: line 29
If a registry exists, its README.md is the contract.
- Very specific: line 32
If no registry exists, ask the user whether to create one.
- Distinctive: line 38
Read the registry README.md completely.
- Distinctive: line 39
Read the records that relate to the work.
- Distinctive: line 40
Read the product, design, or architecture source that defines the facts.
- Distinctive: line 41
If a record conflicts with newer evidence, preserve the record's history and record the correction or new decision.
- Distinctive: line 44
Do not copy a legacy record's errors into a new record.
- Distinctive: line 49
Create a record only after the decision or plan has a clear scope.
- Distinctive: line 55
Add the exact frontmatter contract from the registry README.
- Very specific: line 57
Use kind: decision for a durable choice.
- Distinctive: line 63
Start with the six required headings, in this order:
- Distinctive: line 70
Add the new row to the registry table in the README.
- Distinctive: line 77
Use this when the registry README does not define its own:
- Distinctive: line 95
Write factual, direct prose in plain English.
- Distinctive: line 140
Use relative links. Keep the frontmatter ID lists in the same order as the links in this section.
- Very specific: line 150
Add a dated ## Amendment (YYYY-MM-DD) — <short title> for a later decision, correction, or material scope change.
- Very specific: line 152
Update ## Validation / Current state when new evidence changes the status.
- Very specific: line 153
Create a new record when a decision or plan is fully replaced.
- Very specific: line 156
Use related, not supersedes, for a dependency, coordinated work, or a partial refinement.
- Distinctive: line 158
Never silently rewrite history to make an old decision look current.
- Distinctive: line 165
Default vocabulary, unless the registry README defines its own:
- Very specific: line 175
Only when the user agrees to create one.
- Distinctive: line 185
Keep the README short. It is a contract, not a guide.
- Distinctive: line 191
Make sure that the new ID is unique and matches the filename.
- Distinctive: line 192
Make sure that the frontmatter has every required key and valid values.
- Distinctive: line 193
Make sure that the required headings exist in the required order.
- Distinctive: line 194
Make sure that every linked or listed record ID exists.
- Very specific: line 195
Make sure that supersedes means full replacement.
- Distinctive: line 196
Make sure that the registry row and frontmatter agree.
- Distinctive: line 197
Read the record as a future maintainer.
- Distinctive: line 199
Run git diff --check. If the repo has a Markdown linter or link checker, run it on the changed files.
- Distinctive: line 202
Do not run the app build or test suite for a records-only change.
“Common” is measured: kept by at least 6 in 10 of the 7 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Project records
A records directory is a repository's durable registry for decisions and implementation plans. A record explains what the team decided, why, and what follows from that decision. Records are historical evidence: they are appended to and amended, not rewritten.
Do not use a record for a routine code change, a temporary task, a release note, or an investigation without a durable outcome.
Find the records directory
- Look for an existing registry, in this order:
docs/records/,docs/adr/,docs/decisions/,adr/,decisions/, or any directory that contains aREADME.mdwith a table of numbered records. Check the project'sREADME.md,CONTRIBUTING.md,AGENTS.md, orCLAUDE.mdfor a pointer. - If a registry exists, its
README.mdis the contract. It is the authority for ID format, filename pattern, frontmatter, status vocabulary, and required headings. Follow it even where it differs from the defaults below. - If no registry exists, ask the user whether to create one. If they agree,
create
docs/records/README.mdfrom the template in "Bootstrap a registry" before writing the first record.
Read first
- Read the registry
README.mdcompletely. - Read the records that relate to the work.
- Read the product, design, or architecture source that defines the facts.
- If a record conflicts with newer evidence, preserve the record's history and record the correction or new decision. Do not edit the old text in place.
Do not copy a legacy record's errors into a new record. When a legacy record and the registry contract disagree, the contract wins.
Create a record
Create a record only after the decision or plan has a clear scope. Ask for missing product or technical facts before you invent them.
- Find the next unused ID in the registry table. Default format is a global
three-digit number (
001,002, ...). Never reuse or skip an ID. - Name the file
<id>-<short-kebab-case-title>.md. - Add the exact frontmatter contract from the registry README. Keep every list key, even when the list is empty.
- Use
kind: decisionfor a durable choice. Usekind: planfor committed, outcome-based work. - New decisions start as
proposeduntil accepted. New plans start asplanneduntil work begins. Use another valid status only when the current state differs. - Set
dateandupdatedto the creation date. Use ISO dates (YYYY-MM-DD). - Start with the six required headings, in this order:
## Intent## Context## Record## Consequences## Validation / Current state## Related records
- Add the new row to the registry table in the README.
The table row is part of the change. Keep its ID, title, kind, status, date, supersession, and related-record fields aligned with the record's frontmatter.
Default frontmatter
Use this when the registry README does not define its own:
---
id: 007
title: Short title
kind: decision # decision | plan
status: proposed # see "Status rules"
date: 2026-09-13
updated: 2026-09-13
supersedes: []
superseded_by: []
related: []
---Write the sections
Write factual, direct prose in plain English. Use the project's own terms, matching the related records. Prefer short sentences and concrete nouns over abstractions. If the repo has a writing-style skill or guide, apply it.
Intent
State the user or project outcome. State what the record makes possible or protects. Do not repeat implementation detail here.
Context
State the facts, constraints, research, risks, and alternatives that shaped the choice. Link evidence (issues, PRs, benchmarks, docs) when it is useful. Mark assumptions and open questions as such.
Record
State the decision or plan precisely. Use numbered items when the contract has several rules. Name scope boundaries and required behavior. For a plan, make the desired outcome and completion evidence clear.
Consequences
State costs, tradeoffs, follow-up work, and intentionally deferred work. Do not present a consequence as a requirement unless the record commits to it.
Validation / Current state
State the current, observable status. For completed work, name the evidence: tests, checks, measurements, or human acceptance. For proposed or active work, state what remains. Do not claim that work shipped or passed unless the evidence exists.
Related records
Use this form:
**Supersedes:** None.
**Related:**
- [005 — Short title of record 005](005-short-title.md)Use relative links. Keep the frontmatter ID lists in the same order as the links in this section.
Update a record
A record is historical evidence. Preserve its ID, filename, creation date, and past decisions.
- Change
updatedonly for a substantive content change. - Change
statusonly to a value valid for the record kind. - Add a dated
## Amendment (YYYY-MM-DD) — <short title>for a later decision, correction, or material scope change. Put it after the existing material. - Update
## Validation / Current statewhen new evidence changes the status. - Create a new record when a decision or plan is fully replaced. Put the old IDs
in the new record's
supersedes, set the old record's status tosupersededand itssuperseded_by, and update the registry rows. - Use
related, notsupersedes, for a dependency, coordinated work, or a partial refinement. - Never silently rewrite history to make an old decision look current.
A superseded record stays in the registry. Do not renumber, delete, or reuse its ID.
Status rules
Default vocabulary, unless the registry README defines its own:
- Decisions:
proposed,accepted,superseded,rejected. - Plans:
planned,active,completed,blocked,superseded,rejected.
A status tells the truth about the record. It does not predict the desired outcome.
Bootstrap a registry
Only when the user agrees to create one. Write docs/records/README.md with:
- A one-paragraph statement of what belongs in a record and what does not.
- The ID and filename pattern.
- The frontmatter contract (copy the default above).
- The status vocabulary per kind.
- The six required headings in order.
- An empty registry table with these columns:
ID | Title | Kind | Status | Date | Supersedes | Related.
Keep the README short. It is a contract, not a guide.
Final review
Before you finish:
- Make sure that the new ID is unique and matches the filename.
- Make sure that the frontmatter has every required key and valid values.
- Make sure that the required headings exist in the required order.
- Make sure that every linked or listed record ID exists.
- Make sure that
supersedesmeans full replacement. - Make sure that the registry row and frontmatter agree.
- Read the record as a future maintainer. Remove vague promises and unsupported claims.
- Run
git diff --check. If the repo has a Markdown linter or link checker, run it on the changed files.
Do not run the app build or test suite for a records-only change.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

