exit-strategy について
exit-strategyは、ブランチ作業を終えるためのスキルです。テストを確認して4つの選択肢を提示し、選択に応じてブランチとワークツリーを整理します。
主な機能
- 01終了前のテスト確認
- 024つの選択肢の提示
- 03ローカルマージまたはプルリクエスト作成
- 04作業破棄前の確認
- 05ワークツリーのクリーンアップ規則
活用シーン
- 01テスト合格後の機能ブランチの終了
- 02プルリクエストに向けたブランチ準備
- 03完了したブランチ作業の保持または破棄
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ kucherenko/ gangsta --skill exit-strategyインストール後、Claude Code で/exit-strategyを入力して読み込まれたか確認します。
詳細
終了戦略:開発ブランチの作業を完了する
概要
すべての作業は、適切に終了する必要があります。検証し、選択肢を提示し、実行し、後片付けを行って、開発作業の完了をサポートします。
基本原則: テストを検証 → 選択肢を提示 → 選択を実行 → 後片付け。
開始時に告知: "Initiating exit strategy for this branch."
プロセス
ステップ 1:テストを検証する
選択肢を提示する前に、テストが通ることを確認します:
# Run project's test suite
npm test / cargo test / pytest / go test ./...
テストが失敗した場合:
Tests failing (<N> failures). Must fix before exiting:
[Show failures]
Cannot proceed with merge/PR until tests pass.
停止します。ステップ 2 に進まないでください。
テストが通った場合: ステップ 2 に進みます。
ステップ 2:ベースブランチを特定する
# Try common base branches
git merge-base HEAD main 2>/dev/null || git merge-base HEAD master 2>/dev/null
または、ドンに尋ねます:「このブランチは main から分岐しましたが、これで正しいですか?」
ステップ 3:選択肢を提示する
以下の 4 つの選択肢をそのまま提示します:
Implementation complete. What's the exit strategy?
1. Merge back to <base-branch> locally
2. Push and create a Pull Request
3. Keep the branch as-is (I'll handle it later)
4. Discard this work
Which option?
説明を追加しないでください — 選択肢は簡潔に保ちます。
ステップ 4:選択を実行する
オプション 1:ローカルでマージする
# Switch to base branch
git checkout <base-branch>
# Pull latest
git pull
# Merge feature branch
git merge <feature-branch>
# Verify tests on merged result
<test command>
# If tests pass
git branch -d <feature-branch>
次に:セーフハウスをクリーンアップします(ステップ 5)
オプション 2:プッシュして PR を作成する
# Push branch
git push -u origin <feature-branch>
# Create PR
gh pr create --title "<title>" --body "$(cat <<'EOF'
## Summary
<2-3 bullets of what changed>
## Test Plan
- [ ] <verification steps>
EOF
)"
次に:PR の URL をドンに報告します。セーフハウスは保持します。
オプション 3:現状のままにする
報告:「ブランチ を保持します。セーフハウスは にあります。」
セーフハウスをクリーンアップしないでください。
オプション 4:破棄する
最初に確認します:
This will permanently delete:
- Branch <name>
- All commits: <commit-list>
- Safehouse at <path>
Type 'discard' to confirm.
ドンからの正確な確認を待ちます。
確認された場合:
git checkout <base-branch>
git branch -D <feature-branch>
次に:セーフハウスをクリーンアップします(ステップ 5)
ステップ 5:セーフハウスをクリーンアップする
オプション 1、2、4 の場合:
セーフハウス(worktree)内にいるか確認します:
git worktree list | grep $(git branch --show-current)
はいの場合:
git worktree remove <worktree-path>
オプション 3 の場合: セーフハウスを保持します。
クイックリファレンス
| オプション | マージ | プッシュ | セーフハウスを保持 | ブランチをクリーンアップ |
|---|---|---|---|---|
| 1. ローカルでマージ | ✓ | - | - | ✓ |
| 2. PR を作成 | - | ✓ | ✓ | - |
| 3. 現状のままにする | - | - | ✓ | - |
| 4. 破棄 | - | - | - | ✓(強制) |
よくある間違い
テスト検証を省略する
- 問題: 壊れたコードをマージしたり、失敗する PR を作成したりする
- 対策: 選択肢を提示する前に、必ずテストを検証します
自由回答形式の質問
- 問題: 「次に何をすればよいですか?」→ 曖昧
- 対策: 構成された 4 つの選択肢を必ず提示します
セーフハウスの自動クリーンアップ
- 問題: まだ必要な可能性があるセーフハウスを削除する(オプション 2、3)
- 対策: オプション 1 と 4 の場合にのみクリーンアップします
破棄時に確認を求めない
- 問題: 作業を誤って削除する
- 対策: 確認のために、ドンに「discard」と入力してもらいます
注意事項
絶対に行わないこと:
- テストが失敗している状態で先に進む
- 結果のテストを検証せずにマージする
- ドンの確認なしに作業を削除する
- 明示的な依頼なしに強制プッシュする
必ず行うこと:
- 選択肢を提示する前にテストを検証する
- 4 つの選択肢を必ず提示する
- オプション 4 では入力による確認を得る
- オプション 1 と 4 の場合にのみセーフハウスをクリーンアップする
連携
呼び出し元:
- Laundering — 最終検証の後
- ブランチベースの作業を完了するすべてのスキル
組み合わせるもの:
- gangsta:safehouse-worktrees — そのスキルが作成したセーフハウスをクリーンアップします
Omerta 準拠
- 真実の原則:選択肢を提示する前にテストを検証済み
- 可用性の原則:最終状態をドンに報告済み