controller-cleanup について
Symfony 開発向けのスキルです。ビジネスロジックなどの責務を専用コンポーネントに移し、コントローラーを整理します。HTTP の動作を保ち、機能テストでリファクタリングを確認します。
主な機能
- 01コントローラーの責務を洗い出す
- 02変更前に HTTP の動作をテスト
- 03リクエストを検証済み DTO にマッピング
- 04サービス、投票者、ハンドラーを抽出
- 05簡潔なアクションから処理を委譲
- 06呼び出し可能なコンソールコマンドを使用
活用シーン
- 01ビジネスロジックを含むアクションの整理
- 02検証や認可を永続化処理から分離
- 03コンソールコマンドから共通サービスへ委譲
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ dev-toolings/ superpowers-symfony --skill controller-cleanupインストール後、Claude Code で/controller-cleanupを入力して読み込まれたか確認します。
同梱ファイルreference.md
詳細
コントローラーの整理(Symfony)
使用する場面
- コントローラーのアクションに、ビジネスロジック、クエリ、または数行を超えるコードが含まれている場合。
- 入力の解析、バリデーション、認可、永続化が1つのアクションに混在している場合。
- コンソールコマンドが処理を自ら実行し、委譲していない場合。
デフォルトのワークフロー
- アクションの処理内容を列挙します。入力、バリデーション、認可、ビジネスロジック、永続化、副作用を確認します。
- コードを移動する前に、機能テストで現在の HTTP の動作を確認します。
#[MapRequestPayload]または#[MapQueryString]を使って入力を DTO にマッピングし、バリデーターに不正な入力を拒否させます。- ビジネスロジックをサービスまたはコマンドハンドラーに、認可を voter に、副作用をイベントまたはメッセージに移します。
- アクションは、依存関係の解決、認可、委譲、レスポンスのみに絞り、5〜10行に収めます。
ガードレール
- サービスは引数またはコンストラクターパラメーターとして型指定し、コンテナーから取得しないでください。
- HTTP の動作は変更しないでください。同じステータスコード、同じペイロードを維持します。
- 古いコントローラーに新しい名前を付けただけの「マネージャー」にロジックを移さないでください。
- コンソールのエントリーポイントは、同じサービスに処理を委譲する invokable な
#[AsCommand]クラス(Symfony 7.3 以降)として実装します。
段階的な情報開示
- 実行方針とリスク管理にはこのファイルを使用します。
- 実装の詳細を深く確認する必要がある場合は、リファレンスを開きます。
出力要件
- 委譲に徹する簡潔なアクション。
- それぞれが単一の責務を担う、抽出された DTO、サービス、voter、またはハンドラー。
- HTTP の動作が変わっていないことを示す機能テスト。
リファレンス
reference.md
コメント
Markdown 対応