grill-me
Grill Me
Interview the user relentlessly about a plan or design using structured Socratic questioning until reaching high confidence. Walk the decision tree systematically, uncover hidden assumptions, expose edge cases, and validate feasibility before implementation.
Workflow
Phase 1: Read Context and Scope
Before asking anything, gather the full context:
- Read any provided design documents, specs, or written plans
- Read relevant code if the user references existing systems
- Understand the scope: is this a new feature, refactor, infrastructure change, architecture shift?
- Identify the primary risk factors and dependencies
If the user hasn't provided context, ask them to share the plan first:
What's the design or plan you want me to grill you on? Please share:
- A brief description or goals
- Any relevant code or documentation
- Constraints or requirements
Do not proceed until you have context to work with.
Phase 2: Identify Question Categories
Structure your questioning around these categories:
| Category | Focus | Example Questions |
|---|---|---|
| Requirements | What is the user trying to solve? | "What problem does this solve?" "Who are the users?" "What success looks like?" |
| Assumptions | What is the user taking for granted? | "Why are you using technology X?" "What if that assumption is wrong?" "Have you validated this with users?" |
| Constraints | What are the boundaries? | "What are the hard constraints (time, budget, scale)?" "What are you not allowed to change?" "What's the deployment path?" |
| Dependencies | What else must be true? | "What other systems must exist?" "What's the critical path?" "What could block you?" |
| Edge Cases | What could break it? | "What happens at scale?" "What about error cases?" "What if X fails?" |
| Validation | How will you know it works? | "How will you measure success?" "What are your test criteria?" "How will you catch regressions?" |
Phase 3: Build the Decision Tree
Map out the logical dependencies between decisions:
Primary decision
├── Sub-decision A
│ ├── Implementation choice A.1
│ └── Implementation choice A.2
├── Sub-decision B
│ ├── Validation approach B.1
│ └── Rollback plan B.2
└── Sub-decision C
Identify which decisions must be resolved first (blockers) and which can be explored in parallel.
Important: Ask about high-impact, high-uncertainty decisions first. Skip decisions that are already locked down (unless you spot contradictions).
Phase 4: Ask Questions Sequentially
For each unresolved branch, ask exactly one focused question:
Structure of each question:
- Establish context — briefly remind the user why this matters
- Ask the question — specific, not open-ended
- Provide your recommended answer — what you'd do or what you've seen work
- Flag risks — what could go wrong if the opposite choice is made
- Pause for response — wait for the user's answer before moving on
Example:
You're planning async message processing. The question is:
should messages be processed in order (FIFO) or can they be out of order?
My recommendation: enforce FIFO unless you have a specific reason not to.
Out-of-order processing complicates debugging and introduces race conditions.
Risk if you go out-of-order: state consistency bugs that are hard to reproduce.
What's your thinking here?
Phase 5: Explore the Codebase When Applicable
If a question can be answered by reading code, do that instead of asking:
# Examples:
grep -r "MessageQueue" src/ # How are messages currently queued?
grep -r "error handling" src/ # What error patterns already exist?
find . -name "*.test.ts" | head -5 # What's the testing pattern?
Surface findings to the user:
I found that your existing API already has retry logic in [file:line].
Given that, my question becomes: should we reuse this pattern or replace it?
Phase 6: Escalate on Conflicts
If the user's answer contradicts earlier statements or introduces new risks, surface this explicitly:
You said earlier that latency is critical, but now you're proposing a
synchronous validation step that could block for seconds.
How do you reconcile these constraints?
Do not accept contradictions silently. Push back gently but clearly.
Phase 7: Recognize Completion Signals
Stop questioning when:
- All high-impact decisions are resolved — the user has clear answers to every critical question
- All branches of the decision tree are explored — you've walked the full dependency graph
- Validation plan is solid — the user knows how to measure success and catch failures
- Risk mitigation is addressed — for each major risk, there's a mitigation or acceptance
- The user signals confidence — they say "I'm confident now" or "This is locked"
- You've reached a decision impasse — the user is unwilling to change their mind despite contradictions (note this in your closing)
Phase 8: Summarize and Confirm
When you've finished questioning, provide a brief summary:
## Summary
### Decisions Locked
- Message processing: FIFO with retry logic (max 3 retries)
- Deployment: Blue-green with health checks
- Monitoring: Custom metrics on latency percentiles
### Remaining Risks
- Database scaling: you identified this but haven't validated with ops yet
- Failover time: depends on network convergence (currently untested)
### Next Steps
1. Validate with ops team on database capacity
2. Run failover simulation to measure real time
3. Build monitoring dashboard before launch
Confidence level: High on architecture, Medium on operational readiness.
Ready to design in detail?
Question Categories Reference
Requirements Questions
- "Who are the end users of this feature?"
- "What's the primary problem this solves?"
- "What's the definition of success?"
- "What's the deadline, and is it flexible?"
- "What's the budget or resource constraint?"
Assumptions Questions
- "Why did you choose technology/pattern X?"
- "What are you assuming about user behavior?"
- "What if that assumption is wrong?"
- "Have you validated this with real users/data?"
- "Are there alternatives you considered and rejected?"
Constraints Questions
- "What can't you change about the existing system?"
- "What are the hard limits (performance, cost, security)?"
- "What dependencies do you have on other teams?"
- "What's your deployment window?"
- "What's the rollback plan if things go wrong?"
Dependencies Questions
- "What has to be true for this to work?"
- "What systems must integrate with yours?"
- "What's the critical path?"
- "What could cause cascading failures?"
- "How do you handle partial failures?"
Edge Cases Questions
- "What happens when X fails?"
- "How do you handle malformed input?"
- "What's your load limit, and what happens beyond it?"
- "How do you prevent race conditions?"
- "What about old API clients or legacy data?"
Validation Questions
- "How will you know this is working?"
- "What metrics matter most?"
- "How will you catch regressions?"
- "What's your monitoring strategy?"
- "What's your testing approach—unit, integration, e2e, load?"
Examples
Positive Trigger
User: "Grill me on this auth system design."
Expected behavior: Read the design, identify key decisions, ask probing questions about assumptions and edge cases, validate feasibility, and push back on contradictions.
User: "Stress-test my plan for migrating to a new database."
Expected behavior: Map out the migration steps, probe assumptions about downtime and rollback, identify risks around data consistency, ask validation questions.
User: "Interview me on this feature proposal before I write code."
Expected behavior: Understand the requirements, validate the approach against constraints, uncover hidden dependencies, ensure the user is thinking through edge cases.
Non-Trigger
User: "Review this code and fix the bugs."
Expected behavior: Do not use grill-me. The user wants code review and fixes, not an interview. Use a code review skill instead.
User: "What do you think of this design?"
Expected behavior: Do not use grill-me unless the user explicitly asks to be grilled. Provide direct feedback or a review instead.
Troubleshooting
Skill Does Not Trigger
- Error: Claude gives feedback or suggestions instead of asking questions.
- Cause: User said "review" or "give feedback" instead of "grill me" or "stress-test".
- Solution: Explicitly ask to be grilled: "Grill me on this plan", "Stress-test my design", "Interview me about this architecture".
Questions Feel Generic or Repetitive
- Error: Questions don't reflect the specific plan or codebase context.
- Cause: Insufficient context provided, or questions asked too quickly before analysis.
- Solution: Share the plan, design doc, or code first. Spend Phase 1 understanding the context thoroughly before asking.
User Feels Defensive
- Error: User pushes back on the questioning style or says "I know this already".
- Cause: Questions felt accusatory or didn't acknowledge the user's expertise.
- Solution: Reframe as collaborative: "Let me make sure I understand your thinking..." instead of "Have you considered...?"
No Clear Direction Emerges
- Error: After many questions, the plan is still unclear or contradictory.
- Cause: Too many parallel branches explored at once, or user is uncertain about goals.
- Solution: Zoom out. Ask: "What's the ONE most important constraint for this design?" and rebuild the decision tree from there.
More from ravnhq/ai-toolkit
core-coding-standards
Universal code quality rules — KISS, DRY, clean code, code review. Base
80promptify
Transform user requests into detailed, precise prompts for AI models.
66lang-typescript
TypeScript language patterns and type safety rules — strict mode, no
53tech-react
React 19 patterns for components, hooks, Server Components, and data
52design-frontend
Visual design system patterns for web UIs. Tailwind CSS v4 design tokens
43platform-backend
Server-side architecture and security — API design, error handling, validation,
39