ワンクリックで
openspec-bulk-archive-change
批量归档多个已完成变更。适用于并行完成多个变更后的集中归档。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
批量归档多个已完成变更。适用于并行完成多个变更后的集中归档。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
实现 OpenSpec 变更中的任务。当用户希望开始实现、继续实现或逐项完成任务时使用。
在实验性工作流中归档已完成的变更。适用于实现完成后的收尾归档。
继续推进一个 OpenSpec 变更,创建下一个工件。当用户希望推进变更、生成下一个工件或继续流程时使用。
进入探索模式——作为思考伙伴帮助探索想法、调查问题、澄清需求。当用户希望在变更前或过程中先理清思路时使用。
快速创建 OpenSpec 工件。当用户希望跳过逐个工件、一次性生成所有实现所需工件时使用。
使用实验性的工件工作流创建新的 OpenSpec 变更。当用户希望以结构化步骤创建新功能、修复或修改时使用。
| name | openspec-bulk-archive-change |
| description | 批量归档多个已完成变更。适用于并行完成多个变更后的集中归档。 |
| license | MIT |
| compatibility | Requires openspec CLI. |
| metadata | {"author":"openspec","version":"1.0","generatedBy":"1.1.1"} |
一次性归档多个已完成的变更。
该技能允许批量归档,并通过检查代码库来智能处理规范冲突,从而判断哪些内容已经实际实现。
输入:无需输入(会提示选择)
步骤
获取活跃变更
运行 openspec list --json 获取所有活跃变更。
若不存在活跃变更,告知用户并停止。
提示选择要归档的变更
使用 AskUserQuestion 工具(多选)让用户选择:
重要:不要自动选择,必须让用户选。
批量验证 - 汇总每个变更的状态
对每个选中的变更,收集:
a. 工件状态 - 运行 openspec status --change "<name>" --json
schemaName 和 artifacts 列表done,哪些不是b. 任务完成情况 - 读取 openspec/changes/<name>/tasks.md
- [ ](未完成)与 - [x](已完成)c. 增量规范 - 检查 openspec/changes/<name>/specs/ 目录
### Requirement: <name>)检测规范冲突
构建 capability -> [涉及该 capability 的变更] 的映射:
auth -> [change-a, change-b] <- CONFLICT (2+ changes)
api -> [change-c] <- OK (only 1 change)
当 2+ 个选中变更的增量规范涉及同一 capability 时,判定冲突。
智能解决冲突
对每个冲突,调查代码库:
a. 读取冲突变更的增量规范,理解各自声称的新增/修改内容
b. 搜索代码库寻找实现证据:
c. 确定解决方案:
d. 记录每个冲突的解决结果:
展示汇总状态表
展示所有变更的汇总表:
| Change | Artifacts | Tasks | Specs | Conflicts | Status |
|---------------------|-----------|-------|---------|-----------|--------|
| schema-management | Done | 5/5 | 2 delta | None | Ready |
| project-config | Done | 3/3 | 1 delta | None | Ready |
| add-oauth | Done | 4/4 | 1 delta | auth (!) | Ready* |
| add-verify-skill | 1 left | 2/5 | None | None | Warn |
对冲突,展示解决方案:
* Conflict resolution:
- auth spec: Will apply add-oauth then add-jwt (both implemented, chronological order)
对未完成的变更,展示警告:
Warnings:
- add-verify-skill: 1 incomplete artifact, 3 incomplete tasks
确认批量操作
使用 AskUserQuestion 工具给出单次确认:
若存在未完成变更,需明确其将带警告归档。
对确认的变更逐个归档
按确定的顺序处理(遵循冲突解决顺序):
a. 同步规范(若存在增量规范):
b. 执行归档:
mkdir -p openspec/changes/archive
mv openspec/changes/<name> openspec/changes/archive/YYYY-MM-DD-<name>
c. 记录每个变更的结果:
展示最终摘要
展示最终结果:
## Bulk Archive Complete
Archived 3 changes:
- schema-management-cli -> archive/2026-01-19-schema-management-cli/
- project-config -> archive/2026-01-19-project-config/
- add-oauth -> archive/2026-01-19-add-oauth/
Skipped 1 change:
- add-verify-skill (user chose not to archive incomplete)
Spec sync summary:
- 4 delta specs synced to main specs
- 1 conflict resolved (auth: applied both in chronological order)
若有失败:
Failed 1 change:
- some-change: Archive directory already exists
冲突解决示例
示例 1:仅一个实现
Conflict: specs/auth/spec.md touched by [add-oauth, add-jwt]
Checking add-oauth:
- Delta adds "OAuth Provider Integration" requirement
- Searching codebase... found src/auth/oauth.ts implementing OAuth flow
Checking add-jwt:
- Delta adds "JWT Token Handling" requirement
- Searching codebase... no JWT implementation found
Resolution: Only add-oauth is implemented. Will sync add-oauth specs only.
示例 2:两个都实现
Conflict: specs/api/spec.md touched by [add-rest-api, add-graphql]
Checking add-rest-api (created 2026-01-10):
- Delta adds "REST Endpoints" requirement
- Searching codebase... found src/api/rest.ts
Checking add-graphql (created 2026-01-15):
- Delta adds "GraphQL Schema" requirement
- Searching codebase... found src/api/graphql.ts
Resolution: Both implemented. Will apply add-rest-api specs first,
then add-graphql specs (chronological order, newer takes precedence).
成功输出
## Bulk Archive Complete
Archived N changes:
- <change-1> -> archive/YYYY-MM-DD-<change-1>/
- <change-2> -> archive/YYYY-MM-DD-<change-2>/
Spec sync summary:
- N delta specs synced to main specs
- No conflicts (or: M conflicts resolved)
部分成功输出
## Bulk Archive Complete (partial)
Archived N changes:
- <change-1> -> archive/YYYY-MM-DD-<change-1>/
Skipped M changes:
- <change-2> (user chose not to archive incomplete)
Failed K changes:
- <change-3>: Archive directory already exists
无可归档变更时输出
## No Changes to Archive
No active changes found. Use `/opsx:new` to create a new change.
护栏