阶段三:交接
声明式阶段技能。由 prd-taskmaster 编排器在 current_phase 为 HANDOFF 时调用。用户切勿直接调用。
唯一规则:检测用户拥有什么,推荐一个模式,给用户一个结构化选择,然后分发所选模式。只有在 tier=premium 时模式 D 才可执行;否则为锁定预告。
进入门控
-
调用
mcp__plugin_prd_go__check_gate(phase="HANDOFF", evidence={})进行诊断。check_gate是一个退出门控:它需要user_mode_choice和plan_file_exists—— 两者均由 HANDOFF 本身产生,即用于推进的证据,而非进入的证据。首次进入时两者都不存在,因此这里预期会得到gate_passed: false——状态机的合法转换已保证只有合法进入。- 首次进入(尚无证据):记录结果并继续执行流程。
- 重新进入:如果门控报告违规,报告违规并停止——这可以防止重新运行已完成的阶段或从 GENERATE 跳过。
-
读取 GENERATE 的输出——
.taskmaster/docs/prd.md、.taskmaster/tasks/tasks.json、.taskmaster/reports/task-complexity-report.json。如果缺少任何文件,报告并停止。门控本应捕获此问题,但这是双重保险。
交接检查清单
在运行流程之前,将以下内容复制到你的响应中:
交接检查清单:
- [ ] 检测到能力(层级 + 每个能力的标志)
- [ ] 推荐模式:___(理由:___)
- [ ] 显示摘要(规范位置、任务数、能力)
- [ ] 已将 CLAUDE.md 任务工作流追加(幂等)
- [ ] 已显示 AskUserQuestion 模式选择器(如果钩子被阻止,则使用文本回退)
- [ ] 用户选择已分发(模式 A / B / C,或层级为 premium 时的 D)
- [ ] 可选地发出复盘框架(静默容忍)
- [ ] 交接完成
步骤 1:检测能力
MCP(首选):mcp__plugin_prd_go__detect_capabilities()
CLI 回退:python3 script.py detect-capabilities
返回一个 tier 字段("free" 或 "premium")以及每个能力的标志。
关键信号:
| 能力 | 启用内容 |
|---|---|
| superpowers 插件 | 模式 A、C(头脑风暴、计划、子代理) |
| task-master-ai(CLI 或 MCP) | 模式 B(原生自动执行循环) |
| ralph-loop 插件 | 模式 C(迭代执行循环) |
| atlas-launcher MCP(已许可) | 模式 D — Atlas Fleet(tier=premium) |
| atlas-loop / atlas-cdd 技能 | 传统模式 D 种子——已被 atlas-launcher 检测取代 |
| 研究模型(task-master 或 MCP) | 每个任务的深度研究 |
| Playwright MCP | 层级 S 浏览器验证 |
模式 D(Atlas Fleet)仅在 tier: "premium" 时解锁——即由 detect_atlas_launcher() 检测到已许可的 atlas-launcher MCP 注册。本地 atlas-loop/atlas-cdd 技能不会解锁它。请参阅步骤 2 和下面的模式 D 部分。
步骤 2:推荐一个模式
决策逻辑(第一个匹配获胜):
- 存在
superpowers+ralph-loop→ 模式 C(推荐免费) - 仅
superpowers→ 模式 A(仅限计划,手动驱动) - 仅
task-master-ai→ 模式 B(原生自动执行) - 回退 → 模式 A
外部工具模式(E–J:Cursor、RooCode、Codex、Gemini、CodeRabbit、Aider)
通过 alternative_modes 字段作为替代方案提供,而非主要推荐。仅当 tier == "premium" 且任务图可并行化(>= 2 个独立的依赖链——检查 fleet-waves 输出:任何波次中 >= 2 个块)时,才推荐模式 D。Premium + 串行图:推荐最佳免费模式并说明原因(“你的任务形成单一依赖链——验证循环是此处的正确工具”);Fleet 仍可选,但非默认。免费层级:模式 D 是锁定的 Atlas Pro 预告,无论安装了哪些本地插件,都不可选择。
模式 A:仅计划(手动)
推荐:仅计划
superpowers:writing-plans 创建你的实施计划
计划引用 tasks.json 中的 TaskMaster 任务 ID
你手动驱动执行
模式 B:TaskMaster 自动执行(模式 B — 仅限 TaskMaster 后端)
推荐:TaskMaster 自动执行
MCP: mcp__task-master-ai__next_task -> implement -> set_task_status(id, "done")(模式 B — 仅限 TaskMaster 后端)
CLI: task-master next -> implement -> task-master set-status --id N --status done(模式 B — 仅限 TaskMaster 后端)
原生 TaskMaster 执行循环(无需外部编排器)
模式 C:计划 + Ralph 循环(推荐免费)
推荐:计划 + Ralph 循环
superpowers:writing-plans → 引用 tasks.json ID 的实施计划
ralph-loop 包装每个任务:
next_task → set_task_status("in-progress") → 自信度 < 80% 时进行研究
→ subagent-driven-development → 执行门控(层级 A+ 证据)
→ 事后自信度检查 → 记录到 .claude/verification-log.md
→ set_task_status("done") → TodoWrite → 重复
完成:疑虑代理在承诺满足之前审查验证日志。
模式 D:Atlas Fleet(在 tier=premium 时可选择;免费时 🔒 锁定预告)
🔒 Atlas Fleet Atlas Pro · $29/月
跨 Claude、Codex 和 Gemini 的并行多会话执行:
你的任务图被分割为隔离 git 工作树的依赖波次
检查器门控合并到一个集成分支,一个最终 PR
持久收件箱结果收集(已验证,非叙述)
每个任务一个 CDD 证据卡;最后发出一个 SHIP_CHECK_OK
离开,回来时看到证明。
解锁:https://atlas-ai.au/pro (以上免费模式永久免费)
当 tier == "premium"(检测到已许可的 atlas-launcher):模式 D 是真实可选的模式——分发它将调用 /prd:execute-fleet(波次编排器技能)。显示解锁卡片:
▸ Atlas Fleet ★ Pro · 许可证已激活
<N> 波次 · 基于你的依赖图估算 · 可离开
当 tier == "free":模式 D 是锁定的预告——不可选择,永不执行。如果用户在锁定时选择了它,请回复:
“Atlas Fleet 是 Atlas Pro($29/月)的一部分。在此项目上,它会将你的任务分割为跨隔离工作树的并行波次,带有检查器门控合并和一个最终 PR。请在 https://atlas-ai.au/pro 解锁——你的规范和任务已保存。与此同时,其他所有内容永久免费:请从下面选择一个免费模式。”
然后重新调用模式选择器(AskUserQuestion),并从选项中移除模式 D。
替代模式 E–J(外部 AI 工具)
当检测到这些工具时,detect_capabilities 返回 alternative_modes。用户可以选择它们中的任何一个,而不是模式 A–D。所有这些都是围绕相同 .taskmaster/tasks/tasks.json 的工具无关封装。
| 模式 | 工具 | 调用方式 |
|---|---|---|
| E | Cursor Composer | cursor --open .taskmaster/tasks/tasks.json,在 Composer 中 @-引用 |
| F | RooCode | VS Code 命令面板 → RooCode: Run tasks.json |
| G | Codex CLI | `python3 script.py next-task |
| H | Gemini CLI | gemini --file .taskmaster/tasks/tasks.json implement next(通过 Google 免费) |
| I | CodeRabbit | 通过 A–H 实施,打开 PR,CodeRabbit 审查每个任务。可与其他模式组合。 |
| J | Aider | aider --read .taskmaster/tasks/tasks.json — 结对编程风格 |
步骤 3:将任务工作流追加到 CLAUDE.md
使用确定性子命令——不要进行原始读取+编辑。此路径是幂等的,在修改现有文件时会创建带时间戳的备份,并使用 HTML 注释哨兵确保重新运行时无操作。
-
工作流内容每次运行相同——将其写入临时文件:
## 任务执行工作流(prd-taskmaster) 实施任务时,首选后端操作: 1. `python3 script.py next-task` — 获取下一个就绪任务 2. `python3 script.py set-status --id <id> --status in-progress` — 注意连字符;下划线会被拒绝 3. 实施任务(遵循链接到此任务的计划步骤) 4. `python3 script.py set-status --id <id> --status done` — 标记完成 5. 使用进度更新 TodoWrite 6. 从步骤 1 重复 有效状态:`pending`、`in-progress`、`done`、`review`、`blocked`、`deferred`、`cancelled`。 ### 进度跟踪 - 在每个任务之前和之后更新 TodoWrite - 未更新 TodoWrite 则无法进行下一个任务 - TodoWrite = 用户可见性。TaskMaster = 真相来源。 -
运行追加命令。无需计划模式预览——子命令本身是幂等的(HTML 注释哨兵控制写入),因此信息通过步骤 4 摘要和步骤 5 的 AskUserQuestion 选项在分发之前呈现给用户:
python3 $SKILL_DIR/script.py append-workflow \ --target ./CLAUDE.md \ --content-file /tmp/pdtm-workflow-section.mdJSON 响应报告以下之一:
action: "created"— 之前没有 CLAUDE.md,创建了包含标记的新文件action: "skipped"(原因:markers_present)— 已连接,无操作action: "appended"— 现有 CLAUDE.md 除了追加的标记块外未被修改;backup_path指向CLAUDE.md.prd-taskmaster-backup-<ts>
如果用户在写入前想要预览,将计划内容展示在 AskUserQuestion 选项中,或作为步骤 4 摘要中的信息段落——描述将要写入的内容,无需调用任何计划对话框工具。
步骤 4:显示摘要
渲染交接面板并打印:MCP render_status(phase="HANDOFF") → 打印 rendered;CLI python3 script.py status --phase HANDOFF。(回退——在模式选择器前发出一个紧凑块,以便用户拥有完整上下文:)
规范已生成:.taskmaster/docs/prd.md
验证:<评级>(<分数>/<最大值>)
任务:<计数> 个任务已解析,含依赖关系(参见 .taskmaster/tasks/tasks.json)
复杂度:已通过 TaskMaster 分析(.taskmaster/reports/task-complexity-report.json)
研究:<已展开|已跳过>
能力:
[✓] TaskMaster(MCP|CLI)
[✓|○] Playwright(浏览器验证)
[✓|○] 研究提供者
[✓|○] Ralph-loop 插件
[✓|○] Atlas Fleet(premium:可选择 · free:已锁定)
步骤 5:强制使用 AskUserQuestion 进行模式选择
HANDOFF 是用户自主选择的时刻。文本推荐是可跳过的;工具调用则不是。你必须在此步骤中调用 AskUserQuestion。这是严格执行的——纯文本回退是错误,而非捷径。
AskUserQuestion 给用户一个明确、结构化、机器可读的选择。这是持久的交接记录。用户的选择被程序性地记录,下游步骤直接基于它进行分发——无需解析自然语言确认,无需歧义。
顺序
-
发出交接摘要,包括:
- PRD 路径 + 验证评级
- 任务数 + 复杂度细分
- 推荐模式(A/B/C)+ 一行原因
- 可用替代模式(检测到时的 E–J,折叠在“使用其他工具…”下)
- 模式 D 🔒 Atlas Fleet 预告,包含 Atlas Pro 价格和 /pro URL
- 针对推荐模式的“下一步”描述(例如对于模式 B:“运行
task-master next”并附上第一个就绪任务 ID(模式 B — 仅限 TaskMaster 后端))
-
调用
AskUserQuestion,使用一个多选项问题列出每个可用的执行模式。使用面向用户的名称(括号内的内部 ID 仅供此技能使用——永远不会显示给用户):- 计划与驱动(模式 A)— 获取计划,自行实施
- 自动执行(模式 B)— TaskMaster 的原生循环,较轻的验证
- 验证循环(模式 C)— 证据门控的单会话循环(存在 superpowers + 循环运行器时推荐)
- 🔒 Atlas Fleet(模式 D)— Atlas Pro $29/月,并行多会话
- “使用其他工具…”— 展开适用的替代方案 E–J
- “在决定前给我更多详情”— 循环回步骤 4 摘要
将推荐模式标记为默认(仅当 tier=premium 且图可并行化时,Atlas Fleet 才可为默认)。在锁定(免费层级)时选择 Atlas Fleet 会返回升级响应(参见步骤 2 的模式 D 块),并仅使用免费模式(以及任何适用的替代方案)重新提示。
-
分发所选模式:
-
模式 A 交接:使用规范路径
.taskmaster/docs/prd.md调用superpowers:writing-plans -
模式 B 交接(模式 B — 仅限 TaskMaster 后端):显示
task-master next命令 + 来自.taskmaster/tasks/tasks.json的第一个就绪任务 ID -
模式 C 交接:写入
.claude/atlas-loop-prompt.md,描述任务执行契约,然后使用条件调用/goal:“SHIP_CHECK_OK 已由 .atlas-ai/ship-check.py 发出,并且 .taskmaster/tasks/tasks.json 中的所有任务都显示 status=done,并且此会话中已调用 /sync”/goal会话持续进行,直到 Haiku 评估器验证该条件。每次迭代运行执行任务的 13 步循环,并在第 13 步后检查条件。/sync必须在发出 SHIP_CHECK_OK 之前作为最后一步执行(根据执行任务终止规则)。(已于 2026-06-04 从/ralph-loop:ralph-loop迁移——Claude Code 的内置/goal评估器从结构上解决了 2026-06-03 审计中发现的控制器不同角色的三重验证腐败问题。) -
模式 D 交接(tier=premium):调用
/prd:execute-fleet——它拥有波次循环、工作者分发、验证、合并和 SHIP_CHECK_OK 终止。(免费层级:仅升级响应,重新提示)
-
钩子被阻止时的回退(优雅降级)
如果 PreToolUse:AskUserQuestion 被钩子阻止(自动化 / 编排器 / fleet 会话),回退到保留相同语义的文本选项表——标签、描述、模式 D 锁定预告和重新提示逻辑。