mcpField
C
controller-cleanup

controller-cleanup

github.com/dev-toolings開発22795 回インストール3 週間前に更新
リポジトリ

controller-cleanup について

Symfony 開発向けのスキルです。ビジネスロジックなどの責務を専用コンポーネントに移し、コントローラーを整理します。HTTP の動作を保ち、機能テストでリファクタリングを確認します。

主な機能

  1. 01コントローラーの責務を洗い出す
  2. 02変更前に HTTP の動作をテスト
  3. 03リクエストを検証済み DTO にマッピング
  4. 04サービス、投票者、ハンドラーを抽出
  5. 05簡潔なアクションから処理を委譲
  6. 06呼び出し可能なコンソールコマンドを使用

活用シーン

  1. 01ビジネスロジックを含むアクションの整理
  2. 02検証や認可を永続化処理から分離
  3. 03コンソールコマンドから共通サービスへ委譲

インストール

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

$npx skills add https://github.com/dev-toolings/superpowers-symfony --skill controller-cleanup

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

同梱ファイルreference.md

詳細

コントローラーの整理(Symfony)

使用する場面

  • コントローラーのアクションに、ビジネスロジック、クエリ、または数行を超えるコードが含まれている場合。
  • 入力の解析、バリデーション、認可、永続化が1つのアクションに混在している場合。
  • コンソールコマンドが処理を自ら実行し、委譲していない場合。

デフォルトのワークフロー

  1. アクションの処理内容を列挙します。入力、バリデーション、認可、ビジネスロジック、永続化、副作用を確認します。
  2. コードを移動する前に、機能テストで現在の HTTP の動作を確認します。
  3. #[MapRequestPayload] または #[MapQueryString] を使って入力を DTO にマッピングし、バリデーターに不正な入力を拒否させます。
  4. ビジネスロジックをサービスまたはコマンドハンドラーに、認可を voter に、副作用をイベントまたはメッセージに移します。
  5. アクションは、依存関係の解決、認可、委譲、レスポンスのみに絞り、5〜10行に収めます。

ガードレール

  • サービスは引数またはコンストラクターパラメーターとして型指定し、コンテナーから取得しないでください。
  • HTTP の動作は変更しないでください。同じステータスコード、同じペイロードを維持します。
  • 古いコントローラーに新しい名前を付けただけの「マネージャー」にロジックを移さないでください。
  • コンソールのエントリーポイントは、同じサービスに処理を委譲する invokable な #[AsCommand] クラス(Symfony 7.3 以降)として実装します。

段階的な情報開示

  • 実行方針とリスク管理にはこのファイルを使用します。
  • 実装の詳細を深く確認する必要がある場合は、リファレンスを開きます。

出力要件

  • 委譲に徹する簡潔なアクション。
  • それぞれが単一の責務を担う、抽出された DTO、サービス、voter、またはハンドラー。
  • HTTP の動作が変わっていないことを示す機能テスト。

リファレンス

  • reference.md

コメント