Before you commit to an architecture decision, future-regret puts you in a chair.
It plays future-you, six months after the commit, and interrogates the decision one
question at a time until the weak hinge is exposed. Then it files a dated dispatch
from the fire that decision started, the symptoms to watch for, and the cheapest way
out, and drops it in your repo as docs/regrets/<date>.md.
It is a Claude Code skill. The whole product is one markdown file.
"For our analytics feature we're dumping all events into one Postgres table with a single JSONB
datacolumn. GIN index, query with->>. Building it today. Sound good?"
Without the skill, the assistant lists a few tradeoffs and then offers to build it:
Promote the fields you filter on to real columns, keep JSONB for the rest. Want me to sketch the hybrid table so you can start today?
With the skill, future-you will not let you leave the chair:
🕰️ Future You: reporting back from six months after this commit
❓ Open: 3 ✅ Nailed: 0
You're putting every event in one JSONB column "so it's simpler".
Simpler for who, you writing the insert today, or me in November
debugging why the dashboard times out?
› you: the writer today. we just need it flexible
🕰️ "Flexible" isn't a query. Name the ONE thing you'll SELECT most.
❓ Open: 3 ✅ Nailed: 0
Once it corners you, the dispatch lands:
──────────────────────────────────────────────
📮 DISPATCH: 14 November 2026
──────────────────────────────────────────────
The events table crossed 40M rows and the dashboard times out at 30s.
EXPLAIN: Seq Scan. The GIN index you committed today has never once
served these queries, because GIN does not answer `->>`. "No migrations"
cost you the one migration you could not schedule.
Verdict: ⚠️ HEDGE (high)
→ docs/regrets/2026-07-14-analytics-single-jsonb-column.md written
Every line of that fire is a real, sourced Postgres failure mode, not a scary story. That is the rule the skill runs on: dramatize a verified mechanism, or delete the dispatch.
In Claude Code:
/plugin marketplace add acost1a/future-regret
/plugin install future-regret@future-regret
Anywhere else that reads markdown skills:
git clone https://github.com/acost1a/future-regret
cp -r future-regret/skills/future-regret ~/.claude/skills/Then start a session and run /future-regret, or just pitch a decision and it
triggers itself.
- Restate the decision in one sentence. If it is trivially reversible, it ships you on your way.
- Interrogate. One sharp question at a time. It presses on hand-wavy answers and will not fake comfort to end early.
- Evidence pass. It verifies the failure mode against real docs and known limits. Every claim gets a link.
- Dispatch. One dated fire from the future: the mechanism, the commit that lit it, the cost.
- Regret-triggers. The exact symptoms in your codebase or metrics that mean the fire is coming.
- Verdict. One of three, plus the cheapest change that flips it.
| Badge | Meaning |
|---|---|
| 🔥 REGRET | One-way door, no cheap escape. Future-you is furious. Don't. |
| Fine if you add one cheap escape hatch today. It names the hatch. | |
| ✅ SHIP | Reversible or sound. Future-you thanks you. Go. |
Every audit leaves a file at docs/regrets/<date>-<slug>.md: the decision, the
predicted fire, the triggers, the hedge, the verdict. Six months later you open it
and check which triggers actually fired. That is the point. A regret you can grep for
is a regret you can prevent.
Full transcripts, including the baseline with no skill for contrast, are in
verification/.
MIT
