用途:把现有 GramIO 项目从当前版本升级到指定或最新版本,避免盲目整体升级。适用于 GramIO 版本到版本的升级;从其他框架(grammY、Telegraf、puregram、node-telegram-bot-api)迁移应使用对应的 migration-from-* 参考。
主要能力:内置 MIGRATIONS.md 作为升级依据,按包、版本倒序列出破坏性变更(含前后对比)、弃用项、需同步升级的 peer 依赖及已知问题版本的固定建议,并列出各版本解锁的新特性标题。
使用方式:参数为自由格式,如 /gramio-upgrade(全部升到最新)、/gramio-upgrade gramio to 0.10(指定包与目标版本)、/gramio-upgrade @gramio/scenes(仅某插件)、/gramio-upgrade что сломается если обновиться(仅影响报告,不修改)。仅说 upgrade 时默认升级所有 gramio/@gramio 包到最新,但仍先给出计划并确认。
步骤:1) 在项目目录运行 node skills/gramio-upgrade/detect-versions.mjs --json 检测已安装版本(可加 --cwd .);无法运行时回退读取 package.json 与 node_modules/<pkg>/package.json。2) 确定目标版本,未指定时加 --latest 获取 npm latest。3) 依据 MIGRATIONS.md 选取已安装版本(不含)到目标版本(含)之间的所有条目,按依赖层排序:@gramio/types → contexts/files/format/keyboards/wrapper → gramio → 插件 → 工具链,用 Grep 定位受影响文件,展示清单并等待确认。4) 按项目原有范围风格修改 package.json,按锁文件选择包管理器安装,按依赖顺序应用破坏性变更修改,弃用项留作 TODO 注释。5) 运行类型检查与测试并汇报。6) 从新特性中挑选 2–3 个真正契合项目的建议,用户同意后再从 changelog 链接获取用法代码实现。
限制与规则:不得只升级版本而不应用对应破坏性变更;不得跳过中间版本;行为变更需用户确认;MIGRATIONS.md 未覆盖的包或版本应说明并指向 /changelogs/ 页面,不得臆造迁移步骤;ctx getter 使用 camelCase(如 ctx.from、ctx.chatId);遵守“直接升级到 X”的固定建议;跨到 @gramio/types 10.3.1 时需将 send 方法的 receiver_user_id / callback_query_id 迁移到 ephemeral_message_parameters,不得添加兼容转换或别名。MIGRATIONS.md 由 public/migrations.json 生成,请勿手工编辑。