CI 故障修复助手
定位拉取请求中的 CI 失败原因并迭代修复。
技能明确要求使用 gh、GitHub Actions 日志和 artifacts,并说明部分数据流向;但包含 gh run rerun、git add -A、commit 和 push 等外部及持久化操作,没有逐步用户确认、最小权限说明、日志敏感信息脱敏、变更回滚方案或失败后的恢复流程,因此扣分。官方 Microsoft 来源和 MIT 许可提供了归属证据,但不增加安全能力分。
流程步骤、命令和常见失败模式较清晰,包含运行中任务的 API 日志替代路径及基础错误模式;但依赖 gh、仓库状态、网络、权限、特定 artifact 命名和环境假设,部分命令可能因运行状态、平台或日志格式变化而失败,且没有统一的输入校验和可诊断的失败处理。静态评估按上限限制,扣除未执行验证的分数。
目标用户和场景清楚:已检出 PR 分支且 CI 检查失败的 VS Code 贡献者;覆盖构建、测试、基础设施和 flaky failure。边界仍不完整,例如无 PR、权限不足、非 GitHub Actions 检查、不同仓库结构或非标准 artifact 时主要只提示用户自行指定或排查;未提供中文交互支持,也未说明中国大陆网络可达性,因此扣分。
SKILL.md 有 front matter、分步结构、命令示例、故障类型和速查表,仓库 README、LICENSE 和 package.json 补充了来源、MIT 许可及版本信息。缺少技能自身版本、变更记录、维护负责人、更新路径、安装说明、参数约束、确认策略、回滚说明和 FAQ;部分说明依赖仓库内部约定,因此扣分。
该技能能把 PR CI 失败调查拆成识别 PR、定位检查、下载日志、判断原因和迭代修复,命令输出通常可直接用于诊断;但静态材料没有证明关键路径已执行,修复质量依赖用户自行理解日志和修改代码,且 push 与重跑 CI 的结果未被可靠闭环验证。按静态上限给出 7 分并扣除执行证据不足。
命令、GitHub Actions 日志格式、artifact 结构和仓库命名约定构成可审计的主要证据;但没有技能专用测试、示例会话、版本化行为验证或第三方执行记录,所附工作流和测试文件也不覆盖该技能的关键路径。因此达到静态评估允许的 5 分上限,但不能获得更高分。
- 执行 git add -A、commit、push 或 gh run rerun 前应明确获得用户确认,并限定文件、分支和目标运行。
- CI 日志和 artifacts 可能包含令牌、路径、内部数据或测试凭据;技能没有提供脱敏、最小下载范围或安全存储指导。
- gh run download --dir /dev/null、固定 artifact 命名和 grep/tail 解析依赖环境与仓库约定,失败时可能需要人工调整。
- 未提供技能专用执行证据;本评估未运行任何命令,也未验证修复是否真正通过 CI。
- 核心 GitHub CLI 和 GitHub Actions 访问依赖海外服务;在中国大陆网络受限时可能不可用,技能未给出替代方案。
它能做什么 & 适用场景
该技能面向已在本地检出拉取请求分支的开发者,用于调查和修复 CI 失败。它通过 Git 和 GitHub CLI 查找当前分支对应的 PR、检查失败任务、读取作业日志及构建产物,并提取测试、编译、网络或基础设施故障的线索。确认问题后,它指导本地修复、验证、提交、推送并重新观察 CI。技能明确要求使用 gh CLI,且只覆盖 CI 失败排查与修复流程,不是通用的代码审查或测试技能。
读取当前 Git 分支并调用 gh pr view 查找对应 PR;使用 gh pr checks 查看全部或失败的检查,并在需要时等待检查完成;从检查链接提取运行 ID,使用 gh run view 列出失败作业;通过 gh run view --log-failed、gh run download 或 gh api 下载失败步骤、构建产物和作业日志;用 grep、tail、sed 等命令查找错误注解、断言失败、TypeScript 错误、网络故障和超时;检查近期 main 分支运行以判断问题是否与 PR 相关;指导本地修改、类型检查、相关测试、提交、推送和失败任务重跑。
- 开发者已检出一个 PR 分支,想快速找到 GitHub Actions 中失败的检查和作业。
- 测试或集成测试失败,用户需要下载 exthost.log、terminal.log、main.log 或崩溃转储来分析原因。
- 构建、TypeScript 编译、ESLint 或 stylelint 检查失败,用户需要从失败步骤日志中提取具体错误。
- CI 仍在运行但失败作业已经完成,用户需要通过 GitHub API 直接获取该作业日志。
- 失败可能来自网络、Electron 下载、磁盘、内存或测试波动,用户需要判断是否应重跑而不是修改代码。
优缺点一览
- 覆盖从查找 PR、定位失败检查到下载日志、判断根因和迭代修复的完整流程。
- 同时提供失败步骤日志、构建产物和运行中作业 API 日志三种取证路径。
- 包含区分代码问题、基础设施故障和测试波动的具体判断方法。
- 给出了 VS Code 日志产物中 main.log、terminal.log 和 exthost.log 的用途。
- 明确依赖 GitHub CLI、Git、网络访问以及本地 shell 和文件系统。
- 假设用户已经在本地检出 PR 分支;没有 PR 时只能要求用户提供 PR 编号。
- 技能文件没有提供独立的安装或客户端配置说明。
- 流程和日志命名示例针对 GitHub Actions 与 VS Code 仓库,其他 CI 系统或仓库可能需要调整。
- 没有证据表明它会自动修改代码、执行提交或保证修复成功;这些步骤仍需用户确认和执行。
如何安装
技能专属的安装命令或客户端注册步骤未在来源中说明。技能文件位于 https://github.com/microsoft/vscode/tree/main/.github/skills/fix-ci-failures/SKILL.md;它属于 microsoft/vscode 中包含的 61 个技能。该仓库源代码采用 MIT 许可证。
如何使用
先确保本地已检出 PR 分支并安装 GitHub CLI,然后向支持该技能的 Agent 提出例如“调查当前 PR 的 CI 失败,找出根因并指导我修复”的请求。流程中可使用:gh pr view --json number,title,url,statusCheckRollup;gh pr checks --json name,state,link,bucket;gh run view <RUN_ID> --json jobs;gh run view <RUN_ID> --job <JOB_ID> --log-failed。若运行仍在进行,可使用 gh api repos/microsoft/vscode/actions/jobs/<JOB_ID>/logs > "$TMPDIR/ci-job-log.txt" 获取作业日志。修复后,技能会指导运行验证命令、git commit、git push,并再次执行 gh pr checks --watch --fail-fast。