Gh Pr Checks Plan Fix(gh PRチェック計画修正)
概要
github CLI(gh)を使って失敗しているPRチェックを特定し、GitHub Actionsのログを取得して失敗箇所のスニペットを要約し、修正計画を提案し、明示的な承認後に実装します。
- 修正計画の草案作成と承認には
planスキルに依存します。
前提条件: gh が認証済みであることを確認します(例:一度 gh auth login を実行)。その後、エスカレーションされた権限(workflow/repoスコープを含む)で gh auth status を実行し、ghコマンドが成功するようにします。サンドボックスが gh auth status をブロックする場合は、sandbox_permissions=require_escalated を付けて再実行してください。
入力
repo: リポジトリ内のパス(デフォルトは.)pr: PR番号またはURL(オプション。デフォルトは現在のブランチのPR)- リポジトリホストに対する
gh認証
クイックスタート
python "<スキルへのパス>/scripts/inspect_pr_checks.py" --repo "." --pr "<番号またはURL>"- 機械処理に適した出力を得るには
--jsonを追加します。
ワークフロー
- gh認証を確認する
- リポジトリ内で
gh auth statusをエスカレーションされたスコープ(workflow/repo)で実行します(事前にgh auth loginを実行しておくこと)。 - サンドボックス内で認証ステータスが失敗する場合は、
sandbox_permissions=require_escalatedを付けてコマンドを再実行し、ネットワーク/キーチェーンへのアクセスを許可します。 - 未認証の場合は、ユーザーにログインを促してから続行します。
- リポジトリ内で
- PRを特定する
- 現在のブランチのPRを優先します:
gh pr view --json number,url - ユーザーがPR番号またはURLを指定した場合は、それを直接使用します。
- 現在のブランチのPRを優先します:
- 失敗しているチェックを調査する(GitHub Actionsのみ)
- 推奨:バンドルされたスクリプトを使用します(ghのフィールド名のずれやジョブログのフォールバックを自動処理):
python "<スキルへのパス>/scripts/inspect_pr_checks.py" --repo "." --pr "<番号またはURL>"- 機械処理に適した出力を得るには
--jsonを追加します。
- 手動フォールバック:
gh pr checks <pr> --json name,state,bucket,link,startedAt,completedAt,workflow- フィールドが拒否された場合は、
ghが報告する利用可能なフィールドで再実行します。
- フィールドが拒否された場合は、
- 失敗している各チェックについて、
detailsUrlからrun IDを抽出し、以下を実行:gh run view <run_id> --json name,workflowName,conclusion,status,url,event,headBranch,headShagh run view <run_id> --log
- 実行ログが「処理中」と表示する場合は、ジョブログを直接取得します:
gh api "/repos/<owner>/<repo>/actions/jobs/<job_id>/logs" > "<パス>"
- 推奨:バンドルされたスクリプトを使用します(ghのフィールド名のずれやジョブログのフォールバックを自動処理):
- 非GitHub Actionsチェックのスコープを定義する
detailsUrlがGitHub Actionsの実行でない場合は、外部チェックとしてラベル付けし、URLのみを報告します。- Buildkiteやその他のプロバイダは扱わず、ワークフローを軽量に保ちます。
- 失敗をユーザーに要約する
- 失敗したチェック名、実行URL(ある場合)、簡潔なログスニペットを提供します。
- ログがない場合は明示的にその旨を伝えます。
- 計画を作成する
planスキルを使用して簡潔な計画を草案し、承認を求めます。
- 承認後に実装する
- 承認された計画を適用し、差分/テストを要約し、PRを開くかどうかを尋ねます。
- ステータスを再確認する
- 変更後、関連するテストと
gh pr checksを再実行して確認することを提案します。
- 変更後、関連するテストと
バンドルリソース
scripts/inspect_pr_checks.py
失敗しているPRチェックを取得し、GitHub Actionsのログをプルし、失敗スニペットを抽出します。失敗が残っている場合は非ゼロで終了するため、自動化で使用できます。
使用例:
python "<スキルへのパス>/scripts/inspect_pr_checks.py" --repo "." --pr "123"python "<スキルへのパス>/scripts/inspect_pr_checks.py" --repo "." --pr "https://github.com/org/repo/pull/123" --jsonpython "<スキルへのパス>/scripts/inspect_pr_checks.py" --repo "." --max-lines 200 --context 40