Revisão de PR + Correção Automática de CI
Gerencie revisões de PR e triagem de CI do GitHub/GitLab diretamente do terminal usando a CLI do Composio. Sem precisar alternar entre navegador, terminal e chat.
Quando Usar
- Um PR precisa de uma revisão estruturada (correção, estilo, riscos) com comentários inline.
- O CI está vermelho e você quer que o agente leia os logs, corrija o código e verifique novamente.
- Você quer um único comando que cicla: obter diff → criticar → corrigir → push → reexecutar.
Pré-requisitos
curl -fsSL https://composio.dev/install | bash
composio login
composio link github # ou: composio link gitlab
Variável de ambiente opcional para execuções não interativas: COMPOSIO_API_KEY.
Toolkits Principais
Descubra slugs com busca e fixe-os para reuso:
composio search "list pull request files" --toolkits github
composio search "download workflow logs" --toolkits github
composio search "create pr comment" --toolkits gitlab
Slugs comuns que você reutilizará:
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
Sempre confirme com composio execute <SLUG> --get-schema antes do primeiro uso.
Fluxo de Revisão
- Obter metadados do PR + diff:
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}' - Resumir áreas de risco (autenticação, migrações, APIs públicas, testes) em um corpo de revisão.
- Postar a revisão com comentários inline:
composio execute GITHUB_CREATE_A_REVIEW_FOR_A_PULL_REQUEST -d '{ "owner":"acme","repo":"app","pull_number":482, "event":"COMMENT", "body":"No geral LGTM com 2 notas bloqueantes.", "comments":[ {"path":"src/auth.ts","line":42,"body":"Falta verificação nula na session"}, {"path":"src/auth.ts","line":88,"body":"TTL do token está fixo; mover para config"} ] }'
Loop de Correção Automática de CI
- Encontrar a execução vermelha:
composio execute GITHUB_LIST_WORKFLOW_RUNS_FOR_A_REPOSITORY \ -d '{"owner":"acme","repo":"app","branch":"feat/billing","status":"failure"}' - Baixar logs:
composio execute GITHUB_DOWNLOAD_WORKFLOW_RUN_LOGS \ -d '{"owner":"acme","repo":"app","run_id":123456}' - Analisar falha → corrigir localmente (o agente escreve a correção na árvore de trabalho).
- Commit + push via
gitlocal, depois repete a etapa 1 atéconclusion=success. - Postar um comentário no PR descrevendo cada commit de correção para que o revisor humano veja o que mudou.
Arquivo de Fluxo Único
Salve como scripts/review-and-fix.ts e execute com 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));
Variante para GitLab
Troque slugs e nomes de parâmetros:
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":"Correção de CI enviada como commit deadbeef"}'
Solução de Problemas
Connection required for github→composio link github- Formato de entrada desconhecido →
composio execute <SLUG> --get-schema - Download de log enorme → faça streaming via
composio proxyna API bruta egreplocalmente - Limites de taxa → serializar chamadas ou reduzir frequência de consultas; evite
--parallelpara o mesmo repositório
Referência completa da CLI: docs.composio.dev/docs/cli