agentleFS
aemerson-commitsaemerson-commits/shareable-skills/skills/grill-me/SKILL.md

grill-me

Skill1 starsChanged 8 months agoMITView on GitHub

Interrogate the user about their idea before any work begins. Works the design tree in rounds - asks the whole unblocked frontier at once with a recommended answer each, self-serves facts from the codebase. Produces an Intent Summary for /research-gate.

193 other projects use a version of this, 8 of them edited.

Adopted by

Most recently taken up by

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.
  • julianoczkowskiSkill

    brief-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

  • LesaniSkill

    writing-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

  • simo97Skill

    request-refactor-plan

    Use this skill when user wants to create a refactor plan.

    Also in 43 projects that use this

  • simo97Skill

    migrate-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

  • LesaniSkill

    writing-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

  • liufeng1976Skill

    setup-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

The file

Show its rules and text

We split this skill into the rules it gives an agent

15 rules. 0 are common, 14 are distinctive, and 1 is very specific to this project.

  • 0

    Common

    Most of the 177 edited versions we read keep these.

  • 14

    Distinctive

    This author's own choices. Worth a look.

  • 1

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Default to numbered markdown so the user can answer against the numbers:

    line 44
  2. Distinctive:

    Don't block on it. A running lookup is an unsettled prerequisite: only the questions downstream of it wait.

    line 64
  3. Distinctive:

    When the grilling runs on a chat surface instead of a desktop terminal — a phone chat app, a remote/cloud session, or the user saying …

    line 70
  4. Distinctive:

    Ask 1–2 questions per turn (frontier order, most-unlocking first), not the whole round.

    line 73
  5. Distinctive:

    Keep the per-question format: the question, then ➡️ the recommended answer and why.

    line 75
  6. Distinctive:

    Keep every message short enough to read comfortably on a phone.

    line 76
  7. Distinctive:

    Challenge fuzzy language against the glossary: If the user says a term the glossary defines, confirm you're both using it the same way.

    line 88
  8. Distinctive:

    Cross-reference code: Verify a proposed term against how the codebase actually names the concept (a grep often settles it faster than a …

    line 90
  9. Distinctive:

    Update the glossary as you go: When the session lands a sharpened or new definition, add/update the entry in the same commit as the feature …

    line 91
  10. Distinctive:

    Stop when the frontier is empty, or when branches 1-4 are settled and the user wants to move.

    line 142
  11. Distinctive:

    Do not act on it until the user confirms you have reached a shared understanding.

    line 159
  12. Distinctive:

    If you adopt the file-based form, a simple frontmatter block keeps the lifecycle visible:

    line 174
  13. Very specific:

    NOT a feature description yet — grill it first, replace the body with the real Intent Summary, and flip to decided before anything …

    line 186
  14. Distinctive:

    Before producing the summary, confirm any glossary additions or edits the session produced are written — the Intent Summary should use the …

    line 191
  15. Distinctive:

    When a branch of the tree can only be answered by someone who isn't the user — a stakeholder, a domain expert, a customer — export that …

    line 202

“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.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Grill Me — Intent Interrogation

Interview the user relentlessly until you reach a shared understanding of what they want built. Prevents building the wrong thing.

Map the idea as a design tree: every decision branches into the decisions that hang off it.

When to Use

  • User describes a new feature concept with ambiguous scope
  • User references a business process Claude hasn't encountered before
  • Cross-department stakeholders involved
  • User explicitly invokes /grill-me
  • Any request where "what" or "why" is unclear, even if "how" seems obvious

When to Skip

  • Bug fixes or "X is broken" — go straight to diagnosis
  • User provides a detailed spec or plan document
  • Feature is a direct copy of an existing view (use /propagate-feature)
  • Single-file changes or config updates
  • User says "just do it" or "I know what I want"

Rounds and the Frontier

Work the tree in rounds. The frontier is every decision whose prerequisites are already settled — the questions you can ask now without guessing at answers you haven't heard yet.

Ask the whole frontier in one round. Then wait for the user's answers before the next round.

Each answer reshapes the tree: settled decisions push the frontier outward and unblock questions that depended on them. Recompute the frontier and ask the next round. A question whose answer depends on another question still open in this round belongs to a later round.

Round one is often a single critical question — the one that opens everything else. That is correct, not a failure to batch.

The session is done when the frontier is empty: every branch visited, nothing silently assumed.

Why rounds, not one-at-a-time: the tail of a grilling session is mostly easy questions. One-per-turn turns that tail into "yes, yes, yes" across ten round-trips — the user's attention is spent on ceremony instead of on the decisions that matter. Batching the frontier lets them blast through the easy ones (dictation works well here) and spend their thinking on the hard ones.

Question format

Default to numbered markdown so the user can answer against the numbers:

### Round 1

❓ **Q1 — <question title>**: <question body, multiple paragraphs and options allowed>

➡️ <your recommended answer, and why>

❓ **Q2 — <question title>**: ...

➡️ ...

If your harness offers a structured multiple-choice prompt, use it only when the whole round is closed-choice — every question has a small set of discrete options. Open-ended questions ("paint the picture", "what breaks today") lose their value squeezed into fixed options, so those rounds stay markdown.

Facts are your job, decisions are theirs

Finding facts is never the user's job. When a frontier question needs a fact from the environment — a schema, an existing endpoint, who holds a permission, what a column actually contains — go get it. Grep, query, read the notes. Then tell the user what you found and ask only whether it's right.

Don't block on it. A running lookup is an unsettled prerequisite: only the questions downstream of it wait. Ask the rest of the frontier now. If the harness supports it, dispatch a sub-agent for the lookup and keep interviewing.

The decisions are the user's. Put each to them and wait.

Chat Surface Mode (phone / remote)

When the grilling runs on a chat surface instead of a desktop terminal — a phone chat app, a remote/cloud session, or the user saying "phone mode" — change the pacing and nothing else:

  • Ask 1–2 questions per turn (frontier order, most-unlocking first), not the whole round. Numbered-batch dictation works at a desk; on a phone it's a wall of text.
  • Keep the per-question format: the question, then ➡️ the recommended answer and why.
  • Keep every message short enough to read comfortably on a phone.
  • The tree, the frontier, self-served facts, the glossary pass, and termination are unchanged.

A chat-surface session usually can't continue straight into /research-gate, so it ends with the durable handback (§ Handback below) instead of a same-session paste.

Project Glossary

If your project maintains a domain glossary (a file that pins down what overloaded terms mean — shared identifiers, record types, process names, status codes, etc.), read it before the first question. Grilling on a codebase fails when the agent re-learns jargon every session or quietly conflates two meanings of one word.

During the session:

  • Challenge fuzzy language against the glossary. If the user says a term the glossary defines, confirm you're both using it the same way. If they describe a concept verbosely and a glossary term already covers it, say so.
  • Sharpen new terms. When the feature introduces a term not in the glossary — or uses an existing term in a new way — that's a grilling branch: get a one-line definition the user agrees on. Surface collisions explicitly (does this new "X" mean the same as the existing "X"?).
  • Cross-reference code. Verify a proposed term against how the codebase actually names the concept (a grep often settles it faster than a question).
  • Update the glossary as you go. When the session lands a sharpened or new definition, add/update the entry in the same commit as the feature — undocumented shared language is the gap this skill exists to close.

This glossary pass is optional for non-codebase use (writing, planning, personal decisions), but mandatory for any feature touching a repo that maintains one.

The Design Tree

These are the branches, not a walk order. Each round, ask whichever are on the frontier; skip any the context already answers:

1. Audience & Access

  • Who uses this? Which user roles? Which project/app?
  • Is this for a specific person or team?
  • Does it need specific permissions or is it for all authenticated users?

2. Success Criteria

  • What does "working" look like? Paint the picture.
  • How will you know it's done? What's the minimum viable version?
  • Is there an existing process this replaces? (spreadsheet, phone call, email, manual workflow)

3. Data Source & Shape

  • Where does the data come from? (internal database, external API, cache, manual entry)
  • How fresh does it need to be? (real-time, cached, daily, weekly)
  • What are the key fields? What's the primary identifier?
  • Are there edge cases in the data? (duplicates, nulls, cancelled records, zero-quantity lines)

4. Interaction Model

  • Is this a dashboard (view-only), a tool (input/output), or a workflow (multi-step)?
  • Daily use or occasional? (determines caching strategy and data density)
  • Mobile or desktop? (determines responsive strategy)
  • Does it need to send notifications, emails, or trigger actions?

5. Integration Points

  • Does this connect to existing views/features? Which ones?
  • Does it need a new API endpoint, or can it reuse existing ones?
  • Does it need new database tables, cache keys, or external service columns?
  • Does it interact with external systems?

6. Edge Cases & Risks

  • What happens when there's no data? (empty state)
  • What happens with bad/incomplete data? (error handling)
  • Who should NOT see this? (security implications)
  • What's the blast radius if it breaks? (read-only = low, mutations = high)

7. Priority & Scope

  • How urgent is this? (blocking production, improving workflow, nice-to-have)
  • Is this the full vision or an MVP? What gets cut for v1?
  • What does v2 look like? (helps design for extensibility without over-engineering)

Branches 1-4 are the load-bearing ones. Branches 5-7 can be resolved by /research-gate or during implementation if the user is out of patience.

Termination

Stop when the frontier is empty, or when branches 1-4 are settled and the user wants to move.

Produce an Intent Summary:

## Intent Summary: [Feature Name]

**For**: [audience] in [project]
**Purpose**: [one sentence — what problem this solves]
**Replaces**: [current process, if any]
**Data**: [source] → [key fields] → [display format]
**Interaction**: [dashboard/tool/workflow], [frequency], [device]
**Success**: [what "done" looks like — 2-3 bullet points]
**MVP scope**: [what's in v1, what's deferred]
**Risks**: [key edge cases or unknowns]

Do not act on it until the user confirms you have reached a shared understanding.

Handback — where the Intent Summary lives

The summary is the input to /research-gate, and it must survive the session that produced it. Two flows:

  • Same-session (continuing straight into /research-gate): paste it directly into the feature description. If your project wants a durable record too, also write it to a tracked file (e.g. docs/intents/<slug>.md) in the same commit as the feature.
  • Remote / chat-surface session (can't continue into the gate itself): write the summary to a tracked file, commit that one file on a dedicated branch (e.g. intent/<slug>), push it, and tell the operator the branch name. Touch nothing else — no PR, no merge. A later session (or /research-gate itself) picks it up from there.

If you adopt the file-based form, a simple frontmatter block keeps the lifecycle visible:

---
status: decided          # or: proposed (queued for grilling, not yet a feature description)
                          #     consumed (flipped by the session that acted on it)
date: YYYY-MM-DD
source: phone-grill       # or desktop-grill | remote-grill
---

proposed matters because a queued idea pushed to the branch before any grilling happened is NOT a feature description yet — grill it first, replace the body with the real Intent Summary, and flip to decided before anything downstream may consume it. The session that acts on a decided doc flips it to consumed in the commit that starts the work, and deletes the branch once that work lands on the trunk.

Before producing the summary, confirm any glossary additions or edits the session produced are written — the Intent Summary should use the glossary's terms verbatim.

Integration

SkillRelationship
/research-gateFeeds into — Intent Summary is the input
/write-planUpstream — Intent Summary referenced in plan Goal
/full-stack-buildUpstream — can invoke grill-me in Phase 0 if intent is unclear
/persistent-issueNot related — grill-me is for new features, not debugging

When a branch of the tree can only be answered by someone who isn't the user — a stakeholder, a domain expert, a customer — export that branch into a document for them rather than guessing or stalling the whole session on it.

Pipeline Position

/grill-me  →  /research-gate  →  /write-plan  →  /full-stack-build
  INTENT        CONSTRAINTS       DECOMPOSITION     EXECUTION

The rounds/frontier model is adapted from the grilling skill in mattpocock/skills (MIT).

Download now (ZIP)

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
What did you use it for? e.g. Reviewing pull requests in a Rails app

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.