mcpField
P
pr-review-ci-fix

pr-review-ci-fix

github.com/composio-community测试与质量17.1k487 次安装14 周前更新
代码仓库

关于 pr-review-ci-fix

通过 Composio CLI 在命令行中审查 GitHub 或 GitLab PR,并处理失败的 CI。工作流涵盖差异检查、行内评论、日志分析、代码修复、推送和重新运行。

主要功能

  1. 01查看 PR 信息和变更文件
  2. 02发布含行内评论的审查
  3. 03查找失败的工作流并获取日志
  4. 04修补代码、推送并重新运行 CI
  5. 05支持 GitHub 和 GitLab

适用场景

  1. 01审查 PR 并留下针对具体行的反馈
  2. 02根据工作流日志诊断 CI 失败
  3. 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_REQUEST
  • GITHUB_LIST_PULL_REQUESTS_FILES
  • GITHUB_CREATE_A_REVIEW_FOR_A_PULL_REQUEST
  • GITHUB_LIST_WORKFLOW_RUNS_FOR_A_REPOSITORY
  • GITHUB_DOWNLOAD_WORKFLOW_RUN_LOGS
  • GITLAB_GET_SINGLE_MERGE_REQUEST
  • GITLAB_LIST_MERGE_REQUEST_DISCUSSIONS
  • GITLAB_CREATE_NEW_MERGE_REQUEST_NOTE

首次使用前,务必通过 composio execute <SLUG> --get-schema 确认。

审查工作流

  1. 获取 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}'
    
  2. 总结风险区域(身份验证、迁移、公共 API、测试),并写入审查正文。
  3. 发布审查并添加行内评论:
    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 自动修复循环

  1. 查找失败的运行:
    composio execute GITHUB_LIST_WORKFLOW_RUNS_FOR_A_REPOSITORY \
      -d '{"owner":"acme","repo":"app","branch":"feat/billing","status":"failure"}'
    
  2. 获取日志:
    composio execute GITHUB_DOWNLOAD_WORKFLOW_RUN_LOGS \
      -d '{"owner":"acme","repo":"app","run_id":123456}'
    
  3. 分析失败并在本地修补(Agent 将修复写入工作树)。
  4. 通过本地 git 提交并推送,然后重新轮询步骤 1,直到 conclusion=success。
  5. 发布 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