Spec Executor
执行工作流程以状态导航和状态确保为中心。在任何时候,知道您当前的位置、下一步该做什么以及如何在中断时恢复。
⚠️ 依赖注意
此技能不能单独使用。它依赖于 spec-workflow 生成计划和 tasks.md 跟踪器,然后开始执行。
技能阶段责任
spec-workflow 规划
需求 → 设计 → 任务分解
spec-executor 执行
状态导航 → 任务执行 → 状态恢复
交接示例:
spec-workflow 输出:
docs/login-feature/tasks.md
docs/login-feature/requirements.md
docs/login-feature/design.md
spec-executor 输入:
读取 docs/login-feature/tasks.md
按顺序执行任务
每个任务完成后更新 tasks.md
不要将此技能用于未经 spec-workflow 规划的工作。
验证:
执行前,确认 tasks.md 存在且包含有效的任务条目(范围 + 验证字段)。如果文件丢失或格式不正确,停止并询问用户。
快速开始
首次使用此技能并确认 tasks.md:
- 读取 tasks.md → 找到第一个 [ ] 任务
- 标记为 [~] → 根据范围描述执行
- 完成后:标记 [✓],填写验证,暂存更改
- 显示差异 → 等待用户审查和显式提交批准
- 用户说“下一个” → 从步骤 1 重复
会话压缩?跳转到会话恢复。
状态导航
我在哪里?
收到用户指令 │
├─ 范围是否清晰且小? ──→ 是 → 直接执行(简单任务)
│ 否
├─ 是否需要设计/架构? → 是 → 先规划 → 编写 tasks.md → 执行
│ 否(不明确)
└─ 调查 → 重新分类
当前状态
下一步该做什么
关键输出
刚刚收到指令
分类任务(简单/复杂/探索性)
决策:直接执行或规划
规划进行中
编写设计文档 + tasks.md → 等待用户确认
确认的 tasks.md
准备实现
读取 tasks.md,标记第一个待处理任务为 [~]
任务正在进行
刚刚完成一个任务
更新 tasks.md 为 [✓] → 验证 → 提交 → 下一个任务
更新跟踪器
遇到错误
停止 → 诊断 → 修复 → 重新验证 → 恢复
记录修复
会话中断
读取 tasks.md → 验证最后完成的任务 → 恢复第一个待处理任务
恢复上下文
用户插入无关查询
处理查询 → 返回到之前的状态而不失去位置
保持连续性
状态转换规则
[已分类] --(简单)--> [执行] --(任务完成)--> [更新跟踪器] --(更多任务)--> [执行]
│ │
└─(所有完成)--> [完成]
└─(复杂)--> [规划] --(确认)--> [执行]
└─(拒绝)--> [修订计划]
[执行] --(错误)--> [诊断] --(修复)--> [更新跟踪器] --> [执行]
└─(卡住)--> [询问用户]
[任何状态] --(无关用户查询)--> [处理查询] --> [返回到之前的状态]
关键规则:您不能在更新跟踪器之前从 [执行] 转换到下一个任务。
更新 tasks.md 是任务完成的定义。
任务分类
编写代码前,分类任务:
类型 标准 规划要求
复杂 新功能、架构更改、多文件重构、API 设计 是 -- 使用 spec-workflow 生成设计文档 + tasks.md
简单 单文件更改、配置调整、明确的 bug 修复(已知范围) 否 -- 简要说明,然后实现
探索性 不明确的范围,需要调查以了解问题 先调查,然后重新分类
边界规则:如果“简单”任务需要设计决策、接口更改或跨文件协调,立即停止并升级为“复杂”任务,进行规划。
任务类型参考
用户意图 类型 操作
新功能、架构更改、大的重构 复杂 触发 spec-workflow 进行完整规划
bug 修复(带有票据/参考、接口对齐) 修复/复杂 触发 spec-workflow,第 1-2 阶段可能简化
单文件更改、配置调整、明确的小修复 简单 简要说明,然后直接实现
说明代码、检查日志、更新代码、信息查询 常规 直接执行,无需 Spec 会话
会话拆分规则:如果 tasks.md 有 > 8 个待处理任务或预计工作时间 > 2 小时,建议 /clean 并在新会话中继续。
必须询问用户
在继续之前停止并询问用户:
情况 问题
不明确的需求背景 “此代码应该解决什么问题?”
设计冲突(A 与 B) “两种方法都有权衡 -- 什么是您的优先级?”
删除代码 “此代码似乎在 X 中使用 -- 您确定要删除它吗?”
删除代码 -- 验证 运行 grep -r “ClassName” --include=“
.java” --include=“.xml” 以确认在删除之前没有下游引用
范围扩大超出原始范围 “这似乎比原始请求更广泛 -- 应该扩展设计吗?”
找到更好的方法 “我看到一个更好的重构路径 -- 能否解释原始设计意图?”
未完成...