/ 目錄 / 演練場 / claude-code_rails-upgrade-skill
● 社群 ombulabs ⚡ 即開即用

claude-code_rails-upgrade-skill

作者 ombulabs · ombulabs/claude-code_rails-upgrade-skill

Claude Code 技能,有條不紊地升級 Rails——從稽核、修復棄用警告到 bundle update——而不會搞壞一切。

Rails Upgrade Skill(由 OmbuLabs 提供)引導 Claude 按照標準 Rails 升級流程執行:稽核程式碼庫、修復棄用警告、套用框架預設值、處理 gem 不相容問題,並在新版本上驗證。基於 OmbuLabs 升級 Rails 應用的實際生產經驗,適合進行 N → N+1 升級,或從舊版本趕上最新版本。

為什麼要用

核心特性

即時演示

實際使用效果

claude-code-rails-upgrade-skill.replay ▶ 就緒
0/0

安裝

選擇你的客戶端

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "claude-code-rails-upgrade-skill": {
      "command": "git",
      "args": [
        "clone",
        "https://github.com/ombulabs/claude-code_rails-upgrade-skill",
        "~/.claude/skills/claude-code_rails-upgrade-skill"
      ],
      "_inferred": true
    }
  }
}

開啟 Claude Desktop → Settings → Developer → Edit Config。儲存後重啟應用。

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "claude-code-rails-upgrade-skill": {
      "command": "git",
      "args": [
        "clone",
        "https://github.com/ombulabs/claude-code_rails-upgrade-skill",
        "~/.claude/skills/claude-code_rails-upgrade-skill"
      ],
      "_inferred": true
    }
  }
}

Cursor 使用與 Claude Desktop 相同的 mcpServers 格式。專案級設定優先於全域。

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "claude-code-rails-upgrade-skill": {
      "command": "git",
      "args": [
        "clone",
        "https://github.com/ombulabs/claude-code_rails-upgrade-skill",
        "~/.claude/skills/claude-code_rails-upgrade-skill"
      ],
      "_inferred": true
    }
  }
}

點擊 Cline 側欄中的 MCP Servers 圖示,然後選 "Edit Configuration"。

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "claude-code-rails-upgrade-skill": {
      "command": "git",
      "args": [
        "clone",
        "https://github.com/ombulabs/claude-code_rails-upgrade-skill",
        "~/.claude/skills/claude-code_rails-upgrade-skill"
      ],
      "_inferred": true
    }
  }
}

格式與 Claude Desktop 相同。重啟 Windsurf 生效。

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "claude-code-rails-upgrade-skill",
      "command": "git",
      "args": [
        "clone",
        "https://github.com/ombulabs/claude-code_rails-upgrade-skill",
        "~/.claude/skills/claude-code_rails-upgrade-skill"
      ]
    }
  ]
}

Continue 使用伺服器物件陣列,而非映射。

~/.config/zed/settings.json
{
  "context_servers": {
    "claude-code-rails-upgrade-skill": {
      "command": {
        "path": "git",
        "args": [
          "clone",
          "https://github.com/ombulabs/claude-code_rails-upgrade-skill",
          "~/.claude/skills/claude-code_rails-upgrade-skill"
        ]
      }
    }
  }
}

加入 context_servers。Zed 儲存後熱重載。

claude mcp add claude-code-rails-upgrade-skill -- git clone https://github.com/ombulabs/claude-code_rails-upgrade-skill ~/.claude/skills/claude-code_rails-upgrade-skill

一行命令搞定。用 claude mcp list 驗證,claude mcp remove 移除。

使用場景

實戰用法: claude-code_rails-upgrade-skill

如何在動程式碼之前規劃 Rails 升級計畫

👤 面臨跨多版本升級的 Rails 開發者 ⏱ ~60 min intermediate

何時使用: 你目前在 Rails 6.1,需要升到 7.2。你想要的是一份計畫,而不是碰運氣。

前置條件
  • 已安裝技能 — git clone https://github.com/ombulabs/claude-code_rails-upgrade-skill ~/.claude/skills/rails-upgrade-skill
  • Git 工作目錄乾淨 — 永遠在分支上升級;先 commit 目前的狀態
步驟
  1. 稽核目前狀態
    稽核這個 Rails 應用:目前版本、Ruby 版本、gem 清單,以及測試執行時產生的棄用警告。✓ 已複製
    → 基準報告
  2. 建立升級路徑
    規劃升級至 Rails 7.2 的計畫,逐版本進行(6.1 → 7.0 → 7.1 → 7.2),每個階段附上里程碑標準。✓ 已複製
    → 多階段升級計畫
  3. 找出阻礙項目
    哪些 gem 沒有相容 7.2 的版本?請針對每個 gem 提出處理方案(升級/替換/fork)。✓ 已複製
    → 逐 gem 的阻礙清單

結果: 一份具有分階段里程碑的實際可行升級計畫。

注意事項
  • 一次跨越兩個主版本 — 技能強制要求每次只升一個次要或主要版本——不要覆蓋此限制

全面掃描並修復棄用警告

👤 升級進行中的 Rails 開發者 ⏱ ~90 min intermediate

何時使用: 你正處於版本之間,測試執行時充斥著大量棄用警告。

步驟
  1. 蒐集警告
    執行測試,蒐集所有不重複的棄用警告。✓ 已複製
    → 去重後的清單,附上出現的檔案與行號
  2. 分組並修復
    依成因分組,針對每組提出最小修改量的修復方案並附上差異比對。✓ 已複製
    → 分組修復的差異比對

結果: 測試執行乾淨無警告,準備好進行下一個版本升級。

安全地套用新框架預設值

👤 正在處理 rails app:update 的 Rails 開發者 ⏱ ~60 min advanced

何時使用: 你已更新 Gemfile 並執行了 rails app:update;現在多了一堆新的 initializer 檔案。

步驟
  1. 審查差異
    審查 rails app:update 產生的差異比對,標記任何可能破壞我們應用的預設值變更(strict_loading、zeitwerk mode 等)。✓ 已複製
    → 每項變更附上風險標註
  2. 分階段啟用
    針對每個有風險的預設值,制定分階段的推出計畫:先透過環境變數開關啟用、在 staging 上驗證,再正式切換。✓ 已複製
    → 每個預設值的分階段計畫

結果: 預設值順利啟用,不會出現意外的功能回歸。

注意事項
  • 一次啟用全部 load_defaults — 使用 new_framework_defaults_X.Y.rb 逐項漸進啟用

組合

與其他 MCP 搭配,撬動十倍槓桿

claude-code-rails-upgrade-skill + claude-code-owasp-skill

對升級後的程式碼進行資安審查

升級至 Rails 7.2 後,對驗證機制和參數處理部分執行 OWASP 審查。✓ 已複製

工具

此 MCP 暴露的能力

工具輸入參數何時呼叫成本
Audit repo 每次升級的起點 Claude tokens
Plan upgrade path current, target 稽核完成後 Claude tokens
Gem compat check Gemfile, target Rails 升級版本號之前 Claude tokens + RubyGems API
Deprecation sweep test log 版本切換之間 Claude tokens
Framework defaults migration diff from rails app:update 執行 rails app:update 之後 Claude tokens

成本與限制

運行它的成本

API 配額
None
每次呼叫 Token 數
20-80k across an upgrade
費用
Free
提示
針對特定目錄執行棄用警告掃描,而非一次掃描整個應用程式。

安全

權限、密鑰、影響範圍

憑證儲存: 無需任何憑證
資料出站: 程式碼會傳送至 Claude 進行推論

故障排查

常見錯誤與修復

rails app:update 產生未 commit 的二進位檔案

這些通常是系統檔案,將它們加入 Gitignore 並重新乾淨產生。

Tests pass locally, fail in CI after upgrade

可能是自動載入差異或 production 模式下的 eager_load 問題,請在本機以 RAILS_ENV=production 執行測試。

Gem bundle resolution fails

技能會建議替代的 gem 版本;有時需要使用 fork 或替換方案。

驗證: bundle update --conservative

替代方案

claude-code_rails-upgrade-skill 對比其他方案

替代方案何時用它替代權衡
next_rails gem你想要一個有固定規則的升級輔助工具不提供 LLM 引導的棄用警告修復功能

更多

資源

📖 閱讀 GitHub 上的官方 README

🐙 查看未解決的 issue

🔍 瀏覽全部 400+ MCP 伺服器和 Skills