09.03.01 — Skills Review#

Lectures statiques, remontent des constats. Une grande famille. Permet à l’IA d’effectuer de la revue sur son projet de manière systématique.

Listing (potentiellement non exhaustif)#

SkillCible
review-spec-gapsQuestions de clarification sur les SFD
review-watcher-misuseVérifie le principe « négatif uniquement » de watcher.report(...)
review-compartmentalisation-leaksDétecte URLs, sélecteurs, nombres magiques aux mauvais endroits
review-dead-codeDétecte connecteurs / POMs / scénarios / suites / fragments / constantes non utilisés
review-reportClassifie chaque FAIL / SKIP d’une exécution
review-type-ignoreAudite les # type: ignore (sont-ils justifiés ?)
review-match-candidatesIdentifie les endroits où un match (Python, pattern matching) pourrait être utilisé plutôt que des if elif elif if if elif
review-unverified-transitionsVérifie qu’à chaque transition de page, il y a un verify
review-submit-dispatchersAudite les méthodes de confirmation de saisie (clic vs touche entrée…)
review-comment-driftDétecte les commentaires qui sont désynchronisés avec le code
review-suite-stabilityÉvalue la stabilité d’une suite (proportion de retries, transient_errors hits)
review-intent-collisionsDétecte les tests qui s’écrasent mutuellement (intentions contradictoires) et demande/propose des clarifications
review-watcher-emissionsAudite les émissions de watchers (volume, déduplication, pertinence)
review-hierarchy-namingAudite le nommage de la hiérarchie (TestCycle / TestCampaign / TestSuite / Test) pour repérer l’antipattern où un enfant reprend le nom du parent

review-dead-code#

input  : base de tests
output : liste des éléments non utilisés (connectors / POMs / scénarios / fragments / constantes)
         + recommandation par élément :
            - supprimer
            - mettre en incubateur (<racine-source>/incubator/, arbre de dépendances préservé)
            - conserver (justifier)

review-report#

input  : une exécution récente (logs + reports)
output : classification de chaque test :
            - PASS                  (rien à faire)
            - SKIP                  (pourquoi ?)
            - intentional gap FAIL  (G-DATA-*, G-SEC-*, ...)
            - cross-browser FAIL    (B-BROWSER-*)
            - transient FAIL        (A-ENV-*)
            - régression            ⚠️ ALERTE

review-watcher-misuse#

input  : tous les watcher.report(...)
output : liste des reports qui semblent positifs (« success », « completed », « ok », ...)
         → recommandation : supprimer ou reformuler en négatif

review-comment-drift#

input  : tous les commentaires du code
output : liste des commentaires qui semblent ne plus correspondre au code adjacent
         (typique : commentaire mentionne foo, code mentionne bar)

Aide à éliminer les commentaires obsolètes.
« Teach the pattern, not the symptom ».

review-compartmentalisation-leaks#

input  : tout le code source
output : leaks détectés :
            - URLs inline dans scenarios/connectors → propose déplacement vers constants/
            - selectors dans methods → propose déplacement vers top of POM
            - magic numbers dans methods → propose déplacement vers constants

Règles du CLAUDE.md :

  • URLs dans src/constants/urls.py, jamais inline.
  • Sélecteurs en haut du code des POM.
  • Etc.

Rôle#

  1. Lire le code (et parfois la dernière exécution).
  2. Catégoriser les trouvailles.
  3. Suggérer des actions.
  4. Ne pas modifier directement le code.
  5. L’humain décide.