mcpField
L
laravel:laravel-prompting-patterns

laravel:laravel-prompting-patterns

github.com/jpcaparasエージェントワークフロー157107 回インストール18 週間前に更新
リポジトリ

laravel:laravel-prompting-patterns について

Laravel 固有のプロンプト作成を支援するスキルです。フレームワークの用語を使った慣用的な解決策を促し、データベースクエリ、バリデーション、API、バックグラウンドジョブ、ドキュメント参照を扱います。

主な機能

  1. 01Eloquent クエリとリレーションのパターン
  2. 02バリデーションリクエストとルールの例
  3. 03REST API リソースのパターン
  4. 04キューとジョブ設定の例
  5. 05Laravel ドキュメントの参照方法

活用シーン

  1. 01リレーションを先読みする Eloquent クエリの依頼
  2. 02ネストした入力のバリデーション指定
  3. 03リソースベースの API エンドポイントの計画
  4. 04キューを使うバックグラウンド処理の説明

インストール

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

$npx skills add https://github.com/jpcaparas/superpowers-laravel --skill laravel:laravel-prompting-patterns

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

詳細

Laravel のプロンプトパターン

Laravel の用語を使うと、慣用的なコードを得られます。汎用的な依頼では、フレームワークを活用しない汎用的な解決策が返されます。

データベース操作

汎用的な依頼

「投稿を持つアクティブなユーザーをすべて取得する」

Laravel に特化した依頼

「Eloquent を使って、投稿を Eager ロードしながらアクティブなユーザーをクエリしてください。

User::where('active', true)
    ->with('posts')
    ->get();

User モデルに scopeActive($query) スコープを追加してください」

リレーションシップ

「Posts と Tags の多対多リレーションシップを設定してください。

  • post_tag 中間テーブルのマイグレーションを作成する
  • Post モデルに belongsToMany を追加する
  • Tag モデルに belongsToMany を追加する
  • 管理には attach()、detach()、sync() を使う」
クエリの最適化

「投稿一覧で N+1 問題を回避してください。

  • author と category のリレーションシップを Eager ロードする
  • コメント総数には withCount('comments') を使う
  • published_at と category_id にデータベースインデックスを追加する」

バリデーション

汎用的な依頼

「ユーザー入力をバリデーションする」

Laravel に特化した依頼

「バリデーションルールを指定して UserStoreRequest を作成してください。

public function rules(): array
{
    return [
        'email' => ['required', 'email', 'unique:users,email'],
        'password' => ['required', 'min:12', Password::defaults()],
        'name' => ['required', 'string', 'max:255'],
    ];
}

messages() メソッドにカスタムエラーメッセージを追加してください」

複雑なバリデーション

「注文作成をバリデーションしてください。

  • 商品 ID には Rule::exists('products', 'id') を使う
  • ネストされた items 配列をバリデーションする:items.*.quantity は整数で、最小値は 1 とする
  • 配送先住所の条件付き指定には Rule::requiredIf() を使う
  • 在庫確認用のカスタムルールを追加する:new HasSufficientStock」

API エンドポイント

汎用的な依頼

「商品用の API を作成する」

Laravel に特化した依頼

「RESTful な商品 API を作成してください。

  • リソースコントローラー:ProductController と apiResource ルート
  • レスポンスの変換には ProductResource を使う
  • ページネーション付きの index エンドポイントに ProductCollection を追加する
  • Sanctum ミドルウェアで保護する:auth:sanctum
  • 作成時は 201、削除時は 204 を返す
  • バリデーションには ProductStoreRequest と ProductUpdateRequest を使う」
ページネーション

「商品 API にページネーションを追加してください。

  • コントローラーで Product::paginate(20) を使う
  • ProductResource::collection($products) で返す
  • total、per_page、current_page、last_page のメタデータを含める
  • ?page=2 クエリパラメーターに対応する」
フィルタリング

「商品 API にフィルタリングを追加してください。

  • ?category=electronics&min_price=100 クエリパラメーターを受け付ける
  • 条件付きクエリには when() を使う
  • 再利用できるように ProductFilters クラスに切り出す
  • API ドキュメントにクエリパラメーターを記載する」

バックグラウンド処理

汎用的な依頼

「ユーザー登録後にメールを送信する」

Laravel に特化した依頼

「登録後に SendWelcomeEmail ジョブをディスパッチしてください。

SendWelcomeEmail::dispatch($user)
    ->onQueue('emails')
    ->delay(now()->addMinutes(5));
  • ShouldQueue インターフェースを実装する
  • $tries = 3 と $timeout = 30 を追加する
  • failed() メソッドで失敗を処理する
  • Horizon 用にジョブにタグを付ける:$tags = ['user:'.$user->id]」
キューの設定

「支払い処理用のキューを設定してください。

  • 支払いキューには redis 接続を使う
  • queue:work --queue=payments,default を設定する
  • 設定に retry_after を追加し、90 秒にする
  • Horizon ダッシュボードで監視する」
ジョブチェーン

「ジョブチェーンで注文を処理してください。

Bus::chain([
    new ValidateInventory($order),
    new ChargePayment($order),
    new SendConfirmation($order),
])->dispatch();

いずれかのジョブが失敗すると、チェーンは停止します。catch() コールバックで処理してください。」

ドキュメントの参照

効果的な参照

「Laravel の Eloquent リレーションシップのドキュメントに従って実装してください」

「Laravel の Form Request バリデーションパターンに従ってください」

「レスポンスの変換には Laravel の API Resource パターンを使ってください」

「Laravel キューのドキュメントに従ってキューを設定してください」

パターンカタログ

モデルと Eloquent:

  • リレーションシップ:hasMany、belongsTo、belongsToMany、morphMany
  • スコープ:scopeActive、scopePublished
  • アクセサー/ミューテーター:get{Attribute}Attribute、set{Attribute}Attribute
  • キャスト:protected $casts = ['published_at' => 'datetime']

バリデーション:

  • フォームリクエスト:UserStoreRequest、ProductUpdateRequest
  • ルール:required、unique:table,column、exists:table,column
  • カスタムルール:new Uppercase、Rule::in(['admin', 'user'])

API:

  • リソース:UserResource、ProductCollection
  • ページネーション:paginate()、simplePaginate()、cursorPaginate()
  • レート制限:throttle:60,1 ミドルウェア

ジョブとキュー:

  • ジョブ:ShouldQueue、dispatch()、dispatchSync()
  • チェーン:Bus::chain()、Bus::batch()
  • Horizon:タグ付け、監視、失敗したジョブの処理

Laravel の用語を使いましょう。Laravel の解決策を見つけましょう。

コメント