Files
EmailBill/.opencode/skills/openspec-apply-change/SKILL.cn.md
SunCheng 51172e8c5a
All checks were successful
Docker Build & Deploy / Build Docker Image (push) Successful in 4m27s
Docker Build & Deploy / Deploy to Production (push) Successful in 7s
Docker Build & Deploy / Cleanup Dangling Images (push) Successful in 1s
Docker Build & Deploy / WeChat Notification (push) Successful in 1s
fix
2026-02-11 13:00:01 +08:00

4.3 KiB

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

从 OpenSpec 变更中实施任务。

输入:可选地指定变更名称。如果省略,则检查是否可以从对话上下文推断。如果模糊或不明确,您必须提示用户选择可用的变更。

步骤

  1. 选择变更

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

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

    始终宣布:"使用变更: <名称>" 以及如何覆盖(例如 /opsx-apply <其他>)。

  2. 检查状态以了解 schema

    openspec status --change "<name>" --json
    

    解析 JSON 以了解:

    • schemaName: 正在使用的工作流(例如 "spec-driven")
    • 哪个 artifact 包含任务(对于 spec-driven 通常是 "tasks",其他情况请检查状态)
  3. 获取应用说明

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

    这将返回:

    • 上下文文件路径(因 schema 而异 - 可能是 proposal/specs/design/tasks 或 spec/tests/implementation/docs)
    • 进度(总数、已完成、剩余)
    • 带状态的任务列表
    • 基于当前状态的动态指令

    处理状态:

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

    读取应用说明输出中 contextFiles 列出的文件。 文件取决于使用的 schema:

    • spec-driven: proposal、specs、design、tasks
    • 其他 schemas: 遵循 CLI 输出中的 contextFiles
  5. 显示当前进度

    显示:

    • 正在使用的 Schema
    • 进度: "已完成 N/M 个任务"
    • 剩余任务概览
    • 来自 CLI 的动态指令
  6. 实施任务(循环直到完成或阻塞)

    对于每个待处理任务:

    • 显示正在处理哪个任务
    • 进行所需的代码更改
    • 保持更改最小且专注
    • 在任务文件中标记任务完成: - [ ]- [x]
    • 继续下一个任务

    暂停如果:

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

    显示:

    • 本次会话完成的任务
    • 总体进度: "已完成 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,不要假设特定文件名

流畅工作流集成

此技能支持"对变更的操作"模型:

  • 可以随时调用: 在所有 artifacts 完成之前(如果存在任务)、部分实施后、与其他操作交错进行
  • 允许更新 artifact: 如果实施揭示设计问题,建议更新 artifacts - 不是阶段锁定,灵活工作