grill
This skill conducts structured interrogation of a feature owner before planning or building, identifying unknowns and resolving ambiguity through targeted…
Community author
- Agents
- Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode, claude.ai and API
- License
- MIT (permissive)
- Pin
- c88eb23pinned Oct 9, 2026
- Context cost
- about 2,600 tokenswhen the skill loads
- GitHub stars
- 52on alamops/skills
- Scripts
- None found
What it does
“(alamops) Hard, respectful interrogation of the owner about a feature or code change before it's planned or built, so no load-bearing unknown reaches the plan. Grounds itself in the code (or an `investigate` brief) first so it never asks what the repo answers, then presses in one or two structured passes on scope, business rules, edge and error states, data and contract changes, migrations, budgets, rollout, the acceptance bar, and every remainder that would become a follow-up. Pushes back on vague answers and records each decision with its source and disposition in `docs/plans/<slug>-grill.md`. `--auto` self-grills unattended and escalates one-way doors. Use when the user says grill me, poke holes in this before I build it, what am I missing, or wants the hard questions about a feature, spec or plan settled before planning. Phase 2 of `implement`, runnable alone. Not for writing a PRD (to-prd), a sales or pitch roleplay (rpg-persona), reviewing a diff (code-review), or building it (implement).”
Generated summary from the skill's own text
This skill conducts structured interrogation of a feature owner before planning or building, identifying unknowns and resolving ambiguity through targeted questions grounded in code. It produces a decision record documenting each choice and its source, handling both interactive mode with an owner and autonomous mode with decision-making and escalation of one-way doors.
When to use it
- Before planning a feature to surface hidden assumptions and edge cases
- When a spec is vague and needs concrete decisions locked in
- Standalone after investigation, or as phase two of the implement loop
- For owner to verify no load-bearing unknowns before build starts
When not to
- To write a PRD, pitch, or sales roleplay instead of interrogation
- To review a code diff against merged changes
- To build or implement the feature itself
Install
These commands install from the publisher's repository and need no account.
skills CLI
npx skills add alamops/skills --skill grillInstalls from the repository's default branch, which may have changed since the commit we checked.
GitHub CLI 2.90 or later
gh skill install alamops/skills grill@c88eb23094299c3969360339dc63756bdebb38beInstalls the commit we checked (c88eb23).
Copy by hand
Download the folder at c88eb23 and put it in .claude/skills/grill for Claude Code and in .agents/skills/grill for Codex, Cursor, Gemini CLI, GitHub Copilot and OpenCode.
Copy for your agent
A prompt for any coding agent. It installs this skill from GitHub at the pinned commit, copies the files as they are, and runs nothing unless you ask.
Prompt
Install the agent skill "grill" by alamops. Source, pinned to commit c88eb23094299c3969360339dc63756bdebb38be: https://github.com/alamops/skills/tree/c88eb23094299c3969360339dc63756bdebb38be/skills/grill 1. Download that folder at exactly this commit. Do not use the default branch. 2. Copy every file unchanged, keeping the folder structure, into .claude/skills/grill/ for Claude Code and .agents/skills/grill/ for Codex, Cursor, Gemini CLI, GitHub Copilot and OpenCode. Create the folders if they do not exist. 3. Do not edit the files, and do not run any script in the folder unless I ask you to. 4. When you are done, list the files you copied and where you put them. Listing and checks: https://www.agentnative.dev/skills/alamops/grill
SKILL.md at the pin
---
name: grill
description: (alamops) Hard, respectful interrogation of the owner about a feature or code change before it's planned or built, so no load-bearing unknown reaches the plan. Grounds itself in the code (or an `investigate` brief) first so it never asks what the repo answers, then presses in one or two structured passes on scope, business rules, edge and error states, data and contract changes, migrations, budgets, rollout, the acceptance bar, and every remainder that would become a follow-up. Pushes back on vague answers and records each decision with its source and disposition in `docs/plans/<slug>-grill.md`. `--auto` self-grills unattended and escalates one-way doors. Use when the user says grill me, poke holes in this before I build it, what am I missing, or wants the hard questions about a feature, spec or plan settled before planning. Phase 2 of `implement`, runnable alone. Not for writing a PRD (to-prd), a sales or pitch roleplay (rpg-persona), reviewing a diff (code-review), or building it (implement).
---
# Grill — settle the unknowns before anyone plans
Your job is to leave **zero load-bearing unknowns** before a change gets planned. Be a hard, respectful interrogator: the owner should come out of this having made every decision the build will force, instead of discovering mid-review that the code made them silently.
This matters because the assumptions that wreck a build are the ones nobody noticed they were making. A detailed ticket says *what* someone wants, not the dozen edge decisions the build forces — what the empty case shows, which side of a boundary is inclusive, what the user sees when the third-party call fails. A question costs the owner a minute; the assumption it replaces can cost a rewrite.
## Where this sits
This is Phase 2 of the `implement` delivery loop, packaged to run on its own. It reads an `investigate` brief when one exists, and its decision record is what `write-plan` builds on. None of those need to exist for this skill to work.
Read-only: the only file you write is the decision record.
## 1. Ground yourself before asking anything
Look for `docs/plans/<slug>-investigation.md` (or any investigation brief for this feature) and read it — its *must ask* list is your starting point and its findings let you ask sharper questions.
If there isn't one, do a short read-only grounding pass yourself before drafting a single question: the entry points the change touches, the sibling feature that already solved something similar, how the codebase decided the same kind of question before, who calls what's changing. On Claude Code, one or two `Explore` agents in parallel are enough; on a small change just read the code inline. Keep it proportionate — if the surface turns out to be large, suggest running `investigate` first rather than turning this into a full investigation.
The reason for grounding first: a question the repo could have answered wastes the owner's time and quietly tells them you didn't look. "Should deleted projects be hidden from reports?" is weaker than "`reports/usage.sql:40` reads `projects` with no filter — should soft-deleted projects drop out of usage reports, or stay counted for the billing period they existed in?"
## 2. What to press on
Pull every open question from the grounding, then work through these topics. Not every topic applies to every change — a small change may need two questions, not twelve — but scan all of them, because the one you skip is usually the one that bites.
- **Scope** — what's in, what's out, explicit non-goals.
- **Business rules** — exact limits, defaults, eligibility, precedence, edge cases, boundary inclusivity, time zones and currencies where they apply.
- **States** — error, empty, loading, permission-denied, partial failure, concurrent edits. What does the user actually see in each?
- **Data & contracts** — schema changes, migrations, enum growth and where it propagates, API contract changes and who consumes them.
- **Non-functional** — performance budgets as numbers, security and tenancy boundaries, reliability, observability.
- **Rollout** — dependencies, feature flags, migration order, rollback, the worst-case failure mode.
- **Acceptance** — what "done" means and how it'll be verified, including which user flows deserve end-to-end coverage and any environment constraints for running them (test accounts, sandbox credentials, external services). Skip the e2e half under `--no-e2e` — don't ask about coverage the user already declined.
- **Completeness** — what would otherwise become a follow-up: the remaining call sites, the rows that already exist, the states nobody has wired up, what gets deleted when this lands. Ask this on every grill, near the front — see §4.
## 3. How to ask
- **One or two structured passes, grouped by topic.** Use your question tool if you have one. Don't drip questions one at a time; the owner should be able to answer in one sitting.
- **Make answering cheap.** Where there's a sensible default, offer concrete options with a recommendation and a one-line reason, so the owner can confirm instead of compose. A question with an obvious answer and no recommendation is a chore.
- **Order by consequence, and keep it answerable in one sitting.** Lead with the blocking questions — the ones whose answer changes the plan's shape. Collapse the low-stakes items where you'd bet on your default into a compact *confirm or override* list at the end, one line each with the default stated. If the pass runs past roughly ten real questions, move more into that list; a wall of fourteen questions with sub-questions gets skimmed, and a skimmed grill is barely better than none.
- **Lead with what you proved.** Where the investigation or your own reading settled something, state it instead of asking — "the export runs in 4.2s over 50k rows, so no background job" shows the question is closed and respects their time.
- **Contradictions are your sharpest questions.** If evidence contradicts what the ticket, the docs, or the owner believe, put the evidence in front of them and ask how to proceed. A false premise the owner still holds is exactly what derails a plan.
- **Push back on vague answers.** "Make it fast" → "what P95 is acceptable, at what data volume?" "Handle errors gracefully" → "for a failed payment specifically: retry, show a message, or both — and what does the message say?" A vague answer is an unresolved question wearing a disguise.
- **If the owner says "you have enough, just go"**, stop asking — but record every remaining assumption explicitly in the decision record, so the plan builds on stated assumptions rather than silent ones.
## 4. Completeness dispositions
Every would-be follow-up the grill surfaces gets one of three dispositions:
- **In this change** — it's part of finishing the feature.
- **Out of scope** — it's a different ticket, with the reason.
- **Owner-deferred** — the owner consciously pushes it to a later ticket. That's a legitimate scoping decision and it belongs to them; record who decided it.
What's never available is a *silent* deferral — a remainder nobody decided about. That's how codebases accumulate half-migrations: three of seven callers moved to the new path, the backfill "for later", nobody with authority ever choosing it. A remainder the grill never asked about isn't deferred; it's unfinished work the plan now owns.
The test that separates *in* from *out*: if this shipped as-is, would a reviewer call it **unfinished**, or would they call the missing piece **a different ticket**? Unfinished is in. A different ticket is out. Completeness is not scope expansion — adjacent features, drive-by refactors, and "while we're in there" cleanups stay out.
**Under `--no-follow-ups`** (also accepted: `--no-follow-up`, `--no-followups`, `--no-followup`, `--nofollowups`, `--nofollowup` — record it under the canonical name), owner deferral is off too: every remainder resolves to *in* or *out*, and "we'll handle that later" gets answered with "not available under this flag — in or out?".
## 5. `--auto` — grilling with nobody there
Run unattended only when it's declared: `--auto` on the invocation, the user saying in plain words that no one will answer ("just decide, I'm offline"), or you genuinely having no channel to a human. A detailed ticket, a confident read of the task, or being spawned by another agent are not signs the owner left. If you can ask, ask.
Under `--auto` you play both roles, and the order matters:
1. **Draft the full question set first** — the same structured pass you'd have sent the owner, edge cases and non-goals included. The value is mostly in *generating* the questions, and writing them before answering keeps them coming from the topic list rather than from the answer you already had in mind.
2. **Answer each from the strongest source available, and name it**: investigation evidence (spike verdict, file:line) → the repo's own conventions and how sibling features decided this → the ecosystem or library default → your judgment. An answer from the codebase is a finding; an answer from judgment is a guess, and the record should let a reader tell them apart at a glance.
3. **When it's down to judgment, take the reversible option** — narrower scope, safer default (deny over allow, flag-off over flag-on, additive over destructive) — and note the alternative you passed on, so the owner can flip it cheaply. "Narrower" chooses between tickets, never between finished and unfinished: a migration that reaches four of seven callers isn't the narrow option, it's the broken one.
4. **Mark confidence and blast radius.** Flag every low-confidence answer whose other outcome would change the *shape* of the plan — those are what the owner reads first.
5. **Escalate one-way doors instead of answering them.** Destroying or migrating data non-additively, breaking a public API contract, relaxing an auth or tenancy boundary, anything touching money, secrets, or production: don't pick an answer. Mark it scoped out, pending a human decision, and put it at the top of the record.
6. There's no owner to defer to, so every remainder resolves to *in* or *out*.
## 6. Write the decision record
Save to `docs/plans/<slug>-grill.md`, reusing the slug of an existing investigation brief if there is one (create the folder if missing; suffix `-YYYY-MM-DD` rather than overwrite an unrelated record):
```markdown
# Grill — <feature>
| Field | Value |
| --- | --- |
| Date | <YYYY-MM-DD> |
| Source | <ticket / PRD path / investigation brief / conversation> |
| Mode | <interactive, answered by <owner>> or <--auto, self-answered> |
| Flags | <--auto --no-follow-ups --no-e2e, or "none"> |
## One-way doors awaiting a human (--auto only; omit otherwise)
## Decisions
| # | Topic | Question | Answer | Source | Confidence |
<Source: owner / evidence (file:line or spike) / repo convention / ecosystem default / judgment.
Confidence column only under --auto.>
## Completeness dispositions
| Item | Disposition | Owner or reason |
<in this change / out of scope (why it's a different ticket) / owner-deferred (who decided)>
## Assumptions still open
<assumption → what changes if it's wrong; include anything logged after "just go">
```
## 7. Hand off
Summarize the decisions that changed the shape of the work, anything still open, and — under `--auto` — the low-confidence, high-blast-radius answers the owner should check first. Suggest `write-plan` next (it reads this record), or `implement` to drive the whole loop from here.
From alamops/skills at c88eb23, shown as plain text under its license: MIT (permissive). The license text is in LICENSE.
View SKILL.md on GitHub at c88eb23Files
- SKILL.md12 KB · 9cbc7fdf95ab
1 file, 12 KB in total. Each file has a sha256 in the pin's manifest; the first 12 characters are shown.
Skill folder on GitHub at c88eb23Related in Coding workflow
planning
This skill orchestrates multi-workflow projects with dependencies and shared data tables by creating a task graph in the orchestrator via the create-tasks tool.
by n8nOfficial publisher
Claude Code, Codex, Cursor +3 · about 2.4K tokens · pinned 6 days ago
progressive-building
This skill implements incremental workflow development for agents building or extending workflows.
by n8nOfficial publisher
Claude Code, Codex, Cursor +3 · about 1.4K tokens · pinned 6 days ago
workflow-builder
Builds and edits n8n workflows using the TypeScript SDK.
by n8nOfficial publisher
Claude Code, Codex, Cursor +3 · about 14.2K tokens · pinned 6 days ago
remotion-upgrade
This skill upgrades Remotion and its related packages to the latest stable version.
by RemotionOfficial publisher
Claude Code, Codex, Cursor +3 · about 460 tokens · pinned 6 days ago
remotion-upgrade
This skill upgrades Remotion and related packages across a project, automatically detecting the package manager and workspaces.
by RemotionOfficial publisher
Claude Code, Codex, Cursor +3 · about 460 tokens · pinned 6 days ago
final-release-review
Audits Python SDK release candidates or plans against the previous release, comparing diffs for regressions, API changes, and version compatibility.
by OpenAIOfficial publisher
Contains scripts
Claude Code, Codex, Cursor +3 · about 5.4K tokens · pinned 6 days ago