关于 gh-fix-ci
gh-fix-ci 是面向开发者的编码技能,使用 gh 检查失败的 GitHub Actions,并汇总日志以指导修复和验证。它还附带提取失败片段的脚本。
主要功能
- 01定位失败的 PR 检查
- 02获取 GitHub Actions 日志
- 03汇总失败证据
- 04规划、实施并验证修复
- 05用附带脚本提取日志片段
适用场景
- 01诊断失败的拉取请求
- 02从 CI 日志中查找可处理错误
- 03代码修改后重新检查 CI
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ gannonh/ skills --skill gh-fix-ci安装后在 Claude Code 中输入/gh-fix-ci确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
LICENSE.txtagents/openai.yamlscripts/inspect_pr_checks.py详细介绍
概述
使用 gh 查找失败的 PR 检查,获取 GitHub Actions 日志以定位可采取行动的失败,汇总失败情况并实施修复。
输入
repo:仓库内的路径(默认值为.)pr:PR 编号或 URL(可选;默认使用当前分支的 PR)- 针对仓库托管平台的
gh身份验证
快速开始
python3 "<path-to-skill>/scripts/inspect_pr_checks.py" --repo "." --pr "<number-or-url>"- 如果需要便于机器处理的汇总输出,请添加
--json。
工作流
- 验证 gh 身份验证状态。
- 在仓库中运行
gh auth status。 - 如果尚未通过身份验证,请先让用户运行
gh auth login(确保包含仓库和工作流所需的权限),然后再继续。
- 在仓库中运行
- 确定 PR。
- 优先使用当前分支的 PR:
gh pr view --json number,url。 - 如果用户提供了 PR 编号或 URL,则直接使用。
- 优先使用当前分支的 PR:
- 检查失败项(仅限 GitHub Actions)。
- 首选:运行随附脚本(可处理 gh 字段变更和作业日志回退):
python3 "<path-to-skill>/scripts/inspect_pr_checks.py" --repo "." --pr "<number-or-url>"- 添加
--json以获取便于机器处理的输出。
- 手动回退方案:
gh pr checks <pr> --json name,state,bucket,link,startedAt,completedAt,workflow- 如果某个字段不受支持,请使用 gh 报告的可用字段重新运行。
- 对于每个失败的检查,从
detailsUrl中提取运行 ID 并运行:gh run view <run_id> --json name,workflowName,conclusion,status,url,event,headBranch,headShagh run view <run_id> --log
- 如果运行日志显示任务仍在进行中,请直接获取作业日志:
gh api "/repos/<owner>/<repo>/actions/jobs/<job_id>/logs" > "<path>"
- 首选:运行随附脚本(可处理 gh 字段变更和作业日志回退):
- 界定非 GitHub Actions 检查的范围。
- 如果
detailsUrl不是 GitHub Actions 运行链接,则将其标记为外部检查,并且只报告 URL。 - 不要尝试使用 Buildkite 或其他提供商;保持工作流精简。
- 如果
- 汇总失败情况。
- 提供失败的检查名称、运行 URL(如有)以及简短的日志片段。
- 明确指出缺失的日志。
- 制定计划。
- 使用
create-plan技能起草简洁的计划。
- 使用
- 实施计划。
- 执行计划,汇总差异和测试结果,然后提交并推送更改。
- 重新检查状态。
- 更改后,重新运行相关测试和
gh pr checks以确认结果。 - 如果仍有新的或现有的失败项,请重复此工作流,直到 CI 通过。
- 更改后,重新运行相关测试和
- 汇总结果。
- CI 检查通过后,汇总修复内容,并在合并或继续用户工作流中的后续步骤前征求用户确认。
随附资源
/scripts/inspect_pr_checks.py
获取失败的 PR 检查,拉取 GitHub Actions 日志,并提取失败片段。仍有失败时会以非零状态码退出,因此可用于自动化。
用法示例:
python3 "<path-to-skill>/scripts/inspect_pr_checks.py" --repo "." --pr "123"python3 "<path-to-skill>/scripts/inspect_pr_checks.py" --repo "." --pr "https://github.com/org/repo/pull/123" --jsonpython3 "<path-to-skill>/scripts/inspect_pr_checks.py" --repo "." --max-lines 200 --context 40
评论
支持 Markdown