用途:一次性归档多个并行的 OpenSpec 变更,并在它们之间解决 delta 规范冲突——通过检查代码库中实际实现了哪个变更来判断,而不是失败或猜测。
主要能力:
- 用 openspec list --json 获取活跃变更;无变更则告知用户并停止。
- 让用户多选变更(绝不自动选择),展示每个变更的 schema,提供“全部变更”选项,支持任意数量选择。
- 收集每个所选变更的状态:制品状态(openspec status --change "<name>" --json)、任务完成度(统计 tasks.md 中的 - [ ]/- [x],缺失则标注“No tasks”)、以及 openspec/changes/<name>/specs/ 下的 delta 规范及其需求名。
- 检测规范冲突:构建 capability -> [changes touching it] 映射,2 个及以上所选变更触及同一 capability 即为冲突。
- 智能解决冲突:读取各冲突变更的 delta 规范,在代码库中搜索实现证据后决定——仅一个已实现则同步该变更;两者都已实现则按时间顺序应用(旧者先,新者优先);都未实现则跳过该 capability 的规范同步并警告。记录每个冲突的解决方式与理由。
- 展示合并状态表(变更、制品、任务、规范、冲突、就绪/警告),并在下方标注冲突解决结果与未完成变更警告。
- 用单次提示确认批量操作:“Archive N changes?”,提供“Archive all N”“Archive only the ready ones (skip incomplete)”“Cancel”。明确说明选“all”会带警告归档未完成变更,而非静默处理。
- 按确认顺序逐个执行:若有 delta 规范需同步,通过 Task 工具(subagent_type: general-purpose)委托 /openspec-sync-specs 合并,冲突检测与解决仍留在本技能;随后执行 mkdir -p openspec/changes/archive && mv openspec/changes/<name> openspec/changes/archive/YYYY-MM-DD-<name>。逐变更跟踪成功/失败/跳过;归档目标已存在会使该变更失败但不中断批次。
- 显示最终摘要:已归档变更及目标位置、跳过原因、失败错误,以及规范同步摘要(同步的 delta、解决的冲突)。
限制与护栏:始终提示选择,绝不自动选择;确认批次前先检测冲突,并靠检查代码库而非猜测或仅凭变更顺序解决;每个归档变更保留 .openspec.yaml;单个失败不得中止其余批次。完成条件:每个已选且确认的变更都有记录结果(已归档、已跳过或失败并附原因),且规范同步摘要覆盖每个曾冲突的 capability。