该技能用于批量归档多个已完成的变更,适合在同时有多个并行变更需要归档时使用。
用途:将多个已完成的变更一次性归档,并在归档过程中处理规范(spec)冲突。
主要能力:
- 获取当前所有活动变更(通过 openspec list --json)。
- 让用户多选需要归档的变更,提供“全部变更”选项,不自动选择。
- 对每个选中变更收集工件状态(openspec status --change <name> --json)、任务完成情况(读取 tasks.md 中的 - [ ] 与 - [x])、以及 delta specs(检查 openspec/changes/<name>/specs/ 目录并提取需求名称)。
- 检测规范冲突:当两个或以上选中变更对同一能力有 delta specs 时视为冲突。
- 通过检查代码库解决冲突:阅读各变更的 delta specs,搜索代码库寻找实现证据,判断仅一个实现、两者都实现或都未实现,并据此决定同步哪些规范以及顺序(两者都实现时按时间顺序,较新覆盖较旧)。
- 展示汇总状态表,包含工件、任务、规范、冲突和状态。
- 单次确认后按确定顺序执行归档:先同步规范(如存在 delta specs),再执行 mkdir -p openspec/changes/archive 和 mv openspec/changes/<name> openspec/changes/archive/YYYY-MM-DD-<name>。
- 跟踪并报告每个变更的结果(成功、跳过、失败)。
使用方式:无需输入,技能会提示用户选择。执行流程为:获取活动变更、提示选择、批量验证、检测并解决冲突、显示状态表、确认批量操作、逐个执行归档、输出汇总。成功时输出归档列表和规范同步摘要;部分成功时列出跳过和失败的变更;无变更时提示使用 /opsx:new 创建新变更。
适用场景:已使用 OpenSpec 管理变更流程,存在多个并行变更需要清理归档;需要智能处理规范冲突并按代码库实际情况同步规范。
限制与注意事项:始终提示用户选择,不自动选择;冲突解决依赖代码库检查;两者都实现时按时间顺序应用规范;实现缺失时跳过规范同步并警告用户;归档目录使用当前日期前缀 YYYY-MM-DD-;若归档目标已存在,该变更失败但继续处理其他变更;移动归档时保留 .openspec.yaml。