diagnose-ci-failures

diagnose-ci-failures

热门

使用 GitHub CLI 诊断 PR 的 CI 失败,提取错误日志并生成修复计划。当用户要求检查 CI 状态、拉取 CI 问题、分类测试失败或调查 PR 构建失败时使用。

124Star
0Fork
更新于 2026/7/10
SKILL.md
readonly只读
name
diagnose-ci-failures
description

使用 GitHub CLI 诊断 PR 的 CI 失败,提取错误日志并生成修复计划。当用户要求检查 CI 状态、拉取 CI 问题、分类测试失败或调查 PR 构建失败时使用。

diagnose-ci-failures

以编程方式诊断 PR 的 CI 失败并生成修复计划。

概述

本技能提供确定性的工作流程,用于检查 PR 的 CI 状态、提取失败日志、分析错误并创建计划(而非代码更改)以解决问题。输出始终是一个计划文档,可在执行前进行审查。

工作流程

1. 确认当前分支存在 PR

获取当前分支并检查是否存在 PR:

# 获取当前分支
git branch --show-current

# 检查 PR
gh --no-pager pr view <branch-name> --json number,title,url,state

如果不存在 PR,通知用户并提供使用 create-pr 技能创建 PR 的选项。

2. 检查 CI 状态

获取所有 CI 检查的状态:

gh pr view <branch-name> --json statusCheckRollup

解析输出以识别:

  • 已完成的检查与进行中的检查
  • 成功的检查
  • 失败的检查及其名称和详情 URL

如果 CI 仍在运行,告知用户哪些检查已失败或通过,突出显示仍在运行的检查,并建议等待完成后再进行诊断。

3. 提取失败日志

对于每个失败的检查,使用状态检查中的运行 ID 拉取日志:

gh run view <run-id> --log-failed

重点提取:

  • 错误消息及其位置(文件路径、行号)
  • 编译错误(未使用的导入、类型不匹配等)
  • 代码检查/clippy 错误及具体的 lint 名称
  • 测试失败消息和堆栈跟踪
  • 构建失败及其根本原因

4. 对错误进行分类

按类型对错误进行分组:

  • 格式问题cargo fmt 失败
  • 代码检查问题cargo clippy 警告/错误
  • 编译错误:类型错误、缺少导入、签名不匹配
  • 测试失败:失败的测试及其名称和失败原因
  • 平台特定问题:WASM、Linux、macOS、Windows 特定失败

5. 生成修复计划

使用 create_plan 工具创建计划文档,包含:

  • 问题陈述:失败检查的摘要
  • 当前状态:发现哪些错误及其位置
  • 建议更改:每个错误类别所需的具体修复
  • 验证步骤:用于验证修复的命令(fmt、clippy、测试、预提交)

计划应引用 fix-errors 技能以获取解决特定错误类型的详细指导。

重要说明

  • 始终先创建计划:切勿直接进行代码更改。生成计划供用户审查
  • 检查 CI 中的测试状态:即使测试在本地失败,也要验证它们在 CI 中是否通过,然后再标记为问题
  • 无关的测试失败:如果测试在 CI 中通过但在本地失败,可能是环境特定或间歇性问题
  • 多种错误类型:一次修复一个类别(例如,先修复所有 clippy 错误,再处理测试)
  • 交叉引用 fix-errors 技能:有关详细的错误解决策略,请使用 fix-errors 技能

常见 CI 检查名称

  • Formatting + Clippy (MacOS)
  • Formatting + Clippy (Linux)
  • Run MacOS tests
  • Run Linux tests
  • Run Windows tests
  • Check CI results(摘要检查)
  • WASM build

示例命令

获取 PR 状态及详情:

gh --no-pager pr view --json number,title,state,statusCheckRollup

获取特定失败运行的日志:

gh run view 12345678 --log-failed

检查日志中的特定错误:

gh run view 12345678 --log-failed 2>&1 | grep -A 5 "error:"