grill-me
Skill0 starsChanged 9 days agoMITView on GitHub
Interview the user relentlessly about a plan or design until reaching shared understanding, resolving each branch of the decision tree, then emitting a Design Notes block (decisions, rules with examples, edge cases, Glossary) and persisting it to docs/intent/NNNN-<slug>.md for handoff to /to-prd. Use when user wants to stress-test a plan, get grilled on their design, do a pre-PRD design review, challenge an idea before writing it up, or mentions "grill me" or runs /grill-me.
193 other projects use a version of this, 73 of them edited.
Adopted by
Most recently taken up by
- xiaoxiaosrm/dsh-mattpocock-skillstheir own version, first seen Nov 8, 2026
- ishandutta2007/Awesome-Claude-Skillstheir own version, first seen Nov 8, 2026
- microsoft/frontier-agentic-modernization-rvastheir own version, first seen Nov 8, 2026
- The-Vibe-Company/quivrtheir own version, first seen Nov 8, 2026
- anotherben/claude-harnessedited, first seen Nov 8, 2026
- codedb-io/codedb-lenstheir own version, first seen Nov 8, 2026
Used with
Projects with it also use brief-to-tasks, writing-beats and 10 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
julianoczkowskiSkillbrief-to-tasks
Break a design brief into an ordered checklist of independently buildable tasks using vertical slices. Saves as a markdown checklist. Use when user wants to break down work, create tasks from a brief, plan implementation order, or mentions "tasks" or "breakdown".
Also in 7 projects that use this
LesaniSkillwriting-beats
Shape an article as a journey of beats, choose-your-own-adventure style. The user picks a starting beat from the raw material, you write only that beat, then offer options for where to pivot next, beat by beat, until the article reaches a natural end. Use when the user has raw material and wants to assemble it as a narrative rather than an argument.
Also in 66 projects that use this
simo97Skillrequest-refactor-plan
Use this skill when user wants to create a refactor plan.
Also in 43 projects that use this
simo97Skillmigrate-to-shoehorn
Migrate test files from `as` type assertions to @total-typescript/shoehorn. Use when user mentions shoehorn, wants to replace `as` in tests, or needs partial test data.
Also in 71 projects that use this
LesaniSkillwriting-shape
Take a markdown file of raw material and shape it into an article through a conversational session — drafting candidate openings, growing the piece paragraph by paragraph, arguing about format (lists, tables, callouts, quotes) at each step. Use when the user has a pile of notes, fragments, or a rough draft and wants help turning it into something publishable.
Also in 65 projects that use this
liufeng1976Skillsetup-ts-deep-modules
Wire dependency-cruiser into a TypeScript repo so each package is a deep module — implementation hidden in subfolders, reachable only through its entry-point files. User-invoked.
Also in 42 projects that use this
- +2 more from simo97
Other versions193 projects use a version of this.
Word for word · 0
None found.
Edited · 73
- langfuse/langfuse★ 37k64% same
- humanlayer/humanlayer★ 13k44% same
- openstatusHQ/openstatus★ 9.3k71% same
- webiny/webiny-js★ 8k66% same
- sanity-io/sanity★ 6.4k71% same
- camunda/camunda★ 4.4k71% same
- event-catalog/eventcatalog★ 3k66% same
- Akylas/OSS-DocumentScanner★ 2.6k66% same
- openstatusHQ/data-table-filters★ 2.3k71% same
- owid/owid-grapher★ 1.6k62% same
63 more not listed
Wrote their own version · 120
- mattpocock/skills★ 309ksame name
- QuivrHQ/quivr★ 40ksame name
- The-Vibe-Company/quivr★ 40ksame name
- nrwl/nx★ 29ksame name
- windmill-labs/windmill★ 18ksame name
- GreyDGL/PentestGPT★ 16ksame name
- jaredpalmer/kev★ 9.8ksame name
- ArcReel/ArcReel★ 6.3ksame name
- vinvcn/mattpocock-skills-zh-CN★ 5.5ksame name
- pollinations/pollinations★ 5.3ksame name
110 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository31 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- ai-estimateSkill
- aso-craftSkill
- audit-reportSkill
- babysit-prsSkill
- blueprintSkill
- brag-docSkill
- business-briefSkill
- cagan-checkSkill
- code-craftSkill
- commit-reportSkill
- compassSkill
- cv-craftSkill
- dev-flowSkill
- implementation-reviewSkill
- llm-wikiSkill
- parallel-worktreesSkill
- periscopeSkill
- portfolio-syncSkill
- pr-craftSkill
- problem-solvingSkill
- publish-skillSkill
- review-passSkill
- security-auditSkill
- semverSkill
- sentinelSkill
- seoSkill
- testing-philosophySkill
- to-prdSkill
- write-a-skillSkill
- wstg-security-testingSkill
The file
We split this skill into the rules it gives an agent
7 rules. 0 are common, 4 are distinctive, and 3 are very specific to this project.
0
Common
Most of the 177 edited versions we read keep these.
4
Distinctive
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 11
Codebase first: If a question can be answered by reading the repo, read it instead of asking.
- Very specific: line 13
Converge: Stop when every major branch of the decision tree has either a resolved decision or an explicit OPEN marker.
- Very specific: line 14
OPEN markers: If a branch can't be resolved (I defer, codebase silent, needs external input), record it as OPEN: <question> and move on.
- Very specific: line 34
If nobody present can answer, record OPEN: and move on.
- Distinctive: line 41
When the user names an entity, action, or concept (e.g., "order", "checkout", "subscription"), note the exact word.
- Distinctive: line 42
When generic words appear ("the thing", "this object", "the record"), ask: "What does the business call this?" Force a real term.
- Distinctive: line 43
When two terms seem to overlap ("user" vs "customer", "cart" vs "order"), ask which is which and where the boundary is — that's a …
“Common” is measured: kept by at least 6 in 10 of the 177 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Interview me relentlessly about every aspect of this plan until we reach a shared understanding. Walk down each branch of the decision tree, resolving dependencies between decisions one-by-one. For each question, provide your recommended answer (with brief reasoning); skip the recommendation only when the codebase or my prior answers haven't given you enough signal, or when you are asking me for an example (lens 12).
Rules of engagement
- One question at a time. One decision per turn: no multi-part dumps, no trailing "Also: ...?", and no second decision folded into the closing line ("Which do you want, and should X...?"). A second question in the same turn splits the user's answer and one of them gets skipped. Before sending, count the decisions you are asking the user to make; if it is more than one, cut every one but the first and hold the rest for later turns.
- Codebase first. If a question can be answered by reading the repo, read it instead of asking.
- ADR awareness. Scan
docs/adr/before grilling. Don't relitigate settled architectural decisions; treat ADRs as locked inputs and grill around them. - Converge. Stop when every major branch of the decision tree has either a resolved decision or an explicit
OPENmarker. Cap: ~20 questions per session unless I ask to keep going. - OPEN markers. If a branch can't be resolved (I defer, codebase silent, needs external input), record it as
OPEN: <question>and move on. Don't loop. - Edge cases survive the session. Anything surfaced by lenses 6-7 goes in the
## Edge casesoutput block with its decision, even when the decision is "won't". Discussed-then-dropped is how a case reaches production unhandled — the block is whatblueprintturns into its Edge Cases table.
Questioning lens
Drive questions through these angles, in roughly this order (lens 12 is the exception: it follows each business rule as it settles). Skip ones that don't apply.
- Scope — what's in, what's out, what's deferred.
- Actors + user stories — who triggers this, what do they expect.
- Domain vocabulary — see "Capture the domain vocabulary" below.
- Data shape — entities, relations, identity, lifecycle, persistence.
- Boundaries + integrations — which subsystems / services / external APIs are touched, sync vs async.
- Failure modes — what breaks, what's transient vs fatal, retry policy, idempotency.
- Edge cases — empty states, max sizes, concurrency, race conditions, duplicates.
- Security + auth — who's allowed, what they see, attack surface, PII handling.
- Performance + scale — expected volume, p95 latency targets, hot paths.
- Observability — what gets logged / metered / traced, alert thresholds.
- Rollback + migration — how to undo, schema reversibility, feature-flag plan.
- Examples, asked per rule as it settles. In its own turn, ask for one concrete case where the rule applies; in the next turn, one where it doesn't. An abstract rule hides misunderstandings that a concrete case exposes, and these examples become the acceptance examples the code is later held to, so they have to be the user's, in their words and numbers.
- This lens is the one exception to offering a recommended answer: an example you suggest and the user nods through becomes an oracle nobody actually chose. If the user asks you to propose one, do, and record it as
(suggested)so to-prd marks the rule(proposed). - If nobody present can answer, record
OPEN:and move on. Skip the lens for a tiny or highly technical change where an example adds nothing. - What is testable end-to-end and which test patterns to mirror is a codebase question: read the repo rather than asking.
- This lens is the one exception to offering a recommended answer: an example you suggest and the user nods through becomes an oracle nobody actually chose. If the user asks you to propose one, do, and record it as
Capture the domain vocabulary
While interviewing, build a ubiquitous language for this feature — the shared terms used by the business, the user, and the code. Rules:
- When the user names an entity, action, or concept (e.g., "order", "checkout", "subscription"), note the exact word. Don't paraphrase.
- When generic words appear ("the thing", "this object", "the record"), ask: "What does the business call this?" Force a real term.
- When two terms seem to overlap ("user" vs "customer", "cart" vs "order"), ask which is which and where the boundary is — that's a bounded-context signal.
- Capture aliases too: if devs say
OrderItemand the business says "line", record both and pick one as canonical.
Output
At end of session (or when I say "wrap it up"), emit this block and commit it to disk:
- Path:
bash scripts/next-intent-index.sh <slug>prints the zero-padded target (docs/intent/NNNN-<slug>.md) and creates the directory if missing.<slug>= short kebab feature name. - Also print the block in chat, so the conversation can carry straight into
/to-prdwithout a file read.
Writing it down is the point. The Glossary and the edge-case decisions are load-bearing for every stage after this one, and until now they lived only in conversation scrollback — one compaction or one closed session and to-prd is synthesizing from thinner context than the interview actually produced, or halting. A numbered file makes the interview an artifact the rest of the chain can read, diff, and review, the same way the PRD, ADR, and plan already are.
Skip the file only for a throwaway session the user says not to keep, and say that you skipped it.
# Design Notes: <feature title>
- **Status**: draft | settled | superseded
- **Date**: YYYY-MM-DD
- **Slug**: <kebab-slug>
## Resolved decisions
- <decision>: <chosen option> — <one-line rationale>
- ...
## Rules and examples
Each business rule the interview settled, with the examples the user gave for it (lens 12), in their words and numbers. A rule the user gave no example for is listed alone; to-prd proposes examples for the user to approve. Mark an example you proposed and the user accepted `(suggested)`.
- Rule: <one-line rule>
- applies: <concrete example>
- doesn't apply: <concrete counter-example>
- ...
## Open questions
- OPEN: <question> — <who/what needs to answer it>
- ...
## Edge cases
Every case raised by lenses 6 (failure modes) and 7 (edge cases), with the decision reached. `handle` = build it, `defer` = out of scope for now, `won't` = deliberately unsupported.
- <case> — handle | defer | won't. <one-line reason>
- ...
## Glossary
Term — definition. (aliases: <other names if any>)
...This block is the handoff to /to-prd, which synthesizes it into a PRD and cites the intent file in its Sources line. Report the written path when you finish.
Updating an existing intent. If the user reopens a settled design, find the file by slug and amend it rather than minting a new index: a second file for the same feature splits the Glossary, which is exactly what this artifact exists to prevent. Edit-safe: Status, Open questions, adding resolved decisions, rules and examples, or edge cases. Changing a ## Glossary term after to-prd has consumed it needs an explicit OK, because blueprint and the implementing code are already using that word.
When to skip grill-me
- Bug fix with obvious cause.
- Single-file change, no design tradeoffs.
- Spike / throwaway exploration.
- Design already settled in a PRD or ADR (read those instead).
Pipeline placement
grill-me → to-prd → compass → blueprint → code
- grill-me (this skill): stress-tests the decision tree, extracts the Glossary, rules with their examples, and OPEN questions.
- to-prd — synthesizes Design Notes into a PRD on disk + tracker.
- compass — locks architectural decisions in ADRs.
- blueprint — produces implementation plan.
- code — implement.
Skip earlier stages when the artifact already exists. grill-me is optional for small features but high-leverage for anything with non-obvious tradeoffs.
Humanize the written prose (if available)
Before writing generated prose to a file, if the humanizer skill is installed, run it on the drafted text so the created document reads naturally and free of AI tells; skip silently if it is not available. Apply it to the human-facing document body only, never to code, frontmatter, file paths, IDs, or literal templates.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

