gut-check · git:20260618.522c86b · 2026-06-18 · sha256 17b5e8daa81f1c0d

gut-check git:20260618.522c86bA

Immutable. This exact content is served forever at /api/v1/blob/17b5e8daa81f1c0d.

---
name: gut-check
description: Use when about to lock in a non-trivial or hard-to-reverse decision, fire AskUserQuestion to offload a call, proceed on your own preferred option, or assert something is done / found / tested / fixed / "that's how it works" — especially when the basis is memory, the handoff, the first framing, or an unchecked assumption rather than something verified this session. Also invoked as /gut-check. Use even when you feel confident; confidence is the symptom, not the all-clear.
---

# Gut Check

## The spine

Don't lock in a decision or assert a fact from a thin basis: memory, the handoff,
the first framing, an unexamined pick. Ground it first, then proceed.

**Violating the letter of this is violating the spirit of it.** "I'm confident, so
I can skip the check" is the exact failure this skill exists to catch.

## When this fires

You are about to do one of these AND the basis is thin (not verified this session):

- Lock in a non-trivial or hard-to-reverse decision
- Fire AskUserQuestion to offload a decision you could ground yourself
- Proceed on your own preferred option without weighing alternatives
- Assert something is done / found / tested / fixed / "that's how X works"

Skip it for trivial, reversible steps, and for claims already backed by output you
produced **this turn**. When unsure whether it's trivial, it isn't, engage.

## Shared opening (both modes)

Name the thin basis in one line: "I'm about to [decide X / claim Y] based on
[memory / the handoff / first framing / my own pick]." Naming it is what flips you
from asserting to grounding.

Then pick the mode: grounding a **decision** → DECIDE. Grounding a **fact** → VERIFY.

## DECIDE mode

1. **Validity gate.** For each option, is it even real/valid? Drop the bogus ones.
2. **Consult existing context.** Read the relevant ADRs, docs, code, prior
   decisions. The answer is often already settled there, don't reason in a vacuum.
3. **Per-option tradeoffs.** One by one: pros/cons, plus effort (easier/harder)
   and durability (long-run). Not a blurry summary.
4. **Ranked recommendation.** State a lean and why, give something to react to.
5. **Hand the call back.** Surface the recommendation; let the user decide. Do the
   thinking; don't offload the thinking, and don't seize the deciding.

## VERIFY mode

1. **State the claim precisely.** "I'm claiming X is done/found/true."
2. **Check it this session.** Read the file, run the command, grep the evidence.
   Memory and the handoff do not count.
3. **Report grounded.** "Confirmed, here's the evidence" / "No, not actually done"
   / "Partial: X yes, Y no." Show the receipt.

**Hard rule, the pre-existing dismissal:** never call a failure *pre-existing,
unrelated, or flaky* without reproducing it on a clean base **this session** (run on
`main`, `git stash` + test, or `git blame` the lines). This is the highest-value
case: such dismissals close off investigation and almost always go unchecked. "It's
probably pre-existing" is a trigger thought, not a conclusion.

## Honesty rule (both modes)

If grounding flips your answer, say so plainly. Reversing your own earlier pick
after checking is the skill working, not a failure.

## Red flags, STOP and engage

If you catch yourself thinking any of these, you're rationalizing:

- "I'm confident I already did this"
- "I remember the handoff said..."
- "it's basically done"
- "the obvious choice is..."
- "that failure is probably pre-existing / unrelated / flaky"
- "the user's in a hurry, I'll skip the check"

All of these mean: ground first. For the full set of excuses and their counters,
read `references/rationalizations.md`. For worked DECIDE/VERIFY examples, read
`references/examples.md`.