Upgrade Orchestrator
Upgrade Orchestrator
Run a fully automated, phased Ruby (and optionally Rails) upgrade from start to finish.
Architecture. Upgrade is a thin orchestrator. It owns prerequisite checks (baseline, branch, Ruby installs), the phase loop, banners, the Failure Protocol, and the Final infra checklist. Everything else is delegated:
plan/SKILL.mdcreates the TodoWrite task list — the single shared source of "what phases remain" for both manual and orchestrated flows. Upgrade reuses an existing list if its implied target matches the invocation arguments (so a user who ran/planthen did a few/fix nextiterations manually keeps their progress when they later call/upgrade); otherwise it re-invokes plan, which overwrites. Upgrade never builds its own list.fix/SKILL.mdowns the complete per-phase flow: apply → iterate to green → verify → prompt for commit → tick off the task. Upgrade drives it by repeatedly invoking/ruby-upgrade-toolkit:fix next.status/SKILL.mdis loaded by fix during its verification step; upgrade does not run status directly for per-phase gating.- Shared reference data (Ruby↔Rails compatibility matrix, upgrade paths, verification-suite bash) lives in
skills/rails-upgrade-guide/references/.
Manual mode equivalence. Because upgrade drives fix through the same /fix next invocation a user would type, the manual workflow (/plan once, then iterate /fix next) produces identical behaviour to /upgrade. The only thing upgrade adds is the pre-loop prerequisite checks, the automatic loop, and the post-loop infra check — the per-phase work is byte-identical.
Auto-advancement. Once fix completes a phase with a successful commit (user approved at fix's commit prompt), upgrade moves to the next task automatically — no separate "continue?" prompt between phases. The user's checkpoint is the per-phase commit confirmation inside fix. If the user declines the commit, upgrade pauses and asks whether to continue on a dirty tree or abort.
Maintain a live task list so the user can see exactly what is done, what is in progress, and what is coming next. Pause and surface any failure clearly before asking whether to continue, retry, or abort.