# Grill Me

> Grilling session that interrogates your plan one question at a time, challenges it against the existing domain model and codebase, sharpens terminology, and updates the CONTEXT.md glossary inline as decisions crystallise. Use when the user says "grill me", asks to stress-test or poke holes in a plan, wants to settle requirements, or wants vocabulary pinned down before building. First stage of the backlog-native pipeline — when the plan is settled, hand off to the `to-issues` skill.

- Skill: `maxim-saplin/grill-me` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add maxim-saplin/grill-me`
- Raw SKILL.md: https://api.skillmd.com/api/skills/maxim-saplin/grill-me/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Product & Planning
- Author: maxim-saplin (https://skillmd.com/u/maxim-saplin)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/maxim-saplin/grill-me

---


# grill-me — interrogate the plan before building it

<what-to-do>

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 between decisions one-by-one. For each question, provide your recommended answer.

Ask the questions one at a time, waiting for feedback on each question before continuing.

If a question can be answered by exploring the codebase, explore the codebase instead.

</what-to-do>

<supporting-info>

## Domain awareness

During codebase exploration, also look for existing documentation:

### File structure

A project has **one glossary**, **one product spec**, and **one drift log**. Paths are **defaults** — if the repo already names them differently, its names win. `AGENTS.md` is cold-boot orientation, not the spec. Discover the spec: `docs/INTENT-AND-DESIGN.md` if present, else `docs/REQUIREMENTS-AND-NOTES.md` (greenfield default). Never create the template name just to match this skill. Plain prose is a valid spec. Do not force an architecture-table template onto an existing intent document.

```
/
├── AGENTS.md                         ← cold-boot orientation only
├── CONTEXT.md                        ← glossary only: terms, _Avoid_, _See also_
├── docs/
│   ├── INTENT-AND-DESIGN.md          ← existing intent doc, if the repo has one
│   ├── REQUIREMENTS-AND-NOTES.md     ← greenfield default only, if no intent doc
│   └── DECISIONS.md                  ← execution drift log (orchestrator-owned)
└── <source>/
```

Architectural choices that meet the trade-off test go in the spec. Delivery-time drift goes in the drift log. Do not patch orientation into `AGENTS.md` to document a product decision.

**Create files lazily** — only when you have something to write. If `CONTEXT.md` exists, update it in place and never recreate it; if it does not, create it when the first term resolves, using [CONTEXT-FORMAT.md](references/CONTEXT-FORMAT.md). Patch the spec if present. Start `docs/REQUIREMENTS-AND-NOTES.md` only on a blank project with no intent document, using [SPEC-FORMAT.md](references/SPEC-FORMAT.md).

### On a blank slate

If the repo has no code and no `CONTEXT.md` yet, exactly two of the techniques below have nothing to work with — *challenge against the glossary* and *cross-reference with code*. Say so once, then lean on *sharpen fuzzy language* and *discuss concrete scenarios* instead, and keep writing the glossary as terms resolve. Do not repeatedly search a codebase that isn't there; cross-referencing resumes as soon as there is code.

## During the session

### Challenge against the glossary

When the user uses a term that conflicts with the existing language in `CONTEXT.md`, call it out immediately. "Your glossary defines 'cancellation' as X, but you seem to mean Y — which is it?"

### Sharpen fuzzy language

When the user uses vague or overloaded terms, propose a precise canonical term. "You're saying 'account' — do you mean the Customer or the User? Those are different things."

### Discuss concrete scenarios

When domain relationships are being discussed, stress-test them with specific scenarios. Invent scenarios that probe edge cases and force the user to be precise about the boundaries between concepts.

### Cross-reference with code

When the user states how something works, check whether the code agrees. If you find a contradiction, surface it: "Your code cancels entire Orders, but you just said partial cancellation is possible — which is right?"

### Update CONTEXT.md inline

When a term is resolved, update `CONTEXT.md` right there. Don't batch these up — capture them as they happen. Use the format in [CONTEXT-FORMAT.md](references/CONTEXT-FORMAT.md).

`CONTEXT.md` should be totally devoid of implementation details. Do not treat `CONTEXT.md` as a spec, a scratch pad, or a repository for implementation decisions. It is a glossary and nothing else.

### Record architectural trade-offs in the spec

When a decision meets all three of these, it needs a written home:

1. **Hard to reverse** — the cost of changing your mind later is meaningful
2. **Surprising without context** — a future reader will wonder "why did they do it this way?"
3. **The result of a real trade-off** — there were genuine alternatives and you picked one for specific reasons

Patch the existing spec in its own shape. If the spec already uses an Architecture table, add a row naming the rejected alternative (see [SPEC-FORMAT.md](references/SPEC-FORMAT.md)). If it is prose, add a short prose decision. Do not convert a prose spec into [SPEC-FORMAT.md](references/SPEC-FORMAT.md) just to have a table.

If any of the three is missing, write nothing.

### Where the grill session ends

A grill session produces a sharpened glossary and a patched spec — it does **not** produce a PRD. There is no separate requirements document to write: the spec *is* the artifact, and it is durable rather than per-feature.

When the plan is settled, hand off to the `to-issues` skill, which reads the spec and glossary directly and breaks the work into `issues/`.

</supporting-info>

