mcpField
B
brainstorming-laravel

brainstorming-laravel

github.com/iserter開発4879 回インストール27 週間前に更新
リポジトリ

brainstorming-laravel について

Laravel の機能アイデアを実行可能な設計や仕様にまとめる、対話型スキルです。まずプロジェクトの状況を確認し、一問ずつ要件を整理して複数案を比較しながら、段階的に設計を確認します。

主な機能

  1. 01既存のプロジェクト構成を確認
  2. 02一問ずつ質問して要件を整理
  3. 03複数の Laravel 案を比較
  4. 04設計を段階的に提示して確認
  5. 05データベース、API、キュー、テストを検討
  6. 06設計文書と実装チェックリストを作成

活用シーン

  1. 01機能のデータモデルとリレーションを設計
  2. 02同期処理とキュー処理を選択
  3. 03認証、ブロードキャスト、検索方式を比較
  4. 04合意した設計を実装用文書に整理

インストール

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

$npx skills add https://github.com/iserter/laravel-claude-agents --skill brainstorming-laravel

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

詳細

Laravel のアイデアを設計に落とし込むブレインストーミング

概要

自然な対話を通じて、Laravel の機能アイデアを具体的な設計や仕様にまとめます。Laravel のベストプラクティスとエコシステムのパターンに重点を置きます。

まず、現在の Laravel プロジェクトの状況を把握し、アイデアを洗練させるために質問を一度に 1 つずつ行います。作成するものを理解できたら、設計を 200~300 語の短いセクションに分けて提示し、各セクションの後に、ここまでの内容で問題ないか確認します。

プロセス

アイデアの理解:

  • まず現在の Laravel プロジェクトの状態を確認します(ルート、モデル、マイグレーション、最近のコミット)。
  • アイデアを洗練させるために、質問を一度に 1 つずつ行います。
  • 可能であれば選択式の質問を優先しますが、自由回答でも構いません。
  • 1 回のメッセージにつき質問は 1 つだけにします。さらに掘り下げる必要がある場合は、複数の質問に分けます。
  • 目的、Laravel のパターン、制約、成功基準の理解に重点を置きます。

質問の例:

  • 「これはキュージョブにしますか、それとも同期的に実行しますか?」
  • 「認証方式は Sanctum、Passport、カスタムのどれにしますか?」
  • 「ブロードキャストによるリアルタイム更新が必要ですか?」
  • 「Eloquent イベントを使いますか、それとも明示的なサービス呼び出しにしますか?」

アプローチの検討:

  • トレードオフを踏まえ、Laravel でのアプローチを 2~3 通り提案します。
  • 推奨案とその理由を添えて、会話形式で選択肢を提示します。
  • 推奨案を最初に示し、その理由を説明します。

例:

For the notification system, I see three approaches:

1. Laravel Notifications with database channel (recommended)
   - Built-in, follows Laravel conventions
   - Easy to add email/Slack later
   - Simple to mark as read
   Trade-off: Less flexible for complex notification logic

2. Custom Event/Listener system
   - Maximum flexibility
   - Can add complex rules
   Trade-off: More code to maintain

3. Third-party package (like Laravel Echo)
   - Real-time out of the box
   Trade-off: External dependency, overkill if not needed

I'd recommend #1 for most cases - start simple, Laravel's notification system is excellent and you can always extend it later if needed.

Which approach feels right for your use case?

設計の提示:

  • 作成するものを理解できたと判断したら、設計を提示します。
  • 200~300 語のセクションに分けます。
  • 各セクションの後に、ここまでの内容で問題ないか確認します。
  • データベーススキーマ、モデルとリレーション、ルートとコントローラー、サービスとアクション、キューとイベント、API リソース、バリデーション、テストを扱います。
  • 内容に不明点があれば、戻って確認できるようにします。

Laravel に特化した設計セクション

1. データベーススキーマ
First, let's look at the database design:

We'll need three tables:
1. `posts` - title, slug, content, status, published_at
2. `tags` - name, slug
3. `post_tag` - pivot table for many-to-many

The posts table will have a foreign key to users, indexed on status and published_at for common queries. We'll use an enum for status (draft, published, archived) to keep it clean.

Does this schema structure make sense for what we're building?
2. モデルとリレーション
For the models, we'll have:

Post model with:
- belongsTo relationship to User
- belongsToMany relationship to Tag
- Scopes: published(), draft(), recent()
- Casts: published_at as datetime, metadata as array
- Factory for testing

Tag model with:
- belongsToMany relationship to Post
- Slug auto-generation on save

Should we add soft deletes to posts, or will hard deletes work?
3. API 設計
For the API endpoints, following RESTful conventions:

GET    /api/posts           - List posts (paginated)
POST   /api/posts           - Create post
GET    /api/posts/{post}    - Show post
PUT    /api/posts/{post}    - Update post
DELETE /api/posts/{post}    - Delete post

Authentication via Sanctum, rate limited to 60 requests/minute.
API resources will transform the output, hiding sensitive data.

Does this API structure cover your needs?
4. ビジネスロジック
The posting workflow:

When a post is published:
1. PostService validates the post is ready (has title, content)
2. Sets published_at timestamp
3. Dispatches NotifySubscribers job to queue
4. Fires PostPublished event for other listeners
5. Clears related caches

We'll use a service class to keep controllers thin, and queues for email notifications so publishing is fast.

Is this flow what you had in mind?

設計の後

ドキュメント:

  • 検証済みの設計を docs/designs/YYYY-MM-DD-<feature>-design.md に書き込みます。
  • 含める内容:機能の概要、データベーススキーマ、API エンドポイント、ビジネスロジックのフロー
  • 設計ドキュメントを git にコミットします。

実装(続ける場合):

  • 「実装の準備を始めますか?」と尋ねます。
  • 実装チェックリストを作成します。
  • テスト駆動開発のアプローチを検討します。

主要な原則

  • 質問は一度に 1 つ - 複数の質問で圧倒しないようにします。
  • 選択式を優先 - 可能であれば、自由回答よりも答えやすい方法を選びます。
  • YAGNI を徹底 - 不要な機能を削ぎ落とし、シンプルに保ちます。
  • Laravel の規約を優先 - カスタムの解決策よりも、組み込みの Laravel 機能を先に使います。
  • 代替案を検討 - 決定する前に必ず 2~3 通りのアプローチを提案します。
  • 段階的に検証 - 設計をセクションごとに提示し、それぞれを検証します。
  • 柔軟に対応 - 内容に不明点があれば、戻って確認します。

Laravel に特化した検討事項

Laravel の機能をブレインストーミングする際は、次の点を検討します。

アーキテクチャ:

  • モノリスにしますか、それともマイクロサービスが必要ですか?
  • どの設計パターン(リポジトリ、サービス層、アクション)が最適ですか?
  • どのようにスケールさせますか?

データベース:

  • どのようなリレーションが必要ですか?
  • パフォーマンスのためにどのようなインデックスが必要ですか?
  • ポリモーフィックリレーションを使いますか?

パフォーマンス:

  • キューを使いますか?
  • どのようなキャッシュ戦略にしますか?
  • Eager Loading の要件は何ですか?

テスト:

  • どのファクトリーが必要ですか?
  • フィーチャーテストとユニットテストのどちらを使いますか?
  • ジョブやイベントをどのようにテストしますか?

セキュリティ:

  • 認可にはポリシーとゲートのどちらを使いますか?
  • どのようなバリデーションルールが必要ですか?
  • レート制限は必要ですか?

ブレインストーミングセッションの例

Claude: I see you want to add a comment system. Let me understand the requirements.

First question: Should comments be nested (replies to replies) or just one level deep (replies to posts only)?

User: Just one level - comments on posts.

Claude: Got it. And for moderation, which approach:
A) All comments published immediately
B) Comments from new users require approval
C) All comments require approval

User: B - new users need approval.

Claude: Perfect. For notifications when someone comments:
A) Real-time via Laravel Echo and WebSockets
B) Email only
C) In-app notifications (database)

User: In-app notifications.

Claude: Excellent. Let me present the design...

[Design sections follow]

Laravel でよく話し合うトピック

  • 認証フロー(SPA と従来型のどちらにするか)
  • API 設計(REST と GraphQL のどちらにするか)
  • リアルタイム機能(Pusher、Socket.io、Reverb のどれを使うか)
  • ファイルアップロードの方針(ローカルと S3 のどちらにするか)
  • マルチテナンシーのアプローチ
  • 決済の統合(Stripe、Paddle、Cashier)
  • 検索の実装(Scout、Elasticsearch)
  • 管理パネル(Nova、Filament、カスタム)

覚えておくこと

目標は、次の条件を満たす、明確で実行可能な Laravel の設計にたどり着くことです。

  • Laravel の規約に従う
  • 適切な Laravel エコシステムパッケージを使用する
  • テストしやすく、保守しやすい
  • 過剰な設計をせず、実際の問題を解決する
  • 段階的に実装できる

理解できるまで質問を重ね、その後、小さく検証可能な単位で設計してください。

コメント