Prompt-Optimizer技能封装全过程
首页 / AI工具 / 文章

Prompt-Optimizer技能封装全过程

用户希望在使用 Claude Code 时,能够通过 /opt 前缀来优化输入的提示词,再由 AI 优化内容后执行任务。这样可以提高提示词质量,获得更好的执行结果。

Prompt-Optimizer 技能封装全过程#

日期: 2026-04-14 总耗时: 约 1.5 小时 (11:00 AM - 12:58 PM) 方法论: 子代理驱动开发 (Subagent-Driven Development)


一、需求背景#

用户希望在使用 Claude Code 时,能够通过 /opt 前缀来优化输入的提示词,再由 AI 优化内容后执行任务。这样可以提高提示词质量,获得更好的执行结果。

核心需求

  • 输入以 /opt 开头时触发优化流程
  • 支持三种优化级别(轻度 / 中度 / 深度)
  • 优化后提供确认环节,用户可选择直接执行、补充细节或手动修改

二、技术调研阶段 (11:00 - 11:22)#

2.1 研究现有技能系统#

首先探索了 Claude Code 的技能系统,发现:

  • 技能存放在 .claude/skills/<skill-name>/ 目录下
  • 每个技能需要一个 SKILL.md 文件,包含 YAML frontmatter 和 Markdown 指令
  • 已有参考技能:playwright-cli

2.2 设计文档编写#

docs/superpowers/specs/2026-04-14-prompt-optimizer-design.md 中编写了详细的设计文档,内容包括:

模块内容
触发机制检测 /opt 前缀并剥离
优化级别Level 1: 轻度润色 / Level 2: 中度结构化(推荐)/ Level 3: 深度工程化
确认流程优化后展示三个选项:直接执行 / 补充细节 / 手动修改
文件结构单个 SKILL.md 文件,无外部依赖

2.3 实施计划编写#

docs/superpowers/plans/2026-04-14-prompt-optimizer-plan.md 中编写了分步实施计划,包含:

  • Task 1: 创建技能目录
  • Task 2: 编写 SKILL.md
  • Task 3: 测试技能
  • 自查清单: 规格覆盖检查、占位符扫描、类型一致性

三、子代理驱动开发阶段 (11:24 - 11:34)#

采用了 Subagent-Driven Development 方法论,通过三层审查机制确保代码质量:

3.1 实现流程图#

设计文档 → 实施计划 → 子代理实现 → 规格合规审查 → 代码质量审查 → 修复 → 再审查

3.2 任务执行详情#

Task 1: 创建技能目录#

步骤操作结果
创建目录mkdir -p .claude/skills/prompt-optimizer✅ 成功
验证目录ls -la .claude/skills/prompt-optimizer/✅ 空目录确认
规格合规审查子代理验证目录创建符合规范✅ 通过

Task 2: 编写 SKILL.md#

步骤操作结果
编写文件子代理写入完整 SKILL.md✅ 完成
验证文件YAML frontmatter 有效,技能被系统识别✅ 通过
规格合规审查子代理验证内容覆盖设计文档所有要求✅ 通过
代码质量审查发现 3 个问题(边界处理、Level 1 输出格式、步骤 3 行为)⚠️ 需修复
修复问题子代理根据审查意见修复 SKILL.md✅ 完成
再审查所有问题已修复,无新问题✅ 批准

Task 3: 测试技能#

步骤操作结果
验证可发现性确认文件存在且权限正确✅ 通过
手动测试发送 /opt 写一个简单的计算器 测试完整流程✅ 通过

四、迭代优化阶段 (11:32 - 12:58)#

4.1 第一轮优化 (11:31 - 11:34)#

代码质量审查发现的 3 个问题及修复:

问题修复内容
缺少边界情况处理新增”第零步”:空输入和无效选项的错误处理
Level 1 输出格式未定义明确 Level 1 输出为纯文本,不添加额外结构
步骤 3 选项 [1] 行为模糊明确先展示优化后的提示词让用户确认,再执行

额外改进:

  • 新增默认行为:用户直接回车时默认使用 Level 2
  • 新增取消选项 [4]:用户可随时退出优化流程

4.2 第二轮优化 (12:41 - 12:46)#

发现原有交互方式需要用户手动输入数字,体验不佳。改进为使用 AskUserQuestion 工具

改动说明
优化级别选择从文本数字改为 JSON 结构的按钮选项
确认与执行同样改为 JSON 结构的按钮选项
错误提示更新无效选项的提示文案

4.3 全局化部署 (12:50 - 12:51)#

步骤操作结果
移动到全局目录mv~/.agents/skills/prompt-optimizer✅ 完成
创建项目软链ln -s 从项目目录指向全局目录✅ 完成
验证确认软链有效,SKILL.md 可正常读取✅ 通过

五、最终技能结构#

5.1 文件位置#

位置说明
全局技能~/.agents/skills/prompt-optimizer/SKILL.md
项目软链~/claudecode/.claude/skills/prompt-optimizer → ~/.agents/skills/prompt-optimizer

5.2 工作流程#

用户输入: /opt <内容>
第零步: 边界处理(空输入 / 无效选项)
第一步: AskUserQuestion 选择优化级别
├── 轻度润色
├── 中度结构化(推荐)
└── 深度工程化
第二步: 按级别优化
▼ (仅中度/深度触发,轻度跳过)
第二步.5: 自动触发头脑风暴(调用 superpowers:brainstorming)
第三步: AskUserQuestion 选择下一步操作
├── 直接执行(先展示再执行)
├── 补充细节
├── 手动修改
├── 头脑风暴(调用 superpowers:brainstorming)
└── 取消

5.3 三个优化级别#

级别适用场景输出结构
Level 1: 轻度润色简单需求,只需修正表述纯文本,保持原结构
Level 2: 中度结构化大多数需求(推荐)目标 → 技术上下文 → 约束条件 → 验收标准
Level 3: 深度工程化复杂需求,需要完整方案目标 → 需求拆解 → 技术架构 → 隐含假设 → 风险分析 → 验收标准 → 测试策略 → 依赖分析

六、经验总结#

6.1 Subagent-Driven Development 工作流的优势#

  1. 质量保障:通过规格合规审查和代码质量审查两道关卡,确保实现与设计一致
  2. 自动化:目录创建、文件编写、测试验证全部由子代理完成
  3. 迭代改进:审查发现问题后自动修复并再次审查,形成闭环

6.2 技能编写要点#

  1. YAML frontmatter 必须正确namedescription 字段决定技能是否能被系统识别和触发
  2. 边界情况处理很重要:空输入、无效选项等场景需要明确定义
  3. 交互体验优先:使用 AskUserQuestion 工具比让用户手动输入数字体验更好
  4. 默认行为 + 取消选项:给用户提供合理的默认值和退出路径

6.3 目录组织#

  • 项目级技能放在 .claude/skills/ 下,仅当前项目可用
  • 全局技能放在 ~/.agents/skills/ 下,所有项目可用
  • 通过软链可以让项目级技能指向全局技能,兼顾两者

七、相关文档#

文档路径
设计文档docs/superpowers/specs/2026-04-14-prompt-optimizer-design.md
实施计划docs/superpowers/plans/2026-04-14-prompt-optimizer-plan.md
技能文件~/.agents/skills/prompt-optimizer/SKILL.md

八、后续迭代记录#

8.1 头脑风暴集成方案调整 (2026-04-20)#

问题:最初尝试在 Level 2/3 优化时调用 brainstorming skill 来生成优化结果,但 brainstorming 本身是一个完整的工作流(头脑风暴 → 设计文档 → 自检 → 询问是否进入计划),会偏离 prompt-optimizer 的流程。

最终方案:在第三步确认选项中新增「头脑风暴」,让用户自己决定是否需要发散。

第三步选项更新

选项行为
直接执行展示优化提示词,确认后立即执行
补充细节继续对话,补充后重新优化
手动修改展示纯文本,用户修改后自行发送
头脑风暴(新增)调用 superpowers:brainstorming,将优化结果作为输入
取消退出流程

实现方式

  1. 在第三步完成后,检查用户选择的优化级别
  2. 若满足条件,使用 Skill 工具调用 superpowers:brainstorming
  3. 将优化后的提示词作为 brainstorming 的输入上下文

修改内容:在 SKILL.md 的第三步与注意事项之间插入「第四步:自动触发头脑风暴(条件触发)」章节。