mirror of
https://github.com/jnMetaCode/superpowers-zh.git
synced 2026-09-02 22:54:06 +08:00
按维护者决定:保留翻译 skill 内的 fork 增量,但必须做到「不影响上游部分」。 原来的做法做不到这一点 —— 增量是**插在上游步骤序列中间**的。 ## 问题 executing-plans 把「处理常见异常」插成了步骤 3,于是上游的 Step 3: Complete Development 被挤成了我们的「步骤 4」。这就不是「不影响上游」, 而是改了上游的结构编号;Remember 也被多加了一条,从上游的 6 条变成 7 条。 ## 改法:外挂式 - 「处理常见异常」移出步骤序列,改为独立小节,挂在「何时停下来求助」之后 (它本就是那一节里「缺少依赖、测试失败、指令不清」三种情形的展开) - 步骤编号恢复为 1/2/3,与上游逐条对应 - Remember 恢复为上游的 6 条;被多加的「每个任务单独提交」并入外挂节 - 节内首行显式标注:本节是 superpowers-zh 的增量内容,上游没有 using-superpowers 的「中国特色技能路由」同样加上该标注。 现在 14 个翻译 skill 里,上游各节全部逐节对应;多出的 2 节都带标注。 ## 让纪律可执行:audit 新增 3c-bis 光靠 README 声明会漂移。新增检查:翻译 skill 的标题数必须等于 「上游标题数 + 本文件里带标注的增量节数」。标注与内容同处一文件,不会各自漂移。 未标注就多出章节 = 隐性分叉,下次同步会被误当成漏译 —— 直接 FAIL。 已双向验证:给 brainstorming 偷偷加一节会被拦下并给出可操作提示, 加上标注后放行。 ## 修掉一个让守卫从未生效的 bug(我自己写的) 3c-bis 第一次测试没拦住。查出原因:`grep -c` 匹配到 0 个时输出 "0" 但 **退出码为 1**,写成 `$(grep -c ... || echo 0)` 会拼出 "0\n0",后续整数比较 直接报错、检查静默失效。改用 `; true` 只吞退出码。 全仓扫同一模式,发现测试辅助里也有 3 处(上游同样有这个 bug): - tests/claude-code/test-helpers.sh:77 assert_count 的实际值 - test-subagent-driven-development-integration.sh 的 task_count / todo_count 这个 bug 的后果是断言**永远无法正常失败** —— 模式没匹配到时比较报错而非判定失败。 三处一并修掉并加注释说明原因。(tests/ 不进 npm 包,仅开发使用。) 修复后 audit 由 154 升到 166 pass —— 因为 3c-bis 现在真的对 14 个 skill 都跑了。 ## README 简繁对比表新增一行「翻译 skill 内的增量」,写明仅 2 处、都带标注、 上游各节不被改动、audit 会强制未标注的增量报错。 验证:audit.sh 166 pass / 0 warn / 0 fail、verify-release.sh 90 pass / 0 fail
5.8 KiB
5.8 KiB
name, description, version, license, metadata
| name | description | version | license | metadata | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| executing-plans | 当你有一份书面实现计划需要在单独的会话中执行,并设有审查检查点时使用 | 1.0.0 | MIT |
|
执行计划
概述
加载计划,批判性审查,执行所有任务,完成后报告。
开始时宣布: "我正在使用 executing-plans 技能来实现此计划。"
注意: 告诉你的人类伙伴,Superpowers 在有子代理支持时效果好得多(Claude Code、Codex CLI、Codex App、Copilot CLI 与 Gemini CLI 都算;见 ../using-superpowers/references/ 下的各平台工具参考)。如果子代理可用,请使用 superpowers:subagent-driven-development 而非此技能。
流程
步骤 1:加载并审查计划
- 确保有一个隔离的工作区:用 superpowers:using-git-worktrees 创建一个,或者核实已有的那个
- 读取计划文件
- 批判性审查——识别计划中的任何问题或疑虑
- 如果有疑虑:在开始之前向你的人类伙伴提出
- 如果没有疑虑:创建 TodoWrite 并继续
审查时重点检查:
- 步骤之间是否有依赖遗漏?(A 依赖 B,但 B 排在 A 之后)
- 验证条件是否明确?("确认可用"不算,"运行
npm test全部通过"才算) - 是否有隐含的环境假设?(Node 版本、数据库连接、API Key)
审查示例:
计划文件:docs/plan.md
任务清单:5 个任务
审查发现:
- 任务 3(添加数据库迁移)应在任务 2(编写数据模型)之后,顺序正确 ✓
- 任务 4 的验证条件写的是"确认功能正常"→ 需澄清:具体跑什么测试?
- 计划未提及 Python 版本要求 → 需确认
向伙伴提出:
"计划整体可执行。有两个问题:(1) 任务 4 的验证条件不够具体,建议改为
'运行 pytest tests/test_api.py 全部通过';(2) 需要确认 Python 版本要求。"
步骤 2:执行任务
对于每个任务:
- 标记为进行中 — 更新 TodoWrite
- 理解目标 — 重读任务描述,明确完成标准
- 执行实现 — 严格按照计划步骤执行(计划已有小步骤)
- 运行验证 — 按要求运行测试或检查
- 提交变更 — 每完成一个任务提交一次,commit message 引用任务编号
- 标记为已完成 — 更新 TodoWrite
每个任务的节奏:
--- 任务 2/5:添加用户验证 ---
[标记进行中]
目标:为 /api/users 添加输入验证
完成标准:所有验证测试通过,无效输入返回 400
[实现]
- 添加 validateUser() 中间件
- 编写 3 个验证规则(email 格式、密码强度、用户名长度)
[验证]
$ npm test -- --grep "validation"
✓ 拒绝无效 email (12ms)
✓ 拒绝弱密码 (8ms)
✓ 拒绝过长用户名 (5ms)
3 passing
[提交]
$ git add src/middleware/validate.js tests/validation.test.js
$ git commit -m "feat: 添加用户输入验证(任务 2/5)"
[标记完成]
--- 任务 2/5 完成 ---
持续自查:
- 执行过程中持续留意:整体方向还对吗?有没有偏离计划?
- 如果发现前面的实现有问题,先修复再继续,不要带着问题往下走
步骤 3:完成开发
所有任务完成并验证后:
- 宣布:"我正在使用 finishing-a-development-branch 技能来完成此工作。"
- 必需子技能: 使用 superpowers:finishing-a-development-branch
- 按照该技能的指引验证测试、展示选项、执行选择
完成报告模板:
## 执行报告
**计划:** docs/plan.md
**分支:** feature/user-validation
**任务:** 5/5 已完成
### 完成的任务
1. ✅ 初始化项目结构
2. ✅ 添加用户验证
3. ✅ 添加数据库迁移
4. ✅ 实现 API 端点
5. ✅ 添加集成测试
### 验证结果
- 单元测试:23/23 通过
- 集成测试:8/8 通过
- lint 检查:0 个警告
### 偏离计划的地方
- 任务 3:Redis 配置从 env 改为 config.yaml(经伙伴同意)
### 下一步
按 finishing-a-development-branch 技能处理合并/PR
何时停下来求助
在以下情况立即停止执行:
- 遇到阻塞(缺少依赖、测试失败、指令不清)
- 计划有严重缺陷导致无法开始
- 你不理解某条指令
- 验证反复失败(同一测试失败 2 次以上)
不确定时就问,不要猜测。
常见异常处理
🇨🇳 本节是 superpowers-zh 的增量内容,上游 obra/superpowers 没有。 它展开的是上一节「遇到阻塞(缺少依赖、测试失败、指令不清)」的三种具体情形。 上游的步骤 1–3 与其余各节均为逐节翻译,未被本节改动。
测试失败:
- 读错误信息,定位失败原因
- 区分:是实现 bug?还是测试本身有问题?还是计划描述有误?
- 实现 bug → 修复并重跑
- 测试有问题 → 修复测试,向伙伴说明
- 计划有误 → 停下来,向伙伴报告并建议修正
依赖缺失:
任务 3 需要 Redis 连接,但计划中没有提及 Redis 配置。
→ 停止执行
→ 向伙伴报告:"任务 3 需要 Redis,计划中未包含配置步骤。
建议:在任务 3 前插入 '配置 Redis 连接' 步骤。"
指令不清:
- 不要猜测意图,不要"合理推断"
- 列出你的理解和困惑,让伙伴澄清
- 等待回复后再继续
提交粒度: 每个任务单独提交,commit message 引用任务编号。
何时回到之前的步骤
回到审查(步骤 1)当:
- 伙伴根据你的反馈更新了计划
- 根本性的方案需要重新考虑
不要硬闯阻塞 — 停下来问。
注意事项
- 先批判性审查计划
- 严格按照计划步骤执行
- 不要跳过验证
- 计划要求时引用相应技能
- 遇到阻塞时停下来,不要猜测
- 未经用户明确同意,绝不在 main/master 分支上开始实现