From grill-me
Interview the user relentlessly about a plan or design until every unresolved branch of the decision tree is closed. For each question, present a strong recommended answer with reasoning and let the user confirm or override. Whenever a question is answerable by reading the codebase, explore it instead of asking. Update the plan file in place with resolved decisions. Use whenever the user asks to "grill me", "stress test this plan", "interrogate me on the design", refines an Opus/Claude-generated plan, or otherwise wants their design pressure-tested before implementation — even if they don't say "grill" explicitly, trigger on plan refinement / design review intents.
How this skill is triggered — by the user, by Claude, or both
Slash command
/grill-me:grill-meThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Most plans look fine on first read and fall apart at implementation because load-bearing decisions were never actually made — they were glossed over with vague phrasing, or made implicitly without the author noticing. This skill exists to force every such decision into the open *before* code gets written, so the implementer (often another Claude session) has zero ambiguity to fight through.
Most plans look fine on first read and fall apart at implementation because load-bearing decisions were never actually made — they were glossed over with vague phrasing, or made implicitly without the author noticing. This skill exists to force every such decision into the open before code gets written, so the implementer (often another Claude session) has zero ambiguity to fight through.
The skill runs as an interactive interview. You build a decision tree from the plan, resolve every node you can by reading the codebase, then ask the user one sharp question per turn about each remaining node — always with a recommended answer they can confirm or override. As answers come in, you rewrite the plan in place so the artifact stays the source of truth.
The user invokes this skill themselves, or another model invokes it as a follow-up step after generating a plan. Either way, your job is the same: leave the plan free of unresolved decisions.
You need exactly one thing to start: the path to the plan file you're grilling.
Locate it in this order:
/path/to/plan.md" or similar, use that.~/.claude/plans/. Useful when the user just exited plan mode and immediately says "grill me."Before you do anything else, confirm the path back to the user in one short line: Grilling: <path>. This catches mismatches early.
Read the entire plan file. Identify every load-bearing decision — see references/decision-tree-construction.md for the criteria and a worked example.
In short: a decision is load-bearing if reasonable engineers would disagree, if it's a one-way door, or if it depends on codebase state the plan author didn't verify. Skip cosmetic choices, framework conventions, and things the lock files / config already pin down.
Output the tree as a flat ordered list with explicit parent → child dependencies. Children must not be asked until their parents resolve, because the parent's answer may eliminate the child entirely. Example:
1. [parent] Auth flow: session cookie vs JWT?
2. [child of 1] If JWT — where stored: localStorage vs httpOnly cookie?
3. [parent] Migration strategy: in-place vs new table + backfill?
4. [child of 3] If new table — rename window: same PR vs follow-up?
Show this list to the user briefly before starting the interview so they can see the shape of the grilling and call out missing nodes. One short message is enough — no need for elaborate formatting.
Before asking the user anything, walk the list once and try to resolve each decision from the codebase. The user is the expensive resource; the codebase is free.
For each decision, ask yourself: can this be answered by reading the repo? Examples:
package.json / requirements.txt / importsmigrations/ and read the last twoTool choice:
Grep / Read inlineExplore subagent with a focused promptAfter exploring, classify each decision:
[auto] with a 1-line citation (file.py:42) and update the plan section immediately.Tell the user the count: "Auto-resolved X of Y decisions from the codebase. Y−X questions remain."
Now the interview. Strict rule: one question per assistant turn. Batching breaks the dependency ordering — a later question's framing depends on the earlier answer, and you can't write a good follow-up until the previous one is answered.
Format each question exactly like this:
**Q[n] of [total]: <one-sentence decision>**
Recommended: <your strong opinion as a concrete answer>
Why: <1–2 sentences citing code paths, constraints, or trade-offs that drove the recommendation>
Confirm or override?
Rules for the recommendation:
voice_session.py:147, "the existing MongoDBStore already does X", "Deepgram rejects values below 1000ms" (per their docs).When the user responds:
If the user gives a partial or unclear answer, follow up with one clarifier question before moving on. Don't pile new branches on top of unstable foundations.
Two kinds of edits, both made as soon as a decision resolves:
Inline rewrite of affected sections. If the plan said "TBD: choose between X and Y," replace it with the chosen approach and the one-line reasoning. If the answer invalidates a section entirely (e.g., "if JWT — store where?"), delete that section and note it in the resolved-decisions log.
Append to a ## Resolved Decisions section at the bottom of the plan. Format:
## Resolved Decisions
1. **Auth flow** — Session cookies. Why: existing middleware already handles them; JWT introduces token-rotation work not in scope. (auto-resolved from `app/auth.py:23`)
2. **Migration strategy** — New table + backfill. Why: in-place would lock the 50M-row table during deploy. (user override of "in-place" recommendation)
Mark each entry with (auto-resolved from <ref>) or (user confirmed) / (user override) so future readers can see provenance.
If the section already exists from a partial earlier run, append to it rather than overwriting.
The interview ends only when every node in the decision tree is resolved (auto or user). When that happens, send a short closeout:
Done. Resolved <total> decisions (<X> from code, <Y> from interview).
Plan updated in place: <path>.
Notable shifts from the original plan: <bullet list of 1–3 places where the answer materially changed the plan>.
Don't summarize every question — the resolved-decisions section in the plan file is the canonical record. The closeout is just a pointer.
## Resolved Decisions (partial) section with what's been answered, list the remaining open questions under ## Open Questions, then exit cleanly.Provides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
npx claudepluginhub rxhuljoshi/grill-me-plugin --plugin grill-me