mcpField
L
laravel-upgrade

laravel-upgrade

github.com/1weiho開発695 回インストール41 週間前に更新
リポジトリ

laravel-upgrade について

Laravel アプリをメジャーバージョンごとにアップグレードする手順を案内するスキルです。9→10、10→11、11→12に対応し、バージョン確認からコード修正、依存関係更新、アップグレード後の検証まで扱います。

主な機能

  1. 01現在の Laravel バージョンの検出
  2. 02対応するアップグレードガイドの読み込み
  3. 03破壊的変更のスキャンと修正
  4. 04依存関係の制約更新
  5. 05起動確認とテストの実行

活用シーン

  1. 01Laravel 9 アプリを 10 にアップグレード
  2. 02移行時のデータベース列変更の確認
  3. 03Laravel 11 の UUID 動作変更への対応
  4. 04アップグレード後のアプリとテストの検証

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/1weiho/laravel-upgrade-skill --skill laravel-upgrade

インストール後、Claude Code で/laravel-upgradeを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
from-10-to-11.md
from-11-to-12.md
from-9-to-10.md

詳細

Laravel のアップグレード

Laravel アプリケーションを一度にメジャーバージョンを 1 つずつアップグレードします。対応バージョン:9→10、10→11、11→12。

ワークフロー

1. 現在のバージョンを検出する

composer.json を読み込み、laravel/framework のバージョン制約を確認します。

// Example: "laravel/framework": "^10.0" means Laravel 10.x

現在のバージョンに 1 を加えたバージョンをターゲットとして特定します。すでに Laravel 12 を使用している場合は、サポートされている最新バージョンであることをユーザーに伝えます。

2. アップグレードガイドを読み込む

検出したバージョンに基づき、該当するリファレンスファイルを読み込みます。

現在ターゲットリファレンスファイル
9.x10.xreferences/from-9-to-10.md
10.x11.xreferences/from-10-to-11.md
11.x12.xreferences/from-11-to-12.md
3. スキャンして修正する

ガイドに記載された各破壊的変更について、コードベースをスキャンして修正を適用します。

影響大(必ず確認):

  • composer.json の依存関係のバージョン
  • PHP のバージョン要件
  • 非推奨メソッドを使用しているデータベースマイグレーション

影響中(関連ファイルを確認):

  • モデルの $dates プロパティ → $casts(9→10)
  • (string) キャストを使ったデータベース式(9→10)
  • 属性が不足しているカラム変更マイグレーション(10→11)
  • HasUuids トレイトの動作変更(11→12)

影響小(該当するパターンが見つかった場合に確認):

  • 非推奨のメソッド呼び出し(Bus::dispatchNow、Redirect::home など)
  • コントラクトインターフェースの変更
  • 設定ファイルの更新
4. 依存関係を更新する

コードの修正後、composer.json を更新します。

# Update laravel/framework constraint to target version
# Update related packages per upgrade guide
composer update
5. アップグレード後の確認
  • php artisan を実行して、フレームワークが起動することを確認します
  • 利用可能な場合は、テストスイートを実行します
  • ログに非推奨の警告がないか確認します

よくあるパターン

依存関係の更新(すべてのアップグレード)

composer.json で古い制約を検索し、ガイドに従って更新します。

モデルの $dates を $casts に変更(9→10)
// Before
protected $dates = ['deployed_at'];

// After
protected $casts = ['deployed_at' => 'datetime'];

検索パターン:protected \$dates\s*=

データベース式のキャスト(9→10)
// Before
$string = (string) DB::raw('select 1');

// After
$string = DB::raw('select 1')->getValue(DB::connection()->getQueryGrammar());
カラムの変更(10→11)

->change() を使用するマイグレーションでは、すべての修飾子を含める必要があります。

// Before (implicit retention)
$table->integer('votes')->nullable()->change();

// After (explicit)
$table->integer('votes')->unsigned()->default(1)->nullable()->change();
HasUuids トレイト(11→12)
// Before (ordered UUIDv4)
use Illuminate\Database\Eloquent\Concerns\HasUuids;

// After (if you need UUIDv4 behavior)
use Illuminate\Database\Eloquent\Concerns\HasVersion4Uuids as HasUuids;

コメント