SuperAPI AI 工具集

openspec-bulk-archive-change

编程与开发

查看项目

更新于 10-15 10:24

技能介绍

用途

openspec-bulk-archive-change 用于在一次操作中批量归档多个已完成的变更(change)。它适合在存在多个并行变更、需要集中归档时使用。该技能会智能处理规格冲突,通过检查代码库来确定实际已实现的内容。

主要能力

  • 批量归档多个变更,支持任意数量(1 个以上即可,2 个以上为典型场景)。
  • 通过 openspec list --json 获取所有活动变更。
  • 使用 AskUserQuestion 工具进行多选,让用户选择要归档的变更,并显示每个变更及其 schema,包含“所有变更”选项。
  • 对所选变更进行批量校验,收集以下状态:
    • 工件状态:运行 openspec status --change "<name>" --json,解析 schemaName 和 artifacts 列表,标记哪些工件已完成。
    • 任务完成情况:读取 openspec/changes/<name>/tasks.md,统计未完成(- [ ])与已完成(- [x])任务;若无任务文件则记为“No tasks”。
    • 增量规格:检查 openspec/changes/<name>/specs/ 目录,列出存在的能力规格,并提取需求名称(匹配 ### Requirement: <name> 的行)。
  • 检测规格冲突:构建“能力 -> 触及该能力的变更”映射,当 2 个以上所选变更对同一能力有增量规格时判定为冲突。
  • 智能解决冲突:对每个冲突调查代码库,读取各冲突变更的增量规格,搜索实现证据(相关文件、函数或测试),据此决定解决方式:
    • 若只有一个变更实际已实现,则同步该变更的规格。
    • 若两者都已实现,则按时间顺序应用(较旧者先,较新者覆盖)。
    • 若两者都未实现,则跳过规格同步并警告用户。
  • 展示合并状态表,汇总所有变更的工件、任务、规格、冲突与状态,并显示冲突解决说明与不完整变更的警告。
  • 使用单次确认提示用户确认批量操作,选项可能包括“归档全部 N 个变更”“仅归档 N 个就绪变更(跳过不完整)”“取消”。
  • 按确定顺序逐一执行归档:
    • 若存在增量规格,先同步规格(采用 openspec-sync-specs 的智能合并方式),冲突按解决顺序应用。
    • 执行归档:mkdir -p openspec/changes/archive 与 mv openspec/changes/<name> openspec/changes/archive/YYYY-MM-DD-<name>。
    • 记录每个变更的结果:成功、失败(记录错误)或跳过。
  • 输出最终汇总,包括已归档、跳过、失败的变更,以及规格同步摘要。

使用方式

无需输入参数,技能会提示用户进行选择。主要步骤为:获取活动变更、提示选择、批量校验、检测冲突、智能解决冲突、展示合并状态表、确认批量操作、逐一执行归档、显示汇总。

适用场景

  • 需要同时归档多个并行变更时。
  • 多个变更触及同一能力规格、需要判断实际实现并解决冲突时。
  • 需要在不完整变更存在的情况下,仍可选择归档并附带警告时。

限制与注意事项

  • 始终提示用户选择,绝不自动选择。
  • 仅当实现缺失时才跳过规格同步(并警告用户)。
  • 归档目录目标使用当前日期:YYYY-MM-DD-。
  • 移动到归档时保留 .openspec.yaml。
  • 若归档目标已存在,则该变更失败,但继续处理其他变更。
  • 若没有活动变更,则告知用户并停止;提示可使用 /opsx:new 创建新变更。
  • 若存在不完整变更,需明确说明它们将带警告归档。
  • 使用单次确认覆盖整个批次。
  • 跟踪并报告所有结果(成功/跳过/失败)。