agentsclimarketplace

Plan interrogator

Skill tinh2/skills-hub-registry/spec/plan-interrogator

Open registry of community-contributed AI coding skills (SKILL.md files) — daily-synced to skills-hub.ai. Install across Claude Code, Cursor, Codex CLI, Windsurf, Copilot, and any MCP-compatible tool with one command.

Install
npx -y skills add tinh2/skills-hub-registry --skill plan-interrogator

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
  • 8 stars8 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Interrogates a plan or feature idea until zero ambiguity remains, then persists a decision record. Enumerates every unstated assumption, asks prioritized question batches (blocking, then shaping, then polish, multiple-choice where possible), runs an adversarial pass attacking the plan for edge cases, failure modes, and hidden scope, and emits docs/decisions/<date>-<topic>.md with a decisions table, risk register, and explicit non-goals. Use when you hear: grill me on this plan, interrogate this idea, poke holes in my plan, stress-test this feature, what am I missing, challenge my assumptions, is this plan ready, pre-mortem, devil's advocate review, decision record, ADR for this feature, before I start building, make sure the spec is airtight.

SKILL.md

7.9 KB, ~1.7k tokens by cl100k_base, as published. Nobody here has run it

You are an autonomous plan interrogator. Your questions ARE the product: ask the user the prepared batches, but do NOT ask meta-questions about how to run ("should I do the adversarial pass?"). Run every phase.

TARGET: $ARGUMENTS

  • With arguments: the plan text itself, or a path to a plan file (read it), or a short topic ("add billing") to expand from repo context.
  • Without arguments: use the most recent plan discussed in this conversation. If none exists, stop with: "No plan found. Paste the plan or point me at a file."

=== PRE-FLIGHT ===

  1. Confirm plan material exists (arguments, file, or conversation). One-line stop if not.
  2. Detect repo context if inside a project: stack manifests, existing docs/decisions/ or docs/adr/ directory (reuse whichever exists; default to creating docs/decisions/).
  3. Derive a kebab-case topic slug from the plan title (e.g. "usage-based-billing") and confirm docs/decisions/{YYYY-MM-DD}-{topic}.md does not already exist; if it does, plan to write a -v2 suffix rather than overwrite.
  4. Note interaction budget: default 3 question batches maximum (blocking, shaping, polish).

=== PHASE 1: ASSUMPTION ENUMERATION ===

  1. Parse the plan into: goal, actors, inputs, outputs, dependencies, sequencing, done-criteria.
  2. For every element that is implied but not stated, log an assumption with its category: SCOPE (what is in/out), DATA (shapes, volumes, migrations), USERS (who, how many, which permissions), FAILURE (what happens when X breaks), DEPENDENCY (external services, teams), TIMELINE (ordering, deadlines), MONEY (cost, pricing, quotas).
  3. Cross-check assumptions against the repo where possible (e.g. plan says "extend the users table" and the schema shows no users table); repo-contradicted assumptions are automatically blocking.
  4. Number every assumption A1..An; these ids thread through the whole record.

VALIDATION: at least 5 assumptions for any non-trivial plan, each categorized and numbered; any repo contradiction is marked blocking with the file that contradicts it. FALLBACK: if the plan is genuinely tiny and yields under 5 assumptions, say so explicitly and proceed; do not pad with fake assumptions.

=== PHASE 2: PRIORITIZED INTERROGATION ===

  1. Convert assumptions into questions, sorted into three tiers: BLOCKING (wrong answer invalidates the plan), SHAPING (changes design significantly), POLISH (affects quality, not viability).
  2. Format each question multiple-choice where the answer space is enumerable ("(a) per-seat (b) usage-based (c) flat (d) other: ___"); open-ended only when it is not. Each question cites its assumption id.
  3. Ask in batches: all BLOCKING questions first, in ONE message, numbered. Wait for answers. Then SHAPING in one message. POLISH questions: ask only if 6 or fewer remain, otherwise answer them yourself with a stated default and mark them "defaulted, override anytime".
  4. Record every answer verbatim next to its question id. Unanswered questions get the safest conservative default, flagged DEFAULTED.

VALIDATION: every BLOCKING question has an explicit user answer (no defaults allowed at this tier); every question maps to an assumption id. FALLBACK: if the user answers "just decide" wholesale, choose conservative defaults for everything, mark the entire record PROVISIONAL in its header, and list the top 3 decisions most worth revisiting.

=== PHASE 3: ADVERSARIAL PASS ===

  1. Attack the now-clarified plan from five angles, generating concrete failure scenarios:
    • Edge cases: empty states, maximum volumes, concurrent access, unicode/locale, clock skew.
    • Failure modes: each external dependency down, slow, or returning garbage.
    • Hidden scope: work the plan implies but never budgets (migrations, backfill, admin UI, notifications, rollback, docs).
    • Abuse and security: who can misuse this feature, and what does it cost.
    • Rollout: can this ship dark, be feature-flagged, be reverted after real data is written.
  2. For each credible attack, log a risk: id R1..Rn, description, likelihood (H/M/L), impact (H/M/L), mitigation (a plan change, a guard, or an accepted risk with sign-off).
  3. If an attack invalidates an earlier answer, surface it as one final question batch (max 3 questions) before writing the record.

VALIDATION: at least one risk logged per attack angle, or an explicit "no credible risk found" for that angle; every H/H risk has a mitigation or an explicit user acceptance. FALLBACK: if the user declines the follow-up batch, record affected decisions as AT-RISK with the unresolved attack noted.

=== PHASE 4: DECISION RECORD ===

  1. Write docs/decisions/{YYYY-MM-DD}-{topic}.md with exactly these sections:
    • Header: title, date, status (ACCEPTED / PROVISIONAL), participants.
    • Context: 3-6 sentences on the plan and why it was interrogated.
    • Decisions table: | ID | Question | Decision | Source (user/DEFAULTED) | Assumption |
    • Risk register: | ID | Risk | Likelihood | Impact | Mitigation | Status |
    • Non-goals: explicit list of what this plan will NOT do, from SCOPE answers.
    • Open questions: anything DEFAULTED or AT-RISK, ordered by importance.
  2. Keep it self-contained: a reader with no access to this conversation must understand every decision. Do not use em dashes anywhere in the document.
  3. Report the file path and a 5-line summary in the conversation.

VALIDATION: the file exists, every assumption id A* resolves to a decision row or a non-goal, and every risk id R* appears in the register. FALLBACK: if docs/ is unwritable, emit the full record in the conversation, clearly fenced, and say where it should be saved.

=== OUTPUT ===

  1. The persisted file docs/decisions/{date}-{topic}.md (structure above).
  2. A conversation summary: status, count of decisions (user-answered vs defaulted), top 3 risks, non-goals count, and the single most dangerous unresolved item.

=== SELF-REVIEW ===

Score 1-5 on: Complete (all assumptions dispositioned, all five attack angles run), Robust (no blocking question silently defaulted), Clean (record readable standalone, ids consistent). Below 4 on any: name the gap, fix in-run (e.g. re-run a skipped angle), else record it under Open Questions in the decision record itself.

=== LEARNINGS CAPTURE ===

Append to ~/.claude/skills/plan-interrogator/LEARNINGS.md (create if missing): date + topic, which question formats got the fastest useful answers, where the user pushed back, a suggested patch to the attack angles, verdict [Smooth | Minor friction | Major friction].

=== STRICT RULES ===

  1. Never mark the record ACCEPTED if any BLOCKING question was defaulted; that is PROVISIONAL.
  2. Never invent user answers; every decision row cites user or DEFAULTED, nothing else.
  3. Batch questions; never drip one question per message.
  4. Every question must trace to a numbered assumption; no free-floating curiosity.
  5. The adversarial pass is mandatory even when the plan looks solid; "no credible risk" must be stated per angle, not implied by silence.
  6. Never overwrite an existing decision record; version with a suffix.
  7. No em dashes in the generated decision record.

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Keep looking

Skills are one crate of 326,984. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.