mcpField
L
laravel-laravel-prompting-patterns

laravel-laravel-prompting-patterns

github.com/noartem開発1374 回インストール2 週間前に更新
リポジトリ

laravel-laravel-prompting-patterns について

laravel-laravel-prompting-patternsは、Laravelの用語で開発要件を表現するためのスキルです。フレームワークに沿った実装を求めるLaravel開発者向けに、データベース、バリデーション、API、バックグラウンドジョブの具体的なプロンプト例を示します。

主な機能

  1. 01Eloquentクエリとリレーションの例
  2. 02バリデーションルールと独自検証
  3. 03RESTful APIのリソースパターン
  4. 04キュー、ジョブチェーン、監視の説明
  5. 05Laravelの用語とパターンを収録

活用シーン

  1. 01リレーションを事前読み込みするクエリの記述
  2. 02複雑なフォームや注文の検証ルールを計画
  3. 03ページネーションや絞り込みのあるREST API要件を指定
  4. 04キュージョブと失敗時の処理を定義

インストール

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

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

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

詳細

Laravel のプロンプトパターン

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

データベース操作

一般的な依頼

「投稿を持つアクティブなユーザーをすべて取得してください」

Laravel 固有の依頼

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

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

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

リレーションシップ

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

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

「posts インデックスでの N+1 を回避してください。

  • author と category のリレーションシップを Eager Load する
  • コメントの合計数には 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 を作成してください。

  • リソースコントローラー:apiResource ルートを持つ ProductController
  • レスポンスの変換には ProductResource を使う
  • ページネーションを備えたインデックスエンドポイントに 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 の フォームリクエストバリデーションパターンに従ってください」

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

「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 の解決策を手に入れましょう。

コメント