settle について
Settle は、Git リポジトリ、プルリクエスト、セッションのリソースを対象に、作業セッションを終える手順を示すスキルです。最新状態の確認、未解決事項の処理やユーザーへの提示、承認された教訓の記録を行い、最後にペインを閉じます。
主な機能
- 01リポジトリとプルリクエストの状態更新
- 02古いブランチや未完了事項の特定
- 03未解決事項をまとめてユーザーに確認
- 04承認された教訓をsecondbrainに記録
- 05最後の手順としてセッションペインを閉じる
活用シーン
- 01作業終了前のリポジトリとPRの確認
- 02残ったブランチ、ワークツリー、プロセスの特定
- 03未解決のセッション成果物の扱いを確認
- 04セッションの教訓を保存してペインを閉じる
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ wkentaro/ agent-skills --skill settleインストール後、Claude Code で/settleを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
agents/openai.yamlevals/evals.jsonsetup.sh詳細
セッションを整理する
現在のセッションを4つのステップで整理します。各ステップが完了してから次へ進みます。
1. 最新の状態を確認する
セッションが保持しているリポジトリとプルリクエストの情報は、数時間前のものかもしれません。セッションが触れた各リポジトリで git fetch を実行してから、git status、git worktree list --porcelain、git branch -vv を確認します。セッションが作成または更新した各プルリクエストについて、gh pr view で state、headRefOid、labels、comments、statusCheckRollup を確認します。それ以降の確認はすべて、この出力を基準にします。
2. 未解決の作業を片付ける
未解決の作業とは、セッションの整理を妨げるものすべてです。以下のすべての確認に合格するか、不合格の項目をユーザーが残すことを選んだとき、セッションは整理済みです。
セッションが触れた各リポジトリについて:
git statusがクリーンで、アップストリームより先行しているブランチがないこと。- 古くなったブランチまたはワークツリーが残っていないこと(下記を参照)。
- プライマリチェックアウトがデフォルトブランチにあり、最新であること。古くなったブランチにある場合は、デフォルトブランチに切り替えてプルします。
セッションが作成または更新した各プルリクエストについて:
- マージ済みであるか、オープンのままにすることをユーザーが選んでいること。
recommend-*ラベルとレビューコメントが付いていること。マージ済みのプルリクエストにいずれかがない場合は、実行中のレビューがあれば停止し、レビューなしでマージ済みとして一覧に記載します。新たなレビューは開始しません。
セッション自体について:
- セッションが提示した提案、質問、またはフォローアップに未回答のものがないこと。最後のメッセージだけでなく、セッション全体を検索します。「〜しましょうか?」、「〜すべきですか?」、デフォルトブランチで見つかった失敗、スキップしたと報告したものや未検証のものも含みます。
- セッションが作成した一時ディレクトリ、一時ファイル、バックグラウンドプロセスが残っていないこと。
mktemp -dのディレクトリ、ローカルサーバー、tailscale serveのエントリも含みます。
古くなったブランチとワークツリー
デフォルトブランチ以外のブランチは、そのローカルの HEAD と、リモートブランチがまだ存在する場合は取得済みのリモート HEAD が、それぞれデフォルトブランチに含まれているか、マージ済みプルリクエストの headRefOid と一致するとき、古くなっているとみなします。古くなっているかどうかは、どのセッションがブランチを作成したかに左右されません。ブランチに対応するワークツリーは、git worktree list --porcelain の branch 行で確認します。ワークツリーのディレクトリ名は、ブランチ名と異なる場合があります。
リンクされたワークツリーでチェックアウトされておらず、アップストリームとして追跡している他のローカルブランチもない場合に限り、古くなったブランチを確認なしで削除します。そのコミットはデフォルトブランチまたはマージ済みプルリクエストに存在するため、失われるものはありません。スタックされたブランチは、子ブランチから先に削除します。
セッションが残したその他すべてのブランチは未解決の作業です。リンクされたワークツリーも、どれほどクリーンに見えてもすべて未解決の作業です。Git の設定やインデックスフラグによって、ワークツリーのファイルが git status に表示されない場合があります。これらについてユーザーに確認する際は、削除すると失われるものを明示します:
- そのブランチ固有のコミット。
- そのワークツリーで
git status --porcelain --ignored --untracked-files=allに表示されるすべてのパス。.envなどの無視対象ファイルも含みます。 git ls-files -vのタグがH以外のすべてのパス。h(assume-unchanged)やS(skip-worktree)などが該当します。- 作業ディレクトリ(cwd)がそのワークツリー内にある herdr ペイン(
herdr pane list)。
ブランチを削除する場合は、確認の有無にかかわらず、ユーザーがワークツリーの削除を選んだなら、まず git worktree remove --force <path> を実行します。次に git branch -D を実行し、リモートブランチがまだ存在する場合は、確認済みのリモート HEAD を指定して削除します:git push --force-with-lease=<branch>:<sha> origin :<branch>。ディレクトリがなくなっているワークツリーについては git worktree prune を実行します。
確認する
残っている未解決の作業すべてについて、ネイティブの構造化入力(Claude Code では AskUserQuestion、Codex では request_user_input)を使い、一度にまとめて確認します。それぞれに適した選択肢を提示します。たとえば、今すぐ完了する、Issue を作成する、成果物を保持または削除する、そのまま残す、などです。他のペインが使用中のワークツリーは、そのペインのセッションが自ら整理を完了するまで保持するため、待つか、そのまま残すかだけを提示します。ユーザーの選択に従って作業し、その後、確認を再実行します。セッションが整理済みになった時点で、このステップは完了です。
3. 教訓を記録する
教訓とは、今後のセッションで実行することや把握していることを変える、セッションから得られた知見です。理由を伴う決定事項、注意点、うまくいった手順、時間をかけて調べて初めてわかった事実などが該当します。リポジトリ、その履歴、issue、プルリクエストにすでに記録されている作業は教訓ではありません。
セッションから教訓が得られなかった場合は、何も書かず、その旨を1行で伝えてください。
それ以外の場合は、~/ghq/github.com/wkentaro/secondbrain/AGENTS.md を読み、secondbrain を検索して、各教訓を記録するページを探してください。プロジェクト横断のツールに関する教訓は、通常 references/tools/ 配下のページが該当します。すべての教訓について、記録先のページを添えて、1つの複数選択式の質問で提案してください。ユーザーが承認した教訓ごとに、既存ページをその場で更新するか、記録先のドメインの AGENTS.md に従って新しいページを作成してください。教訓に不要な認証情報や個人データは伏せてください。main にコミットしてプッシュし、プッシュが成功したことを確認してください。
4. ペインを閉じる
セッションが終了するため、これを最後に行ってください。HERDR_PANE_ID が設定されている場合は、HERDR_TAB_ID はペインが移動した後も開始時のタブを保持しているため、herdr pane get "$HERDR_PANE_ID" でペインの現在のタブを確認してください。次に、そのタブについて herdr tab get を実行してください。pane_count が 1 の場合はそのタブに対して herdr tab close を実行し、それ以外の場合は herdr pane close "$HERDR_PANE_ID" を実行してください。HERDR_PANE_ID が設定されていない場合は、herdr ペインが見つからなかったと伝え、停止してください。