From speckit-pro
MANDATORY for SpecKit / Spec-Driven Development (SDD) pre-spec scoping. Use this skill — NOT brainstorming — before /speckit-specify, /speckit-plan, /speckit-tasks, /speckit-pro:speckit-scaffold-spec, or whenever the user invokes /speckit-pro:grill-me. Triggers on grill-me-unique signatures: 'grill me' on a brief/spec/transcript, 'walk every branch of the design tree', 'play the role of a relentless interviewer', 'produce a Design Concept doc', 'pre-spec scoping', 'help me scope this raw idea before /speckit-specify', 'slice-sizing', 'is this spec too big to split', 'recommend a vertical-slice split'. Walks every branch of the design tree, asks one question at a time with the assistant's recommended answer first, produces a Design Concept Markdown doc that downstream /speckit-specify, /speckit-plan, /speckit-tasks consume. Accepts .md, .txt files or a free-text topic. Use brainstorming skill ONLY for free-form creative work with no SpecKit/SDD anchor.
How this skill is triggered — by the user, by Claude, or both
Slash command
/speckit-pro:grill-me e.g. 'interview me about this brief', 'grill me on the gamification overhaul', 'scope this transcript'e.g. 'interview me about this brief', 'grill me on the gamification overhaul', 'scope this transcript'The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Before researching or recommending, enumerate the tools and skills your session actually exposes — do not assume a fixed set; the user may have installed anything — and select the best fit per `speckit-pro/skills/speckit-autopilot/references/capability-discovery.md`. Ground every external fact you assert in a real tool, skill, or file result per `speckit-pro/skills/speckit-autopilot/references/...
Before researching or recommending, enumerate the tools and skills your session actually exposes — do not assume a fixed set; the user may have installed anything — and select the best fit per speckit-pro/skills/speckit-autopilot/references/capability-discovery.md. Ground every external fact you assert in a real tool, skill, or file result per speckit-pro/skills/speckit-autopilot/references/grounding.md, and abstain when nothing grounds it. (For grill-me, this governs your research-backed recommended answers, not the interview mechanics.)
This skill operationalizes the original Grill Me prompt verbatim — keep it visible so users can re-tune it without leaving the repo:
"Interview me relentlessly about every aspect of this plan until we reach a shared understanding. Walk down each branch of the design tree resolving dependencies one by one. For each question provide your recommended answer. Ask the questions one at a time."
Source: The Grill Me Skill / The Grill Me Protocol (see
~/Downloads/The Grill Me Skill_*.md and ~/Downloads/The Grill Me Protocol_*.md).
<hard_constraints>
Grill Me MUST NEVER be invoked autonomously. The interview loop requires a human user who can answer questions in real time. Running this skill in any non-interactive context defeats its purpose and silently produces low-value output.
/speckit-pro:grill-me directly in an interactive
Claude Code session./speckit-pro:speckit-scaffold-spec command running interactively (it always
invokes grill-me before writing the workflow file).No other entry point is permitted.
speckit-autopilot skillphase-executor, clarify-executor,
checklist-executor, analyze-executor, implement-executorcodebase-analyst, spec-context-analyst,
domain-researcherconsensus-synthesizer, gate-validatorIf the autopilot's Clarify phase needs disambiguation, it uses
/speckit-clarify with the multi-agent consensus protocol — NOT
grill-me. These are different systems by design.
Before asking your first question, verify the runtime supports real-time human interaction:
AskUserQuestion is available in your tool list. (It is
the only sanctioned interview mechanism in the Claude Code variant.)/scaffold-spec,
not by a phase-executor or other agent context.If either check fails, abort immediately with this message:
"grill-me is human-in-the-loop only. The autopilot's Clarify phase uses the Clarify Question Set plus consensus, not grill-me. Aborting."
Do not write any file. Do not call AskUserQuestion. Just abort.
</hard_constraints>
This skill detects two operating modes from its arguments / invocation context:
/speckit-pro:grill-me directly.docs/ai/specs/<slug>-design-concept.md, where <slug>
is derived from the input (file basename without extension, or
kebab-cased topic). User can override by passing a second argument
with an explicit path./speckit-pro:speckit-scaffold-spec (the calling command
passes a marker / context indicating it's the setup flow)..worktrees/<NNN>-<short-name>/docs/ai/specs/SPEC-<ID>-design-concept.md
(the worktree path the setup command provides).Detailed protocol lives in references/interview-protocol.md — read
that file before activating. The high-level loop:
skills/speckit-coach/references/checklist-domains-guide.md)
as a starting taxonomy, plus the input-specific branches. Always
include the slice-sizing branch (see below) as one of the branches
to walk..specify/memory/constitution.md if present,
and industry best practices).
c. Call AskUserQuestion with the question, your recommendation
marked (Recommended) as the first option, and 1–2 plausible
alternatives. Header ≤ 12 chars.
d. Record the user's selected answer (including any "Other"
free-text). Update your mental model.
e. Continue until stop condition triggers.references/output-formats.md, recording any chosen split (see the
slice-sizing branch).A dedicated branch of the design tree that right-sizes the single spec being scoped. Walk it near the end of the loop, once the interview has surfaced the spec's structured size signals — number of user stories, files/surfaces touched, functional requirements, and whether the work is net-new or modifies existing code.
The inline summary (read the shared doc; do not restate it). Aim for
thin, vertical slices: each slice cuts end-to-end through every layer
it touches (data → logic → interface) and delivers one small working
capability, rather than one fat layer at a time. Split a too-big slice
along a SPIDR seam (Spike, Path, Interface, Data, Rule) and hold each
slice to the INVEST bar (Independent, Negotiable, Valuable, Estimable,
Small, Testable) and the ~400 reviewable-LOC ceiling. A research-only
slice is a Spike, sized by timebox rather than LOC. The canonical
SPIDR + INVEST + vertical-slicing guidance, the ceiling value, and the
spike escape hatch all live in one shared reference — read it, do not
duplicate it here:
speckit-coach/references/slicing-heuristics.md.
Run the shared estimator. Derive the size signals from the spec you
are scoping, then invoke runner operation estimate-spec-size with those
signals (the same operation speckit-prd uses — no per-skill copy).
It returns {estimated_loc, suggested_slices, status} where status is
ok or warn. This is a forward guess to shape decomposition at scoping
time, not the authoritative reviewable-LOC count (see the shared
reference's "forward guess" caveat).
Decide what to do with the result. The split question has two independent triggers — one from the estimator, one from your own reading of the spec:
status: "warn") OR the spec is horizontally
sliced — ask a split question via AskUserQuestion. The estimator
only sizes; it has no concept of layering, so you judge from the
interview whether the spec cuts by layer ("all the models", then "all
the UI") rather than end-to-end. When the estimator returned warn,
recommend splitting into N thin vertical slices where N is the
estimator's suggested_slices; mark that option (Recommended)
first, with 1–2 alternatives (e.g. keep as one spec, or a different
split). When the spec is horizontally sliced, recommend re-slicing it
into vertical slices, each delivering one thin end-to-end capability.status: "ok", not a spike, not
horizontally sliced) — surface the size estimate as an advisory
note in the interview and the Design Concept doc. Do not force a
split.This branch is advisory-only. It NEVER blocks the interview, never
rejects a spec, and never reads the operation's exit code as a gate — a
non-zero exit is treated as an unavailable estimate, not a hard stop. A
warn is informational: the maintainer is free to decline the split and
continue.
Record the chosen split. When the maintainer chooses a split in this
branch, write that decision into the Design Concept doc so
/speckit-pro:speckit-scaffold-spec and /speckit-pro:speckit-autopilot
can act on it later:
If no split was warranted (at/under the ceiling, or declined), record the advisory size estimate as a note and move on — there is nothing to split.
The Design Concept doc is a Markdown file with frontmatter and these
sections (full schema in references/output-formats.md):
/speckit-pro:speckit-coach for roadmap
authoring or /speckit-pro:speckit-scaffold-spec SPEC-XXX if a roadmap entry already
exists.A chosen slice-split from the slice-sizing branch is recorded in Goals (accepted) or Open Questions (deferred); see The slice-sizing branch.
/speckit-pro:speckit-scaffold-spec's job.spec.md). That's /speckit-specify's
job./speckit-pro:speckit-coach's
job.User says: "Grill me on this idea: add a leaderboard to our learning platform that ranks users by points earned from completed lessons."
Actions:
AskUserQuestion, one question per branch, recommendation always firstdocs/ai/specs/leaderboard-design-concept.mdResult: Design Concept Markdown file with frontmatter, Goals, Non-goals, Q&A log, Open Questions, Recommended Next Step.
/speckit-pro:speckit-scaffold-spec invokes this skill with mode: "setup", the spec scope from the technical roadmap, and an output path inside the worktree.
Actions:
Result: Design Concept doc lives in the worktree alongside the workflow file; both get committed in one commit.
A subagent inside /speckit-pro:speckit-autopilot (e.g., the clarify-executor) tries to call Skill('grill-me') to resolve ambiguity.
Actions:
Result: Nothing written. Caller surfaces the ambiguity to the orchestrator, which fails the gate.
Cause: The skill is being invoked from a runtime that doesn't expose
AskUserQuestion (subagent context, automation, or non-Claude-Code surface).
Solution: Abort. Grill-me requires real-time human interaction. If you
need scoping in a non-interactive context, use /speckit-pro:speckit-coach for
methodology guidance or fail the gate and surface to the user.
superpowers:brainstorming instead of grill-meCause: If you have the superpowers plugin installed, its brainstorming skill description starts with "You MUST use this before any creative work — creating features, building components, adding functionality, or modifying behavior." That high-imperative framing reliably outranks descriptive scoping skills on any prompt that smells like creative work, including "interview me about this brief", "scope this idea", or "walk me through this design before I commit."
Solution: Invoke grill-me directly via the slash command /speckit-pro:grill-me (description-based triggering is bypassed for explicit invocation). Inside /speckit-pro:speckit-scaffold-spec this is already wired — the setup command calls Skill('grill-me') explicitly, so the brainstorming competition does not apply. If you prefer natural-language invocation, "run grill-me on this" or "use the grill me skill on this brief" name-anchors more reliably than "interview me about this".
Cause: The user said "set up SPEC-009" — that's /scaffold-spec's territory,
not grill-me's. Setup itself runs grill-me, so the user gets the
interview either way, but starting from setup ensures the worktree
gets created.
Solution: If the user mentions a SPEC-ID and "set up" / "prepare",
defer to /speckit-pro:speckit-scaffold-spec. Grill-me triggers on "interview me",
"grill me", "scope this", or when the input is a raw idea / transcript
/ brief without a SPEC-ID.
Cause: Either the input is genuinely complex (large feature, lots of unknowns) or the question generation is asking cosmetic / low-value questions instead of the highest-uncertainty branches first.
Solution: At the soft-cap checkpoint, the user can wrap up immediately.
If this happens repeatedly on simple inputs, revisit the question-generation
heuristic in references/interview-protocol.md — the rule is "ask the
question that, if answered, eliminates the most uncertainty". Cosmetic
questions get filtered out.
Cause: The interview converged with no outstanding ambiguity, OR the synthesis step missed deferred items.
Solution: If the user answered every question with confidence, an empty Open Questions section is correct (and a good sign). If you flagged items as deferred during the loop ("user said 'I don't know' or 'you decide'"), make sure those land in Open Questions during synthesis — that's where they belong, not the Q&A log.
For detailed operational guidance, consult these files only as needed:
references/interview-protocol.md — full interview loop, question
generation heuristics, stop conditions, recovery from edge cases (read
before activating).references/output-formats.md — Design Concept doc schema, file
paths for standalone vs setup mode, body structure, and style rules
(read before synthesis).speckit-coach/references/slicing-heuristics.md —
the single source of truth for SPIDR + INVEST + vertical-slicing and the
~400 reviewable-LOC ceiling (summarized inline in the slice-sizing
branch; invoked via runner operation estimate-spec-size).npx claudepluginhub racecraft-lab/racecraft-plugins-public --plugin speckit-proCreates structured, bite-sized implementation plans from specs or requirements before writing code. Useful for breaking down multi-step tasks into testable steps with file structure and task boundaries.