SuperAPI AI 工具集

geek-skills-openspec-archive-change

编程与开发

查看项目

更新于 10-16 04:08

技能介绍

用途

该技能用于 OpenSpec 实验性工作流中,在某个变更(change)的实现工作完成之后,将其正式归档。适用于用户希望“收尾并归档”一个已完成变更的场景。

主要能力

  • 变更选择:如果用户未提供变更名称,会运行 openspec list --json 获取可用变更,并通过 AskUserQuestion 工具让用户选择;只展示仍处于活动状态(尚未归档)的变更,并在可用时显示每个变更所使用的 schema。技能明确要求不得猜测或自动选择变更,必须由用户选择。
  • 工件完成状态检查:运行 openspec status --change "<name>" --json,解析其中的 schemaName 与 artifacts 状态。若存在未完成的工件,会列出警告并通过 AskUserQuestion 确认是否继续。
  • 任务完成状态检查:读取任务文件(通常是 tasks.md),统计 - [ ](未完成)与 - [x](已完成)的数量。若存在未完成任务,会显示未完成任务数量并请求确认;若不存在任务文件,则跳过任务相关警告直接继续。
  • delta spec 同步评估:检查 openspec/changes/<name>/specs/ 下是否存在 delta spec。若不存在则跳过同步提示;若存在,则与 openspec/specs/<capability>/spec.md 中对应的主 spec 比较,判断将要应用的变更(新增、修改、删除、重命名),并在提示前展示合并摘要。提示选项根据情况不同:需要变更时为“Sync now (recommended)”与“Archive without syncing”;已同步时为“Archive now”“Sync anyway”“Cancel”。若用户选择同步,则通过 Task 工具(subagent_type: "general-purpose")调用 openspec-sync-specs 技能,并附带 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 是否已同步(如适用),以及关于未完成工件/任务的警告说明。

使用方式

调用该技能时,可选地指定变更名称;若省略,则尝试从对话上下文推断,若模糊或歧义则必须提示用户从可用变更中选择。技能内部按上述步骤依次执行,并在关键节点通过 AskUserQuestion 与用户交互确认。

适用场景

  • 变更实现已完成,需要将其归档到 openspec/changes/archive/ 下。
  • 希望在归档前确认工件与任务是否全部完成。
  • 希望在归档前评估并同步 delta spec 到主 spec。

限制与注意事项

  • 该技能属于实验性工作流的一部分。
  • 未提供变更名称且无法从上下文推断时,必须由用户选择,不得自动选择。
  • 未完成的工件或任务不会阻止归档,只会给出警告并请求确认。
  • 移动到归档时会保留 .openspec.yaml(随目录一起移动)。
  • 若归档目标名称已存在,归档会失败并提示处理方式。
  • 若存在 delta spec,始终会先运行同步评估并展示合并摘要,然后再提示用户。
  • 关于收费、价格、平台支持范围等具体信息,资料中暂未提供。