PR-Review + CI-Autofix
Steuere GitHub/GitLab PR-Reviews und CI-Triage direkt von der Shell aus mit der Composio CLI. Kein lästiges Wechseln zwischen Browser, Terminal und Chat.
Wann verwenden
- Ein PR benötigt eine strukturierte Überprüfung (Korrektheit, Stil, Risiken) mit Inline-Kommentaren.
- CI ist rot und du möchtest, dass der Agent die Logs liest, den Code patcht und erneut prüft.
- Du wünschst dir einen einzigen Befehl, der den Zyklus durchläuft: Diff holen → kritisieren → beheben → pushen → erneut ausführen.
Voraussetzungen
curl -fsSL https://composio.dev/install | bash
composio login
composio link github # oder: composio link gitlab
Optionale Umgebungsvariable für nicht-interaktive Ausführungen: COMPOSIO_API_KEY.
Kern-Toolkits
Entdecke Slugs mit der Suche und pinne sie für die Wiederverwendung:
composio search "list pull request files" --toolkits github
composio search "download workflow logs" --toolkits github
composio search "create pr comment" --toolkits gitlab
Häufig verwendete Slugs:
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
Bestätige immer vor der ersten Verwendung mit composio execute <SLUG> --get-schema.
Review-Workflow
- PR-Metadaten + Diff holen:
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}' - Risikobereiche zusammenfassen (Auth, Migrationen, öffentliche APIs, Tests) in einem Review-Text.
- Review mit Inline-Kommentaren posten:
composio execute GITHUB_CREATE_A_REVIEW_FOR_A_PULL_REQUEST -d '{ "owner":"acme","repo":"app","pull_number":482, "event":"COMMENT", "body":"Insgesamt LGTM mit 2 blocking notes.", "comments":[ {"path":"src/auth.ts","line":42,"body":"Fehlender null-Check bei Session"}, {"path":"src/auth.ts","line":88,"body":"Token-TTL ist hartcodiert; in Konfiguration auslagern"} ] }'
CI-Autofix-Schleife
- Den roten Run finden:
composio execute GITHUB_LIST_WORKFLOW_RUNS_FOR_A_REPOSITORY \ -d '{"owner":"acme","repo":"app","branch":"feat/billing","status":"failure"}' - Logs holen:
composio execute GITHUB_DOWNLOAD_WORKFLOW_RUN_LOGS \ -d '{"owner":"acme","repo":"app","run_id":123456}' - Fehler analysieren → lokal patchen (der Agent schreibt den Fix in den Arbeitsbaum).
- Commit + Push über lokales
git, dann Schritt 1 wiederholen, bisconclusion=success. - PR-Kommentar posten, der jeden Fix-Commit beschreibt, damit der menschliche Reviewer sieht, was geändert wurde.
Ein-Befehl-Workflow-Datei
Speichere als scripts/review-and-fix.ts und führe aus mit 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-Variante
Tausche Slugs und Parameternamen aus:
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 als Commit deadbeef gepusht"}'
Fehlerbehebung
Connection required for github→composio link github- Unbekannte Eingabeform →
composio execute <SLUG> --get-schema - Log-Download zu groß → streamen über
composio proxygegen die rohe API und lokalgrep - Rate-Limits → Aufrufe serialisieren oder Polling-Frequenz senken;
--parallelfür dasselbe Repository vermeiden
Vollständige CLI-Referenz: docs.composio.dev/docs/cli