mcpField
D
diagnose-ci-failures

diagnose-ci-failures

github.com/warpdotdev测试与质量63628.4k 次安装1 周前更新
代码仓库

关于 diagnose-ci-failures

diagnose-ci-failures 是一项技能,可检查拉取请求的 CI 状态、收集失败日志并对错误分类。它会生成供审阅的修复计划,而不会直接修改代码。

主要功能

  1. 01检查拉取请求的 CI 状态
  2. 02获取失败检查的日志
  3. 03分类构建与测试错误
  4. 04生成供审阅的计划
  5. 05提出验证步骤

适用场景

  1. 01调查拉取请求检查失败
  2. 02区分 lint、构建和测试错误
  3. 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 tests
  • Run Linux tests
  • Run Windows tests
  • Check 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