with one click
self-update
// CataForge 自更新 — 检测已安装包与项目 scaffold 的版本差异,升级包并刷新 scaffold,运行迁移检查验证一致性。支持 pip 和 uv 两种包管理器,保留 runtime.platform、upgrade.state 和 PROJECT-STATE.md 等用户可编辑状态。当用户提到 CataForge 升级、scaffold 过期、framework 版本不一致、更新框架配置时,使用此 skill。
// CataForge 自更新 — 检测已安装包与项目 scaffold 的版本差异,升级包并刷新 scaffold,运行迁移检查验证一致性。支持 pip 和 uv 两种包管理器,保留 runtime.platform、upgrade.state 和 PROJECT-STATE.md 等用户可编辑状态。当用户提到 CataForge 升级、scaffold 过期、framework 版本不一致、更新框架配置时,使用此 skill。
[HINT] Download the complete skill directory including SKILL.md and all related files
| name | self-update |
| description | CataForge 自更新 — 检测已安装包与项目 scaffold 的版本差异,升级包并刷新 scaffold,运行迁移检查验证一致性。支持 pip 和 uv 两种包管理器,保留 runtime.platform、upgrade.state 和 PROJECT-STATE.md 等用户可编辑状态。当用户提到 CataForge 升级、scaffold 过期、framework 版本不一致、更新框架配置时,使用此 skill。 |
| argument-hint | [check | apply [--dry-run] | verify] # apply 自 v0.1.10 起调用 cataforge bootstrap |
| suggested-tools | Bash, Read |
| depends | [] |
| disable-model-invocation | false |
| user-invocable | true |
check(仅检测)、apply(升级并刷新)、verify(迁移检查)--dry-run 标志: 仅在 apply 指令中有效,预览变更不写盘Step 1: 读取当前状态
并行执行:
cataforge upgrade check
python3 -c "import cataforge; print(cataforge.__version__)"
记录:
installed_version — 已安装包版本scaffold_version — 项目 .cataforge/framework.json 中的 version 字段Step 2: 报告差异
输出格式:
已安装包: <installed_version>
Scaffold : <scaffold_version>
状态 : up-to-date | outdated
若 outdated,提示用户运行 self-update apply 或手动执行四步升级流程。
此指令负责包升级(pip/uv)+ 调用
cataforge bootstrap幂等编排 scaffold 刷新、部署、验证。自 v0.1.10 起将原来的apply → verify手动链替换为bootstrap。
Step 1: 版本前置检查
cataforge upgrade check
若已是 up-to-date,告知用户并询问是否仍要强制刷新 scaffold。用户确认后继续(cataforge bootstrap 会自动跳过已 current 的步骤,仅跑 doctor),否则直接结束。
Step 2: 检测包管理器
依次尝试(短路逻辑,找到第一个可用的即停止):
uv tool list 2>/dev/null | grep -q cataforge && echo "uv"
pip show cataforge 2>/dev/null | grep -q Name && echo "pip"
uv → 升级命令为 uv tool upgrade cataforgepip → 升级命令为 pip install --upgrade cataforgeStep 3: 升级包
执行对应升级命令(除非 --dry-run):
# uv 场景
uv tool upgrade cataforge
# pip 场景
pip install --upgrade cataforge
若 --dry-run:
cataforge bootstrap --dry-run
输出 plan 预览后停止,不执行任何写入。
Step 4: 编排刷新 / 部署 / 验证
cataforge bootstrap --yes
bootstrap 按产物状态决定每步是否需要跑:
.deploy-state 平台漂移 或从未部署 → 跑 deploy--skip-doctor,不推荐)记录输出中的每步状态。若 doctor FAIL,按 指令3 的解读路径处理。
Step 5: 更新 upgrade.state
读取 .cataforge/framework.json,更新 upgrade.state 字段:
{
"upgrade": {
"state": {
"last_version": "<新安装版本>",
"last_upgrade_date": "<YYYY-MM-DD>",
"last_commit": ""
}
}
}
使用 Read + Edit 工具原地更新,保留文件其他字段不变。
Step 6: 同步 CLAUDE.md 框架版本字段 + hygiene 检查
升级后 CLAUDE.md §框架元信息.框架版本 容易与已安装包版本漂移(observed in feedback bundle issue #113)。Step 6 收尾:
python -c "import cataforge; print(cataforge.__version__)" 取实际版本cataforge claude-md check(如可用)surface hygiene 问题;FAIL 时建议用户运行 cataforge claude-md compactStep 6 不阻塞升级流程;hygiene FAIL 仅作为提示(让 Phase Transition Protocol 在下次推进时强制处理,见 ORCHESTRATOR-PROTOCOLS.md §Phase Transition Protocol hygiene gate)。
⚠️ 若用户在
bootstrap中同时遇到 EVENT-LOG schema FAIL(来自 v0.1.7 之前旁路写入的历史记录),按 hint 提示跑cataforge event accept-legacy设置水位线即可,不影响本次升级。
Step 1: 运行迁移检查
cataforge doctor
等价于 cataforge upgrade verify。
Step 2: 解读结果
PASS — 检查项通过,无需操作SKIP — 平台尚未 deploy,不计入失败,属预期行为FAIL — 检查项失败,需要修复后重试若有 FAIL 项,输出具体失败原因并提出修复建议(通常是重新运行 cataforge upgrade apply 或手动修复 framework.json 中对应字段)。
Step 3: 报告
迁移检查结果:
PASS N 项
SKIP N 项(已部署平台)
FAIL N 项
整体状态: OK | 需要修复
当用户未传参数直接调用 /self-update 时,按顺序执行:
cataforge bootstrap 编排刷新 / 部署 / 验证(用户确认后)。bootstrap 内部已含 doctor,无需额外 verify 步骤。每步之间汇报进度,任一步骤失败时停止并说明原因。
指令 3
verify保留为独立入口,供"不想升级、只想跑一下诊断"的场景用。
upgrade apply 刷新时的保留策略(由 cataforge 包内部实现,此 skill 不额外干预):
| 文件 | 保留项 | 覆盖项 |
|---|---|---|
framework.json | runtime.platform、upgrade.state | version、constants、features、migration_checks、upgrade.source |
PROJECT-STATE.md | 整个文件 | — |
其它 .cataforge/ 文件 | — | 整个文件;apply 前自动快照到 .cataforge/.backups/<ts>/,可用 cataforge upgrade rollback 恢复 |
upgrade.state由本 skill 在 Step 5 手动写入,不被upgrade apply覆盖,因此升级日期和版本记录会持久保留。 若用户在 apply 后发现自定义改动丢失,告知他们运行cataforge upgrade rollback --list查看快照并rollback --from <ts>回滚。
框架版本 同步与 cataforge claude-md check —— 升级后版本字段漂移和 Learnings Registry 膨胀已在 issue #113 F-009 反馈中确认是真实事故源apply 步骤里直接 git checkout / git restore 用户文件清场 —— 用户改动应通过 cataforge upgrade rollback --list + --from <ts> 走快照回滚通道framework.json 写入 runtime.platform 或 upgrade.state 之外的用户态字段 —— 这两个字段是契约保留项,其它字段全量覆盖--dry-run 可安全预览变更,不影响任何文件upgrade.state 记录每次升级时间,便于追溯