PR リファクタリングスキル
現在のブランチのPR差分を分析し、コーディングルールに基づいてリファクタリング提案を行う。
前提
- •プロジェクトのコーディングルールは
claude/rules/配下に定義されている - •提案はルールに基づくものと、一般的なコード品質改善の両方を含む
- •ユーザーが選択した提案のみを適用する
実行手順
Step 1: 差分の取得
- •引数でベースブランチが指定されていればそれを使う。省略時は
mainをベースとする - •以下のコマンドで変更ファイル一覧と差分を取得する:
- •
git diff <base-branch>...HEAD --name-onlyで変更ファイル一覧 - •
git diff <base-branch>...HEADで全体の差分
- •
- •変更ファイルが存在しない場合は「差分がありません」と報告して終了する
Step 2: コーディングルールの読み込み
- •
claude/rules/配下のルールファイルをすべて読み込む - •ルールの内容を分析の基準として使用する
Step 3: 変更ファイルの分析
- •変更された各ファイルの全体を読み込む(差分だけでなくファイル全体のコンテキストが必要)
- •以下の観点で改善点を洗い出す:
コーディングルールに基づく観点
- •変数: マジックナンバー/ストリング、不変宣言の使用、命名規則
- •関数: 引数の数、関数の長さ、早期リターン、ネストの深さ
- •コメント: doc形式の有無、意図の説明
- •原理原則: デメテルの法則、DRY、YAGNI、SOLID、凝集度
- •エラーハンドリング: エラーの握りつぶし、型としての表現
- •セキュリティ: ハードコードされた認証情報、eval の使用
- •パフォーマンス: 計算量、N+1問題
DDD観点(該当する場合)
- •Entity/Value Object の設計
- •Aggregate の境界
- •レイヤー構造の依存方向
- •ユビキタス言語の一貫性
一般的なコード品質
- •重複コードの統合
- •不要なコードの削除
- •型安全性の改善
- •テスタビリティの向上
Step 4: 提案の作成と提示
- •発見した改善点を以下のフォーマットで一覧にまとめる:
code
## リファクタリング提案 ### 提案 1: [タイトル] - **ファイル**: `path/to/file.ts:行番号` - **カテゴリ**: [命名 | 構造 | パフォーマンス | セキュリティ | DDD | その他] - **重要度**: [高 | 中 | 低] - **現状**: 現在のコードの問題点を簡潔に説明 - **提案**: 改善案を簡潔に説明 - **コード例**:(必要に応じて before/after を示す)
- •提案が多い場合はカテゴリごとにグループ化する
- •重要度の高いものから順に並べる
Step 5: ユーザーへの確認
- •提案一覧を提示した後、
AskUserQuestionを使ってユーザーにどの提案を適用するか確認する - •提案の数が4つ以下の場合は各提案をオプションとして提示する
- •提案の数が5つ以上の場合は以下のように段階的に確認する:
- •まず「すべて適用」「カテゴリ単位で選択」「個別に選択」「適用しない」の選択肢を提示
- •ユーザーの選択に応じて詳細を確認する
Step 6: 変更の適用
- •ユーザーが承認した提案のみを適用する
- •各変更適用後、変更内容を簡潔に報告する
- •すべての変更適用後、最終的なサマリーを表示する
注意事項
- •PR差分に含まれないファイルへの変更提案は行わない
- •テストファイルに対しても分析は行うが、テストの可読性を過度に追求しない
- •自動フォーマッタで対応可能なスタイルの指摘(インデント、空白等)は除外する
- •提案が0件の場合は「改善提案はありません。コードは良好です」と報告する
引数
ベースブランチ: $ARGUMENTS