Legacy Modernizer
Jeffallan/claude-skills
Plans incremental migrations of aging systems with the strangler fig pattern, using dependency maps, rollback plans, characterization tests and gradual traffic shifts.
Analyzes a Rails app and builds an upgrade report with breaking changes, deprecations and step-by-step migration guides, one version at a time from Rails 2.3 through 8.1.
$ npx skills add ombulabs/claude-code_rails-upgrade-skill --skill rails-upgrade -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install ombulabs/claude-code_rails-upgrade-skill rails-upgrade --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/ombulabs/claude-code_rails-upgrade-skill.git skills-src && mkdir -p .claude/skills && cp -r skills-src/rails-upgrade .claude/skills/rails-upgrade && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "rails-upgrade" agent skill from https://github.com/ombulabs/claude-code_rails-upgrade-skill/tree/main/rails-upgrade into .claude/skills/rails-upgrade/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "rails-upgrade", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/ombulabs/claude-code_rails-upgrade-skill/tree/main/rails-upgradeType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add ombulabs/claude-code_rails-upgrade-skill --skill rails-upgrade -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install ombulabs/claude-code_rails-upgrade-skill rails-upgrade --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ombulabs/claude-code_rails-upgrade-skill.git skills-src && mkdir -p .agents/skills && cp -r skills-src/rails-upgrade .agents/skills/rails-upgrade && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "rails-upgrade" agent skill from https://github.com/ombulabs/claude-code_rails-upgrade-skill/tree/main/rails-upgrade into .agents/skills/rails-upgrade/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "rails-upgrade", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add ombulabs/claude-code_rails-upgrade-skill --skill rails-upgrade -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install ombulabs/claude-code_rails-upgrade-skill rails-upgrade --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ombulabs/claude-code_rails-upgrade-skill.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/rails-upgrade .cursor/skills/rails-upgrade && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "rails-upgrade" agent skill from https://github.com/ombulabs/claude-code_rails-upgrade-skill/tree/main/rails-upgrade into .cursor/skills/rails-upgrade/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "rails-upgrade", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/ombulabs/claude-code_rails-upgrade-skill.git --path rails-upgrade--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add ombulabs/claude-code_rails-upgrade-skill --skill rails-upgrade -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install ombulabs/claude-code_rails-upgrade-skill rails-upgrade --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ombulabs/claude-code_rails-upgrade-skill.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/rails-upgrade .gemini/skills/rails-upgrade && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "rails-upgrade" agent skill from https://github.com/ombulabs/claude-code_rails-upgrade-skill/tree/main/rails-upgrade into .gemini/skills/rails-upgrade/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "rails-upgrade", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install ombulabs/claude-code_rails-upgrade-skill rails-upgradeInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add ombulabs/claude-code_rails-upgrade-skill --skill rails-upgrade -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/ombulabs/claude-code_rails-upgrade-skill.git skills-src && mkdir -p .github/skills && cp -r skills-src/rails-upgrade .github/skills/rails-upgrade && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "rails-upgrade" agent skill from https://github.com/ombulabs/claude-code_rails-upgrade-skill/tree/main/rails-upgrade into .github/skills/rails-upgrade/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "rails-upgrade", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add ombulabs/claude-code_rails-upgrade-skill --skill rails-upgrade -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install ombulabs/claude-code_rails-upgrade-skill rails-upgrade --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ombulabs/claude-code_rails-upgrade-skill.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/rails-upgrade .opencode/skills/rails-upgrade && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "rails-upgrade" agent skill from https://github.com/ombulabs/claude-code_rails-upgrade-skill/tree/main/rails-upgrade into .opencode/skills/rails-upgrade/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "rails-upgrade", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
rails-upgradeAnalyzes a Rails app and builds an upgrade report with breaking changes, deprecations and step-by-step migration guides, one version at a time from Rails 2.3 through 8.1.
The skill follows the FastRuby.io methodology: upgrade sequentially with no version skipping, assess the scope first, test both versions side by side in a dual-boot setup using the next_rails gem, and make sure test coverage is adequate before starting, aiming for 80% or more. It is organized as numbered workflow files with examples and on-demand reference files, plus detection patterns for each Rails version.
Two companion skills are named as dependencies: a dual-boot skill, which must be installed for the dual-boot setup workflow, and a rails-load-defaults skill, used as the final step after the version upgrade to update load_defaults in tiers of risk. You can also use the skill to look up version-specific changes or to plan a multi-hop upgrade.
7 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 8d13113. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md.
From the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
github.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Rails Upgrade Assistant loads about 2.7k tokens when it runs, and up to ~18k if it reads all its reference files. Until then it costs about 93 tokens; SKILL.md has 1,063 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from ombulabs/claude-code_rails-upgrade-skill at commit 8d13113, republished under its MIT licence (© ombulabs). 1,063 words, ~2,709 tokens.
.claude/skills/rails-upgrade/SKILL.md (or your agent's skills folder). This skill also uses 70 other files; get the full folder from GitHub.| Term | Meaning | Where |
|---|---|---|
| Workflow | One numbered unit of the upgrade flow, one file | workflows/<NN>-<name>-workflow.md |
| Step | A Step N header inside a workflow file | inside the workflow |
| Reference | Material loaded on demand: lookup tables, playbooks, conditional branches | references/<name>-reference.md |
No sub-steps: a "Step 4.1" is either two sequential steps or a conditional branch inside one step (### A. / ### B. headers). Refer to a whole workflow as Workflow NN; refer to a step as file path plus step, e.g. workflows/01-run-test-suite-workflow.md Step 4. Not used in headings: Stage, Phase, Sub-step, dotted step numbers.
next_rails gem. Covers setup, NextRails.next? code patterns, CI configuration, and post-upgrade cleanup. Must be installed for Workflow 04.workflows/04-setup-next-rails-workflow.mdload_defaults updates with tiered risk assessment (Tier 1: low-risk, Tier 2: needs codebase grep, Tier 3: requires human review). Used as the final step after the Rails version upgrade is complete.This skill follows the proven FastRuby.io upgrade methodology:
next_rails gemKey Resources:
dual-boot skill for dual-boot setup with next_rails (see Dependencies)references/deprecation-warnings-reference.md for managing deprecationsreferences/staying-current-reference.md for maintaining upgrades over timeNextRails.next?When proposing code fixes that must work with both the current and target Rails versions (dual-boot), always use NextRails.next? from the next_rails gem — never use respond_to? or other feature-detection patterns.
DELEGATE to the dual-boot skill for:
next_rails --init, Gemfile.next)NextRails.next? code patterns and examplesDEPENDENCY: Requires the dual-boot skill
SKILL.md - This file (entry point)Legacy Rails:
version-guides/upgrade-3.2-to-4.0.md - Rails 3.2 → 4.0 (Strong Parameters)version-guides/upgrade-4.0-to-4.1.md - Rails 4.0 → 4.1 (Spring, secrets.yml, enums)version-guides/upgrade-4.1-to-4.2.md - Rails 4.1 → 4.2 (ActiveJob, Web Console)version-guides/upgrade-4.2-to-5.0.md - Rails 4.2 → 5.0 (ApplicationRecord)Modern Rails:
version-guides/upgrade-5.0-to-5.1.md - Rails 5.0 → 5.1 (Encrypted secrets)version-guides/upgrade-5.1-to-5.2.md - Rails 5.1 → 5.2 (Active Storage, Credentials)version-guides/upgrade-5.2-to-6.0.md - Rails 5.2 → 6.0 (Zeitwerk)version-guides/upgrade-6.0-to-6.1.md - Rails 6.0 → 6.1 (Horizontal sharding)version-guides/upgrade-6.1-to-7.0.md - Rails 6.1 → 7.0 (Hotwire/Turbo)version-guides/upgrade-7.0-to-7.1.md - Rails 7.0 → 7.1 (Composite keys)version-guides/upgrade-7.1-to-7.2.md - Rails 7.1 → 7.2 (Transaction jobs)version-guides/upgrade-7.2-to-8.0.md - Rails 7.2 → 8.0 (Propshaft)version-guides/upgrade-8.0-to-8.1.md - Rails 8.0 → 8.1 (bundler-audit)examples/simple-upgrade.md - Single-hop upgrade exampleexamples/multi-hop-upgrade.md - Multi-hop upgrade exampleupgrade-cleanup companion plugin - User-triggered. Removes dual-boot scaffolding and drops NextRails.next? / NextRails.current? branches. Deprecation triage stays with this skill for the next hop.references/sequential-strategy-reference.md - Sequential upgrade rule (no version skipping) and the supported upgrade paths tables. Load in Workflow 03.references/request-patterns-reference.md - Which workflows run for each request shape (full upgrade, multi-hop, analysis only, reports only). Read at the start of a session.references/no-test-suite-smoke-reference.md - Load from Workflow 01 when no runnable RSpec/Minitest suite exists - Rails boot, routes, migration-status, and build smoke baseline with partial-confidence reportingreferences/deprecation-warnings-reference.md - Finding and fixing deprecationsreferences/staying-current-reference.md - Keeping up with Rails releasesreferences/breaking-changes-by-version-reference.md - Quick lookupreferences/multi-hop-strategy-reference.md - Multi-version planningreferences/testing-checklist-reference.md - Comprehensive testingreferences/gem-compatibility-reference.md - Gem update order and the "no compatible version" playbook (fork / vendor / replace). Load only when Workflow 06's compatibility check produced blockers.references/js-compressor-sprockets-mismatch-reference.md - Keeping terser / closure-compiler working when the target Rails pins Sprockets to the 2.x line. Load only when JS_COMPRESSOR_GEM_MISMATCH fires.detection-scripts/patterns/rails-*.yml - Version-specific patterns for direct detectiondetection-scripts/scan_patterns.rb - Runs every pattern for a hop against the app and prints a findings table. Run it in Workflow 05 instead of one Grep per pattern.templates/upgrade-report-template.md - Main upgrade report structuretemplates/app-update-preview-template.md - Configuration previewWhen user requests an upgrade, follow this workflow. Sequential Process is Critical: run in order, read each file when you reach it. Gates block.
| # | Name | Purpose | File |
|---|---|---|---|
| 00 | Verify latest patch | MANDATORY PRE-STEP. App on the latest patch of its current series before any minor/major hop | workflows/00-verify-latest-patch-workflow.md |
| 01 | Run test suite | MANDATORY FIRST STEP. How to run and verify test suite; blocks on any failure | workflows/01-run-test-suite-workflow.md |
| 02 | Resolve deprecation warnings | Make warnings visible, collect what the current version emits, fix them on the current version | workflows/02-resolve-deprecation-warnings-workflow.md |
| 03 | Validate upgrade path | Single-hop or multi-hop, individual hops planned | workflows/03-validate-upgrade-path-workflow.md |
| 04 | Set up next_rails | EARLY SETUP. Delegated to the skill listed under External Dependencies | workflows/04-setup-next-rails-workflow.md |
| 05 | Detect breaking changes | How to run breaking change detection directly | workflows/05-detect-breaking-changes-workflow.md |
| 06 | Check gem compatibility | Per-lockfile gem compatibility check against the target Rails version | workflows/06-check-gem-compatibility-workflow.md |
| 07 | Boot smoke test | Boot under Gemfile.next and run the models suite there, to catch what the resolver and the grep can't see | workflows/07-boot-smoke-test-workflow.md |
| 08 | Generate upgrade report | How to generate upgrade reports | workflows/08-generate-upgrade-report-workflow.md |
| 09 | Generate app:update preview | How to generate app:update previews | workflows/09-generate-app-update-preview-workflow.md |
| 10 | Implement and upgrade | Present reports, apply fix-before-bump changes, bump the Gemfile, run tests against both versions | workflows/10-implement-and-upgrade-workflow.md |
| 11 | Sync CI config | MANDATORY before opening the upgrade PR. How to verify CI config matches the upgraded Gemfile | workflows/11-sync-ci-workflow.md |
| 12 | Align load_defaults | AFTER THE UPGRADE IS COMPLETE. Delegates to the rails-load-defaults skill | workflows/12-align-load-defaults-workflow.md |
| 13 | Mention cleanup | USER-TRIGGERED. Delegates to the upgrade-cleanup plugin only when the user explicitly asks | workflows/13-mention-cleanup-workflow.md |
The Purpose column is a summary. Gates live only in each workflow's ## Gates section. Which workflows run depends on the request shape (full upgrade, multi-hop, analysis only, reports only): references/request-patterns-reference.md.
detection-scripts/scan_patterns.rb, then Read the affected files; never generate a detection script for the user to run)Everything else that used to be listed here lives in the workflow it governs: see each workflow's Purpose and Gates.
© ombulabs, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 70 other files (references) in rails-upgrade of ombulabs/claude-code_rails-upgrade-skill.
Open the folder on GitHubat commit 8d13113
Rails Upgrade Assistant next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Rails Upgrade Assistant this skillombulabs/claude-code_rails-upgrade-skill | 391 | — | ~2.7k | Automated safety check: Pass | MIT | |
| Legacy ModernizerJeffallan/claude-skills | 12k | — | ~1.6k | Automated safety check: Pass | MIT | |
| Code Refactoring Workflowluongnv89/claude-howto | 42k | — | ~3.1k | Automated safety check: Pass | MIT | |
| Convert Internal Package to TypeScriptTryGhost/Ghost | 56k | — | ~1.2k | Automated safety check: Pass | MIT | |
| jscpd Code Migration Trackerkucherenko/jscpd | 6.4k | — | ~5k | Automated safety check: Pass | MIT | |
| OBS Plugin Dependency Upgradesorayuki/obs-multi-rtmp | 5.1k | — | ~609 | Automated safety check: Pass | GPL-2.0 |
Jeffallan/claude-skills
Plans incremental migrations of aging systems with the strangler fig pattern, using dependency maps, rollback plans, characterization tests and gradual traffic shifts.
luongnv89/claude-howto
Guides systematic, test-backed refactoring in the style of Martin Fowler, moving through research, planning and small incremental changes with your approval at each phase.
TryGhost/Ghost
Moves a legacy internal Ghost package from JavaScript and CommonJS to TypeScript and ESM in three focused commits that keep git file history intact.
kucherenko/jscpd
Measures a code port between languages or frameworks with jscpd's function-level comparison, porting tests before code and tracking what is left unmatched.
sorayuki/obs-multi-rtmp
Updates the obs-multi-rtmp plugin repo to the latest upstream plugin template and OBS Studio version, including dependency metadata, then rebuilds it with CMake.
caidaoli/ccLoad
Syncs or audits ccLoad's CLIProxyAPI protocol-conversion core and registered provider adapters against one pinned upstream commit, then verifies the result.
ombulabs/claude-code_rails-upgrade-skill
Finishes or abandons a dual-boot Rails upgrade by removing NextRails branches and Gemfile.next scaffolding, keeping either the next or the current version.
Works with
Categories
Analyzes a Rails app and builds an upgrade report with breaking changes, deprecations and step-by-step migration guides, one version at a time from Rails 2.3 through 8.1. io methodology: upgrade sequentially with no version skipping, assess the scope first, test both versions side by side in a dual-boot setup using the next_rails gem, and make sure test coverage is adequate before starting, aiming for 80% or more. It is organized as numbered workflow files with examples and on-demand reference files, plus detection patterns for each Rails version.
Rails Upgrade Assistant fits situations like: upgrading a Rails application to a newer version; planning a multi-hop upgrade across several Rails versions; looking up breaking changes and deprecations for a specific Rails version; setting up dual boot for a gradual upgrade.
Run `npx skills add ombulabs/claude-code_rails-upgrade-skill --skill rails-upgrade -a claude-code`. Or copy the skill folder (rails-upgrade in ombulabs/claude-code_rails-upgrade-skill) into .claude/skills/rails-upgrade in your project. Claude Code loads it when a task matches its description.
Run `npx skills add ombulabs/claude-code_rails-upgrade-skill --skill rails-upgrade -a codex`. Or copy the skill folder (rails-upgrade in ombulabs/claude-code_rails-upgrade-skill) into .agents/skills/rails-upgrade in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add ombulabs/claude-code_rails-upgrade-skill --skill rails-upgrade -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/rails-upgrade, .gemini/skills/rails-upgrade, .github/skills/rails-upgrade and .opencode/skills/rails-upgrade in your project.
SKILL.md names no scripts, command-line tools or credentials: Rails Upgrade Assistant is instructions for the agent only. Our summary lists: A Rails application with adequate test coverage; The dual-boot skill for the dual-boot setup workflow.
SKILL.md names 1 domain. As links in the text: github.com. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Rails Upgrade Assistant is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.7k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 15k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Rails Upgrade Assistant: Legacy Modernizer (Jeffallan/claude-skills, 12k stars), Code Refactoring Workflow (luongnv89/claude-howto, 42k stars), Convert Internal Package to TypeScript (TryGhost/Ghost, 56k stars) and jscpd Code Migration Tracker (kucherenko/jscpd, 6.4k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
ombulabs (a GitHub organization) maintains it in ombulabs/claude-code_rails-upgrade-skill, which has 391 GitHub stars. The repository holds 2 skills in this directory. The repository was last updated on October 1, 2026.
Source: ombulabs/claude-code_rails-upgrade-skill on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.