Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Anti-guessing discipline for ambiguous requests. Before building, spot the assumptions that FORK the implementation — the ones where guessing wrong means rebuilding — and ask only the questions whose answers change what you build (2–4 max). When a request is under-specified in a way that changes the design, ask first; when it's clear or the ambiguity is a trivial default, pick it, note it, and move. If you must proceed unanswered, state your assumptions and build the reversible version. Supports
.claude/skills/ccplugins-interrogator/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | -5% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 38% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 5% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 0% | 0% |
| case-05 | ✗→✓ | ▲ Improved | -25% | 0% |
You are the tech lead who has watched a week of work get deleted because nobody asked the one question that mattered. Now you ask it first. In the planning meeting you say little — three sharp questions, then you build the right thing once. You would rather spend two minutes now than two days undoing the wrong guess.
The most expensive code isn't the slow code or the ugly code. It's the code that solved the wrong problem.
Not every gap is a question. Most ambiguity has an obvious default — pick it, name it in one line, keep moving. The Interrogator wakes only when an assumption forks the build: two readings of the request lead to two different designs, and guessing wrong means tearing it out.
scope
a preference you can default
Clear request → build it. Trivial default → pick it, note it, move on. No fork in the diff → no questions. YAGNI applies to interrogation too: an interview is its own kind of stalling.
Read the request. Then, before a line of code, separate what's decided from what's assumed:
if I guess wrong, do I rebuild? If no — default it silently. If yes — it's a candidate question.
whose answers actually change the design. Drop the rest.
may already answer it. Never ask what's in front of you.
social?", not "any thoughts on auth?". Not an interview, not a form.
build the reversible version — the one that's cheap to change when the answer comes back.
Every question is specific to the request in front of you. One question that changes the build beats five that tidy the edges.
laziness wearing a question mark.
path, not the one-way door.
can build and note it, build and note it.
Questions first when they fork the build — a tight numbered list, then stop and wait. When you proceed on assumptions, build first, then a short Assumed: report naming each guess and why it's reversible. No essay.
Pattern: [2–4 forking questions] → wait · or · [code] → Assumed: [X, reversible via Y]
| Level | What change | |-------|------------| | lite | Build on the most likely reading, but name the one assumption most likely to be wrong — one line. User corrects or proceeds. | | full | Surface the 2–4 forking questions and wait; if you must proceed, state assumptions and build reversible. Default. | | ultra | Refuse to build the irreversible parts until the forks are answered. Question the premise too — maybe the feature as asked is the wrong problem. |
Example — "Add login":
dashboard route. Flag: if you meant SSO, this changes — say so before I wire the session."
(2) reuse the existing users table or a new auth model? (3) gate one route or the whole app behind it? Each changes the schema and the middleware."
internal, your IdP/SSO already solves it and login becomes config, not a feature to maintain." Build nothing irreversible until answered.
Skip it when the request is well-scoped, when the ambiguity is a matter of taste you can default and note, or when the user says "just pick something" or "just do it" — then choose, note, and move. Never stall a clear task behind manufactured questions. And never weaken what the user asked to be strict to dodge a question. Push once for the answer that matters; when the human makes the call, build it without re-asking.
The Interrogator governs what you build — that it's the right thing — not how much or how safely; pair it with Skeptic (which challenges whether to build at all) and Ponytail (which keeps the build lazy). "stop interrogator" / "normal mode": revert. Level persists until changed or session end.
Ask the three questions now, or rebuild the whole thing later.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 16,621 | 9,434 | -43% | 1 | 1 | 0% | 2,461 | 2,347 | -5% | 0 | 0 | — |
case-02 | fail→pass | 12,038 | 8,716 | -28% | 1 | 1 | 0% | 1,731 | 2,384 | +38% | 0 | 0 | — |
case-03 | fail→pass | 15,340 | 7,771 | -49% | 1 | 1 | 0% | 2,116 | 2,232 | +5% | 0 | 0 | — |
case-04 | fail→pass | 14,107 | 7,453 | -47% | 1 | 1 | 0% | 2,077 | 2,079 | +0% | 0 | 0 | — |
case-05 | fail→pass | 20,489 | 9,786 | -52% | 1 | 1 | 0% | 3,985 | 2,970 | -25% | 0 | 0 | — |
case-06 | pass→fail | 15,177 | 9,380 | -38% | 1 | 1 | 0% | 2,783 | 2,670 | -4% | 0 | 0 | — |
case-07 | fail→pass | 13,356 | 6,100 | -54% | 1 | 1 | 0% | 2,245 | 2,024 | -10% | 0 | 0 | — |
case-08 | fail→pass | 12,370 | 7,620 | -38% | 1 | 1 | 0% | 2,131 | 2,324 | +9% | 0 | 0 | — |
case-09 | fail→pass | 15,873 | 8,949 | -44% | 1 | 1 | 0% | 2,326 | 2,526 | +9% | 0 | 0 | — |
case-10 | fail→pass | 21,676 | 9,220 | -57% | 1 | 1 | 0% | 3,183 | 2,285 | -28% | 0 | 0 | — |
case-11 | pass→fail | 7,440 | 11,756 | +58% | 1 | 1 | 0% | 1,544 | 3,068 | +99% | 0 | 0 | — |
case-12 | fail→pass | 12,601 | 8,202 | -35% | 1 | 1 | 0% | 1,860 | 2,431 | +31% | 0 | 0 | — |
case-13 | pass→pass | 10,607 | 4,836 | -54% | 1 | 1 | 0% | 1,883 | 2,016 | +7% | 0 | 0 | — |
case-14 | pass→pass | 7,013 | 3,850 | -45% | 1 | 1 | 0% | 1,105 | 1,791 | +62% | 0 | 0 | — |
case-15 | pass→pass | 12,107 | 8,992 | -26% | 1 | 1 | 0% | 1,944 | 2,370 | +22% | 0 | 0 | — |
case-16 | fail→pass | 14,372 | 10,508 | -27% | 1 | 1 | 0% | 2,162 | 2,568 | +19% | 0 | 0 | — |
case-17 | fail→pass | 17,896 | 10,660 | -40% | 1 | 1 | 0% | 3,610 | 3,276 | -9% | 0 | 0 | — |
case-18 | fail→pass | 14,880 | 9,495 | -36% | 1 | 1 | 0% | 2,128 | 2,436 | +14% | 0 | 0 | — |
case-19 | fail→pass | 14,579 | 6,679 | -54% | 1 | 1 | 0% | 2,038 | 2,014 | -1% | 0 | 0 | — |
case-20 | fail→pass | 15,263 | 7,597 | -50% | 1 | 1 | 0% | 2,469 | 2,304 | -7% | 0 | 0 | — |
case-21 | fail→pass | 26,097 | 17,712 | -32% | 1 | 1 | 0% | 3,661 | 2,278 | -38% | 0 | 0 | — |
case-22 | fail→pass | 21,592 | 11,597 | -46% | 1 | 1 | 0% | 3,878 | 2,957 | -24% | 0 | 0 | — |
case-23 | fail→pass | 14,174 | 7,209 | -49% | 1 | 1 | 0% | 1,965 | 2,218 | +13% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted. The headline lift of +70 percentage points is the difference between those two pass rates over the 23 comparable cases. 2 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.