Rails 升级分析器
分析 Rails 应用的升级路径:检测当前版本、获取最新发布与官方升级指南,并以选择性合并方式升级文件,保留本地定制。
SKILL.md 明确要求先检测本地定制、生成升级计划并经用户确认后才执行写入,强调不覆盖文件、git 可回滚,安全原则良好;但技能包含直接执行 shell 命令(rails new、文件覆盖、db:migrate)、依赖 gh CLI 认证态,确认与隔离机制仅靠文字约定,缺少自动化备份或明确的权限边界,扣 9 分。
流程分步清晰,含错误处理(gh 未认证、railsdiff 版本缺失时回退、已是最新版本)和验证步骤,失败反馈可诊断;但为静态审查,关键路径(WebFetch 抓取、选择性合并)无测试或可复现证据,扣 10 分。
触发场景明确(Rails 项目内、/rails-upgrade),命名与描述匹配能力;对升级类型和复杂度有清晰判定标准;但依赖 gh CLI、guides.rubyonrails.org 与 railsdiff.org,未声明网络受限环境的可用性,对中国大陆网络可达性存在风险且未披露,扣 6 分。
README 提供安装说明(Claude Code/OpenCode)、前置依赖、示例输出,声明 MIT 许可;但无版本号、变更日志或维护者更新路径,license 元数据未在 skill 层声明,部分流程依赖'心理清单'等含糊表述,扣 6 分。
选择性合并流程相对直接运行 rails app:update 有明显边际价值,输出格式(总结表、升级计划)可直接使用;但无任何执行证据证明输出正确完整,静态审查下无法验证代表性输出,扣 9 分。
引用官方升级指南、railsdiff、GitHub releases 等可追溯一手来源,事实与建议区分较清楚;但无测试套件、CI 或第三方执行证据,示例输出为作者编写,扣 6 分。
- 技能会执行 shell 命令并覆盖文件,使用前请确保在干净 git 工作区运行以便回滚。
- 依赖 gh CLI 认证及 guides.rubyonrails.org / railsdiff.org 等境外站点,大陆网络环境可能不可达。
- 无版本号与变更日志,更新追踪依赖仓库提交记录;发布者未经 FollowSkills 验证。
- 所有升级建议均未经执行验证,生成的合并方案需人工复核。
这个 Skill 能做什么,适合哪些场景?
这是一个面向 Rails 项目的 Agent Skill,用于分析应用从当前版本到最新版本的升级路径。它会验证项目结构、从 Gemfile.lock 读取版本、通过 GitHub CLI 获取 Rails 最新发布、抓取官方升级指南和 railsdiff.org 的版本差异,最后生成包含复杂度评级(小/中/大)的升级摘要。其核心亮点是用选择性合并流程替代 `rails app:update`,逐文件区分新建、可覆盖和需手工合并的文件,避免覆盖本地定制。适用于使用 Claude Code 或 OpenCode、且已安装并认证 GitHub CLI 的开发者。
检查 Gemfile、config/application.rb、config/environment.rb 以确认是 Rails 应用;从 Gemfile.lock 提取当前 Rails 版本;用 gh api repos/rails/rails/releases/latest 获取最新版本并比较分类升级类型(补丁/小版本/大版本);抓取 guides.rubyonrails.org 升级指南和 railsdiff.org 的版本差异;检查 npm/yarn/importmap 中 @hotwired 和 @rails 相关 JS 依赖;生成含复杂度评级和推荐步骤的升级摘要;按新文件、可安全覆盖、需手工合并、可跳过四类制定升级计划;手工合并时保留本地定制并移除弃用配置;最后协助启用新框架默认值并更新 config.load_defaults。
- 维护长期演进的 Rails 项目、需要从 7.1 升级到 8.x 的 Ruby 开发者。
- 担心 `rails app:update` 覆盖 i18n、mailer 或 bin/dev 等本地定制的团队负责人。
- 评估升级工作量大小、需要判断是小、中还是大规模升级的技术负责人。
- 需要同步更新 Turbo、Stimulus、ActionCable 等 Rails 相关 JS 包的前端维护者。
- 正在整理升级后需运行的迁移和框架默认值切换清单的开发者。
这个 Skill 有哪些优点和局限?
- 用选择性合并替代 `rails app:update`,逐文件判断并保留本地定制。
- 复用权威信息源:官方升级指南和 railsdiff.org 的版本差异。
- 除 Ruby 依赖外还检查 Turbo、Stimulus、ActionCable 等 JS 依赖。
- 提供小/中/大的升级复杂度评级,便于排期。
- 强调透明与可回退,修改前展示计划,可用 git checkout 恢复。
- 依赖已认证的 GitHub CLI;未认证时需先运行 `gh auth login`。
- railsdiff.org 可能缺少确切的版本对照,技能只能回退到 major.minor.0。
- 仓库无测试套件、无 CI 证据,仅有 MIT 许可声明;除 README 外未见使用反馈。
- 文件操作和数据库迁移依赖所托管 Agent 的 shell 执行权限。
- 技能本身不做自动化验证之外的分析——最终升级决策与合并质量取决于使用者。
如何安装这个 Skill?
前置条件:安装并认证 GitHub CLI(gh auth login)。Claude Code:执行 mkdir -p ~/.claude/skills,然后 git clone https://github.com/robzolkos/skill-rails-upgrade.git ~/.claude/skills/rails-upgrade,重启 Claude Code。OpenCode:执行 mkdir -p ~/.config/opencode/skill,克隆到 ~/.config/opencode/skill/rails-upgrade,重启 OpenCode。
如何使用这个 Skill?
进入一个 Rails 项目目录,调用 /rails-upgrade。技能将依次验证项目、检测版本、获取最新版本与差异,并输出版本信息、复杂度评级、关键变更和推荐步骤。涉及文件修改的升级计划需经你确认后才会执行;过程中会用到 gh、npm/bin/importmap、bin/rails db:migrate 和 bin/rails test 等命令。