Skip to main content

grill-for-unknowns

Use when starting or reviewing a complex implementation where the user wants an agent to interrogate the plan against docs/source evidence, surface unknown unknowns, and avoid rushing into build mode. Combines docs-grounded grilling with a map-vs-territory unknowns pass.

跳到安装

来源信息

仓库
nicobailon/grill-for-unknowns
最近来源活动
2026年7月20日 23:02
检测到的 SKILL.md 语言
英语
星标
219
分支
7

安装方式

默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。

检查来源文件

决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。

文件资源管理器
11 个文件

正在显示 SKILL.md

SKILL.md
来源说明 · 只读预览
name
grill-for-unknowns
description
Use when starting or reviewing a complex implementation where the user wants an agent to interrogate the plan against docs/source evidence, surface unknown unknowns, and avoid rushing into build mode. Combines docs-grounded grilling with a map-vs-territory unknowns pass.
version
0.1.3
author
Nico Bailon (co-authored by Matt Pocock)
license
MIT
metadata
{"hermes":{"tags":["planning","docs","unknowns","agentic-coding","interviews","verification"],"related_skills":["writing-plans","software-development-workflow","subagent-driven-development"]}}
# Docs + Unknowns Grill ## Overview The core idea is: - **The map** = the prompt, plan, assumptions, skills, prior context, docs excerpts, and the agent's current mental model. - **The territory** = the real codebase, product constraints, APIs, docs, user taste, deployment environment, and failure modes. - **Unknowns** = the gap between the map and the territory. This skill combines docs-grounded grilling, one-question-at-a-time interviewing, domain modeling, and a four-quadrant unknowns pass. Grilling here means few, evidence-priced questions — not relentless interrogation; not asking about a non-material topic is correct behavior. The goal is to discover the few answers that would materially change the plan (see the **Material** criterion below) — and to write down the shared understanding as it forms. ## When to Use Use when: - The user says not to rush implementation, asks for a stronger plan, or wants a rigorous planning pass before orchestrating implementation work. - The task depends on unfamiliar docs, APIs, libraries, platform behavior, or source conventions. - The user has a vague product/design desire and likely has **unknown knowns**: they will know good/bad when they see it, but cannot fully specify it upfront. - The agent is about to spawn subagents or a long-running coding agent and needs a better launch packet. - A previous attempt failed or is stuck because the agent made assumptions, overfit to generic best practices, or missed real codebase constraints. - Reviewing a plan/spec/PR where you need to pressure-test hidden assumptions before merge. Do **not** use when: - The task is trivial, mechanical, or already has unambiguous acceptance criteria. - The user explicitly wants immediate execution and the risk of wrong assumptions is low. - You can verify the right answer directly with a single tool call and no interview is needed. ## Operating Mode Stay in **Explore** or **Plan** mode until the unknowns that could change the implementation are resolved or explicitly accepted as assumptions. The grill has a defined end: it is over when the unknowns ledger is empty — every material unknown resolved, defaulted, or explicitly accepted. Announce the remaining count as it shrinks (e.g., "2 material unknowns left") so the user can see the end approaching. Default sequence: 1. **Restate the map** — summarize the user's request, the intended outcome, and what is already known. 2. **Read the territory** — inspect the relevant docs/source/tests/config before grilling. Do not rely on vibes if docs or code are available. 3. **Open a grill session ledger** — use `templates/grill-session.md` when the session is complex enough to need a durable working doc. 4. **Build the unknowns ledger** — classify per the Unknowns Taxonomy below. 5. **Build the domain ledger** — identify fuzzy terms, overloaded concepts, vocabulary conflicts, and context boundaries. Use `references/domain-modeling-add-on.md` for `CONTEXT.md` / ADR rules. 6. **Grill one decision at a time** — follow the grill procedure below. 7. **Propose defaults** — for low-risk unknowns, choose a sensible default and label it as an assumption instead of blocking. 8. **Persist shared understanding** — update `CONTEXT.md` for crystallized domain terms and offer ADRs when the Domain Modeling criteria are met. 9. **Create or revise the plan** — see Implementation Plan Requirements below. 10. **Ask for confirmation before build** — do not enact the plan until the user confirms shared understanding, unless they explicitly authorize proceeding with labeled assumptions. 11. **During implementation** — keep implementation notes for deviations and newly discovered unknowns. 12. **Post-implementation** — produce an explainer and quiz/review checklist so the user understands what changed. ## Unknowns Taxonomy Use this table explicitly in the output when the task is ambiguous enough to justify it. | Type | Meaning | How to expose it | Example | | --- | --- | --- | --- | | Known knowns | Requirements already stated or proven by docs/source | Restate and cite | "Use Stripe Connect; webhook endpoint already exists." | | Known unknowns | The user/agent knows a decision is unresolved | Ask targeted questions or choose labeled defaults | "Should refunds sync one-way or two-way?" | | Unknown knowns | The user would recognize the right result when shown, but has not verbalized the criterion | Prototype, sketches, examples, references | "This dashboard feels too enterprise; make it more operator-like." | | Unknown unknowns | Constraints or possibilities nobody has considered yet | Blindspot pass over docs/source/tests/internet; ask experts; search prior art | "The API rate limit makes this sync architecture impossible." | ## Docs-Grounded Grill Procedure ### 1. Gather evidence first Before asking the user to decide, inspect available ground truth: - Official docs for libraries/platforms/APIs. - Local source files, routes, models, schemas, migrations, tests, and config. - Existing project conventions and similar implementations. - Error logs, CI failures, issue comments, PR diffs, or previous implementation notes. - Reference implementations the user points to, even if in another language. Fetch missing-but-retrievable docs; if docs cannot be accessed, say so and mark the claim as unverified. ### 2. Convert evidence into pressure-test questions Good grill questions have all three properties: - **Material** — the answer could change architecture, scope, UX, data model, security, permissions, or acceptance criteria. - **Grounded** — the question points to docs/source behavior or a concrete uncertainty, not generic preference fishing. - **Answerable** — the user can choose from options, approve a default, or supply a reference. Bad grill questions: - Obvious preferences that a competent agent can default. - Exhaustive questionnaires before any research. - Asking the user to answer things the code/docs can answer. - Asking the user to verbalize taste they can only recognize when shown ("what does modern mean to you?") — route those to prototypes and references instead. - Open-ended "anything else?" questions with no context. ### 3. Ask one material question at a time when blocked If an answer is required to proceed, ask one question, explain why it matters, and give a recommended default. Walk the design tree branch-by-branch — do not dump the whole tree on the user at once. Template: ```md Blocking question: <question> Why it matters: <what changes if answer A vs B> Evidence: <doc/source/test/reference citation> Recommended answer: <default + rationale> If you don't care: I'll proceed with <default>. ``` If multiple questions are useful but not blocking, keep them in the grill queue and ask the next unresolved material decision first. Budget and exit rules: - Default budget: ~5 blocking questions per session. Going beyond it requires asking the user whether to continue. - **Fatigue valve**: if the user's answers turn short or impatient (one-word replies, "just pick"), stop interviewing — convert the remaining unknowns to labeled defaults and present them as one batch for veto. - Once no blocking questions remain, do not keep asking one at a time: present the residual low-risk unknowns as a single assumptions list for veto. ## Domain Modeling: Shared Language and ADRs Grilling must also maintain shared language. During the grill, challenge fuzzy or overloaded terms immediately, compare the user's terms against existing `CONTEXT.md`, code identifiers, docs, and product copy, and update `CONTEXT.md` when a term crystallizes (glossary only — no plans, scratchpads, or ADR content). Offer an ADR only when the decision is (1) hard to reverse, (2) surprising without context, and (3) the result of a real trade-off; otherwise record it in the session/implementation notes. See `references/domain-modeling-add-on.md` for file layout, formats, and examples. ## Finding Unknown Unknowns: Blindspot Pass Run a blindspot pass when the user is entering an unfamiliar domain, unfamiliar part of the codebase, or high-stakes integration: search the relevant docs/source/tests — including documented limits and known failure modes of load-bearing dependencies — for unknown unknowns that could materially change the plan, explain them in plain language, rank by implementation risk, and suggest how to resolve each one cheaply. Output shape: ```md ## Blindspot Pass ### Highest-risk unknown unknowns 1. <unknown> - Why it matters: - Evidence: - Cheap resolution: - Decision owner: user / agent / docs / prototype ### Likely safe assumptions - <assumption> — why safe, how to verify later ### Questions worth asking now 1. <one material question> ``` ## Unknown Knowns: Brainstorms, Prototypes, and References When the user will recognize the right answer visually or behaviorally but cannot fully specify it: - Build cheap prototypes before wiring real systems — e.g., a single-file mock with fake data showing 3 distinct directions. - Offer multiple directions with meaningful contrast, not tiny variations. - Ask the user to react to examples, screenshots, demos, or reference source — e.g., 2-3 similar in-repo modules plus one external reference, then ask which behavior to match. - Capture the user's reactions as explicit criteria — and when quality can't be checked by a test, distill them into a short rubric that becomes the verification gate. ## Implementation Plan Requirements When producing the plan, lead with the decisions most likely to change: 1. **Decision surface** — data model, type interfaces, permissions, user-facing flows, API semantics, migration strategy. 2. **Evidence** — docs/source references that justify the plan. 3. **Open questions** — only material unknowns, ranked by risk. 4. **Resolved assumptions** — low-risk defaults the agent will use unless corrected. 5. **Prototype/reference artifacts** — links or paths if relevant. 6. **Implementation steps** — bite-sized, ordered, with verification gates. 7. **Deviation policy** — what the implementer should do if the territory contradicts the map. ## During Implementation: Notes and Deviations For complex work, create a temporary implementation notes file such as `implementation-notes.md` or include an equivalent section in the final report. Use `templates/implementation-notes.md` for the minimum sections: plan snapshot, decisions made, deviations, new unknowns, and verification. Default deviation policy: - If the issue is low-risk and local, choose the conservative option, log it, and continue. - If the issue changes architecture, data migration, security, cost, or user-facing behavior, stop and ask. - If docs contradict the plan, trust the docs/source over the original map and update the plan. ## Post-Implementation: Explain, Pitch, Quiz After implementation, help the user and reviewers understand the territory discovered during the work. Deliver: - What changed and why. - Which unknowns were resolved. - Which assumptions remain. - Docs/source evidence for important behavior. - Verification results from real commands/tests. - A short quiz/checklist if the user needs to understand before merge — every quiz item must be answerable from the report itself. ## Subagent / Coding-Agent Launch Packet Before spawning a subagent or external coding agent, prepare a launch packet from `templates/launch-packet.md`. It covers: goal, map, territory to inspect first, the four unknowns categories, deviation policy, and verification gates. If using multiple subagents, split roles: - **Docs scout** — reads official docs/source and returns constraints. - **Codebase scout** — maps existing patterns and tests. - **Prototype scout** — creates cheap visual/API alternatives to expose unknown knowns. - **Implementer** — edits only after the plan is stable enough. - **Reviewer** — grills the diff against the launch packet and docs. ## Calibration: Over- vs Under-Constraining - **Too specific**, and the agent follows instructions even when a pivot is better. Define the goal, constraints, and stop/continue rules; leave room for implementation judgment. - **Too vague**, and the agent defaults to generic best practices that may not fit the product/codebase. Provide references, docs, taste examples, and acceptance criteria. ## Verification Checklist Before moving from planning to implementation: - [ ] Relevant docs/source/tests/config were inspected, or the lack of access is stated. - [ ] Known knowns, known unknowns, unknown knowns, and suspected unknown unknowns are listed. - [ ] Blocking questions are material and include recommended defaults. - [ ] Low-risk unknowns are converted into labeled assumptions rather than blocking progress. - [ ] The plan leads with likely-to-change decisions, not mechanical steps. - [ ] Deviation policy is explicit for long-running/subagent work. - [ ] Verification gates are defined before implementation begins. Before finalizing implementation: - [ ] Deviations and newly discovered unknowns were logged. - [ ] Tests/checks/manual verification were actually run and reported. - [ ] Remaining assumptions are visible. - [ ] The user/reviewer gets an explainer sufficient to understand the change. --- Adapted from Matt Pocock's `grilling` + `domain-modeling` skills and Thariq's "Finding Your Unknowns" article — see `README.md` for full attribution.
在 GitHub 查看