code-review
Review IA du diff Angular basée sur les règles front et les leçons apprises. Met à jour .copilot/lessons.md si une nouvelle erreur bloquante est trouvée.
SKILL.mdskills/code-review/SKILL.md
GitHubCode Review Skill
Required configuration
Fichiers de référence :
.github/instructions/frontend/front-rules.instructions.md— règles de code front.copilot/lessons.md— erreurs passées connues
Available commands
/code-review
Analyse le diff main...HEAD sur les fichiers Angular et produit une review structurée.
Detailed behaviour
Step 1 — Récupérer le diff
git diff main...HEAD -- 'src/**/*.ts' 'src/**/*.html' 'src/**/*.scss'
Step 2 — Charger les fichiers de référence
- Lire
.github/instructions/frontend/front-rules.instructions.md - Lire
.copilot/lessons.md
Si .github/instructions/frontend/front-rules.instructions.md est absent, afficher ⚠️ front-rules.instructions.md introuvable — review sans règles custom.
Step 3 — Analyser le diff
Passer en revue chaque fichier modifié sur les axes suivants :
3a. Règles front (front-rules.md)
Pour chaque règle du fichier, vérifier qu'elle n'est pas violée dans le diff. Signaler toute violation avec : fichier, numéro de ligne approximatif, règle concernée.
3b. DRY
- Détecter du code logiquement dupliqué entre composants ou services
- Si détecté → suggérer extraction en service partagé, pipe, ou fonction utilitaire
3c. Clean code
- Méthode > 20 lignes → suggérer découpage avec proposition de noms de sous-méthodes
- Nommage peu explicite :
data,res,tmp,obj,item,val→ proposer un nom plus descriptif - Logique métier dans un composant → proposer de la déplacer dans un service
3d. TypeScript
anyexplicite ou implicite → proposer le type correct ou l'interface à créerascast sans commentaire justificatif → signaler- Propriétés de classe déclarées sans valeur initiale ni
!→ signaler
3e. Angular
- Subscription sans
takeUntilDestroyed()niasyncpipe → signaler - Appel HTTP direct dans un composant → signaler
ChangeDetectionStrategy.OnPushabsent sur un composant présentationnel → signalerSubjectexposé publiquement sans.asObservable()→ signaler
3f. Leçons connues (lessons.md)
Vérifier que le diff ne reproduit pas une erreur déjà listée dans lessons.md.
Step 4 — Niveaux de sévérité
Chaque problème est classé :
| Niveau | Signification |
|---|---|
[BLOQUANT] |
Viole une règle de front-rules.instructions.md ou reproduit une leçon connue — doit être corrigé avant /test-implement |
[SUGGESTION] |
Amélioration recommandée mais non bloquante |
[INFO] |
Observation sans action requise |
Step 5 — Mettre à jour .copilot/lessons.md
Si une erreur [BLOQUANT] nouvelle est identifiée (non présente dans lessons.md) :
- Vérifier qu'une leçon similaire n'existe pas déjà — ne pas dupliquer
- Ajouter une seule ligne à la liste, au format :
- `<TICKET>` — <règle en une phrase courte, max 120 caractères>
Exemples de bonnes entrées :
- `PROJ-118` — Toujours utiliser `takeUntilDestroyed()` dans les composants avec subscriptions HTTP.
- `PROJ-121` — Ne jamais retourner `any` depuis un service : créer une interface dans `models/`.
- `PROJ-130` — `ChangeDetectionStrategy.OnPush` obligatoire sur tout composant présentationnel.
Règles de rédaction :
- Une ligne = une règle actionnable
- Commencer par un verbe ou une contrainte directe
- Pas de contexte, pas d'explication — juste la règle
Step 6 — Afficher le rapport de review
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🔍 Review — <TICKET>
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📊 Résumé :
Fichiers analysés : <N>
[BLOQUANT] : <N>
[SUGGESTION] : <N>
[INFO] : <N>
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🚨 Problèmes [BLOQUANT]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
<fichier>:<ligne> — <description>
→ Règle : <règle front-rules.instructions.md ou leçon>
→ Correction : <suggestion concrète>
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
💡 [SUGGESTION]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
<fichier>:<ligne> — <description>
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ℹ️ [INFO]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
<observations>
Step 7 — Décision finale
- Si des
[BLOQUANT]existent → afficher :⛔ Des problèmes bloquants ont été trouvés. Corrige-les puis relance /code-review. - Si aucun
[BLOQUANT]→ afficher :✅ Aucun bloquant. Tu peux continuer avec /test-implement.
Error handling
| Situation | Comportement |
|---|---|
git diff vide |
Afficher ⚠️ Aucun changement détecté par rapport à main. |
front-rules.instructions.md absent |
Avertir et continuer sans règles custom |
lessons.md absent |
Créer le fichier vide avec # Lessons et continuer |