从 OpenSpec 变更实施任务。
输入:可选择指定变更名称。如果省略,先判断是否可从对话上下文推断;若含糊或不明确,必须提示可用的变更。
步骤
- •
选择变更
如果提供了名称,就使用它。否则:
- •如果用户在对话中提到了变更,先从上下文推断
- •若只有一个活动变更,自动选择
- •若不明确,运行
openspec list --json获取可用变更,并使用 AskUserQuestion 工具 让用户选择
始终说明:"使用变更:<name>",并告知如何覆盖(例如
/opsx:apply <other>)。 - •
获取应用说明
bashopenspec instructions apply --change "<name>" --json
这返回:
- •上下文文件路径(proposal、specs、design、tasks)
- •进度(总计、完成、剩余)
- •带状态的任务列表
- •基于当前状态的动态说明
处理状态:
- •如果
state: "blocked"(缺少工件):显示消息,建议使用 openspec-continue-change - •如果
state: "all_done":祝贺,建议归档 - •否则:继续实施
- •
阅读上下文文件
阅读
contextFiles中列出的文件:- •
proposal- 原因和内容 - •
specs- 需求和场景(使用 glob 模式查找所有) - •
design- 技术方法(如果存在) - •
tasks- 实施检查清单
- •
- •
显示当前进度
显示:
- •进度:"N/M 任务完成"
- •剩余任务概述
- •来自 CLI 的动态说明
- •
实施任务(循环直到完成或被阻止)
对于每个待处理任务:
- •显示正在处理的任务
- •进行所需的代码更改
- •保持更改最小化并专注于任务
- •在 tasks.md 中标记任务完成:
- [ ]→- [x] - •继续下一个任务
如果以下情况则暂停:
- •任务不清楚 → 请求澄清
- •实施显示设计问题 → 建议更新工件
- •遇到错误或阻止程序 → 报告并等待指导
- •用户中断
- •
完成或暂停时,显示状态
显示:
- •此会话完成的任务
- •整体进度:"N/M 任务完成"
- •如果全部完成:建议归档
- •如果暂停:解释原因并等待指导
实施期间输出
code
## 实施:<change-name> 正在处理任务 3/7:<task description> [...implementation happening...] ✓ 任务完成 正在处理任务 4/7:<task description> [...implementation happening...] ✓ 任务完成
完成时输出
code
## 实施完成 **变更:** <change-name> **进度:** 7/7 任务完成 ✓ ### 此会话完成 - [x] 任务 1 - [x] 任务 2 ... 所有任务完成!准备好归档此变更。
暂停时输出(遇到问题)
code
## 实施暂停 **变更:** <change-name> **进度:** 4/7 任务完成 ### 遇到问题 <问题描述> **选项:** 1. <选项 1> 2. <选项 2> 3. 其他方法 您想怎么做?
护栏
- •继续完成任务,直到完成或被阻止
- •在开始之前始终阅读上下文(specs、design)
- •如果任务模棱两可,在实施之前暂停并询问
- •如果实施显示问题,暂停并建议工件更新
- •保持代码更改最小化并局限于每个任务
- •在完成每个任务后立即更新任务复选框
- •在错误、阻止程序或要求不清楚时暂停 - 不要猜测
流畅工作流集成
此技能支持"对变更的操作"模型:
- •可以随时调用:在所有工件完成之前(如果 tasks.md 存在)、部分实施之后、与其他操作交错
- •允许工件更新:如果实施显示设计问题,建议更新工件 - 不是阶段锁定的,灵活工作