Ce tutoriel te montre comment configurer la revue de code avec Cursor CLI dans GitHub Actions. Le workflow analysera les pull requests, identifiera les problèmes et publiera des commentaires.
Pour la plupart des utilisateurs, on recommande d’utiliser plutôt Bugbot. Bugbot fournit une revue de code automatisée gérée, sans configuration requise. Cette approche via la CLI est utile pour explorer les capacités et pour des personnalisations avancées.
Revue de code automatisée en action avec des commentaires en ligne sur une pull request

Configurer l’authentification

Configure ta clé d’API et les secrets du dépôt pour authentifier Cursor CLI dans GitHub Actions.

Configurer les autorisations de l’agent

Crée un fichier de configuration pour contrôler les actions que l’agent peut effectuer. Ça évite des opérations involontaires comme pousser du code ou créer des pull requests. Crée .cursor/cli.json à la racine de ton dépôt :
{
  "permissions": {
    "deny": [
      "Shell(git push)",
      "Shell(gh pr create)",
      "Write(**)"
    ]
  }
}
Cette configuration permet à l’agent de lire des fichiers et d’utiliser la CLI GitHub pour les commentaires, tout en l’empêchant de modifier ton dépôt. Consulte la référence des autorisations pour plus d’options de configuration.

Créer le workflow GitHub Actions

Construisons maintenant le workflow étape par étape.

Configurer le déclencheur du workflow

Crée .github/workflows/cursor-code-review.yml et configure-le pour qu’il s’exécute sur les 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:

Récupérer le dépôt

Ajoute l’étape de checkout pour accéder au code de la pull request :
- name: Checkout repository
  uses: actions/checkout@v4
  with:
    fetch-depth: 0
    ref: ${{ github.event.pull_request.head.sha }}

Installer le CLI Cursor

Ajoute l’étape d’installation du CLI :
- name: Install Cursor CLI
  run: |
    curl https://cursor.com/install -fsS | bash
    echo "$HOME/.cursor/bin" >> $GITHUB_PATH

Configurer l’agent de review

Avant d’implémenter l’étape de review complète, voyons l’anatomie de notre prompt de review. Cette section décrit le comportement attendu de l’agent : Objectif : On veut que l’agent examine le diff actuel de la PR et ne signale que les problèmes clairs et sévères, puis laisse de très courts commentaires inline (1-2 phrases) uniquement sur les lignes modifiées, avec un bref résumé à la fin. Ça maintient un bon ratio signal/bruit. Format : On veut des commentaires courts et directs. On utilise des emojis pour faciliter le scan des commentaires, et on veut un résumé de haut niveau de la review complète à la fin. Soumission : Quand la review est terminée, on veut que l’agent inclue un court commentaire basé sur ce qui a été trouvé pendant la review. L’agent doit soumettre une seule review contenant des commentaires inline plus un résumé concis. Cas limites : On doit gérer :
  • Commentaires existants résolus : l’agent doit les marquer comme résolus lorsqu’ils sont adressés
  • Éviter les doublons : l’agent doit s’abstenir de commenter si un retour similaire existe déjà sur ou près des mêmes lignes
Prompt final : Le prompt complet combine toutes ces exigences comportementales pour produire un feedback ciblé et actionnable Maintenant, implémente l’étape de l’agent 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

Teste ton reviewer

Crée une pull request de test pour vérifier que le workflow fonctionne et que l’agent publie des commentaires de review avec des émojis.
Pull request affichant des commentaires de review automatisés avec des émojis et des retours en ligne sur des lignes spécifiques

Prochaines étapes

Tu as maintenant un système d’examen de code automatisé opérationnel. Pense à ces améliorations :
  • Mettre en place des workflows supplémentaires pour corriger les échecs CI
  • Configurer différents niveaux de revue selon les branches
  • L’intégrer au processus de revue de code existant de ton équipe
  • Personnaliser le comportement de l’agent selon les types de fichiers ou les répertoires