关于 git-ci
git-ci 是一项用于查询 GitHub Actions 和 GitLab CI 状态、检查失败原因并评估变更合并准备情况的技能。它提供按平台区分的 CLI 命令,并说明如何解读审查机器人检查结果。
主要功能
- 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):已对照 --help 检查此处使用的每个 gh 子命令和标志。未验证 glab——尚无固定版本;依赖 glab 标志前,请先检查 glab <cmd> --help。如果 gh --version 显示的版本更新,请先阅读 v2.102.0 之后的发行说明,再依赖相关标志细节。
适用场景
- 检查 CI 状态——“检查是否通过了?”,“哪些检查失败了?”,流水线状态
- 监控 CI 运行——等待完成,出错时快速失败
- 调试失败——查看失败作业的日志,识别不稳定测试
- 评估是否已准备好合并——所有检查均通过、评审已批准、没有冲突
- 列出工作流运行记录——近期流水线、特定工作流的历史记录
- 配置 CI 允许列表——为只读 CI 命令设置自动批准模式
关键规则
- 使用
gh pr checks(不要使用gh run)检查当前分支的 CI 状态。pr checks子命令直接对应 PR 的必需状态检查。 - 在 GitLab 中,使用
glab ci status检查当前分支的 CI。 它会显示当前分支的流水线,无需流水线 ID。 - 使用
gh时,始终搭配--json筛选输出字段。 完整的 JSON 输出会浪费令牌。gh pr checks只接受bucket、completedAt、description、event、link、name、startedAt、state、workflow这些字段——这里没有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
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 / bucket | description | 实际情况 |
|---|---|---|
PENDING / pending | Review in progress | 正在运行——PR 尚未经过审查 |
SUCCESS / pass | Review completed | Bot 已审查此提交 |
SUCCESS / pass | Review rate limited | 每小时配额已用尽——没有审查任何内容,也没有内容排队 |
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 作业旁的绿色勾号意味着没有审查任何内容,发生频率约为四分之一。
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或UNKNOWNreviewDecision——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 Codesettings.json或 OpenCode 配置中安全地自动批准。