mcpField
O
openspec-archive-change

openspec-archive-change

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

关于 openspec-archive-change

用于归档 OpenSpec 变更的技能。它检查产物和任务完成情况,评估增量规格同步状态,并在将变更移入按日期命名的归档目录前报告警告。

主要功能

  1. 01未指定变更时提示选择
  2. 02检查产物与任务完成情况
  3. 03评估增量规格同步状态
  4. 04按日期名称归档
  5. 05报告归档信息与警告

适用场景

  1. 01归档已完成的变更
  2. 02归档前检查未完成事项
  3. 03决定是否同步增量规格

安装

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

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

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

详细介绍

在实验性工作流中归档已完成的变更。

输入:可选择指定变更名称。如果未指定,请检查能否从对话上下文中推断出来。如果含糊不清或存在歧义,你必须询问有哪些可用变更。

步骤

  1. 如果未提供变更名称,请提示用户进行选择

    运行 openspec list --json 获取可用变更。使用 AskUserQuestion 工具让用户选择。

    仅显示当前活动的变更(尚未归档的变更)。 如果有可用信息,请注明每个变更使用的 schema。

    重要:不要猜测或自动选择变更。始终让用户自行选择。

  2. 检查产物完成状态

    运行 openspec status --change "<name>" --json 检查产物是否完成。

    解析 JSON 以了解:

    • schemaName:正在使用的工作流
    • artifacts:产物列表及其状态(done 或其他状态)

    如果有任何产物尚未处于 done 状态:

    • 显示警告并列出未完成的产物
    • 使用 AskUserQuestion 工具确认用户是否要继续
    • 如果用户确认,则继续
  3. 检查任务完成状态

    读取任务文件(通常为 tasks.md)以检查是否有未完成的任务。

    统计标记为 - [ ](未完成)和 - [x](已完成)的任务数量。

    如果发现未完成的任务:

    • 显示警告并注明未完成任务的数量
    • 使用 AskUserQuestion 工具确认用户是否要继续
    • 如果用户确认,则继续

    **如果不存在任务文件:**无需显示任务相关警告,直接继续。

  4. 评估增量规范的同步状态

    检查 openspec/changes/<name>/specs/ 中是否有增量规范。如果没有,则无需提示同步,直接继续。

    如果存在增量规范:

    • 将每个增量规范与对应的主规范 openspec/specs/<capability>/spec.md 进行比较
    • 确定将应用哪些变更(新增、修改、移除、重命名)
    • 提示前显示汇总摘要

    提示选项:

    • 如果需要应用变更:「现在同步(推荐)」、「不同步,直接归档」
    • 如果已同步:「现在归档」、「仍然同步」、「取消」

    如果用户选择同步,则执行 /opsx:sync 逻辑(使用 openspec-sync-specs 技能)。无论用户如何选择,都继续归档。

  5. 执行归档

    如果归档目录不存在,则创建该目录:

    mkdir -p openspec/changes/archive
    

    使用当前日期生成目标名称:YYYY-MM-DD-<change-name>

    检查目标是否已存在:

    • 如果存在:失败并报错,建议重命名现有归档或使用其他日期
    • 如果不存在:将变更目录移动到归档目录
    mv openspec/changes/<name> openspec/changes/archive/YYYY-MM-DD-<name>
    
  6. 显示摘要

    显示归档完成摘要,包括:

    • 变更名称
    • 使用的 schema
    • 归档位置
    • 规范是否已同步(如适用)
    • 关于任何警告的说明(产物/任务未完成)

成功时的输出

## Archive Complete

**Change:** <change-name>
**Schema:** <schema-name>
**Archived to:** openspec/changes/archive/YYYY-MM-DD-<name>/
**Specs:** ✓ Synced to main specs (or "No delta specs" or "Sync skipped")

All artifacts complete. All tasks complete.

防护措施

  • 如果未提供变更名称,始终提示用户选择变更
  • 使用产物图(openspec status --json)检查完成状态
  • 不要因警告而阻止归档,只需告知用户并征求确认
  • 移动到归档目录时保留 .openspec.yaml(它会随目录一起移动)
  • 清晰展示执行结果摘要
  • 如果用户要求同步,使用 openspec-sync-specs 方式(由 Agent 驱动)
  • 如果存在增量规范,始终执行同步评估,并在提示用户前展示汇总摘要

评论

支持 Markdown