name: openspec-archive-change description: 在实验性工作流中归档已完成的变更。当用户想要在实施完成后最终确定并归档变更时使用。 license: MIT compatibility: Requires openspec CLI. metadata: author: openspec version: "1.0"
在实验性工作流中归档已完成的变更。
输入:可选择指定变更名称。如果省略,检查是否可以从对话上下文中推断。如果模糊或不明确,必须提示可用的变更。
步骤
运行 openspec list --json 获取可用变更。使用 AskUserQuestion 工具 让用户选择。
仅显示活跃变更(未归档)。 如果可用,包括每个变更使用的 Schema。
重要:不要猜测或自动选择变更。始终让用户选择。
运行 openspec status --change "<name>" --json 检查产物完成情况。
解析 JSON 以了解:
schemaName:正在使用的工作流artifacts:产物列表及其状态(done 或其他)如果有产物未 done:
阅读任务文件(通常是 tasks.md)以检查未完成的任务。
统计标记为 - [ ](未完成)与 - [x](完成)的任务。
如果发现未完成的任务:
如果不存在任务文件: 继续而不显示任务相关警告。
检查 openspec/changes/<name>/specs/ 中的增量规范。如果不存在,继续而不显示同步提示。
如果存在增量规范:
openspec/specs/<capability>/spec.md 中的对应主规范进行比较提示选项:
如果用户选择同步,使用 Task 工具(subagent_type: "general-purpose", prompt: "Use Skill tool to invoke openspec-sync-specs for change ''. Delta spec analysis: ")。无论选择如何,都继续归档。
如果归档目录不存在,创建它:
mkdir -p openspec/changes/archive
使用当前日期生成目标名称:YYYY-MM-DD-<change-name>
检查目标是否已存在:
如果否:将变更目录移动到归档
mv openspec/changes/<name> openspec/changes/archive/YYYY-MM-DD-<name>
显示归档完成总结,包括:
成功时的输出
## 归档完成
**变更:** <change-name>
**Schema:** <schema-name>
**归档至:** openspec/changes/archive/YYYY-MM-DD-<name>/
**规范:** ✓ 已同步到主规范
所有产物已完成。所有任务已完成。
成功时的输出(无增量规范)
## 归档完成
**变更:** <change-name>
**Schema:** <schema-name>
**归档至:** openspec/changes/archive/YYYY-MM-DD-<name>/
**规范:** 无增量规范
所有产物已完成。所有任务已完成。
带警告的成功输出
## 归档完成(带警告)
**变更:** <change-name>
**Schema:** <schema-name>
**归档至:** openspec/changes/archive/YYYY-MM-DD-<name>/
**规范:** 同步已跳过(用户选择跳过)
**警告:**
- 归档时有 2 个未完成的产物
- 归档时有 3 个未完成的任务
- 增量规范同步已跳过(用户选择跳过)
如果这不是故意的,请检查归档。
错误时的输出(归档已存在)
## 归档失败
**变更:** <change-name>
**目标:** openspec/changes/archive/YYYY-MM-DD-<name>/
目标归档目录已存在。
**选项:**
1. 重命名现有的归档
2. 如果是重复的,删除现有的归档
3. 等到不同的日期再归档
护栏
openspec-sync-specs(Agent 驱动)