بنقرة واحدة
pr-review-ci-fix
// Automated PR review and CI auto-fix for GitHub and GitLab using the Composio CLI. Pulls diffs, fetches failing job logs, posts review comments, and loops fix commits until checks go green.
// Automated PR review and CI auto-fix for GitHub and GitLab using the Composio CLI. Pulls diffs, fetches failing job logs, posts review comments, and loops fix commits until checks go green.
Install Codex skills into $CODEX_HOME/skills from a curated list or a GitHub repo path. Use when a user asks to list installable skills, install a curated skill, or install a skill from another repo (including private repos).
Run large codebase migrations and multi-file refactors. Uses the Composio CLI to coordinate issue tracking, batched PRs, and CI verification while the agent executes the transforms locally across hundreds of files.
Query and filter Datadog logs from the shell using the Composio CLI. Run scoped log searches, pivot across services/environments, and export structured JSON for downstream agents instead of click-driving the Datadog UI.
Run end-to-end deploy pipelines across Stripe, Supabase, and Vercel using the Composio CLI. Promote Stripe products, push Supabase migrations, ship Vercel deployments, and verify with post-deploy checks — all from one script.
Triage Linear or Jira backlogs and run bug sweeps via the Composio CLI. Bulk-fetch issues, dedupe, relabel, reassign, and post summaries — all from the shell without clicking through the UI.
Diagnose Sentry issues without copy-pasting stack traces. Uses the Composio CLI to pull issue details, events, breadcrumbs, and suspect commits, then maps the frames to local source so the agent can propose a fix directly.
| name | pr-review-ci-fix |
| description | Automated PR review and CI auto-fix for GitHub and GitLab using the Composio CLI. Pulls diffs, fetches failing job logs, posts review comments, and loops fix commits until checks go green. |
| metadata | {"short-description":"Automated PR review + CI auto-fix across GitHub/GitLab"} |
Drive GitHub/GitLab PR reviews and CI triage from the shell using the Composio CLI. No tab-switching between browser, terminal, and chat.
curl -fsSL https://composio.dev/install | bash
composio login
composio link github # or: composio link gitlab
Optional env for non-interactive runs: COMPOSIO_API_KEY.
Discover slugs with search, then pin them for reuse:
composio search "list pull request files" --toolkits github
composio search "download workflow logs" --toolkits github
composio search "create pr comment" --toolkits gitlab
Common slugs you'll reuse:
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_NOTEAlways confirm via composio execute <SLUG> --get-schema before first use.
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}'
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"}
]
}'
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}'
git, then re-poll step 1 until conclusion=success.Save as scripts/review-and-fix.ts and run with 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));
Swap slugs and param names:
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 githubcomposio execute <SLUG> --get-schemacomposio proxy against the raw API and grep locally--parallel for the same repoFull CLI reference: docs.composio.dev/docs/cli