comet update 用于刷新已安装的 Comet Skill、Rule、Hook、Runtime 与托管说明。
当前项目和批量模式默认先更新对应的 Comet npm 包,再刷新资产。只需要修复安装文件时,使用 --skip-self-update 跳过 npm 更新。
未指定 --language 时,更新会保留各安装目标已有的中英文语言;需要切换语言时再显式传入该选项。
基本用法
选择更新范围
当项目索引里已有项目级安装时,交互式comet update 会先让你确认更新范围:
- All indexed projects:依次更新所有已登记项目。
- Current project only:只更新当前工作目录对应的项目。
--all-projects 不能与 --scope global 或 --current-project 同时使用。显式 --scope global 固定使用 current-project 模式,不会打开 all-projects 选择;它选择全局安装目标,并默认更新对应 npm 包。只刷新全局资产时加 --skip-self-update。
--platform 适合单个平台缺少 Skill、Rule 或 Hook,或只想刷新项目自定义平台的场景。指定后不会改动其他平台;省略时仍按当前范围处理全部已解析目标。
自动化脚本应显式传入 --json、--current-project 或 --all-projects。Comet 不会根据“是否脚本调用”自动推断范围;缺少这些选项且索引非空时,命令仍会进入交互式选择。
npm 自更新边界
current-project 模式包括显式--current-project、--json、没有可选择索引时的默认调用,以及显式 --scope global。这些调用默认更新目标安装对应的 Comet npm 包,再刷新资产;实际包位置由已安装的项目包或全局包决定。使用 --skip-self-update 仅刷新资产,--self-update 可显式保留默认行为。
all-projects 默认更新每个项目对应的适用包;同一全局包最多尝试一次。若只想刷新已登记项目的资产,传入 --skip-self-update。--self-update 与 --skip-self-update 互斥。用 --target-version <version> 固定目标版本;不能用它强制降级。
自更新会比较目标安装的完整 semver,包括预发布版本。候选版本低于已安装版本时拒绝降级。安装前,Comet 会把精确候选版本安装到隔离临时目录,在限定的时间和输出量内验证版本号、workflow resolve 与 Native 命令;候选验证失败时目标安装保持原样。实际安装失败时,Comet 会尝试恢复原来的精确版本,并把整个更新报告为 incomplete。
什么时候运行
- 升级
@rpamis/comet后。 comet doctor提示 Skill 或脚本版本不一致。- 切换中文或英文 Skill。
- 团队更新了项目级 Comet 配置。
Native 与 Classic 更新边界
和comet init 一样,comet update 会:
- Native 项目刷新 Comet 自有 Skill/runtime、统一工作流 Rule、Hook Router 与 Ambient Resume 说明,并固定使用 Copy;不会创建
.comet/skills/,还会跳过 CodeGraph 与 Classic 专属 Skill。遇到旧 symlink 安装时,会安全解除 Comet 管理的链接并复制为本地文件,不会沿链接写回.comet/skills/;共享目录含非托管 Skill 时会保留现场并拒绝替换。 - Classic 与 global 目标保留原来的安装模式选择(Copy / Symlink)和依赖能力。选择 Symlink 时会重建到
.comet/skills/的链接。 .comet/config.yaml作为共享项目配置按字段合并,保留另一工作流与用户字段;Native 更新不会删除已有 Classic 文件,改变默认入口也不等于迁移工作流。ambient_resume控制 Native 与 Classic 的同一套只读自动恢复说明;设置为false时,更新会移除托管恢复块但保留其他用户规则。
comet update 不管理 OpenSpec、Superpowers 或其他第三方 Skill;Native 项目还会跳过 CodeGraph 与 Classic 专属 Skill,Classic 保持原有行为。已有平台 skills/ 目录会被保留;Symlink 模式只刷新 Comet 管理的链接,不删除本地或第三方 Skill。

