关于 asking-questions
asking-questions 是一项 Agent 技能,用于判断实现前何时需要澄清。它帮助 Agent 解决会实质影响结果的选择,并避免在上下文已有答案时提出多余问题。
主要功能
- 01识别需要澄清的决策
- 02发现关键上下文缺失
- 03澄清可能造成破坏的请求
- 04简要列出选项及取舍
- 05分阶段提出问题
适用场景
- 01在多种实现方案间作选择
- 02澄清含糊的重构请求
- 03确认清理是归档还是删除
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ oaustegard/ claude-skills --skill asking-questions安装后在 Claude Code 中输入/asking-questions确认已加载。
附带文件CHANGELOG.mdREADME.md
详细介绍
提问
目的
当答案会实质性地影响你要构建的内容时,提出澄清问题。这项技能有助于判断何时提问、如何有效组织问题,以及何时自主推进。
适用场景
在以下情况下提问:
- 实现方案不明确 - 存在多种有效的技术方案(中间件还是封装函数、库的选择、架构模式)
- 缺少关键信息 - 需要具体信息(数据库类型、部署平台、凭据管理)
- 可能造成破坏的操作 - 请求可能被危险地解读(“清理文件”是指删除还是归档)
- 需要明确范围 - “重构”“优化”或“改进”等含义模糊的词语
- 需求冲突 - 目标可能相互矛盾(“提高速度” + “添加详尽的日志记录”)
- 技术权衡 - 方案的成本和收益各不相同,取决于优先级
不适用场景
以下情况不要提问:
- 请求清晰明确 - 有一种显而易见的实现路径
- 可以从上下文中判断答案 - 代码库模式、项目结构、现有约定
- 过度澄清 - 问题不会实质性地影响实现
- 标准工程实践 - 代码库中已有成熟的模式
问题结构
模板
[Context: What you found/analyzed]
[Present 2-5 specific options with brief trade-offs]
[Direct question asking for preference]
[Optional: Offer to make reasonable default choice]
指南
-
先确认你理解了情况 - 说明你已分析当前情况
- “我找到了你的 API 端点,并看到你正在使用 Express……”
-
给出明确选项 - 提供 2-5 个具体选项,并简要说明背景
I can implement this in several ways: 1. **Global middleware** - Catches all errors centrally (simplest) 2. **Wrapper functions** - More granular control per endpoint 3. **Custom error classes** - Typed errors with status codes -
直接提问 - 用清晰的问题引导对方做出选择
- “哪种方案更适合你的需求?”
-
可选:提供自主决定权 - 对不太重要的决定
- “我可以按最稳妥的方案实现选项 2;如果你有其他偏好,也可以告诉我。”
渐进式披露
分层提问,不要一开始就把所有问题都抛出来:
好 ✓
- 首先:“对于实时更新,我应该使用 WebSockets、Server-Sent Events 还是轮询?”
- 然后:“如果使用 WebSockets,你想选 Socket.io(更简单)还是原生实现(更轻量)?”
不好 ✗
- “对于实时更新,我应该使用 WebSockets 还是 SSE 还是轮询?如果使用 WebSockets,我应该选 Socket.io 还是原生实现?还要不要实现重新连接?身份验证又该怎么处理……”
示例
好 ✓
“我看到你使用了 JWT 身份验证。要添加刷新令牌,我可以:
- httpOnly cookies - 更安全,不易受到 XSS 攻击
- localStorage - 更简单,可与移动应用配合使用
- 仅存于内存中 - 最安全,但刷新后会丢失
哪种方案最适合你的使用场景?”
不好 ✗
“考虑到安全影响、XSS 漏洞、移动端兼容性、用户体验影响和合规要求,身份验证刷新令牌的存储机制应该如何实现?”
太冗长,没有清晰的选项,还一次问了所有问题
好 ✓
“你提到了‘清理迁移文件’。你想把它们归档到 /old-migrations,还是彻底删除?(注意:删除可能会影响尚未运行这些迁移文件的数据库)”
不好 ✗
“你说的清理是什么意思?”
太含糊,没有引导对方做出选择
收到回答后
- 确认理解 - 确认你理解了对方的选择
- 立即推进 - 不要再问对方是否希望你继续
- 遵循偏好 - 如果对方曾选择“安全优先”,之后遇到类似选择时也优先考虑安全
核心原则
只在答案会实质性地影响你要构建的内容时提问。 避免做错东西,而不是为了提问而提问。
评论
支持 Markdown