decision-archaeology
Skill0 starsChanged 19 days agoMITView on GitHub
Trace a piece of code, config, or architecture back to the decision that produced it — who decided, when, what was rejected, and why. Use when someone asks "why is this like this?", "why did we pick X over Y?", "can I change this?", or before refactoring something that looks wrong but may be load-bearing.
In this repository4 other files it gives its agents.
- action-item-auditSkill
- catch-me-upSkill
- commitment-trackerSkill
- decision-recordSkill
The file
We split this skill into the rules it gives an agent
6 rules. About 0 are common, 6 are distinctive, and 0 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈6
Distinctive · estimate
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 19
Do not use this to justify a decision after the fact.
- Distinctive: line 32
Before searching anywhere else, read the code and its comments.
- Distinctive: line 55
If a Wisprnote MCP server is connected, this is the highest-value step — it reaches conversations that were never written down:
- Distinctive: line 70
Write up what you found in this shape:
- Distinctive: line 94
Separate evidence from inference: If you are guessing, label it.
- Distinctive: line 100
Never present a reconstruction as a direct quote unless you actually have the words.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Decision archaeology
Code tells you what. It almost never tells you why. The why was decided out loud, in a meeting, and then lost. This skill reconstructs it.
When to use this
- Someone asks why something is built the way it is
- A change looks obviously correct and you want to know what it breaks
- Onboarding: understanding the shape of a system
- A past decision is being re-litigated and nobody remembers the original reasoning
Do not use this to justify a decision after the fact. You are reconstructing what happened, not building a case.
Procedure
1. Fix the target precisely
Get the narrowest thing you can name: a file, a function, a config value, a dependency,
a schema column. "Why is our auth like this" is too broad — narrow to
src/auth/session.ts:refreshToken or SESSION_TTL=900.
2. Read the artifact itself first
Before searching anywhere else, read the code and its comments. A surprising share of "why" questions are answered by a comment three lines up that nobody read.
3. Walk the git history
git log -L :<function>:<file> # history of one function
git log -S '<exact string>' --oneline # commits that added/removed a value
git log --follow -p -- <file> # full history including renamesFor each candidate commit, read the full message body, not the subject. Then find the PR:
gh pr list --search "<commit sha>" --state all
gh pr view <number> --commentsPR review threads are where reasoning usually lives.
4. Search the meeting record
If a Wisprnote MCP server is connected, this is the highest-value step — it reaches conversations that were never written down:
search_meetingswith the feature name, the rejected alternative, and the error or constraint that forced the choice. Search all three; they surface different meetings.get_meetingon each hit, and read the decisions and transcription sections, not just the summary. Summaries compress away the reasoning.get_knowledge_graphorget_meeting_knowledgeto find meetings linked to the same topic that your keyword search missed.
Without Wisprnote, substitute whatever written record exists: ADRs in docs/, RFCs, the
issue tracker, design docs, Slack exports. Say which sources you searched.
5. Reconstruct and report
Write up what you found in this shape:
## <the thing>
**Decision:** <what was chosen, stated plainly>
**When:** <date> — <where it was decided>
**Decided by:** <names, if known>
**Why:** <the reasoning, in their words where you have them>
**Rejected alternatives:**
- <option> — rejected because <reason>
**Constraints at the time:** <what was true then that may not be true now>
**Evidence:**
- <commit / PR / meeting, each with an identifier someone can open>
**Confidence:** high | medium | low — <what is inferred vs. documented>Guardrails
- Separate evidence from inference. If you are guessing, label it. "No record found; the commit message suggests X" is a useful answer. A confident fabrication is not.
- Say when you find nothing. An honest "no decision record exists for this" tells the reader they are free to change it — which is itself the answer they needed.
- Constraints expire. A decision that was right under a constraint that no longer holds is not binding. Always report the constraints alongside the decision.
- Never present a reconstruction as a direct quote unless you actually have the words.
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.

