提问若未明Skill ask-questions-if-underspecified

该技能用于在软件开发或项目管理中,当需求未明确指定时,通过提问澄清关键细节,避免错误工作和提高效率。关键词:需求澄清、提问技能、未明则问、软件开发、项目管理、效率提升。

需求分析 0 次安装 0 次浏览 更新于 3/14/2026

name: ask-questions-if-underspecified description: 在实施前澄清需求。当出现严重疑问时使用。

提问若未明确指定

使用时机

当请求有多个合理解释或关键细节(目标、范围、约束、环境或安全性)不明确时,使用此技能。

不使用时机

当请求已经清晰,或者可以通过快速、低风险的发现阅读回答缺失细节时,不要使用此技能。

目标

询问避免错误工作所需的最小澄清问题集;在必须回答的问题得到解答(或用户明确批准在陈述假设下进行)之前,不要开始实施。

工作流程

1) 决定请求是否未明确指定

如果探索如何执行工作后,以下某些或全部内容不清晰,则将请求视为未明确指定:

  • 定义目标(什么应该改变 vs 保持不变)
  • 定义“完成”(验收标准、示例、边界情况)
  • 定义范围(哪些文件/组件/用户在内/外)
  • 定义约束(兼容性、性能、风格、依赖、时间)
  • 识别环境(语言/运行时版本、操作系统、构建/测试运行器)
  • 澄清安全性/可逆性(数据迁移、推出/回滚、风险)

如果存在多个合理解释,则假设其为未明确指定。

2) 首先询问必须回答的问题(保持简洁)

在第一轮中询问1-5个问题。优先选择能消除整个工作分支的问题。

使问题易于回答:

  • 优化可扫描性(简短、编号的问题;避免段落)
  • 尽可能提供多项选择选项
  • 在适当情况下建议合理默认值(清楚地标记为默认/推荐选择;在列表中加粗推荐选择,或者如果在代码块中呈现选项,在块上方立即放置加粗的“推荐”行,并在块内标记默认值)
  • 包括快速路径响应(例如,回复 defaults 以接受所有推荐/默认选择)
  • 在有帮助时包括低摩擦的“不确定”选项(例如,“不确定 - 使用默认”)
  • 如果减少摩擦,分离“需要知道”和“最好知道”
  • 构建选项,使用户可以用紧凑的决策响应(例如,1b 2a 3c);用通俗语言重述所选选项以确认

3) 在行动前暂停

直到必须回答的问题得到解答:

  • 不要运行命令、编辑文件或产生依赖于未知数的详细计划
  • 仅当不承诺方向时,执行明确标记的低风险发现步骤(例如,检查仓库结构、阅读相关配置文件)

如果用户明确要求在没有答案的情况下进行:

  • 将您的假设陈述为简短的编号列表
  • 请求确认;只有在他们确认或纠正后才进行

4) 确认解释,然后进行

一旦有了答案,用1-3句话重述需求(包括关键约束和成功的样子),然后开始工作。

问题模板

  • “在我开始之前,我需要:(1) …, (2) …, (3) … 如果您不关心(2),我将假设 …”
  • “这些中哪个应该是?A) … B) … C) … (选择一个)”
  • “您会认为什么算‘完成’?例如:…”
  • “我必须遵循的任何约束(版本、性能、风格、依赖)?如果没有,我将针对现有项目默认值。”
  • 使用编号问题和字母选项以及清晰的回复格式
1) 范围?
a) 最小更改(默认)
b) 重构同时涉及该区域
c) 不确定 - 使用默认
2) 兼容性目标?
a) 当前项目默认值(默认)
b) 还支持旧版本:<指定>
c) 不确定 - 使用默认

回复:defaults(或 1a 2a)

反模式

  • 不要问您可以通过快速、低风险的发现阅读回答的问题(例如,配置、现有模式、文档)。
  • 如果紧密的多项选择或是/否能更快消除歧义,不要问开放式问题。