mcpField
B
babysit-pr

babysit-pr

github.com/timschoch開発1581 回インストール今日更新
リポジトリ

babysit-pr について

babysit-prは、GitHubの単一プルリクエストを、マージ、クローズ、またはユーザー対応が必要になるまで監視するスキルです。レビュー項目とCI失敗を順に扱い、明確な制限の下で修正や対応案の提示を行い、CI成功だけでは終了せず監視を続けます。

主な機能

  1. 01PRの状態と新しいレビュー項目を確認
  2. 02対応前にCI失敗を分類
  3. 03実際の失敗を修正し不安定なチェックを再実行
  4. 04人間のレビューへの返信前に確認を取得
  5. 05試行上限と終了状態を追跡

活用シーン

  1. 01プルリクエストのレビューとCI更新を継続監視
  2. 02ボットの指摘と確認済みCI失敗に対応
  3. 03チェック成功後も後続レビューを待機

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/timschoch/skilly --skill babysit-pr

インストール後、Claude Code で/babysit-prを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

README.md
scripts/
classify-failure.sh
classify-failure.test.sh
pr-state.sh
pr-state.test.sh
resolve-thread.sh
watch.sh
watch.test.sh

詳細

1 つの PR がマージ可能な状態になるまで、ポーリングし、分類し、修正し、プッシュして、再度ポーリングします。終了状態は merged、closed、needs-user です。プッシュでも、成功した実行でも、レポートでも、ループは終了しません。

ループ

各パスでは、次の手順を実行します。

  1. スナップショット。 bash scripts/pr-state.sh <pr> [--since <lastPushAt>] を実行します。前のパスの lastPushAt を --since に渡し、最後のプッシュより新しいレビュー項目だけが表示されるようにします。
  2. まず終了状態を確認。 state が MERGED または CLOSED の場合は、その状態を報告して停止します。
  3. CI より先にレビュー項目を確認。 修正コミットを作ると CI が再実行されるため、先にレビューに対応すれば、置き換える予定の SHA に対して再実行を消費せずに済みます。
  4. CI。 conclusion が失敗を示す各チェックについて、コードに手を加える前に bash scripts/classify-failure.sh <check-url> を実行します。
  5. プッシュ。 PR のヘッドブランチでコミットしてプッシュし、新しい SHA で手順 1 に戻ります。
  6. 待機。 bash scripts/watch.sh <pr> はチェックが確定するまで待機し、新しいスナップショットを出力します。スリープする代わりにこれを使います。BABYSIT_MAX_MINUTES で上限を設定できます。既定値は 60 です。

ルール

  • 公開済みかつ新しい項目のみ。 submittedAt または createdAt が lastPushAt より新しいレビュー項目に対応します。pr-state.sh は PENDING レビューを除外します。レビュー担当者がまだ下書き中であれば、まだ意見は出されていません。最後のプッシュより前に回答した項目は、回答済みのままです。
  • 失敗を分類してから、その分類に応じて対応。 classify-failure.sh はログの証拠に基づいて flaky または real を出力し、その後、失敗した行の先頭 20 行を表示します。real の場合はブランチを修正します。flaky の場合は gh run rerun <run-id> --failed で再実行します。失敗が flaky と判定されている間は、テスト、ビルドスクリプト、CI 設定、依存関係のピン留めを変更しないでください。インフラの問題を黙らせるだけのパッチは、後続のすべての人からシグナルを隠してしまいます。
  • CI の上限は PR ごとに 3 回。 1 回の試行とは、赤になったチェックに対して行う修正プッシュ 1 回、または再実行 1 回です。レビュー修正のプッシュは試行に数えません。チェックが再び赤で確定した時点で失敗とします。
    • 3 回目の試行に失敗したら、案が残っていても needs-user で停止します。
    • 失敗したチェック、各試行で変更した内容、失敗行の先頭 20 行をユーザーに伝えます。
  • 人間には、あなたの言葉ではなくユーザーの言葉を届けます。 人間のレビュー担当者とは、PR 作成者ではなく、isBot のフラグも付いていない reviews[].author を指します。その項目と返信案をユーザーに提示し、GitHub に投稿する前に明示的な確認を待ちます。ボットの項目には自分で対応し、解決します。
  • 修正した項目を解決します。 修正をプッシュしたら、スナップショットの threads[].id を使って bash scripts/resolve-thread.sh <threadId> を実行します。
  • マージするかどうかはユーザーが決めます。 完了ルール(.claude/rules/workflow-done.md)では、コミット済みは完了、プッシュ済みは承認済みです。マージモードは --merge を指定した場合、またはこのセッションでユーザーがマージすると伝えた場合にのみ開始します。指定がなければ、成功した時点で停止して報告します。
  • マージモードでは成功後にマージし、成功前にはマージしません。 gh pr merge <pr> --squash --match-head-commit <headSha> を実行します。--merge=merge の場合は、--squash の代わりに --merge を指定します。その後、もう一度スナップショットを取得し、MERGED になったらループを終了します。
    • headSha は成功したスナップショットから取得します。その後にプッシュが反映された場合は、マージを行いません。
    • --auto は絶対に使わないでください。必須チェックのないリポジトリでは、CI の確定前に即座にマージされてしまいます。
    • --delete-branch は絶対に使わないでください。
  • 成功は節目であり、終了条件ではありません。 失敗したチェックがなく、mergeable: MERGEABLE で、未解決のスレッドもない場合は、「マージ可能」と報告してポーリングを続けます。PR が開いている間は、遅れてレビュー項目が届くことがあります。マージモードでは、ここでマージします。

レビュー担当者の判定

pr-state.sh は、git のルートにある .skilly/config.json からボットのログイン名を読み込みます。

{ "review": { "bots": ["chatgpt-codex-connector[bot]", "some-reviewer"] } }

ログイン名が [bot] で終わる場合もボットとして扱います。キーまたはファイルがない場合は空のリストとなり、PR 作成者以外のすべてのレビュー担当者が人間として扱われます。実行のたびに設定を読み込み、ログイン名を記憶に頼って判定しないでください。

CI

チェックは PR が報告する内容に従います。リポジトリのティアによってチェックの構成が決まり、その設定は .skilly/config.json にあります(ティアについては verify スキルで説明しています)。verify はすべてのティアで実行される唯一のチェックなので、verify が赤の場合は常に、このブランチに問題があることを示します。

コミット

内容に応じて接頭辞を付ける Conventional Commit を使用します。チェックが失敗していた場合は fix:、リントや設定の細かな修正の場合は chore: を付けます。変更の由来を検索しやすいよう、本文を1行追加します。

Babysit-pr: fixes review thread <thread-url>

報告

各パスの最後に、head SHA、チェックの集計、マージ可能かどうか、プッシュした内容、CI の試行回数(3回中)、未解決の項目を記載します。

コメント