# Openspec Apply Change

> 实现 OpenSpec 变更中的任务。当用户想要开始实现、继续实现或处理任务时使用。

- Skill: `majiayu000/openspec-apply-change-2` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds add majiayu000/openspec-apply-change-2`
- Raw SKILL.md: https://api.skillmd.com/api/skills/majiayu000/openspec-apply-change-2/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Productivity
- License: MIT
- Author: majiayu000 (https://skillmd.com/u/majiayu000)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/majiayu000/openspec-apply-change-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，不要假设特定的文件名

**流畅的工作流集成**

此技能支持“变更上的操作”模型：

- **可以随时调用**：在所有产出物完成之前（如果存在任务），部分实现之后，与其他操作交错
- **允许产出物更新**：如果实现揭示了设计问题，建议更新产出物 - 不是阶段锁定的，流畅地工作

