archive
分类:.claude/commands/opsx
发布于:
阅读时间:14 分钟
在实验性工作流中归档已完成的变更。
输入: 可选地在
/opsx:archive/opsx:archive add-auth步骤
-
如果没有提供变更名称,提示选择
运行
获取可用的变更。使用 AskUserQuestion 工具 让用户选择。openspec list --json仅显示活动的变更(尚未归档)。 如果可用,包含每个变更使用的 schema。
重要: 不要猜测或自动选择变更。始终让用户选择。
-
检查 artifact 完成状态
运行
检查 artifact 完成情况。openspec status --change "<name>" --json解析 JSON 以了解:
- : 正在使用的工作流
schemaName - : artifact 列表及其状态(
artifacts或其他)done
如果有任何 artifact 未完成:
- 显示警告,列出未完成的 artifacts
- 提示用户确认继续
- 如果用户确认,继续
-
检查任务完成状态
读取 tasks 文件(通常是
)以检查未完成的任务。tasks.md统计标记为
(未完成)与- [ ](完成)的任务数量。- [x]如果发现未完成的任务:
- 显示警告,显示未完成任务的数量
- 提示用户确认继续
- 如果用户确认,继续
如果不存在 tasks 文件:继续,不显示任务相关警告。
-
评估 delta spec 同步状态
在
检查 delta specs。如果不存在,继续而不提示同步。openspec/changes/<name>/specs/如果 delta specs 存在:
- 将每个 delta spec 与 中对应的主 spec 进行比较
openspec/specs/<capability>/spec.md - 确定将应用哪些更改(添加、修改、删除、重命名)
- 在提示前显示组合摘要
提示选项:
- 如果需要更改:"立即同步(推荐)"、"不同步归档"
- 如果已同步:"立即归档"、"无论如何同步"、"取消"
如果用户选择同步,使用 Task 工具(subagent_type: "general-purpose", prompt: "使用 Skill 工具调用 openspec-sync-specs 进行变更 '<name>'。Delta spec 分析:<包含分析的 delta spec 摘要>")。无论选择如何,继续归档。
- 将每个 delta spec 与
-
执行归档
如果归档目录不存在,创建它:
mkdir -p openspec/changes/archive使用当前日期生成目标名称:
YYYY-MM-DD-<change-name>检查目标是否已存在:
- 如果存在:失败并显示错误,建议重命名现有归档或使用不同日期
- 如果不存在:将变更目录移动到归档
mv openspec/changes/<name> openspec/changes/archive/YYYY-MM-DD-<name> -
显示摘要
显示归档完成摘要,包括:
- 变更名称
- 使用的 schema
- 归档位置
- Spec 同步状态(已同步 / 跳过同步 / 无 delta specs)
- 关于任何警告的说明(未完成的 artifacts/tasks)
成功时的输出
## 归档完成 **变更:** <change-name> **Schema:** <schema-name> **归档到:** openspec/changes/archive/YYYY-MM-DD-<name>/ **Specs:** ✓ 已同步到主 specs 所有 artifacts 完成。所有任务完成。
成功时的输出(无 Delta Specs)
## 归档完成 **变更:** <change-name> **Schema:** <schema-name> **归档到:** openspec/changes/archive/YYYY-MM-DD-<name>/ **Specs:** 无 delta specs 所有 artifacts 完成。所有任务完成。
带警告的成功时的输出
## 归档完成(带警告) **变更:** <change-name> **Schema:** <schema-name> **归档到:** openspec/changes/archive/YYYY-MM-DD-<name>/ **Specs:** 跳过同步(用户选择跳过) **警告:** - 带有 2 个未完成的 artifacts 归档 - 带有 3 个未完成的任务归档 - Delta spec 同步被跳过(用户选择跳过) 如果这不是有意的,请检查归档。
错误时的输出(归档已存在)
## 归档失败 **变更:** <change-name> **目标:** openspec/changes/archive/YYYY-MM-DD-<name>/ 目标归档目录已存在。 **选项:** 1. 重命名现有归档 2. 如果现有归档是重复的,删除它 3. 等待不同的日期再归档
护栏
- 如果未提供,始终提示进行变更选择
- 使用 artifact 图(openspec status --json)进行完成检查
- 不要因警告阻止归档 - 只是通知并确认
- 移动到归档时保留 .openspec.yaml(它随目录一起移动)
- 显示发生了什么的清晰摘要
- 如果请求同步,使用 Skill 工具调用 (代理驱动)
openspec-sync-specs - 如果 delta specs 存在,始终运行同步评估并在提示前显示组合摘要
#workflow#archive#experimental