Grill me: the skill that interrogates your plan before your agent writes a line of code
Grill me is a skill for Claude Code, Codex and other agents that does exactly what its name says: it puts you on the grill. Before writing any code, the agent interviews you relentlessly about your plan, round after round, until no decision is left unmade. It's the most popular skill in the mattpocock/skills repository (MIT license) and the one its author says to use "every time you want to make a change".
This is part two of the Matt Pocock skills guide. Here you'll see the problem it solves, how it works line by line, how to install it, and a full real session: four rounds, 20 questions and a closed design without touching a line of code.
The problem: the agent didn't do what you wanted
The repository's README opens with a quote from *The Pragmatic Programmer*: "No one knows exactly what they want". The most common failure in software development is misalignment. You think the developer knows what you want, you see what they built, and you realise they didn't understand you. With an agent it's the same, only faster: in two minutes you have 400 lines of code solving a problem that wasn't yours.
The cause is rarely the model. Your request carries dozens of implicit decisions (provider, permissions, edge cases, what happens on failure) and the agent fills them with reasonable assumptions that aren't yours. grill-me brings those decisions into the open before they turn into code.
How grill-me works inside
The grill-me SKILL.md has a single instruction: "call the grilling skill". All the behaviour lives in grilling, the interview primitive also used by grill-with-docs, triage, wayfinder and improve-codebase-architecture. It's under 30 lines, and every sentence changes something specific:
1. The decision tree
The agent models your plan as a design tree: every decision branches into the decisions that hang off it. Picking an email provider opens questions about domains and DNS; deciding you'll review every send opens questions about an admin panel.
2. Rounds and the frontier
The tree is worked in rounds. The frontier is every decision whose prerequisites are already settled: what can be asked *now* without guessing at answers you haven't given. Each round asks the whole frontier at once and waits. A question that depends on another still-open question goes to the next round.
This is what separates grill-me from "ask me questions before you start". Without the frontier, the agent fires 25 questions at once, half of them about branches your first answer will prune.
3. A recommendation per question
Every question is numbered and carries the agent's recommended answer:
❓ **Q1** - **<title>**: <question, may include several options>
➡️ <recommended answer>The skill requires each question to be worded so that "yes" accepts the recommendation. You can answer a whole round with "Q1 yes, Q2 yes, Q3 no: ..." and only write when you disagree.
4. Facts are the agent's job, decisions are yours
This is the most important rule. If a question needs a fact from the environment (what's in the code, which version you use, which tables exist), the agent doesn't ask you: it dispatches a subagent with a fresh context to find it, and keeps asking the rest of the frontier meanwhile. Decisions, on the other hand, always go to you.
5. When it ends
The session is done when the frontier is empty: every branch visited, nothing silently assumed. Even then, the agent doesn't act until you confirm you've reached a shared understanding.

How to install and run grill-me
With the official plugin in Claude Code:
claude plugin install mattpocock-skills@claude-plugins-officialOr just the files, for any compatible agent:
npx skills@latest add mattpocock/skillsThen type the command followed by your plan. With the plugin it carries the prefix:
/mattpocock-skills:grill-me I want to add a weekly newsletter to my online store...If you installed it with npx skills, it's just /grill-me. It's a user-invoked skill: the agent never fires it on its own, even if your request fits.
A real session: a newsletter for a bike shop
To see how it behaves we ran grill-me in Claude Code 2.1.316 with Sonnet 5.5, in an empty folder (no project code). The starting plan, written in Spanish, was deliberately vague:
I want to add a weekly newsletter to my online bike shop (Next.js + Postgres on a VPS). Customers subscribe with their email and every Monday they get the week's deals and new products.
Round 1: seven baseline questions
The first round had seven questions: email provider, double opt-in, unsubscribe and legal compliance, who can subscribe, how the content is generated, what data exists in Postgres, and how the send is scheduled. One detail shows the facts rule at work: since the folder had no code, the agent said so up front and flagged the database question as a fact only I could give it.

I answered almost everything with "yes". I changed two things: I didn't want automatic sending (I wanted to review every issue) and the time zone had to be Quito, not Madrid. I also gave it the real schema: products with created_at and a discounts table with product_id, percent, starts_at and ends_at.
Round 2: my answers reshape the tree
Here the frontier shows its value. Because I asked to review every send, the Monday cron stopped being "the send" and became "the approval deadline". Round 2 brought eight questions that made no sense before:
- A review flow: draft on Sunday at 18:00, email alert, approval on an admin page, and on Monday at 8:00 only approved issues go out.
- How to protect that page (there was no admin panel).
- Exact content rules using my schema: products with
created_atsince the last send, discounts active withstarts_at <= now() < ends_at, at most 8 per section. - What to do in a week with nothing new, how to avoid duplicate sends with an idempotency key, and a webhook to suppress bounces.
Rounds 3 and 4: closing the tree
Round 3 had five fine-grained questions: freeze the content on approval (so Monday's email matches what I reviewed even if a price changes), don't import customers without consent, measure with UTM tags instead of open-tracking pixels, delete data on unsubscribe, and do a test send first. It also corrected the law on its own: once it knew the shop was in Ecuador, it swapped GDPR for Ecuador's LOPDP.
In round 4 there were no open branches left. The agent delivered a summary of the full design (tables, weekly flow, content rules, reliability and a "your to-dos" list: DNS, Resend account and legal text) and ended with:
Do you confirm this is what you want? Once you say yes, I'll start implementing.
Session numbers
| Fact | Value |
|---|---|
| Rounds | 4 |
| Questions | 20 (7 + 8 + 5, plus the final summary) |
| Recommendations I changed | 2 (manual review and time zone), plus the real database schema |
| Model time | 95 seconds in total |
| Cost | 0.51 USD on Sonnet 5.5 |
| Lines of code written | 0 |
The most valuable part wasn't the recommendations I accepted but the two I changed. A single one, "I want to review it myself", produced an admin panel, two separate crons and the content-freezing rule. Had the agent started coding from the original plan, all of that would have come back as rework.
grill-me, grill-with-docs and grilling: which one to use
All three run the same interview. What changes is what they leave behind:
| Skill | When to use it | What it leaves |
|---|---|---|
| `grill-me` | No repository: a plan, a decision, a text, a talk | Nothing on disk, just the conversation |
| `grill-with-docs` | You're working inside a repository | `GLOSSARY.md` and ADRs updated as you talk |
| `grilling` | You want the interview with no wrapper | Same as `grill-me`; the agent can also load it on its own |
The author is clear: in a working directory, use grill-with-docs, because it does the same and leaves a paper trail. grill-me is for everything that isn't code. We cover it in depth in part 4 of this guide.
Tips to get the most out of it
- Answer by number. "Q1 yes. Q2 yes. Q5: I want to review it myself" is faster and makes clear what you're changing.
- Disagree with reasons. "12 hours, the shop opens early" gives the agent context for the next questions.
- Give it the code when there is code. Run the skill from the project root so it resolves facts on its own and only asks you for decisions.
- Don't let it implement halfway. If you say "just start" mid-session, you lose the remaining branches. Finish the rounds.
- Keep the final summary. It's the perfect input for
/to-spec, which turns it into a spec published to your issue tracker.
Common mistakes
- Expecting it to trigger on its own.
grill-mehasdisable-model-invocation: true. You have to type the command. - Answering everything in one paragraph. The agent has to guess which answer goes with which question. Use the numbers.
- Accepting every recommendation unread. The defaults are good but generic. In our session, the default time zone was Madrid.
- Using it for trivial tasks. Four rounds to change a button colour is too much. Save it for changes with real decisions.
FAQ
How much does a session cost? In our test, 0.51 USD on Sonnet 5.5 for 20 questions. The cost per round grows because the context grows.
Does it work in Codex or Copilot? Yes. The repository ships agents/openai.yaml with allow_implicit_invocation: false, so Codex won't fire it on its own either.
Can I use it without a repository? That's exactly its use case: plans, business decisions, talks or writing. The next part of the guide has four real examples outside code.
Does it write anything to disk? No. If you want it to keep a glossary and decisions, use grill-with-docs.
Next step
Run /grill-me on the next change you were going to ask your agent for directly, and count how many decisions you hadn't made. Then move on to part 3: real grill-me examples outside code, from moving a SaaS to a VPS to preparing a talk or launching an ebook.
// source code
// implementation
More on AI agents

- Skills for your agents
- Claude Code

- Skills for your agents
- Claude Code

- Skills for your agents
- Claude Code