**模式配置**：此提示词在非交互式环境中运行（如 CI/CD、自动化脚本）。

**非交互式模式行为**：
- 禁止使用 `AskUserQuestion` 或任何交互式工具
- 当需要用户输入时，使用合理的默认值（如选择最近修改的变更）
- 跳过可选的确认步骤，记录所做的假设

**交互式模式行为**：
- 遵循正常的交互式流程，提示用户输入

---

实现 OpenSpec 变更中的任务。

**输入**：可选地在 `/opsx:apply` 之后指定变更名称（例如，`/opsx:apply add-auth`）。如果省略，检查是否可以从对话上下文推断。如果模糊或不明确，你必须提示可用的变更。

**步骤**

1. **选择变更**

   如果提供了名称，使用它。否则：
   - 如果用户提到变更，从对话上下文推断
   - 如果只存在一个活动变更，自动选择
   - **在非交互式模式下**：如果不明确，选择最近修改的变更
   - **在交互式模式下**：如果不明确，询问用户选择
   - 始终宣布："使用的变更：<name>"以及如何覆盖（例如，`/opsx:apply <other>`）。

2. **检查状态以了解 schema**
   ```bash
   openspec status --change "<name>" --json
   ```
   解析 JSON 以了解：
   - `schemaName`：正在使用的工作流（例如，"spec-driven"）
   - 哪个工件包含任务（对于 spec-driven 通常是 "tasks"，检查其他的状态）

3. **获取应用说明**

   ```bash
   openspec instructions apply --change "<name>" --json
   ```

   这将返回：
   - 上下文文件路径（因 schema 而异）
   - 进度（总计、完成、剩余）
   - 带有状态的任务列表
   - 基于当前状态的动态说明

   **处理状态：**
   - 如果 `state: "blocked"`（缺少工件）：显示消息，建议使用 `/opsx:continue`
   - 如果 `state: "all_done"`：恭喜，建议归档
   - 否则：继续实现

4. **阅读上下文文件**

   阅读应用说明输出中 `contextFiles` 列出的文件。
   文件取决于正在使用的 schema：
   - **spec-driven**：proposal、specs、design、tasks
   - 其他 schemas：遵循 CLI 输出中的 contextFiles

5. **显示当前进度**

   显示：
   - 正在使用的 schema
   - 进度："已完成 N/M 个任务"
   - 剩余任务概述
   - 来自 CLI 的动态说明

6. **实现任务（循环直到完成或被阻塞）**

   对于每个待处理任务：
   - 显示正在处理的任务
   - 进行所需的代码更改
   - 保持更改最小化和专注
   - 在 tasks.md 文件中标记任务完成：`- [ ]` → `- [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
...

所有任务完成！你可以使用 `/opsx:archive` 归档此变更。
```

**暂停时的输出（遇到问题）**

```
## 实现暂停

**变更：** <change-name>
**Schema：** <schema-name>
**进度：** 4/7 任务完成

### 遇到问题
<问题描述>

**选项：**
1. <选项 1>
2. <选项 2>
3. 其他方法

你想做什么？
```

**保护措施**
- 继续处理任务直到完成或被阻塞
- 在开始之前始终阅读上下文文件（来自应用说明输出）
- 如果任务模棱两可，在实施之前暂停并询问
- 如果实现揭示了问题，暂停并建议工件更新
- 保持代码更改最小化并限定在每个任务的范围内
- 在完成每个任务后立即更新任务复选框
- 在错误、阻塞或不明确的要求时暂停 - 不要猜测
- 使用 CLI 输出中的 contextFiles，不要假设特定的文件名

**灵活的工作流集成**

此技能支持"变更上的操作"模型：

- **可以随时调用**：在所有工件完成之前（如果任务存在）、部分实现之后、与其他操作交错
- **允许工件更新**：如果实现揭示了设计问题，建议更新工件 - 不是阶段锁定的，灵活工作
