agentleFS
ronniepinnellronniepinnell/casper/skills/door/SKILL.md

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
  1. Distinctive:

    The sort question: if this turns out wrong, what does undoing it cost in 6–12 months?

    line 26
  2. Distinctive:

    If you can't name the lock-in concretely, you don't understand the decision yet — that's the finding.

    line 60

≈ “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.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

/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 discussion

Procedure

  1. State the decision and the options. Two sentences max per option.
  2. 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.
  3. 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.
  4. 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.)
  5. Verdict line (goes in the commit / PR / decision log): DOOR: one-way | locked: <what> | escape: <cost> | gate: <signal> or DOOR: 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.

  1. Options: merge whole (one revertable merge commit) vs cherry-pick (clean history, but hand-splitting 13 commits invites conflicts and silent loss).
  2. Sort question: undoing a bad merge costs one git revert -m 1 — cheap.
  3. Lock-in enumerated: no schemas, no published IDs, no API contracts touched — nothing permanent.
  4. 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.
  5. 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-citation hook — one-way-door paths (schema/, migrations/, contracts) are exactly what you list in .claude/judgment.json protected 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 a second-order pass before committing.
  • /verdict — every door ruling is logged there.

Download now (ZIP)

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
What did you use it for? e.g. Reviewing pull requests in a Rails app

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.