主题
skill分享 - 提问澄清需求
⚠️ 对小白特别重要
作为初学者,我们脑海中往往有一个宏大的想法或完整的蓝图,但在表达时却很难将这些想法完整地转换成文字传达给 AI。这就像是你心中有一幅完整的画面,但只能用有限的词汇来描述它——结果就是 AI 接收到的信息往往是不完整的、碎片化的。
这些丢失的信息,只能靠 AI 自己去"猜测"和"脑补"。而猜测的结果往往与你的真实意图相去甚远,导致做出来的东西不是你想要的,浪费时间还要返工。
这个 skill 的价值就在于:杜绝让 AI 自己猜,有疑问就主动问清楚。 它会引导 AI 在动手之前,针对关键的不明确点主动提问,确保双方理解一致后再开始工作。这样既提高了效率,也避免了"做完了才发现理解错了"的尴尬局面。
简介
这是一个非常实用的 skill,专门用于在需求不明确时先提问澄清,避免做错误的工作。当你向 AI 助手提出需求,但需求描述不够清晰或存在多种理解方式时,这个 skill 会引导 AI 主动提出关键问题,确保在实施前双方达成一致。
核心价值
- ✅ 避免返工:在动手前确认清楚,而不是做完了才发现理解错了
- ✅ 高效沟通:通过结构化的问题,快速明确关键决策点
- ✅ 降低风险:对安全性、可逆性等关键问题提前确认
如何使用
方法一:直接复制使用(推荐新手)
将下面的完整内容复制,发送给 Codex,告诉它"请帮我制作成 skill"即可。
方法二:手动创建 skill
如果你熟悉 skill 的创建流程,可以手动创建一个名为 ask-questions-if-underspecified 的 skill,并将下面的内容作为 skill 的配置。
Skill 完整内容
markdown
name: ask-questions-if-underspecified
description: Clarify requirements before implementing. Do not use automatically, only when invoked explicitly.
# 提问澄清需求
## 目标
在必须回答的问题得到答复之前,提出最少的澄清性问题以避免错误的工作;在开始实施之前,确保必答问题已得到回答(或用户明确批准在陈述的假设下继续)。
## 工作流程
### 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)
## 反模式(避免这样做)
- ❌ 不要询问你可以通过快速、低风险的发现性阅读回答的问题(例如,配置、现有模式、文档)
- ❌ 不要提出开放式问题,如果严格的多项选择或是/否可以更快地消除歧义使用建议
- 适用场景:当你的需求描述比较简单或模糊时,可以先调用这个 skill
- 调用方式:在对话中明确告诉 Codex"使用 ask-questions-if-underspecified skill"
- 最佳实践:结合具体场景使用,让 AI 针对性地提出关键问题
相关资源
- skill 介绍 - 了解 skill 的基本概念
- 进阶教程 - skill 使用指南 - 详细的 skill 教程