mcpField
P
prompt-improver

prompt-improver

github.com/severity1Agent 工作流2.0k107 次安装4 周前更新
代码仓库

关于 prompt-improver

prompt-improver 是一项 Agent 技能,通过先研究上下文、再提出针对性问题,将模糊请求整理为可执行任务,并指导后续执行。

主要功能

  1. 01提问前先研究
  2. 02检查对话与项目上下文
  3. 03生成聚焦的选择题
  4. 04根据答复执行请求

适用场景

  1. 01澄清信息不足的编码任务
  2. 02为 Agent 请求补充上下文
  3. 03测试提示词评估流程

安装

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

$npx skills add https://github.com/severity1/claude-code-prompt-improver --skill prompt-improver

安装后在 Claude Code 中输入/prompt-improver确认已加载。

包含的文件

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

references/
examples.md
question-patterns.md
research-strategies.md

详细介绍

提示词改进技能

目的

通过系统性研究和有针对性的澄清,将含糊不清的提示词转化为可执行且定义明确的请求。当钩子已判定提示词需要补充信息时,会调用此技能。

何时调用此技能

自动调用:

  • UserPromptSubmit 钩子评估提示词
  • 钩子判定提示词含糊不清(缺少具体细节、上下文或明确目标)
  • 钩子调用此技能来指导研究和提问

手动调用:

  • 通过基于研究的问题来完善含糊不清的提示词
  • 构建或测试提示词评估系统时
  • 即使结合对话历史,提示词仍缺少足够上下文时

前提假设:

  • 提示词已被判定为含糊不清
  • 评估阶段已完成(由钩子完成)
  • 直接开始研究和澄清

核心工作流

此技能采用 4 个阶段的方法来完善提示词:

阶段 1:研究

在提问前,使用 TodoWrite 制定动态研究计划。

研究计划模板:

  1. 先检查对话历史——如果已有相关上下文,则避免重复探索
  2. 如有需要,检查代码库:
    • 使用 Task/Explore 了解架构和项目结构
    • 使用 Grep/Glob 查找特定模式和相关文件
    • 检查 git log,了解近期变更
    • 搜索错误、失败的测试以及 TODO/FIXME 注释
  3. 按需收集更多上下文:
    • 阅读本地文档文件
    • 使用 WebFetch 获取在线文档
    • 使用 WebSearch 搜索最佳实践、常见方法和最新信息
  4. 记录发现,确保问题以实际项目上下文为依据

关键规则:

  • 绝对不能跳过研究
  • 探索代码库前,先检查对话历史
  • 问题必须以实际发现为依据,而非假设或基础知识
  • 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: Clear, specific question ending with ?
- header: Short label (max 12 chars) for UI display
- multiSelect: false (unless choices aren't mutually exclusive)
- options: Array of 2-4 specific choices from research
  - label: Concise choice text (1-5 words)
  - description: Context about this option (trade-offs, implications)

重要: 始终包含 multiSelect 字段(true/false)。用户始终可以选择“其他”并输入自定义内容。

阶段 4:结合上下文执行

根据原始用户请求继续执行,并使用:

  • 原始提示词的意图
  • 用户的澄清答复
  • 研究发现和上下文
  • 对话历史

如同请求从一开始就已清晰明确那样执行。

示例

示例 1:调用技能 → 调研 → 提问 → 执行

钩子评估: 判断提示词含糊不清
原始提示词:“修复这个 bug”
**是否调用技能:**是(提示词缺少目标和上下文)

调研计划:

  1. 查看对话历史,查找近期错误
  2. 探索代码库,查找失败的测试
  3. 搜索 TODO/FIXME 注释
  4. 查看 git log,查找近期的问题区域

调研结果:

  • 近期对话提到登录失败
  • auth.py:145 中的 try/catch 吞掉了错误
  • test_auth.py 中有测试失败

生成的问题:

  1. 你指的是哪个 bug?
    • 登录身份验证失败(auth.py:145)
    • 会话超时问题(session.py:89)
    • 其他

**用户回答:**登录身份验证失败

**执行:**修复 auth.py:145 中导致登录失败的错误处理

示例 2:清晰的提示词(未调用技能)

原始提示词:“重构 src/api/users.ts 中的 getUserById 函数,使用 async/await 替代 promise”

**钩子评估:**通过所有检查

  • 目标明确:src/api/users.ts 中的 getUserById
  • 操作明确:重构为 async/await
  • 成功标准:使用 async/await 替代 promise

**是否调用技能:**否(提示词清晰,无需调用技能即可立即继续)

如需查看各种提示词类型及其转换的完整示例,请参阅 references/examples.md。

核心原则

  1. 假定提示词含糊不清:仅在提示词含糊不清时调用技能(由钩子进行评估)
  2. 先调研:在拟定问题前,务必先收集上下文
  3. 问题有据可依:使用调研结果,而非假设或基础知识
  4. 具体明确:根据实际代码库和上下文提供具体选项
  5. 聚焦重点:最多提出 1-6 个问题,每个问题只涉及一个决策点
  6. 采用系统化方法:遵循 4 阶段工作流(调研 → 提问 → 澄清 → 执行)

渐进式披露

此 SKILL.md 包含核心工作流和要点。如需更深入的指导:

仅在需要了解特定方面的详细指导时,才加载这些参考资料。

评论

支持 Markdown