Saltar al contenido principal
Este tutorial te muestra cómo configurar el code review usando Cursor CLI en GitHub Actions. El flujo de trabajo analizará los pull requests, identificará problemas y publicará comentarios como respuestas.
Para la mayoría de usuarios, te recomendamos usar Bugbot. Bugbot ofrece code review automatizado y gestionado sin necesidad de configuración. Este enfoque con la CLI es útil para explorar capacidades y para personalización avanzada.
Revisión de código automatizada en acción con comentarios en línea en una pull request

Configura la autenticación

Configura tu API key y los secretos del repositorio para autenticar Cursor CLI en GitHub Actions.

Configura los permisos del agente

Crea un archivo de configuración para controlar qué acciones puede realizar el agente. Esto evita operaciones no deseadas, como hacer push de código o crear pull requests. Crea .cursor/cli.json en la raíz de tu repositorio:
{
  "permissions": {
    "deny": [
      "Shell(git push)",
      "Shell(gh pr create)",
      "Escribir(**)"
    ]
  }
}
Esta configuración permite que el agente lea archivos y use la CLI de GitHub para comentarios, pero impide que haga cambios en tu repositorio. Consulta la referencia de permisos para ver más opciones de configuración.

Crea el flujo de trabajo de GitHub Actions

Ahora vamos a armar el flujo de trabajo paso a paso.

Configura el disparador del flujo de trabajo

Crea .github/workflows/cursor-code-review.yml y configúralo para ejecutarse en pull requests:
name: Revisión de código de Cursor

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

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

Revisa el repositorio

Agrega el paso de checkout para acceder al código del pull request:
- name: Checkout del repositorio
  uses: actions/checkout@v4
  with:
    fetch-depth: 0
    ref: ${{ github.event.pull_request.head.sha }}

Instala la CLI de Cursor

Agrega el paso de instalación de la CLI:
- name: Instalar Cursor CLI
  run: |
    curl https://cursor.com/install -fsS | bash
    echo "$HOME/.cursor/bin" >> $GITHUB_PATH

Configura el agente de revisión

Antes de implementar el paso de revisión completo, entendamos la anatomía de nuestro prompt de revisión. Esta sección describe cómo queremos que se comporte el agente: Objetivo: Queremos que el agente revise el diff del PR actual y marque solo problemas claros y de alta severidad, luego deje comentarios en línea muy cortos (1-2 frases) solo en líneas modificadas, con un breve resumen al final. Esto mantiene una buena relación señal-ruido. Formato: Queremos comentarios breves y directos. Usamos emojis para facilitar el escaneo de los comentarios y queremos un resumen de alto nivel de la revisión completa al final. Envío: Cuando termine la revisión, queremos que el agente incluya un comentario corto basado en lo encontrado durante la revisión. El agente debe enviar una sola revisión que contenga comentarios en línea más un resumen conciso. Casos límite: Necesitamos manejar:
  • Comentarios existentes resueltos: el agente debe marcarlos como listos cuando se aborden
  • Evitar duplicados: el agente debe omitir comentar si ya existe feedback similar en o cerca de las mismas líneas
Prompt final: El prompt completo combina todos estos requisitos de comportamiento para crear feedback enfocado y accionable Ahora implementemos el paso del agente de revisión:
- name: Realizar revisión de código
  env:
    CURSOR_API_KEY: ${{ secrets.CURSOR_API_KEY }}
    GH_TOKEN: ${{ github.token }}
  run: |
    cursor-agent --force --model "$MODEL" --output-format=text --print "Estás operando en un runner de GitHub Actions realizando una revisión de código automatizada. La CLI de gh está disponible y autenticada mediante GH_TOKEN. Podés comentar en pull requests.
    
    Contexto:
    - 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 }}
    
    Objetivos:
    1) Volver a revisar los comentarios existentes y responder resuelto cuando estén atendidos
    2) Revisar el diff actual del PR y señalar solo problemas claros y de alta severidad
    3) Dejar comentarios en línea muy cortos (1-2 frases) solo en líneas modificadas y un resumen breve al final
    
    Procedimiento:
    - Obtener comentarios existentes: gh pr view --json comments
    - Obtener diff: gh pr diff
    - Si un problema reportado anteriormente parece solucionado por cambios cercanos, responder: ✅ Este problema parece estar resuelto por los cambios recientes
    - Evitar duplicados: omitir si ya existe feedback similar en o cerca de las mismas líneas
    
    Reglas para comentar:
    - Máximo 10 comentarios en línea en total; priorizar los problemas más críticos
    - Un problema por comentario; colocarlo en la línea exacta modificada
    - Tono natural, específico y accionable; no mencionar automatización ni alta confianza
    - Usar emojis: 🚨 Crítico 🔒 Seguridad ⚡ Rendimiento ⚠️ Lógica ✅ Resuelto ✨ Mejora
    
    Envío:
    - Enviar una sola revisión que contenga comentarios en línea más un resumen conciso
    - Usar solo: gh pr review --comment
    - No usar: gh pr review --approve o --request-changes"
.
├── .cursor/
│   └── cli.json
├── .github/
│   └── workflows/
│       └── cursor-code-review.yml

Prueba tu reviewer

Crea un pull request de prueba para verificar que el flujo de trabajo funcione y que el agente publique comentarios de revisión con emojis y feedback.
Pull request que muestra comentarios de revisión automatizados con emojis y feedback en línea en líneas específicas

Próximos pasos

Ahora tienes un sistema de revisión de código automatizada en marcha. Considera estas mejoras:
  • Configura flujos de trabajo adicionales para corregir fallos de CI
  • Configura distintos niveles de revisión para diferentes ramas
  • Intégralo con el proceso de revisión de código existente de tu equipo
  • Personaliza el comportamiento del agente para distintos tipos de archivos o directorios