Skip to main content
你的项目可能已经存在一段时间——有代码、有 Git 历史,甚至已经在用 OpenSpec 或 Superpowers。本页说明这种存量项目接入 Comet Classic 时的真实流程和需要注意的边界。

最短路径

然后在 AI 编码平台里输入 /comet,描述想做的变更。项目配置会让统一入口进入 Classic。

Classic 初始化在存量项目里会做什么

comet init --workflow classic 不会问你”是否已经在用 OpenSpec/Superpowers”。它逐个检测每个组件,然后让你决定覆盖还是跳过。

组件检测

Classic 初始化检查以下三类组件是否已存在: CLI 依赖单独检测(openspeccodegraph 是否在 PATH 上),已安装的默认不勾选,不会重复安装。

已存在组件的处理

当检测到已存在的组件时: 如果同一平台检测到多个已存在组件,先批量选择(全部覆盖/全部跳过/逐个选择),再逐个处理。

init 会创建的目录和文件

项目级 Classic 安装时,comet init --workflow classic 会:
  • 运行 openspec init 创建当前 Classic OpenSpec 根目录;新项目默认使用 docs/openspec/,已有根目录 openspec/ 的项目保留 legacy 布局
  • 安装 Comet Skill、rules 和 hooks 到目标平台目录
  • 创建工作目录 docs/superpowers/specsdocs/superpowers/plans.comet/
  • 写入默认 .comet/config.yaml(如果不存在)
.comet/config.yaml 是项目级配置;每个 change 的 .comet.yaml/comet-open 创建,不是 init 创建的。classic.language 会在创建 change 时快照到 .comet.yaml,用于约束 OpenSpec 和 Superpowers 产物的主语言。

四种存量项目场景

小鱼用放大镜检测存量项目里的 OpenSpec、Superpowers 和 Comet 组件并分流处理

存量项目接入时,先检测已有组件,再决定覆盖、跳过、补装或更新

场景一:纯代码库,没用过 OpenSpec/Superpowers

最常见的场景。Classic 初始化检测不到已有组件,全部安装:
然后用 /comet 开始第一个变更。

场景二:已经在用 OpenSpec

你已经有根目录 openspec/ 和活跃 change。comet init --workflow classic 会把它识别为现有 Classic 的 legacy 布局,不会在升级时自动移动到 docs/openspec/;检测到 OpenSpec Skill 和 CLI 已存在时,会让你选择覆盖或跳过。推荐跳过已有组件,只补充 Comet 部分。 Classic 初始化运行的 openspec init 是幂等的——OpenSpec 会处理当前已配置的根目录,不会破坏已有 change。如果想从旧布局 openspec/ 迁移到新布局 docs/openspec/,详见迁移 Classic 布局

场景三:已经在用 Superpowers

你已经有 brainstormingwriting-plans 等 Skill(可能通过插件安装)。Classic 初始化检测到后同样让你选择。推荐跳过,避免覆盖你的自定义版本。
如果你之前用的是旧版 Superpowers(低于 6.0.0),升级到 6.0.0+ 大约快 2 倍、token 少 50%。升级时可选择覆盖 Superpowers 组件。

场景四:同时用 OpenSpec 和 Superpowers

两套组件都已存在。Classic 初始化会批量提示,选择”全部跳过”即可,它只补装 Comet Skill、规则、hooks 和工作目录。

历史change:已有 OpenSpec change 但没有 .comet.yaml

这是存量项目接入时最容易踩的坑。

问题

如果你之前用原始 /opsx:new 创建了 OpenSpec change,这些 change 没有 .comet.yaml。此时:
  • comet status静默跳过它们(不报错,但也不显示)。
  • comet doctor 同样不检测这类 change。
  • 只有在 Agent 平台里调用 /comet 并进入 Classic 后,内部路由才会通过 openspec list --json 发现它们。

接管存量OpenSpec Change

Comet 没有 comet adoptcomet import 这样的接管命令。接管存量 OpenSpec change 靠的是 /comet-open 的幂等性:
  1. 在 Agent 平台调用 /comet
  2. 项目配置进入 Classic,内部 /comet-classic 运行 openspec list --json,发现有活跃 change 但缺少 .comet.yaml
  3. 路由到 /comet-open
  4. /comet-open 发现 OpenSpec artifacts 已存在,跳过已完成的步骤,补创建 .comet.yaml
这个接管路径只在 change 还在 open 阶段(或刚创建还没推进)时干净工作。如果一个 change 已经做到 build 或 verify 但没有 .comet.yaml,没有可靠的方式回溯挂载 Comet 状态——需要重新开 change。

建议

  • 存量 OpenSpec change 如果还没推进,直接用 /comet 让 Classic 接管。
  • 如果已经推进到 build/verify,建议完成当前工作后用 /comet 开新 change,而不是强行接管。
  • 接入后,确认 comet status 能看到你的 change(说明 .comet.yaml 已补上)。

升级已有 Comet 安装

如果项目已经在用 Comet,只是想升级:
comet update 会刷新 Comet Skill、规则和脚本到已安装平台。--yes 在 init 里会把已存在组件解析为跳过,所以强制刷新要用 --overwrite

接入后的检查清单

常见问题

不会。Comet 非破坏性合并 hook 配置,保留你已有的 hooks,只替换它自己管理的命令。详见支持的平台
不可以,Comet依赖OpenSpec和Superpowers。如已安装,可通过交互式提示的覆盖/跳过选择来控制,或靠检测自动跳过已安装的依赖。
这个 change 可能是原始 /opsx:new 创建的,缺少 .comet.yaml。用 /comet 进入 Classic,让内部路由接管并补上状态文件。详见上文的“历史 change”。

下一步

最后修改于 2026年8月2日