branch-cleanup について
branch-cleanupは、古くなったリモートブランチを報告し、安全な整理方法を提案するスキルです。経過期間、マージ状態、プルリクエスト、保護ルールを確認し、削除には明示的な許可を求めます。レポートのみを定期実行する設定も可能です。
主な機能
- 01古いリモートブランチを報告
- 02経過期間と先行・遅行状態を確認
- 03オープン中のPRと保護ルールを考慮
- 04削除前に明示的な許可を要求
- 05定期レポートのみのワークフローを提供
活用シーン
- 01リポジトリのリモートブランチを監査
- 02保持・アーカイブ・削除候補を特定
- 03削除せずにマージ済みローカルブランチを確認
- 04定期的な古いブランチのレポートを設定
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ paulnsorensen/ git-gouda --skill branch-cleanupインストール後、Claude Code で/branch-cleanupを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
assets/stale-branch-report.ymlevals/evals.jsonreferences/policy.mdscripts/stale_branches.py詳細
branch-cleanup
古くなったリモートブランチを報告し、安全な削除を提案します。そのバッチに対する明示的な許可なしに、ブランチを削除することはありません。
このスキルの対象外
- ローカルの git worktree 管理(
git worktree add、list、prune)— 対象外です。 - リポジトリのマージ既定値とブランチ保護を一度だけ設定する作業 —
/gh-bootstrapを使用してください。 このスキルはdelete_branch_on_mergeと既存のルールセットを読み取るだけです。この設定を有効にすることは提案しますが、書き込みは/gh-bootstrapのステップ 2 と同じエンドポイントを使い、gh api -X PATCHで行います。
プロトコル
1. delete-branch-on-merge を確認する
REPO="$(gh repo view --json nameWithOwner --jq '.nameWithOwner')"
gh api "repos/$REPO" --jq '.delete_branch_on_merge'
false の場合は、有効化を提案し、その効果を説明します。プルリクエストがマージされると、GitHub がブランチのリモート参照を自動的に削除します。gh api -X PATCH repos/{owner}/{repo} -F delete_branch_on_merge=true を実行する前に、明示的な許可を求めてください。このスキルでは重複して記載しない、マージ既定値をまとめて設定する PATCH の詳細については、/gh-bootstrap のステップ 2 を参照してください。
2. 古くなったブランチを報告する
リポジトリのルートから、同梱のスクリプトを実行します。
python3 "$BRANCH_CLEANUP_HELPER" --days 90 --github "$REPO"
読み込んだ SKILL.md のディレクトリを基準に BRANCH_CLEANUP_HELPER(scripts/stale_branches.py)を解決し、先にシンボリックリンクを解決してください。スクリプトが報告する各リモートブランチについて、次の情報を示します。
- 最終コミットの日付と作成者(
git log -1)。 - デフォルトブランチに対する先行数/遅延数(
git rev-list --left-right --count)。 - マージ済みかどうか(
git branch -r --merged <default>)。 - ブランチを対象とするオープンなプルリクエストの有無(
gh pr list --head <branch> --state open --json number)。--githubを指定した場合に限ります。 - ルールセットによってブランチが保護されているかどうか(
gh api repos/{owner}/{repo}/rules/branches/ {branch})。--githubを指定した場合に限ります。
出力は、古いものから順に並べた表で、keep、archive、delete のいずれかを示す recommendation 列があります。分類の正確なルールについては、references/policy.md を参照してください。
3. ローカルの整理
報告のみを行い、削除はしません。
git fetch --prune
git branch --merged <default>
ユーザーに、ローカルでマージ済みのブランチを一覧表示します。ステップ 4 と同じバッチごとの許可なしに、ローカルブランチを削除しないでください。
4. 削除は自動では行わない
delete に分類された各ブランチについて、正確なコマンドを出力します。
git push origin --delete <branch>
デフォルトブランチ、保護されたブランチ、オープンなプルリクエストがあるブランチは、必ず削除対象から除外してください。スクリプトは、これらのブランチを古さに関係なく keep に分類することで、このルールを適用します。出力したコマンドを実行する前に、必ずユーザーの明示的な許可を得てください。また、許可されたバッチが出力された一覧と完全に一致することを確認してください。
5. スケジュール実行するレポートワークフロー(任意)
定期的なレポートを希望する場合は、assets/stale-branch-report.yml を .github/workflows/stale-branch-report.yml にコピーしてください。ジョブサマリーを書き込むだけで、ブランチを削除することはありません。actions/checkout は SHA で固定されています。
6. 検証
スクリプトを再実行し、出力された表がリモートに実際に存在するブランチ(git branch -r)と一致することを確認します。delete の推奨に、デフォルトブランチ、保護されたブランチ、またはオープンなプルリクエストがあるブランチが含まれていないことを確認してください。
関連項目
/gh-bootstrap— リポジトリのマージ既定値とブランチ保護ルールセットの一度限りの設定。/prek— ローカルの pre-commit フックによるチェック。ブランチのライフサイクルとは無関係です。/oss-hygiene— コミュニティ標準ファイルを含む、より広範なリポジトリの健全性チェック。