/comet 且项目配置为 Classic 时,/comet-classic 会检测当前阶段、推进状态并选择下一阶段 Skill。本页说明其判断顺序和恢复行为。
阶段推进 vs 自动衔接
自动推进包含两个不同动作:
阶段推进负责更新状态,自动衔接只决定下一张 Skill 卡片是否继续递出去
自动检测怎么工作
每次调用/comet 并进入 Classic 后,内部 /comet-classic 都会重新读取文件状态来判断当前阶段,而不是依赖对话历史。
Step 0:发现活跃 change
- 预设检测(优先级最高):命中 hotfix/tweak 时直接调用对应预设 Skill
- 未命中预设时运行
openspec list --json获取所有活跃 change - 按 change 数量和用户输入决定行为:
Step 1:读取状态
优先读取当前 Classic OpenSpec 根目录下的changes/<name>/.comet.yaml。
新项目默认路径是 docs/openspec/changes/<name>/.comet.yaml,保留旧布局的项目是 openspec/changes/<name>/.comet.yaml。
如果文件不存在,会回退到 openspec status、tasks.md 和 docs/superpowers/ 做文件检查。根目录由 classic.artifact_layout 决定,详见项目文件结构。
Step 2:阶段判定
按以下顺序判断,命中即停(以文件状态为准,冲突时修正.comet.yaml):
状态转换
阶段推进通过 guard--apply 或 comet-state transition 完成:
自动衔接:next 命令
阶段推进后,运行next 解析下一步:
Skill 路由
next 根据 phase 和 workflow 决定下一个 Skill:
verify 和 archive 阶段不受 workflow 类型影响,始终返回标准 Skill。
连续执行
单次/comet 调用进入 Classic 后,会从检测到的阶段开始。退出条件满足后,自动推进到后续阶段。
auto_transition 配置
auto_transition 控制是否自动调用下一个 Skill。配置优先级:
什么时候用 false
- 想在阶段之间插入人工审核
- 每个阶段完成后需要换模型或换人
- CI/CD 场景需要逐步控制
预设升级
hotfix 或 tweak 执行过程中命中升级信号时,会暂停,并提供两个选项:preset-escalate 是预设到 full 升级的唯一合法通道。
它会一次性设置 workflow/classic_profile 为 full、把 phase 回退到 design 并清除 design_doc。这三个动作要么全部生效,要么都不执行。
断点恢复
上下文压缩或会话中断后,重新调用/comet。配置进入 Classic 后,内部路由会重新读取文件状态并恢复:
断点恢复不依赖对话历史。每次都重新执行 Step 0 和 Step 1。
红旗清单
Comet 的自动推进有明确的边界。以下想法出现时必须停下检查:下一步
- 五阶段停顿点和用户选择点 — 自动推进在哪里暂停
- Classic 配置 —
auto_transition字段和配置优先级 - 工作流概念 — 五阶段如何串联
- 恢复中断的工作 — 断点恢复的实践

