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 工作流的优势
- 质量保障:通过规格合规审查和代码质量审查两道关卡,确保实现与设计一致
- 自动化:目录创建、文件编写、测试验证全部由子代理完成
- 迭代改进:审查发现问题后自动修复并再次审查,形成闭环
6.2 技能编写要点
- YAML frontmatter 必须正确:
name和description字段决定技能是否能被系统识别和触发 - 边界情况处理很重要:空输入、无效选项等场景需要明确定义
- 交互体验优先:使用 AskUserQuestion 工具比让用户手动输入数字体验更好
- 默认行为 + 取消选项:给用户提供合理的默认值和退出路径
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,将优化结果作为输入 |
| 取消 | 退出流程 |
实现方式:
- 在第三步完成后,检查用户选择的优化级别
- 若满足条件,使用 Skill 工具调用
superpowers:brainstorming - 将优化后的提示词作为 brainstorming 的输入上下文
修改内容:在 SKILL.md 的第三步与注意事项之间插入「第四步:自动触发头脑风暴(条件触发)」章节。