door
Skill1 starsChanged 4 months agoMITView on GitHub
One-way-door decision triage. Sorts any decision into reversible (just pick) vs irreversible (slow down, enumerate lock-in). Use before schema changes, ID formats, API contracts, auth models, naming, tech-stack picks, or whenever a choice feels weighty.
The file
We split this skill into the rules it gives an agent
2 rules. About 0 are common, 2 are distinctive, and 0 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈2
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 26
The sort question: if this turns out wrong, what does undoing it cost in 6–12 months?
- Distinctive: line 60
If you can't name the lock-in concretely, you don't understand the decision yet — that's the finding.
≈ “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
/door — Is This Decision a One-Way Door?
Most disasters are irreversible choices made casually, and most wasted time is reversible choices made ceremoniously. This skill sorts them — then spends effort only where it can't be refunded.
Invocation
/door uuid vs bigint primary keys
/door # triage the decision currently under discussionProcedure
- State the decision and the options. Two sentences max per option.
- The sort question: if this turns out wrong, what does undoing it cost in 6–12 months? Answer in concrete units: a rename, a migration, a rewrite, a breaking API change for N consumers, a data backfill.
- TWO-WAY DOOR (cheap to reverse) →
- Pick now. Prefer the boring option. Write one line saying why. Move on.
- Explicitly banned: further research, option matrices, asking for approval.
- ONE-WAY DOOR (expensive/impossible to reverse) → answer all five, in writing:
- Lock-in: exactly what becomes unchangeable (formats, contracts, published IDs, wire protocols, stored data shapes)?
- Who pays: which future person/system eats the cost if wrong, and when?
- Escape hatch: what would migration off this cost? Can a seam be added NOW to make it cheaper (adapter layer, versioned field, opaque ID)?
- Shrink the door: can any part be deferred or made reversible? The best one-way-door answer is often "make it a two-way door first."
- Kill-gate: what measurable signal, by when, tells us we chose wrong?
(Hand this to
/gate.)
- Verdict line (goes in the commit / PR / decision log):
DOOR: one-way | locked: <what> | escape: <cost> | gate: <signal>orDOOR: two-way | picked <X> because <one clause>.
Disagreement check (one-way verdicts)
For ONE-WAY doors, get a second, independent answer before committing: dispatch
the same decision (options + lock-in facts, no shared reasoning) to a different
model if one is available, otherwise an independent subagent with
no shared context — and diff the two verdicts. Agreement → proceed. Disagreement
is a mechanical proxy for "this is hard": queue it via /escalate instead of
deciding inline.
Rules
- If you can't name the lock-in concretely, you don't understand the decision yet — that's the finding; go read the code/spec first.
- Deciding fast on two-way doors is not recklessness, it's the point.
- A one-way door decided under time pressure must at minimum get the escape-hatch seam, even if analysis is cut short.
Worked example (real ruling, 2026-07-09 — reproduced as a static transcript)
Decision: merge a PR wholesale vs cherry-pick only the target commits. The branch carried unrelated feature work alongside the target changes.
- Options: merge whole (one revertable merge commit) vs cherry-pick (clean history, but hand-splitting 13 commits invites conflicts and silent loss).
- Sort question: undoing a bad merge costs one
git revert -m 1— cheap. - Lock-in enumerated: no schemas, no published IDs, no API contracts touched — nothing permanent.
- The stowaway work wasn't taken on faith: its commit trail (13 deliberate commits, including its own fix rounds) showed it was built and corrected, not dumped.
- Merged whole, no option matrix, moved on.
DOOR: two-way | picked wholesale merge because a merge commit is one revert away and the stowaway work's own commit trail verified it
Composes with
/gate— step 4's kill-gate is authored there./premortem— run it on any one-way door before committing.spec-citationhook — one-way-door paths (schema/, migrations/, contracts) are exactly what you list in.claude/judgment.jsonprotected globs./precedent— run it first; a banked ruling can settle the door outright./escalate— one-way doors with no precedent, or a failed disagreement check, queue there instead of being decided inline./think— one-way doors deserve asecond-orderpass before committing./verdict— every door ruling is logged there.
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.

