Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Primary intake for fuzzy feature/product requirements before coding; prefer this over dev-spec for requirement alignment. Use when the user says or implies: 需求还不清楚, 先别写代码, 先帮我梳理/收敛/对齐/拆一下需求, 先问我问题, 明确范围/边界/验收标准, 写 PRD/spec/设计文档, 帮我设计, 写个方案, 这个需求怎么做, design this, scope this out. Also trigger on dev-grill-docs, grill-with-docs, 拷问需求, 拷问方案, 压测方案, 术语沉淀. Reads existing docs/code first, asks one focused question at a time, produces .claude/artifacts/designs/<feature>.md, and may update CONTEXT.md or d
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-08 | ✗→✓ | ▲ Improved | 290% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 273% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 297% | 0% |
| case-16 | ✗→✓ | ▲ Improved | 204% | 0% |
| case-17 | ✗→✓ | ▲ Improved | 127% | 0% |
Pressure-test the user's idea before implementation, produce the feature intent contract, and keep shared domain language from disappearing into chat.
This is the primary requirement-alignment entry point. It has priority over dev-spec; dev-spec is only a helper alias for this workflow's spec-only mode.
.claude/artifacts/designs/<feature>.md when the user is aligning a feature.CONTEXT.md only for stable domain glossary material.docs/adr/<nnnn>-<slug>.md only for durable decisions that pass the ADR gate.It does not write production code, debug bugs, review diffs, or create implementation plans.
Use this skill when the user wants to align, grill, scope, or pressure-test a feature / requirement / domain model before coding. When a request could match both dev-grill-docs and dev-spec, choose dev-grill-docs unless the user explicitly names dev-spec or asks for spec-only compatibility.
Trigger phrases include:
dev-grill-docsgrill-with-docsgrill with docs需求还不清楚先别写代码先帮我梳理先帮我收敛先对齐需求先问我问题拆一下需求明确范围明确边界验收标准写 PRD写 spec拷问需求拷问方案压测方案术语沉淀帮我设计写个方案这个需求要怎么做spec 一下设计文档design thisscope this outCompatibility:
dev-spec assists this skill as a compatibility alias for the spec-only path; it should not be preferred over dev-grill-docs for ordinary fuzzy requirement alignment.dev-spec, follow this workflow with CONTEXT.md / ADR writes disabled unless the user also asks to update docs.Route elsewhere when:
| User intent | Use instead | |---|---| | Wants concrete implementation steps and scope/spec is already clear | dev-plan | | Wants to implement after scope is clear | dev-tdd | | Reports broken behavior or regression | dev-fix | | Wants visual product design context | dev-design-context | | Wants commit review or commit message | dev-code-review / dev-commit-writer |
Output targets:
.claude/artifacts/designs/<feature>.md for the feature intent contract.CONTEXT.md for stable domain glossary only.docs/adr/<nnnn>-<slug>.md for durable decisions only when the ADR gate passes.Optional arguments:
--quick: ask one highest-leverage question, then write a compact spec when the answer is enough.--deep: multi-wave grill with challenge modes and stricter ambiguity threshold.--spec-only: write only .claude/artifacts/designs/<feature>.md; do not update CONTEXT.md or ADR.CONTEXT.md / ADR writes only when warranted.执行前先加载 references/dev-baseline.md。以下行为准则全程生效:不假设、最小代码、外科手术式改动、可验证成功标准。
本 skill 对 baseline 的落地:
CONTEXT.md / ADR 只写未来会复用的稳定信息。如果当前目录有源码 / 包文件 / git 历史,且用户请求涉及修改 / 扩展现有系统,Wave 1 之前做轻量探索。
优先只读这些入口,按存在性选择:
bashtest -f CONTEXT.md && sed -n '1,220p' CONTEXT.md test -d docs && find docs -maxdepth 3 \( -iname '*adr*' -o -path 'docs/adr/*' \) find . -maxdepth 3 -type f \( -name 'README*' -o -name '*.md' \) | head -40 git rev-parse --is-inside-work-tree >/dev/null 2>&1 && git ls-files | head -80
如有明显语言 / 框架入口,再轻量查看相关 model、schema、route、DTO、test 名称。
记录两组事实:
textcodebase_facts: framework / modules / likely change surface / existing tests project_terms: Term / Existing wording / Evidence / Confidence
之后所有问题必须引用这些证据。不要问代码或文档已经能回答的问题。
按 $ARGUMENTS 或自动判断:
| 模式 | 触发 | 行为 | |---|---|---| | --quick | 用户加 --quick,或请求已经非常具体 | 只问一个最高杠杆问题;若用户回答后信息足够,直接写 compact spec | | default | 大多数情况 | 多 wave + 打分,最多 3 wave | | --deep | 用户加 --deep,或检测到高风险 / 大改动 / 跨多个模块 | 多 wave + 打分 + Challenge modes,最多 6 wave | | --spec-only | 用户显式跑 dev-spec,或不希望写持久 docs | 仍按所选深度访谈,但禁用 CONTEXT.md / ADR 写入 |
高风险信号:鉴权 / 支付 / 数据迁移 / 不可逆操作 / 公开 API breakage / PII / 高写并发。
Wave 2 起,对累计上下文打 4 个维度,各 0-1:
| 维度 | 权重(greenfield) | 权重(brownfield) | 含义 | |---|---|---|---| | Goal Clarity | 0.43 | 0.40 | 主目标能否一句话说清?核心实体能否命名? | | Scope Clarity | 0.28 | 0.25 | in/out boundary 能列出来吗? | | AC Clarity | 0.29 | 0.25 | 能写出二值、可验证的 acceptance criteria 吗? | | Context Clarity | - | 0.10 | 这次改动落在系统哪里、影响哪些已有部分? |
ambiguity = 1 - sum(score * weight)
每个分数必须有具体 anchor。拿不出 anchor 的维度,评分上限 0.6。用户催促时不调高分数,只能提前退出并把风险写进 spec。
每轮只问一个问题。按最弱维度或术语漂移选择焦点:
| Focus | 问法 | 示例 | |---|---|---| | Goal | 什么时候算成功 / 什么不算? | 「用户导出」指自助导出,还是后台代导? | | Scope | 边界在哪? | 只做 v1,还是兼容旧数据? | | AC | 怎么验证? | P95 延迟有数字目标吗? | | Context | 现有系统怎么挂? | 我看到 services/auth/ 已有 JWT,本功能扩展它还是另起? | | Term identity | 这东西到底叫什么、是什么? | 你前面叫 Task,现在叫 Item。哪个才是核心实体? | | Lifecycle | 状态怎么流转? | ExportJob 失败后是 terminal 还是可重试? | | Invariant | 什么必须永远为真? | 一个 Customer 能否有多个 billing account? | | Reversibility | 以后改起来贵不贵? | 这个方案是否需要数据迁移才能回退? |
输出格式:
textWave {n} | Focus:{weakest/focus} | Ambiguity:{pct}% Why this matters:<one sentence> Recommended answer:<your evidence-backed recommendation> Question:<exactly one question>
用户回答后,提取核心实体并与上一轮比较:
stability_ratio = (stable + renamed) / total_entities
需要立刻指出的 drift:
Task vs ItemAccount 既像 billing account 又像 login userclient,代码里长期叫 Customerresource, record, thing, flow, job每轮结束输出:
textWave {n} complete. | 维度 | 分数 | 权重 | 加权 | gap | |---|---|---|---|---| | Goal | 0.7 | 0.40 | 0.28 | 主流程步骤未拆 | | Scope | 0.4 | 0.25 | 0.10 | in/out 未列出 | | AC | 0.5 | 0.25 | 0.125 | 缺数字目标 | | Context | 0.6 | 0.10 | 0.06 | clear | | Ambiguity | | | 43.5% | | Ontology: User, Order, ExportJob (vs previous: 1 stable, 1 renamed, 1 new) Next focus: Scope, because in/out boundary is still incomplete.
任一满足即进入 Step 4:
--quick:用户回答最高杠杆问题,且已足够写 compact spec。--deep: ambiguity <= 0.20。达到 wave 上限时,强制对照以下硬条件。任一满足则 spec status 标 STUCK:
In scope 或 Out of scope 为空。STUCK 不是失败,只是信息不足以继续。仍然写 spec artifact,但 Open questions 必须点名具体阻塞项和需要找谁。
不要写「需要更多信息」「细节后续再定」这种空话。
跳过条件:
dev-spec。--spec-only。CONTEXT.md 是领域词汇表,不是 spec、plan、meeting notes 或 implementation diary。
如果没有 CONTEXT.md,创建最小文件:
markdown# Context ## Glossary | Term | Meaning | Notes | |---|---|---|
允许写入:
不要写入:
有现有 Glossary 表时,只追加或修正相关行。每次更新后在 chat 列出 changed terms。
跳过条件:
dev-spec。--spec-only。只有同时满足以下条件,才写 ADR:
如果 ADR 主要回答「这次功能怎么实现」,不要在这里写,交给 dev-plan 的 plan ADR。
ADR 路径:
textdocs/adr/0001-short-slug.md
编号取 docs/adr/ 下最大编号 + 1。格式:
markdown# ADR 0001: <Decision Title> Status: Accepted Date: YYYY-MM-DD ## Context <2-4 sentences> ## Decision <1-3 sentences> ## Consequences - <positive consequence> - <negative consequence / tradeoff> - <follow-up constraint>
最终落到 .claude/artifacts/designs/<feature>.md。目录不存在则创建。
文件结构:
markdown# <feature name> Spec > Status: DRAFT | ALIGNED | IMPLEMENTED | STUCK > Author: <user> > Last updated: <YYYY-MM-DD> ## Background <2-3 sentences> ## In scope - ... ## Out of scope - ... ## Assumptions - ... ## Solution <minimal viable solution sketch, <= 1 page> ## Edge cases & risks | Category | Notes | |---|---| | Boundary conditions | ... | | Failure modes | ... | | Risks | ... | | Mitigation | ... | ## Acceptance criteria - AC-1 <input / condition> -> <expected behavior> - AC-2 ... ## Open questions <omit if none> ## Core entities (ontology) <omit in --quick mode unless needed> | Entity | Type | Key fields | Relationship | |---|---|---|---| ## Interview metadata <omit in --quick mode> - Mode: --quick | default | --deep | --spec-only - Waves: N - Final ambiguity: X% - Status: PASSED | EARLY_EXIT_BY_USER | CAP_REACHED ### Clarity breakdown | Dimension | Score | Weight | Weighted | |---|---|---|---| ### Ontology convergence <deep mode only>
Spec requirements:
In scope and Out of scope must both be non-empty unless status is STUCK.Acceptance criteria must be binary and executable.Solution is a sketch, not an implementation plan.Open questions must list concrete blockers, not vague uncertainty.输出:
text━━━ Dev Grill Docs ━━━ Spec - .claude/artifacts/designs/<feature>.md - Status:<DRAFT | ALIGNED | STUCK> Confirmed terms - <Term>:<meaning> Updated docs - CONTEXT.md:<what changed, or "not changed"> - docs/adr/0001-x.md:<decision, or "not written"> Still open - <specific unanswered question, or "None"> Recommended next step - <dev-plan / dev-tdd / stop> because <one sentence>
If status is STUCK, recommend resolving Open questions before dev-plan.
--quick.CONTEXT.md into a dumping ground.dev-fix.dev-plan while the spec status is STUCK.dev-grill-docs is main-agent-first because it negotiates scope and language with the user.
Explorers may gather codebase facts, existing terminology, ADRs, and similar features, but the main agent owns the grill loop, ambiguity scoring, scope confirmation, and all writes to .claude/artifacts/designs/, CONTEXT.md, and docs/adr/. Follow ../../docs/multi-agent-policy.md for delegation boundaries.
dev-grill-docs produces the feature intent contract for the rest of the workflow.
Required downstream anchors:
In scope: what later agents may implement.Out of scope: what later agents must not expand into without user approval.Assumptions: accepted defaults that must stay visible during implementation and review.Open questions: blockers or known uncertainty; do not route to dev-plan while status is STUCK.Acceptance criteria: the checklist consumed by dev-plan, dev-tdd, dev-verify, and dev-code-review.CONTEXT.md / ADR: durable project language and decisions that later work must respect when present.If implementation later changes behavior beyond the spec, update the spec or explicitly report spec drift before commit.
Other measured skills in the registry, with their headline benchmark lift.