Agent Skills by ALSEL
汎用ソフトウェア開発⭐ リポ 0品質スコア 65/100

cleanup-branches

リモートが削除されたローカルブランチを削除できます(`[gone]`の上流シグナルが対象)。スカッシュマージ、リベースマージ、マージコミットのいずれのワークフローにも対応しています。

description の原文を見る

Remove local branches whose remote was deleted (the `[gone]` upstream signal). Works for squash-merge, rebase-merge, and merge-commit workflows alike.

SKILL.md 本文

/cleanup-branches、マージ済みブランチのクリーンアップ

リモート追跡参照が上流で削除されたローカルブランチを削除しています。これは、すべてのGitHubマージ方式を通じて確実に機能する唯一のクリーンアップヒューリスティックです。各ステップを順番に実行してください。実行する前に各コマンドを表示してください。

git branch --merged main ではなくこのヒューリスティックを使う理由

git branch --merged main は、チップコミットが main の祖先にあるブランチのみを認識します。スカッシュマージとリベースマージは、マージされたコンテンツの新しいコミットハッシュを作成するため、ソースブランチのチップは 決して main の祖先には含まれません。--merged ヒューリスティックはスカッシュマージされたすべてのブランチを無視してしまい、ユーザーはクリーンアップできないオーファンブランチを蓄積してしまいます。

確実なシグナルは git branch -vv の出力に表示される [gone] であり、これはローカルブランチのリモート追跡上流が削除されたときに表示されます(通常はGitHubの「マージ時にヘッドブランチを削除」設定によってPRがマージされたときに自動的に実行されます)。リポジトリが delete_branch_on_merge=true を持ち、ユーザーがチェック前に git fetch --prune を実行すれば、スカッシュ、リベース、マージコミットのいずれでも機能します。

リポジトリが delete_branch_on_merge を有効にしていない場合、マージ時に上流は決して削除されず、[gone] マーカーは表示されず、このスキルは正しく何もすることがないと報告します。ユーザーに設定を有効にするよう指示してください:

gh api -X PATCH repos/<owner>/<name> -f delete_branch_on_merge=true

ステップ 1: リモート追跡参照を更新

フェッチとプルーンを実行して、最後のフェッチ以降にオリジンで削除されたブランチがローカルで [gone] 上流として反映されるようにします:

git fetch --prune

ステップ 2: 削除された上流を持つブランチをリスト表示

実行します:

git branch -vv | awk '/: gone\]/ {print $1}'

これは1行に1つのブランチ名を出力し、各ブランチはリモート追跡参照が存在しなくなったローカルブランチです。これらは削除しても安全です(スカッシュ、リベース、またはマージコミットを使用してマージされ、マージ時にリモートブランチは自動削除されました)。

ステップ 3: リストをフィルタリング

ステップ 2 の出力から、以下のブランチは表示されたとしても 決して 削除してはいけません(通常は表示されないはずです。mainmaster は通常 gone 上流を追跡していないため、安全ネットとして扱います):

  • main
  • master

次にユーザーに尋ねます: 「このリストから保持したいブランチはありますか? カンマで区切って名前を入力するか、スキップするにはEnterキーを押してください。」

残りのブランチが削除の候補です。{branches_to_delete} として保存します。

ステップ 4: ユーザーに確認

{branches_to_delete} が空の場合:

  • 「削除された上流ブランチが見つかりません。すべき処理はありません。」と出力します。
  • 停止します。

削除するブランチがある場合、それらを表示します:

以下のブランチが削除されます(オリジン上の上流が [gone] です):
  {各ブランチを別々の行にリストアップ}

尋ねます: 「これらのブランチを削除しますか? (yes/no)」

  • no の場合: 「クリーンアップがキャンセルされました。ブランチは削除されませんでした。」と出力して停止します。
  • yes の場合: 続行します。

ステップ 5: 各ブランチを削除

{branches_to_delete} の各ブランチに対して、実行します:

git update-ref -d refs/heads/{branch}

update-ref を使い、git branch -d-D ではない理由:

  • git branch -d {branch} は「ブランチが完全にマージされていない」というエラーで拒否します。スカッシュマージとリベースマージの場合、git は標準的な意味でそれらをマージとして認識できないためです(上記の「このヒューリスティックを使う理由」を参照)。このスキルが対象とするケースでは毎回失敗します。
  • git branch -D {branch} (強制)は機能しますが、ユーザーの破壊的なbashガードフック(~/.claude/hooks/guard-destructive-bash.ps1)は文脈に関係なく文字列パターン git branch -D をブロックします。
  • git update-ref -d refs/heads/{branch} は参照を直接削除し、ポーセリンレベルのマージチェック(このケースでは正しい。gone-upstream がすでに検証した同等のマージシグナルであるため)を行わず、破壊的なbashガードの文字列一致からも逃れます。

削除がエラーで失敗した場合、それを報告し、リストの残りで続行します。1つの失敗でクリーンアップ全体を停止しないでください。

以下をカウント保持します:

  • 正常に削除されたブランチ
  • 削除に失敗したもの(理由付き)

ステップ 6: レポート

サマリーを出力します:

ブランチのクリーンアップが完了しました。

  削除:      {count} ブランチ
  プルーン:  {count} リモート追跡参照(開始時)

削除に失敗したブランチがある場合:

  スキップ:  {count} ブランチ(詳細は上記を参照)

正常に削除されたブランチ名と、理由付きでスキップされたブランチをリスト表示します。

エッジケース

  • [gone] 上流を持ち、オリジンより先行するローカルコミット未コミット変更があるブランチ: update-ref -d は削除されます。ユーザーはマージされていない作業を失う可能性があります。対策: ステップ 4 の確認プロンプトが、ユーザーがリストを検査する機会です。git log {branch} を実行して main にないコミットを見つけた場合、スキルにそのブランチを保持するよう指示します。
  • まったく上流がないブランチ(プッシュされたことがない): [gone] リストに表示されず、タッチされません。正しい動作です。プッシュされたことのないローカルブランチのクリーンアップは対象外です。
  • デタッチされたHEAD: ステップ 2 の awk パターンは * (HEAD detached at ...) 行とマッチしません。正しい動作です。削除可能なブランチではありません。

ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
iam6ft7in
リポジトリ
iam6ft7in/cfg_dev_environment
ライセンス
MIT
最終更新
2026/5/11

Source: https://github.com/iam6ft7in/cfg_dev_environment / ライセンス: MIT

関連スキル

汎用ソフトウェア開発⭐ リポ 39,967

doubt-driven-development

重要な判断はすべて、本番環境への展開前に新しい視点から対抗的レビューを実施します。速度より正確性が重要な場合、不慣れなコードを扱う場合、本番環境・セキュリティに関わるロジック・取り消し不可の操作など影響度が高い場合、または後でバグを修正するよりも今検証する方が効率的な場合に活用してください。

by addyosmani
汎用ソフトウェア開発⭐ リポ 1,175

apprun-skills

TypeScriptを使用したAppRunアプリケーションのMVU設計に関する総合的なガイダンスが得られます。コンポーネントパターン、イベントハンドリング、状態管理(非同期ジェネレータを含む)、パラメータと保護機能を備えたルーティング・ナビゲーション、vistestを使用したテストに対応しています。AppRunコンポーネントの設計・レビュー、ルートの配線、状態フローの管理、AppRunテストの作成時に活用してください。

by yysun
OpenAIソフトウェア開発⭐ リポ 797

desloppify

コードベースのヘルスチェックと技術負債の追跡ツールです。コード品質、技術負債、デッドコード、大規模ファイル、ゴッドクラス、重複関数、コードスメル、命名規則の問題、インポートサイクル、結合度の問題についてユーザーが質問した場合に使用してください。また、ヘルススコアの確認、次の改善項目の提案、クリーンアップ計画の作成をリクエストされた際にも対応します。29言語に対応しています。

by Git-on-my-level
汎用ソフトウェア開発⭐ リポ 39,967

debugging-and-error-recovery

テストが失敗したり、ビルドが壊れたり、動作が期待と異なったり、予期しないエラーが発生したりした場合に、体系的な根本原因デバッグをガイドします。推測ではなく、根本原因を見つけて修正するための体系的なアプローチが必要な場合に使用してください。

by addyosmani
汎用ソフトウェア開発⭐ リポ 39,967

test-driven-development

テスト駆動開発により実装を進めます。ロジックの実装、バグの修正、動作の変更など、あらゆる場面で活用できます。コードが正常に動作することを証明する必要がある場合、バグ報告を受けた場合、既存機能を修正する予定がある場合に使用してください。

by addyosmani
汎用ソフトウェア開発⭐ リポ 39,967

incremental-implementation

変更を段階的に実施します。複数のファイルに影響する機能や変更を実装する場合に使用してください。大量のコードを一度に書こうとしている場合や、タスクが一度では完結できないほど大きい場合に活用します。

by addyosmani
本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: iam6ft7in · iam6ft7in/cfg_dev_environment · ライセンス: MIT