---
name: executing-plans
description: 当你有一份书面实现计划需要在单独的会话中执行，并设有审查检查点时使用
---

# 执行计划

## 概述

加载计划，批判性审查，执行所有任务，完成后报告。

**开始时宣布：** "我正在使用 executing-plans 技能来实现此计划。"

**注意：** 告诉你的人类伙伴，Superpowers 在有子代理支持时效果好得多。如果在支持子代理的平台上运行（如 Codex 或 Codex），其工作质量会显著提高。如果子代理可用，请使用 superpowers:subagent-driven-development 而非此技能。

## 流程

### 步骤 1：加载并审查计划

1. 读取计划文件
2. 批判性审查——识别计划中的任何问题或疑虑
3. 如果有疑虑：在开始之前向你的人类伙伴提出
4. 如果没有疑虑：创建 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：执行任务

对于每个任务：

1. **标记为进行中** — 更新 TodoWrite
2. **理解目标** — 重读任务描述，明确完成标准
3. **执行实现** — 严格按照计划步骤执行（计划已有小步骤）
4. **运行验证** — 按要求运行测试或检查
5. **提交变更** — 每完成一个任务提交一次，commit message 引用任务编号
6. **标记为已完成** — 更新 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 个任务后，暂停回顾：整体方向还对吗？有没有偏离计划？
- 如果发现前面的实现有问题，先修复再继续，不要带着问题往下走

### 步骤 3：处理常见异常

**测试失败：**
1. 读错误信息，定位失败原因
2. 区分：是实现 bug？还是测试本身有问题？还是计划描述有误？
3. 实现 bug → 修复并重跑
4. 测试有问题 → 修复测试，向伙伴说明
5. 计划有误 → 停下来，向伙伴报告并建议修正

**依赖缺失：**
```
任务 3 需要 Redis 连接，但计划中没有提及 Redis 配置。
→ 停止执行
→ 向伙伴报告："任务 3 需要 Redis，计划中未包含配置步骤。
   建议：在任务 3 前插入 '配置 Redis 连接' 步骤。"
```

**指令不清：**
- 不要猜测意图，不要"合理推断"
- 列出你的理解和困惑，让伙伴澄清
- 等待回复后再继续

### 步骤 4：完成开发

所有任务完成并验证后：
- 宣布："我正在使用 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 次以上）

**不确定时就问，不要猜测。**

## 何时回到之前的步骤

**回到审查（步骤 1）当：**
- 伙伴根据你的反馈更新了计划
- 根本性的方案需要重新考虑

**不要硬闯阻塞** — 停下来问。

## 注意事项
- 先批判性审查计划
- 严格按照计划步骤执行
- 不要跳过验证
- 每个任务单独提交，commit message 引用任务编号
- 计划要求时引用相应技能
- 遇到阻塞时停下来，不要猜测
- 未经用户明确同意，绝不在 main/master 分支上开始实现

## 集成

**必需的工作流技能：**
- **superpowers:using-git-worktrees** - 必需：开始前建立隔离的工作空间
- **superpowers:writing-plans** - 创建此技能要执行的计划
- **superpowers:finishing-a-development-branch** - 所有任务完成后收尾开发
