关于 diagnose-ci-failures
diagnose-ci-failures 是一项技能,可检查拉取请求的 CI 状态、收集失败日志并对错误分类。它会生成供审阅的修复计划,而不会直接修改代码。
主要功能
- 01检查拉取请求的 CI 状态
- 02获取失败检查的日志
- 03分类构建与测试错误
- 04生成供审阅的计划
- 05提出验证步骤
适用场景
- 01调查拉取请求检查失败
- 02区分 lint、构建和测试错误
- 03在修改代码前准备修复方案
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ warpdotdev/ common-skills --skill diagnose-ci-failures安装后在 Claude Code 中输入/diagnose-ci-failures确认已加载。
详细介绍
diagnose-ci-failures
以编程方式诊断 PR 的 CI 失败,并生成修复计划。
概述
此技能提供确定性的工作流,用于检查 PR 的 CI 状态、提取失败日志、分析错误,并创建解决问题的计划(而非代码更改)。输出始终为计划文档,可在执行前进行审查。
工作流
1. 确认当前分支存在 PR
获取当前分支并检查是否存在 PR:
# Get current branch
git branch --show-current
# Check for PR
GH_PAGER=cat gh pr view <branch-name> --json number,title,url,state
如果不存在 PR,请告知用户,并建议使用 create-pr 技能创建一个。
2. 检查 CI 状态
获取所有 CI 检查的状态:
GH_PAGER=cat gh pr view <branch-name> --json statusCheckRollup
解析输出以识别:
- 已完成的检查与正在进行的检查
- 成功的检查
- 失败的检查及其名称和详情 URL
如果 CI 仍在运行,请告知用户哪些检查已失败或通过,指出仍在运行的检查,并建议等待检查完成后再进行诊断。
3. 提取失败日志
对于每项失败的检查,使用状态检查中的运行 ID 获取日志:
GH_PAGER=cat gh run view <run-id> --log-failed
重点提取:
- 错误消息及其位置(文件路径、行号)
- 编译错误(未使用的导入、类型不匹配等)
- 具体 lint 名称对应的 lint/clippy 错误
- 测试失败消息和堆栈跟踪
- 构建失败及其根本原因
4. 对错误分类
按类型对错误分组:
- 格式问题:
cargo fmt失败 - Lint 问题:
cargo clippy警告/错误 - 编译错误:类型错误、缺少导入、签名不匹配
- 测试失败:失败的测试及其名称和失败原因
- 平台特定问题:WASM、Linux、macOS、Windows 特定的失败
5. 生成修复计划
使用 create_plan 工具创建计划文档,包含:
- 问题说明:失败检查的摘要
- 当前状态:发现了哪些错误及其位置
- 拟议更改:针对各错误类别所需的具体修复
- 验证步骤:用于验证修复的命令(fmt、clippy、测试、预提交检查)
计划应引用 fix-errors 技能,以获取解决特定错误类型的详细指导。
重要说明
- GitHub CLI 分页:每次调用
gh时都设置GH_PAGER=cat。GitHub CLI 不支持将--no-pager用作全局选项;GH_PAGER和PAGER是其文档中指定的分页控制项 - 始终先创建计划:切勿直接更改代码。生成计划供用户审查
- 检查 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_PAGER=cat gh pr view --json number,title,state,statusCheckRollup
获取特定失败运行的日志:
GH_PAGER=cat gh run view 12345678 --log-failed
在日志中查找特定错误:
GH_PAGER=cat gh run view 12345678 --log-failed 2>&1 | grep -A 5 "error:"
评论
支持 Markdown