clean-branch について
clean-branchは、元のチェックアウトを変更せず、必要最小限の機能変更を新しいブランチとworktreeへ切り出す開発スキルです。範囲とベースの選定、変更の選択的な移行、テスト、引き継ぎ報告を扱います。
主な機能
- 01機能の範囲とベースコミットを特定
- 02分離したブランチとworktreeを作成
- 03機能に必要な変更だけを移行
- 04関連テストと必須チェックを実行
- 05元のチェックアウトが不変か確認
活用シーン
- 01混在した作業ツリーから機能を一つ切り出す
- 02選択した変更を更新済みベースへ移す
- 03引き継ぎ用に分離・テスト済みの機能ブランチを準備
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ wkentaro/ agent-skills --skill clean-branchインストール後、Claude Code で/clean-branchを入力して読み込まれたか確認します。
同梱ファイルagents/openai.yamlevals/evals.json
詳細
ブランチを整理する
新しいブランチで、ソースブランチ、インデックス、作業ファイルを保持しながら、機能を完成させるために必要最小限の差分を作成します。これは選択した内容を変更する作業であり、履歴だけを整理するものではありません。
機能とベースを特定する
依頼、会話、関連する Issue または PR から、意図された動作と範囲を推測します。コミット済みの差分、ステージ済みおよび未ステージの変更、未追跡ファイルを調べます。抽出前にソースの HEAD と状態を記録します。複数の機能が同程度に妥当と思われる場合は、ブランチを作成する前に、どの機能を抽出するか確認します。
ユーザーが選んだベースを使用し、それがない場合は現在の PR のベースを、さらにそれもない場合はリポジトリのデフォルトブランチを使用します。ベースをコミットに解決し、可能であればリモート追跡参照を更新して、更新できなかった場合はその制約を伝えます。ベースを確定できない場合は、推測せずに確認します。マージベース以降のソース変更を調べますが、選択したベースの先端を出発点にして、移行先を作成することで、ベースに加わった新しい変更を保持します。
別のワークツリーで抽出する
指定された名前、または内容がわかりやすく未使用の名前で新しいブランチを作成します。git-wt が使える場合はそれを使用し、使えない場合は git worktree add を使用します。ソースには手を加えず、編集は移行先だけに適用します。無視対象ファイルや無関係な作業ファイルが自動的にコピーされないよう、ワークツリーのコピー設定を確認します。
コミット単位やファイル単位ではなく、機能の依存関係に基づいて変更を選びます。混在したハンクは、移行先に合わせて再実装が必要になる場合があります。機能に実際に必要な統合、依存関係、生成ファイル、ドキュメント、テストを含めます。無関係なリファクタリング、書式変更、実験、推測に基づく作業は残します。意図された動作と現在のベースに照らして抽出時の競合を解決します。ソースファイルを丸ごとコピーして、ベースに加わった新しい変更を消してはいけません。
わかりやすい名前、シンプルな制御フロー、既存のパターンを使用します。明白でない意図や制約を説明するコメントは残します。整理は抽出した変更に限定します。
検証して引き継ぐ
新しいファイルも含め、記録したベースとの移行先の差分全体を確認します。移行先で、関連する機能テストとリポジトリで必須のチェックを実行します。元の要件をエンドツーエンドで検証します。パフォーマンスや品質が重要な場合は、関連する動作をソースと比較し、実際に測定した内容を明記します。抽出によって生じた失敗を修正し、未検証の要件があれば報告します。
ソースの HEAD、インデックス、作業ファイルに変更がないことを確認します。移行先のブランチ、ベースコミット、ワークツリーのパス、残したものと除外したもの、チェック結果を報告します。コミットが依頼されているか、すでに許可されている場合を除き、抽出した変更はコミットせずに残します。同じ許可ルールは、プッシュや PR の作成にも適用されます。