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 testsRun Linux testsRun Windows testsCheck 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:"






