mcpField
O
openspec-apply-change

openspec-apply-change

github.com/pbh-btn开发6.4k42 次安装1 天前更新
代码仓库

关于 openspec-apply-change

用于实现 OpenSpec 变更任务的技能。它读取工作流说明和上下文文件,逐项处理任务并更新进度;遇到阻碍或需要澄清时会暂停。

主要功能

  1. 01选择或推断当前变更
  2. 02读取 schema 与实施说明
  3. 03实施前查看上下文文件
  4. 04完成任务并更新复选框
  5. 05报告进度并在受阻时暂停

适用场景

  1. 01实现已定义变更中的任务
  2. 02继续处理进行中的变更
  3. 03暂停以澄清需求或设计问题

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/pbh-btn/peerbanhelper --skill openspec-apply-change

安装后在 Claude Code 中输入/openspec-apply-change确认已加载。

详细介绍

实施 OpenSpec 变更中的任务。

输入:可选指定变更名称。如果省略,请检查能否从对话上下文中推断。如果含糊不清或有歧义,必须提示用户选择可用的变更。

步骤

  1. 选择变更

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

    • 如果用户在对话上下文中提到某个变更,则从中推断
    • 如果只有一个进行中的变更,则自动选择
    • 如果存在歧义,则运行 openspec list --json 获取可用变更,并使用 AskUserQuestion 工具让用户选择

    始终提示:「正在使用变更:」,并说明如何覆盖选择(例如,/opsx:apply <other>)。

  2. 检查状态以了解所用的架构

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

    解析 JSON,了解:

    • schemaName:正在使用的工作流(例如,「spec-driven」、「tdd」)
    • 哪个工件包含任务(通常是 spec-driven 的「tasks」,其他情况请查看状态)
  3. 获取实施说明

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

    这会返回:

    • 上下文文件路径(因架构而异,可能包括 proposal/specs/design/tasks 或 spec/tests/implementation/docs)
    • 进度(总数、已完成数、剩余数)
    • 任务列表及其状态
    • 根据当前状态生成的动态说明

    处理各种状态:

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

    读取实施说明输出中 contextFiles 列出的文件。 文件取决于所用的架构:

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

    显示:

    • 所用的架构
    • 进度:「N/M 个任务已完成」
    • 剩余任务概览
    • CLI 提供的动态说明
  6. 实施任务(循环执行,直至完成或受阻)

    对于每个待处理任务:

    • 显示当前正在处理的任务
    • 完成所需的代码更改
    • 保持更改精简且聚焦
    • 在 tasks 文件中将任务标记为完成:- [ ] → - [x]
    • 继续下一个任务

    以下情况暂停:

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

    显示:

    • 本次会话中已完成的任务
    • 总体进度:「N/M 个任务已完成」
    • 如果全部完成:建议归档
    • 如果暂停:说明原因并等待指示

实施期间的输出

## Implementing: <change-name> (schema: <schema-name>)

Working on task 3/7: <task description>
[...implementation happening...]
✓ Task complete

Working on task 4/7: <task description>
[...implementation happening...]
✓ Task complete

完成时的输出

## Implementation Complete

**Change:** <change-name>
**Schema:** <schema-name>
**Progress:** 7/7 tasks complete ✓

### Completed This Session
- [x] Task 1
- [x] Task 2
...

All tasks complete! Ready to archive this change.

遇到问题而暂停时的输出

## Implementation Paused

**Change:** <change-name>
**Schema:** <schema-name>
**Progress:** 4/7 tasks complete

### Issue Encountered
<description of the issue>

**Options:**
1. <option 1>
2. <option 2>
3. Other approach

What would you like to do?

注意事项

  • 持续处理任务,直至全部完成或受阻
  • 开始前务必读取上下文文件(来自实施说明输出)
  • 如果任务有歧义,先暂停并询问,再进行实施
  • 如果实施过程中发现问题,暂停并建议更新工件
  • 代码更改应精简,并限定在各自任务范围内
  • 每完成一个任务,立即更新其复选框
  • 遇到错误、阻碍或需求不清时暂停——不要猜测
  • 使用 CLI 输出中的 contextFiles,不要假设具体文件名

流畅工作流集成

此技能支持「对变更执行操作」的模式:

  • 可随时调用:在所有工件完成之前(只要已有任务)、部分实施之后,或与其他操作交错进行
  • 允许更新工件:如果实施过程中发现设计问题,建议更新工件——不受阶段限制,灵活推进工作

评论

支持 Markdown