Flux de relecture PR avec Claude Code pour pré-vérifier lisibilité, exactitude et cas limites, puis générer une checklist pour le relecteur et des questions à poser.

Les revues de PR ne s'éternisent pas forcément parce que le code est « difficile ». Elles durent parce que le relecteur doit reconstituer l'intention, le risque et l'impact à partir d'un diff qui montre des changements, pas toute l'histoire.
Une petite modification peut toucher des dépendances cachées : renommer un champ et un rapport casse, changer une valeur par défaut et le comportement évolue, ajuster une condition et la gestion d'erreur change. Le temps de relecture augmente quand le relecteur doit cliquer partout pour avoir du contexte, lancer l'application en local et poser des questions de suivi juste pour comprendre ce que la PR est censée faire.
Il y a aussi un problème de comportements humains. Les gens parcourent les diffs de façon prévisible : on se concentre sur le changement « principal » et on manque les lignes ennuyeuses où se cachent des bugs (vérifications de bornes, gestion des nulls, logging, nettoyage). On a aussi tendance à lire ce qu'on s'attend à voir, donc les copier-coller ratés et les conditions inversées peuvent passer inaperçus.
Une bonne pré-relecture n'est pas un verdict. C'est une seconde paire d'yeux rapide et structurée qui indique où l'humain doit ralentir. Le meilleur rendu est :
Ce qu'elle ne doit pas faire : « approuver » la PR, inventer des exigences ou deviner le comportement d'exécution sans preuve. Si le diff n'inclut pas assez de contexte (entrées attendues, contraintes, contrats d'appelant), la pré-relecture doit le signaler et lister exactement ce qui manque.
L'aide par IA est la plus forte sur des PR de taille moyenne qui touchent la logique métier ou des refactorings où le sens peut se perdre. Elle est moins efficace quand la bonne réponse dépend d'une connaissance organisationnelle profonde (comportement legacy, particularités de performance en production, règles internes de sécurité).
Exemple : une PR qui « met à jour la pagination » cache souvent des décalages d'une page, des résultats vides et un tri décalé entre l'API et l'UI. Une pré-relecture doit faire émerger ces questions avant qu'un humain ne perde 30 minutes à les redécouvrir.
Traitez Claude comme une première passe rapide et pointilleuse, pas comme celui qui décide si la PR part en production. Le but est de faire remonter tôt : code confus, changements de comportement cachés, tests manquants et cas limites qu'on oublie quand on est proche du changement.
Donnez-lui ce dont un relecteur humain équitable aurait besoin :
Si la PR touche une zone à haut risque connue, dites-le d'emblée (auth, facturation, migrations, concurrence).
Puis demandez des sorties actionnables. Une bonne requête ressemble à :
Gardez l'humain aux commandes en forçant la clarté sur l'incertitude. Demandez à Claude d'étiqueter les constats par « certain d'après le diff » vs « nécessite confirmation », et de citer les lignes exactes qui ont déclenché chaque inquiétude.
Claude n'est utile qu'à hauteur de ce qu'on lui montre. Si vous collez un diff géant sans objectif ni contraintes, vous obtiendrez des conseils génériques et manquerez les vrais risques.
Commencez par un objectif concret et des critères de succès. Par exemple : « Cette PR ajoute un rate limiting sur le endpoint de login pour réduire les abus. Elle ne doit pas changer la forme de la réponse. Elle doit maintenir une latence moyenne sous 50 ms. »
Ensuite, incluez seulement ce qui compte. Si 20 fichiers ont changé mais que seuls 3 contiennent la logique, concentrez-vous sur ces 3. Ajoutez du contexte quand un extrait serait trompeur, comme les signatures de fonctions, les types clés ou la config qui change le comportement.
Enfin, précisez les attentes de test. Si vous voulez des tests unitaires pour des cas limites, un test d'intégration pour un chemin critique ou une vérification manuelle UI, dites-le. Si les tests manquent volontairement, indiquez pourquoi.
Un « pack de contexte » simple qui marche bien :
Une bonne relecture Claude Code fonctionne comme une boucle serrée : fournissez juste assez de contexte, obtenez des notes structurées, puis transformez-les en actions. Ça ne remplace pas les humains. Ça attrape les oublis faciles avant qu'un collègue passe beaucoup de temps à lire.
Utilisez les mêmes passes à chaque fois pour que les résultats restent prévisibles :
Après réception des notes, transformez-les en un court gate de merge :
Checklist de merge (restez concis) :
Terminez en demandant 3 à 5 questions qui forcent la clarté, par exemple « Que se passe-t-il si l'API renvoie une liste vide ? » ou « Est-ce sûr en cas de requêtes concurrentes ? »
Claude est le plus utile quand vous lui donnez une lentille fixe. Sans rubric, il commente souvent ce qui apparaît en premier (souvent des nits de style) et peut rater le cas limite risqué.
Un rubric pratique :
Quand vous demandez, exigez un paragraphe court par catégorie et demandez « problème le plus risqué en premier ». Cet ordre garde les humains concentrés.
Utilisez un prompt de base réutilisable pour homogénéiser les résultats. Collez la description de la PR, puis le diff. Si le comportement est visible par l'utilisateur, ajoutez le comportement attendu en 1 à 2 phrases.
You are doing a pre-review of a pull request.
Context
- Repo/service: <name>
- Goal of change: <1-2 sentences>
- Constraints: <perf, security, backward compatibility, etc>
Input
- PR description:
<...>
- Diff (unified diff):
<...>
Output format
1) Summary (max 4 bullets)
2) Readability notes (nits + suggested rewrites)
3) Correctness risks (what could break, and why)
4) Edge cases to test (specific scenarios)
5) Reviewer checklist (5-10 checkboxes)
6) Questions to ask the author before merge (3-7)
Rules
- Cite evidence by quoting the relevant diff lines and naming file + function/class.
- If unsure, say what info you need.
Pour les changements à haut risque (auth, paiements, permissions, migrations), ajoutez une réflexion explicite sur les échecs et le rollback :
Extra focus for this review:
- Security/privacy risks, permission bypass, data leaks
- Money/credits/accounting correctness (double-charge, idempotency)
- Migration safety (locks, backfill, down path, runtime compatibility)
- Monitoring/alerts and rollback plan
Return a “stop-ship” section listing issues that should block merge.
Pour les refactors, faites de « pas de changement de comportement » une règle stricte :
This PR is a refactor. Assume behavior must be identical.
- Flag any behavior change, even if minor.
- List invariants that must remain true.
- Point to the exact diff hunks that could change behavior.
- Suggest a minimal test plan to confirm equivalence.
Si vous voulez un rapide survol, ajoutez une limite comme « Répondre en moins de 200 mots ». Si vous voulez de la profondeur, demandez « jusqu'à 10 constats avec raisonnement ».
Les notes de Claude deviennent utiles quand vous les convertissez en une checklist courte qu'un humain peut clore. Ne répétez pas le diff. Capturez les risques et décisions.
Séparez les items en deux catégories pour éviter que le fil ne tourne en débats de préférence :
À corriger (bloque le merge)
Sympa à avoir (suivis)
Capturez aussi la préparation au déploiement : ordre de déploiement le plus sûr, quoi surveiller après la mise en production et comment annuler le changement.
Une pré-relecture n'aide que si elle se termine par un petit ensemble de questions qui forcent la clarté.
Si vous ne pouvez pas répondre clairement, suspendez le merge et réduisez le scope ou ajoutez une preuve.
La plupart des échecs sont des problèmes de process, pas des problèmes de modèle.
Si une PR ajoute un nouvel endpoint checkout, ne collez pas tout le service. Collez le handler, la validation, l'écriture DB et les changements de schéma. Puis dites : « Objectif : éviter les doubles facturations. Non-objectifs : refactorer le nommage. » Vous obtiendrez moins de commentaires et plus faciles à vérifier.
Une petite PR réaliste : ajouter un champ « display name » à un écran de paramètres. Elle touche la validation (serveur) et le texte UI (client). C'est assez petit pour raisonner, mais contient encore des endroits où des bugs se cachent.
Voici les extraits de diff que vous colleriez (plus 2 à 3 phrases de contexte comme comportement attendu et tickets liés) :
- if len(name) == 0 { return error("name required") }
+ if len(displayName) < 3 { return error("display name too short") }
+ if len(displayName) > 30 { return error("display name too long") }
- <TextInput label="Name" value={name} />
+ <TextInput label="Display name" value={displayName} helperText="Shown on your profile" />
Exemples de constats que vous voudrez recevoir :
Transformez cela en checklist :
Une relecture Claude Code marche mieux si elle se termine par quelques vérifications rapides :
Pour mesurer l'impact, suivez deux métriques simples pendant 2 à 4 semaines : le temps de revue (ouvert -> premier review significatif, et ouvert -> merged) et le rework (commits de suivi après revue, ou nombre de commentaires nécessitant des changements de code).
La standardisation bat les prompts parfaits. Choisissez un template, exigez un petit bloc de contexte (quoi change, pourquoi, comment tester) et mettez-vous d'accord sur ce que « done » signifie.
Si votre équipe construit des features via du développement conversationnel, appliquez le même flux dans Koder.ai : générez les changements, exportez le code source, puis joignez la checklist de pré-relecture à la PR pour que la relecture humaine reste concentrée sur les parties les plus risquées.