Automatiser les revues de PR GitHub avec OpenClaw
Apprends a mettre en place un workflow de revue de PR automatisee avec les skills OpenClaw : integration GitHub, PR Reviewer et Conventional Commits pour des revues de code coherentes et de qualite.
Dernière mise à jour: 2026-03-31
Skills requis
Ce que tu vas construire
Un pipeline de revue de PR entierement automatise :
- Creation de PR — l'IA genere des descriptions a partir de ton historique de commits
- Revue de code — analyse automatique pour detecter les bugs, failles de securite et problemes de style
- Normalisation des commits — application du format Conventional Commits
- Feedback actionnable — commentaires de revue directement sur les lignes de code dans la PR
Une fois en place, chaque PR declenchera automatiquement une revue par IA, sans intervention manuelle.
Pourquoi automatiser les revues de code
La revue de code manuelle est indispensable, mais elle a ses limites en pratique :
- Qualite variable — chaque reviewer se concentre sur des aspects differents. L'un regarde les conventions de nommage, l'autre la gestion des erreurs. Ce qui est detecte depend de « qui review ce jour-la »
- Fatigue du reviewer — apres quelques centaines de lignes, l'attention chute nettement. Les etudes montrent qu'au-dela de 60 minutes de revue continue, l'efficacite baisse considerablement. Les bugs critiques se cachent souvent en fin de diff
- Delai d'attente — les reviewers ont leur propre travail. Une PR peut attendre des heures, voire des jours. Cela bloque l'auteur, encourage les grosses PR accumulees et genere des conflits de merge
- Probleme de passage a l'echelle — plus l'equipe grandit, plus le goulot d'etranglement s'aggrave. Les devs seniors passent de plus en plus de temps a reviewer, et les nouveaux ne connaissent pas encore assez la codebase
La revue par IA ne remplace pas les reviewers humains — elle gere les verifications systematiques (patterns de securite, bugs courants, violations de style) pour que les humains puissent se concentrer sur l'architecture, les choix de design et la logique metier. C'est un premier passage qui releve le niveau de qualite de base avant meme qu'un humain n'ouvre la PR.
Prerequis
Avant de commencer, assure-toi d'avoir :
- OpenClaw installe et configure (Guide de demarrage)
- GitHub CLI (
gh) installe et authentifie (gh auth login) - Un depot GitHub pour tester (un projet personnel suffit)
- Node.js 18+
Etape 1 : Installer les Skills necessaires
Installe les trois Skills dans l'ordre :
# 1. Integration GitHub (base) npx clawhub@latest install github # 2. PR Reviewer (analyse de code) npx clawhub@latest install pr-reviewer # 3. Conventional Commits (formatage des commits) npx clawhub@latest install conventional-commits
Verifie l'installation :
clawhub list
Les trois Skills doivent apparaitre comme installed.
Etape 2 : Configurer l'authentification GitHub
Le Skill GitHub a besoin d'un Personal Access Token avec les scopes suivants :
repo— acces complet au depotread:org— lecture des membres de l'organisation (optionnel, pour les depots d'organisation)
Si tu t'es deja authentifie avec gh auth login, le Skill utilisera tes identifiants existants. Sinon :
# Verifier le statut d'authentification gh auth status # Se connecter si necessaire gh auth login
Etape 3 : Configurer PR Reviewer
Le Skill PR Reviewer fonctionne directement, mais tu peux personnaliser son comportement :
# Voir la configuration par defaut clawhub inspect pr-reviewer
Options de configuration principales :
- Profondeur de revue :
quick(survol) outhorough(analyse en profondeur) - Domaines de focus : securite, performance, style, bugs, ou tous
- Commentaire automatique : poster ou non les commentaires directement sur la PR
Etape 4 : Creer ta premiere revue automatisee
Testons le workflow avec une vraie PR :
4.1 Creer une branche
git checkout -b feature/test-ai-review
4.2 Ecrire du code
Modifie un fichier dans ton projet. Pour tester, essaie d'introduire des problemes courants que le reviewer peut detecter :
Await manquant (bug asynchrone) :
// Bug : await manquant sur un appel asynchrone
function getUserData(userId) {
const response = fetch(`/api/users/${userId}`); // Await manquant
return response.json(); // TypeError: response.json is not a function
}
Injection SQL :
# Securite : l'input utilisateur est directement interpole dans la requete SQL
def get_user(user_id):
query = f"SELECT * FROM users WHERE id = '{user_id}'" # Risque d'injection SQL
return db.execute(query)
Secret en dur :
// Securite : cle API exposee dans le code source
const stripe = require('stripe')('sk_live_abc123secretkey');
Probleme de requete N+1 :
# Performance : requete N+1 — une requete par commande
def get_orders_with_items(user_id):
orders = Order.objects.filter(user_id=user_id)
for order in orders:
order.items = OrderItem.objects.filter(order_id=order.id) # N+1 !
return orders
4.3 Commiter avec Conventional Commits
Pas besoin d'ecrire le message de commit a la main, laisse OpenClaw le generer :
git add . # OpenClaw genere un message de commit au format Conventional Commits # ex. "feat(api): add getUserData function for user data retrieval"
4.4 Creer et reviewer la PR
# OpenClaw cree la PR avec une description generee par IA # Puis PR Reviewer analyse automatiquement le diff
En quelques secondes, tu verras :
- Une description de PR bien formatee resumant tes changements
- Des commentaires de revue sur les lignes de code concernees
- Un commentaire de synthese avec l'evaluation globale et les suggestions
Exemple de commentaires de revue :
🔒 Probleme de securite (ligne 14, auth.py) :
L'input utilisateur est directement interpole dans la requete SQL.
Risque d'injection SQL.
Correction suggeree : utiliser des requetes parametrees.
- query = f"SELECT * FROM users WHERE id = '{user_id}'"
+ query = "SELECT * FROM users WHERE id = %s"
+ return db.execute(query, (user_id,))
⚡ Probleme de performance (ligne 8, orders.py) :
Requete N+1 detectee — OrderItem.objects.filter() est appele
une fois par commande dans une boucle. Utilise select_related() ou
prefetch_related() pour regrouper en une seule requete.
- orders = Order.objects.filter(user_id=user_id)
+ orders = Order.objects.filter(user_id=user_id).prefetch_related('items')
🐛 Bug (ligne 3, api.js) :
fetch() retourne une Promise mais n'est pas awaite.
response.json() echouera car response est une
Promise en attente, pas un objet Response.
- const response = fetch(`/api/users/${userId}`);
+ const response = await fetch(`/api/users/${userId}`);
Etape 5 : Personnaliser le workflow de revue
Focus securite
Pour les depots sensibles en matiere de securite, configure PR Reviewer pour prioriser les verifications de securite :
- Patterns d'injection SQL
- Identifiants ou cles API en dur
- Gestion de donnees non securisee (input non valide, absence de filtrage)
- Vulnerabilites de dependances
- Failles XSS dans le code frontend
- Patterns de deserialisation non securises
Revue orientee performance
Pour les services sensibles a la performance, oriente le reviewer vers les patterns de performance. Dans les projets React par exemple, le reviewer detecte les re-renders inutiles :
// Performance : nouvelle reference objet a chaque render, provoquant des re-renders enfants
function ParentComponent({ items }) {
return (
<ChildComponent
style={{ margin: 10 }} // Nouvel objet a chaque render
onClick={() => doSomething()} // Nouvelle fonction a chaque render
/>
);
}
Configuration pour toute l'equipe
Partage la configuration au sein de ton equipe :
- Exporte ta configuration dans un repertoire
.openclaw/du depot - Commite dans le depot
- Les membres de l'equipe installent avec la meme config — les Skills detectent automatiquement la configuration au niveau du projet
Avance : Guider le focus de la revue
Tu peux ajuster la direction de la revue du PR Reviewer via des instructions en langage naturel.
Par langage
Lors de la revue, indique a l'Agent ce qu'il doit surveiller :
- Python : verifier les blocs
except:nus, les types hints manquants, les requetes N+1 du Django ORM - JavaScript/TypeScript : signaler les
console.logoublies, lesawaitmanquants, les secrets en dur - Rust : signaler les
.unwrap()en code de production, suggerer une gestion correcte desResult
Par repertoire
Applique differents niveaux de scrutin par repertoire :
- Logique metier (
src/core/) — revue complete couvrant securite, bugs et performance - Tests (
src/tests/) — verification rapide de la correction - Documentation (
docs/) — revue legere du style - Scripts (
scripts/) — focus securite et bugs
Patterns personnalises
Demande au reviewer de signaler des patterns specifiques au projet :
- Acces direct a la base de donnees dans les routes API au lieu d'utiliser la couche repository
- Composants de page sans error boundary
- Endpoints API sans rate limiting
Integration CI/CD
Pour automatiser les revues sur chaque PR, integre PR Reviewer dans ton pipeline CI/CD.
GitHub Actions
Cree un fichier workflow a .github/workflows/ai-review.yml :
name: AI PR Review
on:
pull_request:
types: [opened, synchronize]
jobs:
ai-review:
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-node@v4
with:
node-version: '20'
- name: Install OpenClaw and skills
run: |
npm install -g clawhub@latest
clawhub install pr-reviewer
- name: Run AI Review
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
OPENCLAW_API_KEY: ${{ secrets.OPENCLAW_API_KEY }}
run: |
clawhub run pr-reviewer \
--pr ${{ github.event.pull_request.number }} \
--repo ${{ github.repository }} \
--auto-comment
Controler les conditions de declenchement
Limite la revue IA a certaines conditions pour reduire les couts :
on:
pull_request:
types: [opened, synchronize]
paths-ignore:
- '*.md'
- 'docs/**'
- '.github/**'
Ou exige un label avant de declencher la revue :
- name: Check for review label
if: contains(github.event.pull_request.labels.*.name, 'ai-review')
run: clawhub run pr-reviewer --pr ${{ github.event.pull_request.number }}
Autres plateformes CI
La meme approche fonctionne sur toute plateforme CI supportant Node.js. Les etapes cles :
- Installer
clawhubet le Skillpr-reviewer - Definir
OPENCLAW_API_KEYcomme variable d'environnement - Passer le numero de PR et les infos du depot
- S'assurer que le bot CI a les droits d'ecriture sur les pull requests
Resultats concrets
Les equipes utilisant ce workflow constatent generalement :
- Delai de traitement des PR reduit de 40 % — l'IA traite les problemes evidents avant la revue humaine
- Qualite de revue constante — chaque PR recoit la meme analyse rigoureuse
- Historique de commits plus propre — les Conventional Commits rendent les changelogs automatiques
- Moins de bugs en production — l'IA detecte des problemes que les humains peuvent manquer
Resolution de problemes
« GitHub CLI not found »
Assure-toi que gh est installe et dans ton PATH :
# macOS brew install gh # Linux sudo apt install gh # Windows winget install GitHub.cli
« Permission denied » a la creation de PR
Verifie les scopes de ton token :
gh auth status
Assure-toi que le scope repo est inclus. Reauthentifie-toi si necessaire :
gh auth login --scopes repo
PR Reviewer ne commente pas
Verifie que le Skill est installe et configure :
clawhub inspect pr-reviewer
Confirme que ton fournisseur d'IA OpenClaw est configure et dispose de credits disponibles.
Questions Fréquentes
Oui. Le Skill GitHub utilise la CLI `gh`, qui supporte pleinement GitHub Enterprise Server et GitHub Enterprise Cloud. Configure ton hote d'entreprise avec `gh auth login --hostname github.tonentreprise.com`. Une fois authentifie, tous les Skills GitHub d'OpenClaw — y compris PR Reviewer — fonctionnent exactement comme avec github.com. Aucune configuration supplementaire n'est necessaire.
Le Skill GitHub est specifique a GitHub, mais PR Reviewer et Conventional Commits fonctionnent avec n'importe quelle plateforme Git. Pour GitLab, installe le Skill GitLab et passe des Merge Request IDs au lieu de numeros de PR. Bitbucket fonctionne de la meme maniere avec son propre Skill. La logique de revue est agnostique de la plateforme — seule la couche d'integration qui poste les commentaires differe.
La revue IA complete la revue humaine plutot que de la remplacer. Elle excelle dans les verifications systematiques — detecter les failles de securite, les patterns de bugs courants, les violations de style et les anti-patterns de performance de maniere constante, sans fatigue. Mais elle n'evalue pas les decisions d'architecture de haut niveau, la correction de la logique metier, ni si l'approche globale est la bonne. Le meilleur workflow utilise la revue IA comme premier passage pour les verifications mecaniques, liberant les reviewers humains pour le design et l'intention.
Le cout depend de ton fournisseur d'IA et de la taille du diff analyse. Une revue de PR typique analysant un diff de 500 lignes coute environ 0,01 a 0,05 $ chez la plupart des fournisseurs. Les diffs plus gros (1000+ lignes) peuvent couter jusqu'a 0,10-0,15 $. Tu peux controler les couts en reglant la profondeur de revue sur `quick` pour les chemins non critiques et en utilisant des filtres de chemin pour ignorer les fichiers generes, les repertoires vendor et la documentation.
Oui. PR Reviewer supporte une configuration flexible des patterns de fichiers. Tu peux exclure des fichiers par pattern glob (ex. `**/*.generated.ts`, `vendor/**`), limiter les revues a certains repertoires, ou definir differentes profondeurs par chemin. Configure cela dans ton fichier `.openclaw/pr-reviewer.yml`. La plupart des equipes excluent les fichiers auto-generes, les fichiers lock et les dependances vendor pour concentrer les revues sur le code reellement ecrit par l'equipe.
PR Reviewer traite les gros diffs en les decoupant en blocs logiques analyses individuellement. Pour les PR de plus de 1000 lignes, il priorise les fichiers a haut risque — les fichiers touchant a l'authentification, aux requetes de base de donnees, aux endpoints API et a la logique sensible en matiere de securite sont revus a profondeur maximale. Les fichiers a risque moindre comme les tests et les changements de configuration recoivent un passage plus leger. Tu peux aussi configurer un seuil de lignes qui declenche un avertissement suggerant a l'auteur de decouper la PR.
Oui. PR Reviewer supporte tous les langages majeurs : JavaScript, TypeScript, Python, Go, Rust, Java, C#, Ruby, PHP et plus encore. Il applique automatiquement des regles specifiques au langage — par exemple, verifier les `.unwrap()` en Rust ou les `await` manquants en JavaScript asynchrone. Tu peux aussi definir des regles personnalisees par langage dans ton fichier de configuration. Le reviewer detecte le langage a partir des extensions de fichier sans aucune configuration manuelle.
La revue IA et les linters ont des objectifs complementaires et fonctionnent bien ensemble. Les linters appliquent des regles deterministes (formatage, ordre des imports, variables non utilisees) tandis que la revue IA detecte des problemes semantiques (bugs logiques, patterns de securite, problemes de performance) que les outils bases sur des regles ne peuvent pas detecter. En CI, lance d'abord ton linter pour les problemes de formatage, puis la revue IA pour l'analyse en profondeur. PR Reviewer connait les regles courantes des linters et evite de dupliquer les retours sur les memes problemes.
OpenClaw suit les metriques de revue de ton depot dans le temps. Lance `clawhub stats pr-reviewer` pour voir un resume des problemes trouves par categorie, combien ont ete resolus avant le merge, et les patterns recurrents dans ta codebase. Cela aide a identifier les problemes repetitifs — par exemple, si les alertes d'injection SQL reviennent souvent, c'est le signe qu'il faut former l'equipe ou ameliorer les abstractions ORM. Tu peux exporter ces metriques en JSON pour les integrer a des tableaux de bord ou des outils de reporting d'equipe.
Oui. Tu peux definir des templates de revue qui appliquent des regles differentes selon les labels de la PR, les conventions de nommage des branches, ou les chemins de fichiers modifies. Par exemple, une branche `hotfix/*` pourrait avoir une revue axee securite a profondeur maximale, tandis qu'une branche `docs/*` ne recoit qu'une verification de style legere. Definis les templates dans ton `.openclaw/pr-reviewer.yml` sous la cle `templates`, et PR Reviewer selectionne automatiquement le template correspondant. Les changements critiques beneficient ainsi d'un examen approfondi sans ralentir les mises a jour a faible risque.
Cas d'utilisation associés
Automatisation des Tâches Jira
Automatisez le tri des issues, les mises à jour de statut, les rapports de sprint et la liaison entre Jira, Linear et GitHub.
Digest Quotidien d'Actualités
Créez un briefing d'actualités automatisé : recherchez vos sujets, résumez les articles clés et recevez un digest personnalisé chaque jour.
Créer et Évaluer des Skills
Créez des skills OpenClaw personnalisés, évaluez les skills communautaires pour leur sécurité et qualité, et décomposez les tâches complexes en chaînes de skills réutilisables.