关于 pr-review-ci-fix
通过 Composio CLI 在命令行中审查 GitHub 或 GitLab PR,并处理失败的 CI。工作流涵盖差异检查、行内评论、日志分析、代码修复、推送和重新运行。
主要功能
- 01查看 PR 信息和变更文件
- 02发布含行内评论的审查
- 03查找失败的工作流并获取日志
- 04修补代码、推送并重新运行 CI
- 05支持 GitHub 和 GitLab
适用场景
- 01审查 PR 并留下针对具体行的反馈
- 02根据工作流日志诊断 CI 失败
- 03提交修复并验证 CI 重新运行结果
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ composio-community/ awesome-codex-skills --skill pr-review-ci-fix安装后在 Claude Code 中输入/pr-review-ci-fix确认已加载。
详细介绍
PR 审查 + CI 自动修复
使用 Composio CLI 在命令行中处理 GitHub/GitLab PR 审查和 CI 故障排查。无需在浏览器、终端和聊天工具之间来回切换。
适用场景
- PR 需要进行结构化审查(正确性、风格、风险),并添加行内评论。
- CI 运行失败,希望 Agent 阅读日志、修补代码并重新检查。
- 希望用一条命令完成循环:获取差异 → 评审 → 修复 → 推送 → 重新运行。
前置条件
curl -fsSL https://composio.dev/install | bash
composio login
composio link github # or: composio link gitlab
在非交互式运行中可选设置的环境变量:COMPOSIO_API_KEY。
核心工具包
先通过搜索查找 slug,然后固定下来以便复用:
composio search "list pull request files" --toolkits github
composio search "download workflow logs" --toolkits github
composio search "create pr comment" --toolkits gitlab
常用的 slug:
GITHUB_GET_A_PULL_REQUESTGITHUB_LIST_PULL_REQUESTS_FILESGITHUB_CREATE_A_REVIEW_FOR_A_PULL_REQUESTGITHUB_LIST_WORKFLOW_RUNS_FOR_A_REPOSITORYGITHUB_DOWNLOAD_WORKFLOW_RUN_LOGSGITLAB_GET_SINGLE_MERGE_REQUESTGITLAB_LIST_MERGE_REQUEST_DISCUSSIONSGITLAB_CREATE_NEW_MERGE_REQUEST_NOTE
首次使用前,务必通过 composio execute <SLUG> --get-schema 确认。
审查工作流
- 获取 PR 元数据和差异:
composio execute GITHUB_GET_A_PULL_REQUEST \ -d '{"owner":"acme","repo":"app","pull_number":482}' composio execute GITHUB_LIST_PULL_REQUESTS_FILES \ -d '{"owner":"acme","repo":"app","pull_number":482}' - 总结风险区域(身份验证、迁移、公共 API、测试),并写入审查正文。
- 发布审查并添加行内评论:
composio execute GITHUB_CREATE_A_REVIEW_FOR_A_PULL_REQUEST -d '{ "owner":"acme","repo":"app","pull_number":482, "event":"COMMENT", "body":"Overall LGTM with 2 blocking notes.", "comments":[ {"path":"src/auth.ts","line":42,"body":"Missing null check on session"}, {"path":"src/auth.ts","line":88,"body":"Token TTL is hardcoded; move to config"} ] }'
CI 自动修复循环
- 查找失败的运行:
composio execute GITHUB_LIST_WORKFLOW_RUNS_FOR_A_REPOSITORY \ -d '{"owner":"acme","repo":"app","branch":"feat/billing","status":"failure"}' - 获取日志:
composio execute GITHUB_DOWNLOAD_WORKFLOW_RUN_LOGS \ -d '{"owner":"acme","repo":"app","run_id":123456}' - 分析失败并在本地修补(Agent 将修复写入工作树)。
- 通过本地
git提交并推送,然后重新轮询步骤 1,直到conclusion=success。 - 发布 PR 评论,说明每个修复提交的内容,让人工审查者了解变更。
单次执行工作流文件
保存为 scripts/review-and-fix.ts,并使用 composio run --file ./scripts/review-and-fix.ts -- --pr 482 运行:
const pr = process.argv.includes("--pr")
? Number(process.argv[process.argv.indexOf("--pr") + 1])
: null;
const meta = await execute("GITHUB_GET_A_PULL_REQUEST", {
owner: "acme", repo: "app", pull_number: pr
});
const files = await execute("GITHUB_LIST_PULL_REQUESTS_FILES", {
owner: "acme", repo: "app", pull_number: pr
});
console.log(JSON.stringify({ meta, files }, null, 2));
GitLab 变体
替换 slug 和参数名称:
composio execute GITLAB_GET_SINGLE_MERGE_REQUEST \
-d '{"id":"acme/app","merge_request_iid":482}'
composio execute GITLAB_CREATE_NEW_MERGE_REQUEST_NOTE \
-d '{"id":"acme/app","merge_request_iid":482,"body":"CI fix pushed as commit deadbeef"}'
故障排查
Connection required for github→composio link github- 输入格式未知 →
composio execute <SLUG> --get-schema - 日志下载量过大 → 使用
composio proxy调用原始 API 进行流式处理,并在本地通过grep搜索 - 速率限制 → 串行执行调用或降低轮询频率;对同一仓库避免使用
--parallel
完整 CLI 参考:docs.composio.dev/docs/cli
评论
支持 Markdown