用途
Prompt Improver 用于把模糊、含糊的提示词转化为可执行、定义清晰的请求。它通过系统化研究和针对性澄清来实现这一目标。该技能在钩子(hook)已经判定某个提示词需要丰富时被调用。
调用时机
自动调用:
- UserPromptSubmit 钩子评估提示词
- 钩子判定提示词模糊(缺少具体信息、上下文或明确目标)
- 钩子调用本技能来引导研究和提问
手动调用:
- 用基于研究的问题来丰富模糊提示词
- 构建或测试提示词评估系统时
- 即使有对话历史,提示词仍缺少足够上下文时
前提假设:
- 提示词已被识别为模糊
- 评估阶段已完成(由钩子完成)
- 直接进入研究和澄清
核心工作流
本技能遵循四阶段方法来丰富提示词。
阶段 1:研究
在提问前,使用 TodoWrite 创建动态研究计划。
研究计划模板:
- 先检查对话历史——如果上下文已存在,避免重复探索
- 如需要,审查代码库:
- 用 Task/Explore 了解架构和项目结构
- 用 Grep/Glob 查找特定模式、相关文件
- 检查 git log 了解近期变更
- 搜索错误、失败测试、TODO/FIXME 注释
- 按需收集额外上下文:
- 读取本地文档文件
- 用 WebFetch 获取在线文档
- 用 WebSearch 查找最佳实践、常见方法、当前信息
- 记录发现,使问题基于实际项目上下文
关键规则:
- 绝不跳过研究
- 探索代码库前先检查对话历史
- 问题必须基于实际发现,而非假设或基础知识
- 研究阶段将 Glob、Grep、WebSearch、WebFetch 和多文件 Read 都通过 Task / Explore 路由,绝不直接调用
- 在每个 Explore 提示中包含与对话相关的上下文。Explore 看不到之前的轮次,没有明确简报会产出浅层结果
详细研究策略、模式和示例见 references/research-strategies.md。
阶段 2:生成针对性问题
基于研究发现,提出 1-6 个能澄清歧义的问题。
问题准则:
- 有依据:每个选项都来自研究(代码库发现、文档、常见模式)
- 具体:避免“其他方法”这类模糊选项
- 多选:每题提供 2-4 个具体选项
- 聚焦:每个问题只针对一个决策点
- 有上下文:包含对权衡取舍的简要说明
问题数量:
- 1-2 个问题:简单歧义(哪个文件?哪种方法?)
- 3-4 个问题:中等复杂度(范围 + 方法 + 验证)
- 5-6 个问题:复杂场景(含多个决策点的大型功能)
问题模板、有效模式和示例见 references/question-patterns.md。
阶段 3:获取澄清
使用 AskUserQuestion 工具呈现基于研究的问题。
AskUserQuestion 格式:
- question:清晰、具体、以 ? 结尾的问题
- header:用于 UI 显示的短标签(最多 12 个字符)
- multiSelect:false(除非选项互不排斥)
- options:来自研究的 2-4 个具体选项数组
- label:简洁的选项文本(1-5 个词)
- description:关于该选项的上下文(权衡、影响)
重要:始终包含 multiSelect 字段(true/false)。用户始终可以选择“Other”进行自定义输入。
阶段 4:带上下文执行
使用以下内容继续处理原始用户请求:
- 原始提示词意图
- 用户的澄清答案
- 研究发现和上下文
- 对话历史
像提示词从一开始就清晰那样执行请求。
示例
示例 1:技能调用 - 研究 - 提问 - 执行
钩子评估:判定提示词模糊 原始提示词:“fix the bug” 技能是否调用:是(提示词缺少目标和上下文)
研究计划:
- 检查对话历史中的近期错误
- 探索代码库中的失败测试
- Grep 查找 TODO/FIXME 注释
- 检查 git log 中的近期问题区域
研究发现:
- 近期对话提到登录失败
- auth.py:145 有 try/catch 吞掉错误
- test_auth.py 中的测试失败
生成的问题:
- 你指的是哪个 bug?
- 登录认证失败(auth.py:145)
- 会话超时问题(session.py:89)
- 其他
用户回答:登录认证失败
执行:修复 auth.py:145 中导致登录失败的错误处理
示例 2:清晰提示词(不调用技能)
原始提示词:“Refactor the getUserById function in src/api/users.ts to use async/await instead of promises”
钩子评估:通过所有检查
- 具体目标:src/api/users.ts 中的 getUserById
- 明确动作:重构为 async/await
- 成功标准:使用 async/await 而非 promises
技能是否调用:否(提示词清晰,直接继续而不调用技能)
关于各种提示词类型和转换的完整示例,见 references/examples.md。
关键原则
- 假定模糊:技能只为模糊提示词调用(评估由钩子完成)
- 研究优先:在提出问题前始终收集上下文
- 问题有依据:使用研究发现,而非假设或基础知识
- 具体明确:提供来自实际代码库/上下文的具体选项
- 保持聚焦:最多 1-6 个问题,每个针对一个决策点
- 系统化方法:遵循四阶段工作流(研究 - 提问 - 澄清 - 执行)
渐进式披露
本 SKILL.md 包含核心工作流和要点。如需更深入的指导:
- 研究策略:references/research-strategies.md
- 问题模式:references/question-patterns.md
- 完整示例:references/examples.md
仅在需要针对提示词改进特定方面的详细指导时加载这些参考文件。