Este tutorial mostra como configurar code review usando o Cursor CLI no GitHub Actions. O workflow vai analisar pull requests, identificar problemas e publicar feedback como comentários.
Pra maioria das pessoas, a gente recomenda usar o Bugbot. O Bugbot oferece code review automatizado gerenciado, sem precisar de configuração. Essa abordagem via CLI é útil pra explorar capacidades e fazer customizações avançadas.
Revisão de código automatizada em ação, mostrando comentários em linha em um pull request

Configurar a autenticação

Configura tua chave de API e os segredos do repositório para autenticar o Cursor CLI no GitHub Actions.

Configurar permissões do agente

Cria um arquivo de configuração para controlar quais ações o agente pode executar. Isso evita operações não intencionais, como fazer push de código ou criar pull requests. Cria .cursor/cli.json na raiz do teu repositório:
{
  "permissions": {
    "deny": [
      "Shell(git push)",
      "Shell(gh pr create)",
      "Write(**)"
    ]
  }
}
Essa configuração permite que o agente leia arquivos e use o GitHub CLI para comentários, mas impede que ele faça alterações no teu repositório. Vê a referência de permissões para mais opções de configuração.

Criar o workflow do GitHub Actions

Agora vamos criar o workflow passo a passo.

Configurar o gatilho do workflow

Cria .github/workflows/cursor-code-review.yml e configura para rodar em pull requests:
name: Cursor Code Review

on:
  pull_request:
    types: [opened, synchronize, reopened, ready_for_review]

jobs:
  code-review:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      pull-requests: write
    
    steps:

Fazer checkout do repositório

Adiciona o passo de checkout para acessar o código do pull request:
- name: Checkout repository
  uses: actions/checkout@v4
  with:
    fetch-depth: 0
    ref: ${{ github.event.pull_request.head.sha }}

Instalar o Cursor CLI

Adiciona o passo de instalação do CLI:
- name: Install Cursor CLI
  run: |
    curl https://cursor.com/install -fsS | bash
    echo "$HOME/.cursor/bin" >> $GITHUB_PATH

Configurar o agente de review

Antes de implementar o passo completo de review, vamos entender a anatomia do nosso prompt de review. Esta seção descreve como queremos que o agente se comporte: Objetivo: Queremos que o agente revise o diff atual do PR e sinalize apenas problemas claros e de alta severidade; depois, deixe comentários inline bem curtos (1–2 frases) somente nas linhas alteradas, com um resumo breve no final. Isso mantém um bom equilíbrio entre sinal e ruído. Formato: Queremos comentários curtos e diretos. Usamos emojis para facilitar a leitura rápida dos comentários e queremos um resumo de alto nível do review completo no final. Envio: Quando o review terminar, queremos que o agente inclua um comentário curto com base no que foi encontrado durante o review. O agente deve enviar um único review contendo comentários inline mais um resumo conciso. Casos extremos: Precisamos lidar com:
  • Comentários existentes sendo resolvidos: o agente deve marcá-los como concluídos quando forem endereçados
  • Evitar duplicatas: o agente deve pular comentários se um feedback semelhante já existir na mesma linha ou em linhas próximas
Prompt final: O prompt completo combina todos esses requisitos de comportamento para gerar feedback focado e acionável Agora vamos implementar o passo do agente de review:
- name: Perform code review
  env:
    CURSOR_API_KEY: ${{ secrets.CURSOR_API_KEY }}
    GH_TOKEN: ${{ github.token }}
  run: |
    cursor-agent --force --model "$MODEL" --output-format=text --print "You are operating in a GitHub Actions runner performing automated code review. The gh CLI is available and authenticated via GH_TOKEN. You may comment on pull requests.
    
    Context:
    - Repo: ${{ github.repository }}
    - PR Number: ${{ github.event.pull_request.number }}
    - PR Head SHA: ${{ github.event.pull_request.head.sha }}
    - PR Base SHA: ${{ github.event.pull_request.base.sha }}
    
    Objectives:
    1) Re-check existing review comments and reply resolved when addressed
    2) Review the current PR diff and flag only clear, high-severity issues
    3) Leave very short inline comments (1-2 sentences) on changed lines only and a brief summary at the end
    
    Procedure:
    - Get existing comments: gh pr view --json comments
    - Get diff: gh pr diff
    - If a previously reported issue appears fixed by nearby changes, reply: ✅ This issue appears to be resolved by the recent changes
    - Avoid duplicates: skip if similar feedback already exists on or near the same lines
    
    Commenting rules:
    - Max 10 inline comments total; prioritize the most critical issues
    - One issue per comment; place on the exact changed line
    - Natural tone, specific and actionable; do not mention automated or high-confidence
    - Use emojis: 🚨 Critical 🔒 Security ⚡ Performance ⚠️ Logic ✅ Resolved ✨ Improvement
    
    Submission:
    - Submit one review containing inline comments plus a concise summary
    - Use only: gh pr review --comment
    - Do not use: gh pr review --approve or --request-changes"
.
├── .cursor/
│   └── cli.json
├── .github/
│   └── workflows/
│       └── cursor-code-review.yml

Testa teu revisor

Cria um pull request de teste pra verificar que o workflow funciona e que o agente publica comentários de revisão com feedback em emoji.
Pull request mostrando comentários de revisão automatizados com emojis e feedback inline em linhas específicas

Próximos passos

Agora você tem um sistema de revisão de código automatizada funcionando. Considera estas melhorias:
  • Configura workflows adicionais para corrigir falhas de CI
  • Configura níveis de revisão diferentes para branches diferentes
  • Integra com o processo de code review existente do teu time
  • Personaliza o comportamento do agente para diferentes tipos de arquivo ou diretórios