AgentSkillsCN

openspec-apply-change

根据 OpenSpec 变更执行相关任务。当用户希望开始实施、持续推进或逐一完成各项任务时,可选择此方式。

SKILL.md
--- frontmatter
name: openspec-apply-change
description: Implement tasks from an OpenSpec change. Use when the user wants to start implementing, continue implementation, or work through tasks.
license: MIT
compatibility: Requires openspec CLI.
metadata:
  author: openspec
  version: "1.0"
  generatedBy: "1.1.1"

从 OpenSpec 变更实施任务。

输入:可选择指定变更名称。如果省略,先判断是否可从对话上下文推断;若含糊或不明确,必须提示可用的变更。

步骤

  1. 选择变更

    如果提供了名称,就使用它。否则:

    • 如果用户在对话中提到了变更,先从上下文推断
    • 若只有一个活动变更,自动选择
    • 若不明确,运行 openspec list --json 获取可用变更,并使用 AskUserQuestion 工具 让用户选择

    始终说明:"使用变更:<name>",并告知如何覆盖(例如 /opsx:apply <other>)。

  2. 获取应用说明

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

    这返回:

    • 上下文文件路径(proposal、specs、design、tasks)
    • 进度(总计、完成、剩余)
    • 带状态的任务列表
    • 基于当前状态的动态说明

    处理状态:

    • 如果 state: "blocked"(缺少工件):显示消息,建议使用 openspec-continue-change
    • 如果 state: "all_done":祝贺,建议归档
    • 否则:继续实施
  3. 阅读上下文文件

    阅读 contextFiles 中列出的文件:

    • proposal - 原因和内容
    • specs - 需求和场景(使用 glob 模式查找所有)
    • design - 技术方法(如果存在)
    • tasks - 实施检查清单
  4. 显示当前进度

    显示:

    • 进度:"N/M 任务完成"
    • 剩余任务概述
    • 来自 CLI 的动态说明
  5. 实施任务(循环直到完成或被阻止)

    对于每个待处理任务:

    • 显示正在处理的任务
    • 进行所需的代码更改
    • 保持更改最小化并专注于任务
    • 在 tasks.md 中标记任务完成:- [ ]- [x]
    • 继续下一个任务

    如果以下情况则暂停:

    • 任务不清楚 → 请求澄清
    • 实施显示设计问题 → 建议更新工件
    • 遇到错误或阻止程序 → 报告并等待指导
    • 用户中断
  6. 完成或暂停时,显示状态

    显示:

    • 此会话完成的任务
    • 整体进度:"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 存在)、部分实施之后、与其他操作交错
  • 允许工件更新:如果实施显示设计问题,建议更新工件 - 不是阶段锁定的,灵活工作