mcpField
G
git-ci

git-ci

github.com/dmythro云与 DevOps7152 次安装3 天前更新
代码仓库

关于 git-ci

git-ci 是一项用于查询 GitHub Actions 和 GitLab CI 状态、检查失败原因并评估变更合并准备情况的技能。它提供按平台区分的 CLI 命令,并说明如何解读审查机器人检查结果。

主要功能

  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):已对照 --help 检查此处使用的每个 gh 子命令和标志。未验证 glab——尚无固定版本;依赖 glab 标志前,请先检查 glab <cmd> --help。如果 gh --version 显示的版本更新,请先阅读 v2.102.0 之后的发行说明,再依赖相关标志细节。

适用场景

  • 检查 CI 状态——“检查是否通过了?”,“哪些检查失败了?”,流水线状态
  • 监控 CI 运行——等待完成,出错时快速失败
  • 调试失败——查看失败作业的日志,识别不稳定测试
  • 评估是否已准备好合并——所有检查均通过、评审已批准、没有冲突
  • 列出工作流运行记录——近期流水线、特定工作流的历史记录
  • 配置 CI 允许列表——为只读 CI 命令设置自动批准模式

关键规则

  1. 使用 gh pr checks(不要使用 gh run)检查当前分支的 CI 状态。 pr checks 子命令直接对应 PR 的必需状态检查。
  2. 在 GitLab 中,使用 glab ci status 检查当前分支的 CI。 它会显示当前分支的流水线,无需流水线 ID。
  3. 使用 gh 时,始终搭配 --json 筛选输出字段。 完整的 JSON 输出会浪费令牌。gh pr checks 只接受 bucket、completedAt、description、event、link、name、startedAt、state、workflow 这些字段——这里没有 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

Review-Bot 检查(GitHub)

Review bot 会以提交状态发布结果,而且状态始终为绿色。 在检查列表中,它会和 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 completedBot 已审查此提交
SUCCESS / passReview rate limited每小时配额已用尽——没有审查任何内容,也没有内容排队
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 作业旁的绿色勾号意味着没有审查任何内容,发生频率约为四分之一。

state 只能说明正在运行还是已结束,仅此而已:两种已结束的结果都是 success。

有两个界面会掩盖这一情况,因此请勿用它们检查 Bot 检查:gh pr view --json statusCheckRollup 只返回 context/state/targetUrl(不含描述),而 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,因此,报告了限流的 Bot 检查看起来与报告审查已完成的检查完全相同。只要合并需要经过 Review Bot 检查,就将它与上文的 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:提取失败的检查项、必需检查、列出工作流、缓存管理、规则集。


允许列表

参考:请参阅 references/allowlist.md,了解涵盖所有只读 CI 操作的分级 Bash(command:*) 模式——可在 Claude Code settings.json 或 OpenCode 配置中安全地自动批准。

评论

支持 Markdown