用途
Archive 是 Beat 工作流中用于归档已完成变更的技能。当一次 Beat 变更已经完成(已实现,或已提炼并验证)并准备归档时使用它。它不用于验证实现。
运行时机:在 /beat:verify 之后、PR 或合并之前,在变更所在的任意分支上(通常是 /beat:design 创建的 worktree 分支)。归档是该分支上的最后一次提交,随代码一起进入同一个 PR,因此主分支永远不会为已经落地的功能保留活跃的 beat/changes/<name> 目录。归档本身会交接给合并/PR 步骤(第 7 步)——绝不应在 PR 合并之后再执行归档。归档从不创建或切换分支:如果用户位于基础分支,就在那里归档,由第 7 步处理分支状态。
决策边界
适用场景:
- 归档已完成(或已验证提炼)的变更
- 将功能同步到 beat/features/ 长期文档
- 归档前的最终长期文档清扫(术语表、最后一公里 ADR)
不适用场景:
- 对照规格验证实现(使用 /beat:verify)
- 实现剩余任务(使用 /beat:apply)
- 创建或修改规格产物(使用 /beat:design)
- 等待 PR 先合并——归档是分支上的最后一次提交,在 PR 之前,且它自己会调用合并/PR 步骤
触发示例:"Archive the change" / "The change is done, wrap it up" / "Sync the features" 不应触发:"verify the implementation" / "implement the change" / "design a feature"
前置条件
| 技能 | 时机 | 优先级 |
|---|---|---|
| finishing-a-development-branch | 归档完成后 | 必须 |
如果不可用(技能未安装),跳过并仅显示归档摘要。
主要能力
- 选择变更:若未提供名称,查找 beat/changes/ 目录(排除 archive/),只有一个则使用,多个则让用户选择,仅显示活跃(未归档)变更。
- 检查产物完成情况:读取 status.yaml,检查哪些产物已完成、哪些待处理(非跳过)。若有非跳过产物仍待处理,显示警告并确认是否继续。
- 检查任务完成情况(若存在 tasks.md):统计未完成与已完成任务,若有未完成则警告并确认。
- 检查是否运行过验证:读取 status.yaml 顶层 verification 字段。缺失则警告"此变更从未验证"并确认;status: issues-found 则警告并确认;status: passed 则静默继续。只告知和确认,绝不阻塞。
- 将功能同步到长期文档:若 gherkin 状态为 skipped 则跳过同步;若为 done,读取 features/*.feature、proposal.md、design.md,读取 beat/config.yaml 确定 README 语言,通过 AskUserQuestion 确定能力映射,扫描功能文件中未定义的项目特定术语并提示加入 beat/CONTEXT.md,然后同步文件到 beat/features/<capability>/。
- 处理 .orig 备份:当 status.yaml 有 gherkin.modified 时,将修改版本同步到 beat/features/<capability>/,删除 .feature.orig 备份,若使用 pytest-bdd 则更新 @scenario 装饰器路径。
- 最后一公里 ADR 清扫:统计本次变更写入或引用的 ADR 文件;若至少有一个则静默跳过;若为零则提示一次,询问是否有难以逆转、令人意外且涉及真实权衡的决策值得记录。
- 执行归档:更新 status.yaml 的 phase 为 archive,创建 beat/changes/archive,生成目标名 YYYY-MM-DD-<change-name>,检查是否已存在,然后移动目录。
- 重写旧变更路径引用:移动目录会破坏所有指向它的链接(ADR source 字段和链接、已同步功能和设计文档中的交叉引用、术语表或 README 提及、被移动目录内部的自引用)。使用 git grep 查找并重写。
使用方式
输入:可选指定变更名称。若省略,则从上下文推断或提示。
流程:选择变更 → 检查产物完成 → 检查任务完成 → 检查验证记录 → 检查 Gherkin 是否完成 → 询问能力映射 → 扫描未定义术语 → 同步功能(或跳过)→ 最后一公里 ADR 清扫 → 移动到归档 → 重写旧变更路径引用 → 提交归档 → 显示摘要 → 调用 finishing-a-development-branch。
适用场景
- 一次 Beat 变更已实现并准备归档
- 需要将功能同步到 beat/features/ 长期文档
- 需要在归档前进行术语表和 ADR 的最终清扫
限制
- 不用于验证实现、实现剩余任务或创建/修改规格产物。
- 归档是分支上的最后一次提交,在 PR 之前,不应在 PR 合并后执行。
- 归档从不创建或切换分支。
- 若 finishing-a-development-branch 技能未安装,则跳过并仅显示归档摘要。
- 关于收费、价格、平台等具体信息暂未提供。