git-ci について
git-ci は、GitHub Actions と GitLab CI の状態確認、失敗の調査、変更のマージ準備状況の評価に使うスキルです。各サービス向けのコマンドライン手順に加え、レビューボットのチェック結果の読み方も示します。
主な機能
- 01現在のブランチの CI 状態確認
- 02パイプラインとワークフロー実行の一覧
- 03失敗ジョブのログと詳細表示
- 04マージ準備状況の確認
- 05レビューボット結果の解釈
- 06GitHub と GitLab のコマンドライン手順
活用シーン
- 01ブランチのチェック通過状況の確認
- 02失敗した CI ジョブの特定と調査
- 03プルリクエストのマージ可否の評価
- 04レビュー完了とレート制限の判別
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ dmythro/ agent-skills --skill git-ciインストール後、Claude Code で/git-ciを入力して読み込まれたか確認します。
同梱ファイルreferences/allowlist.mdreferences/ci-queries.md
詳細
CI/CD ステータスの確認
GitHub Actions と GitLab CI の CI/CD パイプラインを確認し、マージ可能かどうかを判断します。 すべてのレシピで、トークンを効率的に使えるよう最小限のフィールドセットを使用します。パイプラインのステータス、失敗したジョブ、実行ログ、ワークフロー管理、マージ可能性の評価を扱います。
gh v2.102.0 で検証済み(2026-09-30):ここで使用するすべての gh サブコマンドとフラグを、それぞれの --help に照らして確認しています。glab:未検証 — まだ固定バージョンがないため、glab のフラグに依存する前に glab <cmd> --help を確認してください。gh --version が v2.102.0 より新しい場合は、フラグの詳細に依存する前に、リリースノートで v2.102.0 以降の変更を確認してください。
使用する場面
- CI ステータスの確認 — 「チェックは通っていますか?」「何が失敗していますか?」、パイプラインのステータス
- CI 実行の監視 — 完了を待ち、エラー発生時は即座に失敗させる
- 失敗のデバッグ — 失敗したジョブのログを確認し、不安定なテストを特定する
- マージ可能性の評価 — すべてのチェックが成功し、レビューが承認済みで、競合がないことを確認する
- ワークフロー実行の一覧表示 — 最近のパイプライン、特定のワークフローの履歴
- CI 許可リストの設定 — 読み取り専用の CI コマンドに対する自動承認パターン
重要なルール
- 現在のブランチの CI ステータスには
gh runではなくgh pr checksを使用します。pr checksサブコマンドは、PR の必須ステータスチェックに直接対応します。 - GitLab で現在のブランチの CI を確認するには
glab ci statusを使用します。 パイプライン ID がなくても、現在のブランチのパイプラインが表示されます。 ghでは、出力フィールドを絞り込むために必ず--jsonを使用します。 JSON 全体を出力するとトークンを無駄にします。gh pr checksが受け付けるのはbucket、completedAt、description、event、link、name、startedAt、state、workflowのみです。ここにconclusionフィールドはありません(conclusionはgh runとstatusCheckRollupに属するフィールドです)。不明なフィールドを指定すると、Unknown JSON fieldでコマンドが中断します。- 緑色のチェックでも、ジョブが完了しているとは限りません。
descriptionを確認してください。 アプリやボットのチェックでは、作業が行われていない結果でもstate: SUCCESS/bucket: passが報告されます。CodeRabbit はコードを一度もレビューしていない場合でも、Review rate limitedを成功したチェックとして投稿します。結果の詳細はdescriptionに含まれます。これはデフォルトでは返されず、gh pr view --json statusCheckRollupでは完全に省略されます。PR をレビュー済み、またはマージ可能と判断する前に、以下の「レビューボットのチェック」を確認してください。 - このスキルに記載されているコマンドをそのまま使用してください。 以下のコマンドは、自動承認の許可リストパターンに一致するよう設計されています。フラグを独自に追加・変更すると、権限の確認が求められる場合があります。
プロバイダーの判定
git remote get-url origin
| リモート URL に含まれる文字列 | プロバイダー | CLI | CI システム |
|---|---|---|---|
github.com | GitHub | gh | GitHub Actions |
gitlab.com またはセルフホスト型 GitLab | GitLab | glab | GitLab CI |
判別できない場合、または両方が存在する場合は、ユーザーに確認してください。
glab のレシピは GitLab のドキュメントに基づいており、稼働中のインスタンスでは実行していません — GitHub のレシピは実行済みです。無人で実行する際にフラグを使用する前に、glab <command> --help で確認してください。
CI ステータス(現在のブランチ)
GitHub:
gh pr checks --json name,state,bucket,description
state は GitHub の生の判定結果です(チェック実行と従来のステータスコンテキストでは、異なる用語が使われます — SUCCESS、FAILURE、PENDING、SKIPPED など)。bucket はこれを pass、fail、pending、skipping、cancel のいずれかにまとめます。description にはアプリ独自の概要行が含まれます。必ず要求してください。チェックが実際に作業を行ったのか、結果を報告しただけなのかを区別できる唯一のフィールドです(重要なルール 4)。終了ステータスではなく、JSON の内容に基づいて判定してください。チェックが保留中の場合、gh pr checks は 8 で終了し、失敗がある場合、またはチェックが一件も報告されていない場合はゼロ以外の値で終了します。
GitLab:
glab ci status # current branch, one line per job
glab ci get # full detail for the branch's pipeline
レビューボットのチェック(GitHub)
レビューボットは、常に成功のコミットステータスとして結果を公開します。 チェック一覧では、CI ジョブの中にチェックマーク付きの CodeRabbit -- Review rate limited として表示されます。これは「すべて合格した」と読めますが、実際にはコードがレビューされていません。
# Read the bot rows with their description (name + state + the line that actually matters)
gh pr checks --json name,state,bucket,description --jq '.[] | select(.name|ascii_downcase|startswith("coderabbit"))'
state / bucket | description | 実際の状況 |
|---|---|---|
PENDING / pending | Review in progress | 現在実行中です -- PR はまだレビューされていません |
SUCCESS / pass | Review completed | ボットがこのコミットをレビューしました |
SUCCESS / pass | Review rate limited | 1 時間ごとの枠が空でした -- 何もレビューされておらず、キューにも入っていません |
SUCCESS / pass | Review skipped: <reason> | 設定により除外されました(draft pull request、reviews are disabled for this base branch) -- 何もレビューされていません |
gh pr checks は state を大文字にし、小文字の bucket を追加します。基になる REST コミットステータスは小文字(success)を返し、bucket はありません。あるアカウントの 25 件の PR では、62 回の実行のうち 15 回が Review rate limited となりました。これは CI ジョブの横に緑のチェックが付いているものの、実際には何もレビューされていないことを意味し、およそ 4 回に 1 回の割合です。
state でわかるのは実行中か完了済みかだけです。それ以上の情報はありません。完了後の結果はいずれも success です。
次の 2 つの方法ではこの状況が見えないため、ボットのチェックにはどちらも使わないでください。gh pr view --json statusCheckRollup が返すのは context/state/targetUrl のみで(description はありません)、gh api repos/{owner}/{repo}/commits/{sha}/check-runs には表示されません。これはコミット ステータス であり、gh api repos/{owner}/{repo}/commits/{sha}/status を使って SHA ごとに確認できます。レート制限がかかった場合の処理(ウィンドウ、再トリガー、レビューのループ)については、git-pr スキルの references/bot-review-loop.md を参照してください。
完了まで待機
GitHub:
gh pr checks --watch --fail-fast
GitLab:
glab ci status --live
最近のパイプライン/ワークフローの実行
GitHub:
gh run list --json databaseId,displayTitle,status,conclusion,headBranch,event --limit 10
GitLab:
glab ci list
特定の実行の詳細
GitHub:
gh run view {run_id} --json jobs,status,conclusion,displayTitle
GitLab:
glab ci view {pipeline_id}
実行ログ
GitHub:
gh run view {run_id} --log-failed
GitLab:
glab ci trace {job_id}
マージ可能性(現在のブランチ)
GitHub:
gh pr view --json mergeable,reviewDecision,statusCheckRollup,isDraft,mergeStateStatus
フィールド:
mergeable--MERGEABLE、CONFLICTING、またはUNKNOWNreviewDecision--APPROVED、CHANGES_REQUESTED、REVIEW_REQUIRED、または空isDraft-- ブール値mergeStateStatus--CLEAN、BLOCKED、BEHIND、DIRTY、UNSTABLE
statusCheckRollup でわかるのは「チェックに合格したか」であり、「各チェックが役割を果たしたか」ではありません。description が含まれないため、レート制限を報告したボットのチェックと、レビュー完了を報告したチェックが同じように見えます。レビューボットがマージの条件となっている場合は、上記の gh pr checks --json ...,description 呼び出しと併用してください。
GitLab:
glab mr view -F json | jq '{merge_status:.merge_status,conflicts:.has_conflicts,blocking:.blocking_discussions_resolved,draft:.draft}'
変数とシークレット
GitHub:
gh variable list
gh secret list
GitLab:
glab variable list
CI クエリのリファレンス
リファレンス:高度なパターン(失敗したチェックの抽出、必須チェック、ワークフロー一覧表示、キャッシュ管理、ルールセット)については、
references/ci-queries.mdを参照してください。
許可リスト
リファレンス:すべての読み取り専用 CI 操作を網羅する、階層化された
Bash(command:*)パターンについては、references/allowlist.mdを参照してください。Claude Code のsettings.jsonまたは OpenCode の設定で、自動承認しても安全です。