mcpField
G
git-ci

git-ci

github.com/dmythroクラウド・DevOps7152 回インストール3 日前に更新
リポジトリ

git-ci について

git-ci は、GitHub Actions と GitLab CI の状態確認、失敗の調査、変更のマージ準備状況の評価に使うスキルです。各サービス向けのコマンドライン手順に加え、レビューボットのチェック結果の読み方も示します。

主な機能

  1. 01現在のブランチの CI 状態確認
  2. 02パイプラインとワークフロー実行の一覧
  3. 03失敗ジョブのログと詳細表示
  4. 04マージ準備状況の確認
  5. 05レビューボット結果の解釈
  6. 06GitHub と GitLab のコマンドライン手順

活用シーン

  1. 01ブランチのチェック通過状況の確認
  2. 02失敗した CI ジョブの特定と調査
  3. 03プルリクエストのマージ可否の評価
  4. 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 コマンドに対する自動承認パターン

重要なルール

  1. 現在のブランチの CI ステータスには gh run ではなく gh pr checks を使用します。 pr checks サブコマンドは、PR の必須ステータスチェックに直接対応します。
  2. GitLab で現在のブランチの CI を確認するには glab ci status を使用します。 パイプライン ID がなくても、現在のブランチのパイプラインが表示されます。
  3. gh では、出力フィールドを絞り込むために必ず --json を使用します。 JSON 全体を出力するとトークンを無駄にします。gh pr checks が受け付けるのは bucket、completedAt、description、event、link、name、startedAt、state、workflow のみです。ここに conclusion フィールドはありません(conclusion は gh run と statusCheckRollup に属するフィールドです)。不明なフィールドを指定すると、Unknown JSON field でコマンドが中断します。
  4. 緑色のチェックでも、ジョブが完了しているとは限りません。description を確認してください。 アプリやボットのチェックでは、作業が行われていない結果でも state: SUCCESS/bucket: pass が報告されます。CodeRabbit はコードを一度もレビューしていない場合でも、Review rate limited を成功したチェックとして投稿します。結果の詳細は description に含まれます。これはデフォルトでは返されず、gh pr view --json statusCheckRollup では完全に省略されます。PR をレビュー済み、またはマージ可能と判断する前に、以下の「レビューボットのチェック」を確認してください。
  5. このスキルに記載されているコマンドをそのまま使用してください。 以下のコマンドは、自動承認の許可リストパターンに一致するよう設計されています。フラグを独自に追加・変更すると、権限の確認が求められる場合があります。

プロバイダーの判定

git remote get-url origin
リモート URL に含まれる文字列プロバイダーCLICI システム
github.comGitHubghGitHub Actions
gitlab.com またはセルフホスト型 GitLabGitLabglabGitLab 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 / bucketdescription実際の状況
PENDING / pendingReview in progress現在実行中です -- PR はまだレビューされていません
SUCCESS / passReview completedボットがこのコミットをレビューしました
SUCCESS / passReview rate limited1 時間ごとの枠が空でした -- 何もレビューされておらず、キューにも入っていません
SUCCESS / passReview 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、または UNKNOWN
  • reviewDecision -- 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 の設定で、自動承認しても安全です。

コメント