laravel-laravel-prompting-patterns について
laravel-laravel-prompting-patternsは、Laravelの用語で開発要件を表現するためのスキルです。フレームワークに沿った実装を求めるLaravel開発者向けに、データベース、バリデーション、API、バックグラウンドジョブの具体的なプロンプト例を示します。
主な機能
- 01Eloquentクエリとリレーションの例
- 02バリデーションルールと独自検証
- 03RESTful APIのリソースパターン
- 04キュー、ジョブチェーン、監視の説明
- 05Laravelの用語とパターンを収録
活用シーン
- 01リレーションを事前読み込みするクエリの記述
- 02複雑なフォームや注文の検証ルールを計画
- 03ページネーションや絞り込みのあるREST API要件を指定
- 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 の解決策を手に入れましょう。