| name | openspec-apply-change |
| description | 实现 OpenSpec 变更中的任务。当用户想要开始实现、继续实现或逐步完成任务时使用。 |
| license | MIT |
| compatibility | Requires openspec CLI. |
| metadata | {"author":"openspec","version":"1.0","generatedBy":"1.2.0"} |
实现 OpenSpec 变更中的任务。
输入:可选指定变更名称。若未提供,尝试从对话上下文中推断。若含糊不清,必须提示用户选择可用的变更。
步骤
-
选择变更
若提供了名称则直接使用,否则:
- 从对话上下文中推断用户提到的变更
- 若只有一个活跃变更则自动选择
- 若有歧义,运行
openspec list --json 获取可用变更,并使用 AskUserQuestion 工具让用户选择
始终声明:"正在使用变更:",以及如何覆盖(例如 /opsx:apply <other>)。
-
检查状态以了解 schema
openspec status --change "<name>" --json
解析 JSON 以了解:
schemaName:正在使用的工作流(例如 "spec-driven")
- 哪个 artifact 包含任务(spec-driven 通常是 "tasks",其他 schema 请查看状态)
-
获取应用指令
openspec instructions apply --change "<name>" --json
返回内容包括:
- 上下文文件路径(因 schema 而异,可能是 proposal/specs/design/tasks 或 spec/tests/implementation/docs)
- 进度(总数、已完成、剩余)
- 带状态的任务列表
- 基于当前状态的动态指令
处理各种状态:
- 若
state: "blocked"(缺少 artifact):显示提示,建议使用 openspec-continue-change
- 若
state: "all_done":祝贺用户,建议归档
- 其他情况:继续实现
-
读取上下文文件
读取应用指令输出中 contextFiles 列出的文件。
文件因所用 schema 而异:
- spec-driven:proposal、specs、design、tasks
- 其他 schema:遵循 CLI 输出中的 contextFiles
-
显示当前进度
显示:
- 使用的 schema
- 进度:"N/M 任务已完成"
- 剩余任务概览
- CLI 的动态指令
-
实现任务(循环直到完成或阻塞)
对每个待处理任务:
- 显示正在处理的任务
- 进行所需的代码更改
- 保持更改最小化且聚焦
- 在任务文件中标记任务完成:
- [ ] → - [x]
- 继续下一个任务
在以下情况暂停:
- 任务不清晰 → 请求澄清
- 实现过程中发现设计问题 → 建议更新 artifact
- 遇到错误或阻塞 → 报告并等待指导
- 用户中断
-
完成或暂停时显示状态
显示:
- 本次会话完成的任务
- 总体进度:"N/M 任务已完成"
- 若全部完成:建议归档
- 若暂停:解释原因并等待指导
实现过程中的输出
## 正在实现:<change-name>(schema:<schema-name>)
正在处理任务 3/7:<任务描述>
[...实现进行中...]
✓ 任务完成
正在处理任务 4/7:<任务描述>
[...实现进行中...]
✓ 任务完成
完成时的输出
## 实现完成
**变更:** <change-name>
**Schema:** <schema-name>
**进度:** 7/7 任务已完成 ✓
### 本次会话完成的任务
- [x] 任务 1
- [x] 任务 2
...
所有任务已完成!可以归档此变更了。
暂停时的输出(遇到问题)
## 实现已暂停
**变更:** <change-name>
**Schema:** <schema-name>
**进度:** 4/7 任务已完成
### 遇到的问题
<问题描述>
**选项:**
1. <选项 1>
2. <选项 2>
3. 其他方案
您希望如何处理?
注意事项
- 持续处理任务直到完成或阻塞
- 开始前始终读取上下文文件(来自应用指令输出)
- 若任务含糊,暂停并请求澄清后再实现
- 若实现过程中发现问题,暂停并建议更新 artifact
- 保持代码更改最小化,聚焦于每个任务
- 完成每个任务后立即更新任务复选框
- 遇到错误、阻塞或需求不明确时暂停,不要猜测
- 使用 CLI 输出中的 contextFiles,不要假设特定文件名
流式工作流集成
此 skill 支持"对变更执行操作"模型:
- 随时可调用:在所有 artifact 完成之前(若任务存在)、部分实现之后、与其他操作交替进行
- 允许更新 artifact:若实现过程中发现设计问题,建议更新 artifact——不锁定阶段,灵活操作