mcpField
A
ask-questions-if-underspecified

ask-questions-if-underspecified

github.com/oimiragieoAgent 工作流4437 次安装17 周前更新
代码仓库

关于 ask-questions-if-underspecified

这项 Agent 技能适用于需求不明确的实现任务,帮助在动手前找出会阻碍正确实现的关键信息。它区分需要询问的范围与约束问题,以及可自行决定的实现细节,并用默认假设推动并行工作。

主要功能

  1. 01识别范围、约束和验收标准缺口
  2. 02提出最少量的澄清问题
  3. 03为问题提供具体默认假设
  4. 04区分待询问事项与自行决策事项
  5. 05在等待答复时按默认值推进工作

适用场景

  1. 01需求描述含糊、可能影响实现范围
  2. 02性能或安全要求尚未明确
  3. 03验收标准或优先级存在疑问

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/oimiragieo/agent-studio --skill ask-questions-if-underspecified

安装后在 Claude Code 中输入/ask-questions-if-underspecified确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

commands/
ask-questions-if-underspecified.md
hooks/
post-execute.cjs
pre-execute.cjs
references/
research-requirements.md
rules/
ask-questions-if-underspecified.md
schemas/
input.schema.json
output.schema.json
scripts/
main.cjs
templates/
implementation-template.md

详细介绍

需求不明确时先提问

需求不明确时先提问技能 - 在开始实现前,针对模糊或缺少关键信息的需求提出最少量的澄清问题 - 识别会妨碍正确实现的模糊或缺失需求 - 提出最少且可行的澄清问题,并给出具体的最佳猜测默认值 - 区分范围/约束问题(需要提问)与实现细节决策(自行决定) - 在等待答复的同时,按明确说明的默认值推进并行工作
第 1 步:评估需求是否明确

找出不清楚或缺失的方面:

  • 范围:具体应包含/排除哪些内容?
  • 约束:性能目标、平台要求、安全规则?
  • 验收标准:用户将如何判断是否成功?
  • 优先级:存在冲突的选项中应优先考虑哪个?

不要询问可以通过阅读现有代码和惯例来确定的事项。

第 2 步:筛选问题

将每个候选问题归类:

类型提问还是自行决定?
范围边界(包含哪些内容)提问
非功能性要求(性能/安全目标)提问
验收标准提问
实现方案自行决定
代码风格/命名自行决定(遵循现有模式)
可有可无的润色自行决定(采用合理默认值继续)
第 3 步:简洁提问(最多 3 个问题)

针对每个阻塞性问题:

  1. 说明你的假设(最佳猜测默认值)
  2. 用一句话提出具体问题
  3. 适用时提供 2–3 个具体选项

格式:

I'll [proceed with X default assumption]. Quick questions before I start:
1. [Specific question]? (default: [assumption])
2. [Specific question]? (default: [assumption])

</execution_process>

<best_practices>

  1. 每个问题都提供默认值:始终说明你的最佳猜测,让用户只需确认,而不必从头作答
  2. 询问结果,而非实现方式:“是否应支持离线使用?”而不是“应使用 IndexedDB 还是 localStorage?”
  3. 先阅读代码库:许多看似模糊的问题都能通过现有模式解决——提问前先检查
  4. 将所有问题合并到一条消息中:不要一次问一个问题,等待答复后再问下一个

</best_practices>

**示例 — 需求不明确的功能请求:**

用户:“为仪表板添加搜索功能”

好的回复:

I'll implement client-side search with debouncing and case-insensitive matching. Quick questions before I start:
1. Should search cover all columns or just the name/title column? (default: name/title only)
2. Should results filter in place or open in a new panel? (default: filter in place)

不好的回复:

Before I start, I need to know:
1. What search algorithm should I use?
2. Should it be case sensitive?
3. What debounce delay?
4. Should I use a library?
5. How many results to show?

</usage_example>

铁律

  1. 一次绝不提问超过 3 个问题——问题超过 3 个会让人难以决策;应严格筛选,其余问题自行决定。
  2. 每个问题都必须附带最佳猜测默认值——没有默认值的问题会迫使用户从头思考;附带默认值则只需一句话确认。
  3. 绝不询问你可以自行决定的实现细节——算法选择、代码结构、命名惯例和库的选择都由你决定,而非用户。
  4. 绝不因可有可无的需求而停滞——识别真正的阻塞项与可以采用合理默认值决定的事项;使用默认值继续推进,并说明你的假设。
  5. 提问前务必阅读现有代码——先检查现有模式、惯例和相关代码;查看现有内容通常就能解决大多数看似模糊的问题。

反模式

反模式失败原因正确做法
开始前提出 5 个以上问题让用户无所适从;像是在盘问最多筛选出 3 个阻塞性问题;其余自行决定
询问实现方式这是 Agent 的工作,不是用户的只询问范围、约束条件和验收标准
提问时不提供默认选项用户必须从零开始思考;反馈周期更长始终说明:“默认值:X——是否正确?”
逐个提问(一次一个)造成缓慢的来回沟通在一条消息中列出所有问题
询问代码库中显而易见的信息显示出研究不够充分提问前先阅读现有规范

记忆协议(强制)

开始之前:

cat .claude/context/memory/learnings.md

完成之后:

  • 新模式 -> .claude/context/memory/learnings.md
  • 发现问题 -> .claude/context/memory/issues.md
  • 作出决策 -> .claude/context/memory/decisions.md

假设工作会中断:你的上下文可能会重置。如果内容没有记录在记忆中,就等于没有发生。

评论

支持 Markdown