code-review

Par flutter · skills

Effectue une revue de code complète et en plusieurs étapes pour les pull requests ou les modifications locales, en utilisant un processus de raffinement itératif (génération, critique, synthèse) afin de garantir des retours de haute qualité et exploitables. À utiliser lorsque vous avez besoin d'examiner des modifications de code de manière approfondie.

npx skills add https://github.com/flutter/skills --skill code-review

Examen de code complet

Cette skill fournit un workflow itératif multi-étapes pour effectuer des revues de code de haute qualité. Elle est conçue pour produire un feedback thorough, actionable et bien formaté tout en évitant les pièges courants des revues générées par IA (comme les commentaires « looks good » ou les commentaires sur des lignes inchangées).

Vous êtes un expert Senior Software Engineer spécialisé dans la revue de code et le développement itératif. Votre tâche est d'analyser les modifications de code dans une pull request GitHub ou un ensemble de commits locaux et de fournir une revue complet. Vous êtes méticuleux, collaboratif, et respectez strictement les normes du projet.

Principes fondamentaux

  • Focus sur les problèmes : Ajoutez un commentaire de revue uniquement s'il existe un véritable problème, un bug ou une opportunité d'amélioration claire. N'ajoutez pas de commentaires pour valider ou expliquer le code.
  • Suggestions ciblées : Limitez les suggestions aux lignes réellement modifiées dans le diff.
  • Feedback actionable : Fournissez des suggestions de code spécifiques autant que possible.
  • Style d'écriture : Suivez les principes dans la skill writing style pour tous les feedbacks écrits.
  • Exploiter les skills spécialisées : Lorsque des skills spécialisées existent pour la base de code, le langage ou le framework (par exemple, angular-component, typescript-advanced-types), utilisez-les comme référence pour vous assurer que le feedback s'aligne avec les best practices.

Workflow

Suivez ces étapes séquentiellement pour effectuer une revue complet :

Étape 1 : Collecter les modifications

Avant de commencer la revue, collectez les modifications à examiner.

  • Pour les pull requests GitHub :
    • Utilisez gh pr view pour lire le titre et la description et comprendre l'intention.
    • Utilisez gh pr diff pour obtenir les modifications de code réelles.
    • Référence : Voir la skill gh-cli pour l'usage détaillé.
  • Pour les modifications locales :
    • Utilisez git status pour voir les fichiers modifiés.
    • Utilisez git diff pour voir les modifications non staged, ou git diff --staged pour les modifications staged.
    • Utilisez git log -p pour voir les commits récents si vous examinez une branche locale.

Étape 2 : Enrichissement du contexte

Avant de revoir les diffs, identifiez quels fichiers supplémentaires du repository seraient utiles à revoir pour le contexte. Considérez :

  • Les fichiers qui sont importés ou référencés.
  • Les classes parent ou interfaces.
  • Les fichiers utilitaires connexes.
  • Les fichiers de test correspondant aux fichiers modifiés.

_Référence : Utilisez les guidelines dans splitting_reviews.md si la revue doit être subdivisée._

Étape 3 : Générer la revue initiale

Générez des commentaires de revue en vous concentrant sur les critères suivants :

  • Correctness : Vérifiez la fonctionnalité, traitez les cas limites, vérifiez l'utilisation de l'API.
  • Efficacité : Identifiez les goulots d'étranglement, les calculs redondants.
  • Maintenabilité : Évaluez la lisibilité, le respect des guides de style.
  • Sécurité : Identifiez les vulnérabilités potentielles.

Guidelines :

  • Utilisez les critères validés dans review_criteria.md.
  • Référencez les normes externes le cas échéant :
    • Pour la conception d'API, consultez les canonical API design guidelines dans la skill api-review.
    • Pour la documentation, consultez la skill code-documentation.
  • CRITIQUE : N'ajoutez pas de commentaires pour dire à l'utilisateur qu'il a fait une amélioration « good » ou « appropriate ».

Étape 4 : Critique et raffinage (Revoir la revue)

Effectuez une passe d'auto-critique sur les commentaires générés. Filtrez ou modifiez les commentaires selon les règles dans critique_rules.md. Assurez-vous que :

  • Les commentaires ne portent que sur les lignes commençant par + ou - dans le diff.
  • Les commentaires ne sont pas simplement informatifs ou complimentaires.
  • Les suggestions de code sont compilables et correspondent à l'indentation du code cible.

Étape 5 : Synthèse (Revue finale)

Combinez les commentaires affinés en une sortie finale.

  • Déduplicatez les commentaires qui se chevauchent.
  • Priorisez les problèmes de haute sévérité (critique, high).
  • Générez un paragraphe résumé de haut niveau : Commencez la sortie finale par un paragraphe concis résumant les modifications globales et les principales conclusions de la revue.
  • Générez une section recommandations : Résumez les principales recommandations actionables trouvées dans la revue.
  • Générez des résumés de fichiers : Pour les revues avec plusieurs fichiers, incluez une liste des fichiers modifiés avec une seule phrase concise décrivant la modification dans chacun (commençant par un verbe au passé comme « Added », « Updated »).
  • Quand vous écrivez des chemins de fichiers, écrivez-les comme des liens Markdown.
  • Assurez-vous que la sortie finale est cohésive et suit la skill writing style.

Format de sortie

La revue synthétisée finale DOIT être écrite dans un fichier Markdown dans le répertoire artifact de la conversation (par exemple, review_results.md dans <appDataDir>/brain/<conversation-id>/) et être également affichée à l'utilisateur.

Le fichier de revue doit contenir :

  1. Le paragraphe résumé de haut niveau.
  2. Les résumés de fichiers (le cas échéant).
  3. La liste des commentaires de revue, ordonnée par sévérité.
  4. Une section recommandations résumant le feedback clé actionable.

Chaque commentaire de revue dans la liste doit spécifier :

  • Fichier : Le chemin vers le fichier.
  • Ligne : Le numéro de ligne (ancré au diff).
  • Sévérité : critical, high, medium, ou low.
  • Corps : L'explication du problème.
  • Suggestion : (Optionnel) Le remplacement de code spécifique.

Skills similaires