studyzy / openspec-apply-change
Install for your project team
Run this command in your project directory to install the skill for your entire team:
mkdir -p .claude/skills/openspec-apply-change && curl -L -o skill.zip "https://fastmcp.me/Skills/Download/1677" && unzip -o skill.zip -d .claude/skills/openspec-apply-change && rm skill.zip
Project Skills
This skill will be saved in .claude/skills/openspec-apply-change/ and checked into git. All team members will have access to it automatically.
Important: Please verify the skill by reviewing its instructions before using it.
实现 OpenSpec 变更中的任务。当用户想要开始实现、继续实现或处理任务时使用。
0 views
0 installs
Skill Content
--- name: openspec-apply-change description: 实现 OpenSpec 变更中的任务。当用户想要开始实现、继续实现或处理任务时使用。 license: MIT compatibility: Requires openspec CLI. metadata: author: openspec version: "1.0" generatedBy: "1.0.2" --- 实现 OpenSpec 变更中的任务。 **输入**:可选指定变更名称。如果省略,检查是否可以从对话上下文中推断。如果模糊或不明确,你**必须**提示获取可用变更。 **步骤** 1. **选择变更** 如果提供了名称,使用它。否则: - 如果用户提到了某个变更,从对话上下文中推断 - 如果只存在一个活动变更,自动选择 - 如果不明确,运行 `openspec list --json` 获取可用变更,并使用 **AskUserQuestion tool** 让用户选择 始终宣布:“正在使用变更:<name>”以及如何覆盖(例如,`/opsx:apply <other>`)。 2. **检查状态以了解 Schema** ```bash openspec-cn status --change "<name>" --json ``` Parse the JSON to understand: - `schemaName`: The workflow being used (e.g., "spec-driven") - Which artifact contains the tasks (typically "tasks" for spec-driven, check status for others) 3. **获取应用指令** ```bash openspec-cn instructions apply --change "<name>" --json ``` 这返回: - 上下文文件路径(因 Schema 而异 - 可能是 proposal/specs/design/tasks 或 spec/tests/implementation/docs) - 进度(总计,完成,剩余) - 带有状态的任务列表 - 基于当前状态的动态指令 **处理状态:** - 如果 `state: "blocked"`(缺少产出物):显示消息,建议使用 openspec-continue-change - 如果 `state: "all_done"`:祝贺,建议归档 - 否则:继续实现 4. **阅读上下文文件** 阅读 apply instructions 输出中 `contextFiles` 列出的文件。 文件取决于正在使用的 Schema: - **spec-driven**: proposal, specs, design, tasks - Other schemas: follow the contextFiles from CLI output 5. **显示当前进度** 显示: - 正在使用的 Schema - 进度:"N/M 任务已完成" - 剩余任务概览 - 来自 CLI 的动态指令 6. **实现任务(循环直到完成或受阻)** 对于每个待处理任务: - 显示正在处理哪个任务 - 进行所需的代码更改 - 保持更改最小化且专注 - 在任务文件中标记任务完成:`- [ ]` → `- [x]` - 继续下一个任务 **暂停如果:** - 任务不清楚 → 询问澄清 - 实现揭示了设计问题 → 建议更新产出物 - 遇到错误或阻碍 → 报告并等待指导 - 用户中断 7. **完成或暂停时,显示状态** 显示: - 本次会话完成的任务 - 总体进度:"N/M 任务已完成" - 如果全部完成:建议归档 - 如果暂停:解释原因并等待指导 **实现期间的输出** ``` ## 正在实现:<change-name> (schema: <schema-name>) 正在处理任务 3/7:<task description> [...正在进行实现...] ✓ 任务完成 正在处理任务 4/7:<task description> [...正在进行实现...] ✓ 任务完成 ``` **完成时的输出** ``` ## 实现完成 **变更:** <change-name> **Schema:** <schema-name> **进度:** 7/7 任务已完成 ✓ ### 本次会话已完成 - [x] 任务 1 - [x] 任务 2 ... 所有任务已完成!准备归档此变更。 ``` **暂停时的输出(遇到问题)** ``` ## 实现暂停 **变更:** <change-name> **Schema:** <schema-name> **进度:** 4/7 任务已完成 ### 遇到的问题 <问题描述> **选项:** 1. <选项 1> 2. <选项 2> 3. 其他方法 您想怎么做? ``` **护栏** - 继续执行任务直到完成或受阻 - 开始前始终阅读上下文文件(来自 apply instructions 输出) - 如果任务模棱两可,暂停并在实现前询问 - 如果实现揭示了问题,暂停并建议更新产出物 - 保持代码更改最小化并限定在每个任务范围内 - 完成每个任务后立即更新任务复选框 - 遇到错误、阻碍或不清楚的需求时暂停 - 不要猜测 - 使用 CLI 输出中的 contextFiles,不要假设特定的文件名 **流畅的工作流集成** 此技能支持“变更上的操作”模型: - **可以随时调用**:在所有产出物完成之前(如果存在任务),部分实现之后,与其他操作交错 - **允许产出物更新**:如果实现揭示了设计问题,建议更新产出物 - 不是阶段锁定的,流畅地工作