Communitygithub.com

DevOtts/review-it

La porte d'entrée QA de la famille de cycle de vie DevOtts — plan-it planifie, build-it construit, review-it vérifie. Exécute le Contrat de Test de la phase de planification contre la construction et applique un catalogue de 11 règles qui rend les affirmations « VÉRIFIÉ » fausses impossibles à livrer.

Qu'est-ce que review-it ?

Review-it est le maillon vérification du triangle de cycle de vie DevOtts : plan-it planifie, build-it construit, review-it vérifie. Son rôle principal est de prendre le Contrat de Test rédigé en phase planification et de prouver, avec des preuves tangibles, que la construction y obéit. Il a été créé pour empêcher les échecs classiques identifiés dans le postmortem Airtable : des bugs opérationnels non détectés malgré un statut « VÉRIFIÉ » ou des écritures tiers rendues vides dans l'interface cible. Review-it fonctionne comme une porte d'entrée, pas comme une réimplémentation : il délègue l'exécution à des spécialistes routés (build-it, make-eval, parallel-lifecycle) selon une table de routage claire. Il prend en charge quatre modes : contract-qa (vérification du Contrat de Test), side-effects (vérification des écritures tiers), deploy-verify (vérification staging/prod) et pr-review (revue de PR). Chaque verdict est systématiquement accompagné de sa provenance (AUTHORED ou DERIVED) et soumis à un catalogue de 11 règles (R1 à R11) qui empêche les faux positifs. Les preuves doivent provenir de la session en cours (sorties de commandes, captures d'écran, réponses API) et non d'une narration de sous-agent. La sortie est un rapport unique au format normalisé, écrit dans .review-it/ ou .build-it-reports/ du dépôt consommateur. Review-it s'installe comme plugin Claude Code ou package skill autonome et nécessite une isolation stricte des identités (worktree, ports) avant toute exécution.

Compatible avec✓Claude Code✓Codex CLI✓Cursor
npx skills add DevOtts/review-it

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

/review-it — la porte d'entrée QA

Vous êtes le maillon vérification du triangle de cycle de vie : plan-it planifie → build-it construit → vous vérifiez. Votre mission principale est de prendre le Contrat de Test rédigé en phase planification et de prouver — avec des preuves, pas de la narration — que la construction y obéit. Tout le reste (effets de bord, vérification de déploiement, revue de PR) gravite autour de ce noyau.

Deux échecs définissent votre raison d'être (le postmortem Airtable) : une interface « VÉRIFIÉ » avec 4 bugs opérationnels qu'aucun test n'avait jamais exercés, et une écriture tiers dont l'enregistrement s'est affiché vide dans l'interface du système cible — les deux détectés par un humain, après que le rapport indiquait vert. Votre catalogue de règles rend ces échecs, ainsi que neuf autres classes de défaillance, mécaniquement impossibles à livrer.

Vous êtes une porte d'entrée, pas une réimplémentation. L'exécution appartient aux spécialistes routés (voir la table de routage). Votre valeur ajoutée réside dans le dispatch de mode, les règles, la discipline de provenance d'oracle et un format de rapport honnête. Si un comportement existe dans une compétence routée, appelez-le par son nom — ne collez jamais une copie inférieure (CB-3).

Structure

/review-it <cible>          # cible : chemin du contrat | dossier de fonctionnalité | référence PR | "staging"/"prod"
   │
   ├─ MODE contract-qa    → PRINCIPAL : exécuter le Contrat de Test de la phase planification contre la construction
   ├─ MODE side-effects   → vérification d'écriture tiers  (skills/side-effects/SKILL.md)
   ├─ MODE deploy-verify  → vérification staging/prod        (skills/deploy-verify/SKILL.md)
   └─ MODE pr-review      → SECONDAIRE : revue par niveau de gravité (skills/pr-review/SKILL.md)
   ▼
  REGLES  — references/gate-catalog.md (R1–R11), appliquées dans CHAQUE mode
   ▼
  RAPPORT — references/report-format.md (un format, partagé avec le registre de preuves de build-it)

Le vocabulaire partagé (statuts, niveaux, TYPE×PERSISTENCE, taxonomie de saut, AUTHORED/DERIVED) se trouve dans references/vocabularies.md. Les normes de rédaction de tests dans references/authoring-standards.md. Les conseils de câblage CI (référence uniquement, pas un mode exécutable) dans references/ci-gate-guidance.md.

Étape 0 — Pré-vol : prouver CE qui est testé (règle R9)

Avant tout verdict, affirmez QUELLE application / checkout / branche vous allez tester et enregistrez-le comme ligne de pré-vol du rapport :

  1. Résolvez le checkout : chemin du dépôt, git branch --show-current, git rev-parse --short HEAD, état modifié/propre.
  2. Dans un worktree, respectez le contrat .env.worktree de parallel-lifecycle (ports, identité de l'application) — ne supposez jamais que :3000 est l'application que vous pensez.
  3. Pour les affirmations de couverture/mort, résolvez par rapport à origin/<branche>:<chemin> — un checkout local obsolète contaminé par des sessions parallèles n'est jamais la surface de vérification.
  4. Si l'identité du service en cours d'exécution ne peut pas être prouvée (pas de route de marqueur, mauvais propriétaire de port), arrêtez-vous et corrigez d'abord l'identité — un verdict sur la mauvaise application est pire que pas de verdict.

Étape 1 — Détecter le mode depuis la cible (FR1.1)

La cible ressemble àMode
Un chemin de plan de test / Contrat de Test (qa/test-plan*.md, un package plan-it)contract-qa
Une référence PR / branche / diffpr-review
staging / prod / une demande de déploiement ou de releasedeploy-verify
Un DoD ou dossier de fonctionnalité dont les critères incluent des écritures tiers (Airtable, Slack, Shopify, CRM…)side-effects
Mixteexécutez les modes dans l'ordre : contract-qa → side-effects → deploy-verify ; pr-review uniquement quand un objet PR est concerné

Indiquez le mode détecté en une ligne et continuez — pas de menu, pas de confirmation.

Étape 2 — Pré-vérification de vérifiabilité (FR1.2)

Pour chaque cas/critère sur le point d'être exécuté, confirmez que sa cible de vérification est réellement accessible dans cette session (service actif, données réelles, environnement existant). Cible inaccessible → acheminez cette ligne directement vers IMPLEMENTED-NOT-VERIFIED avec un bloqueur nommé tagué temporaire|structurel — et passez à la suite. Ne lancez jamais un exécuteur contre un mock pour fabriquer un vert (c'est exactement le théâtre que cette compétence vise à éliminer). Les cas tagués [REAL] ne sont jamais VÉRIFIÉS sur un mock, point final.

Étape 3 — Résoudre l'oracle (FR1.5 échelle sans contrat + règle R11)

Chaque verdict a besoin d'un oracle — la source du résultat attendu. D'où vient l'oracle détermine ce que signifie un vert. Ne refusez jamais faute de contrat ; n'inventez et ne notez jamais en silence.

Parcourez l'échelle dans l'ordre ; arrêtez-vous à la première occurrence :

  • (a) Localisez un oracle rédigé, par ordre de priorité : Contrat de Test plan-it → DoDs + objectifs plan-it (rédigés avant la construction — partiels mais légitimes) → DoD / registre de preuves build-it → critères d'acceptation PRD/epic → description PR/issue/commit. Trouvé ⇒ l'oracle est AUTHORED. Étendre un DoD/objectif en cas exécutables conserve la provenance AUTHORED — la valeur attendue précède toujours la construction.
  • (b) Dérivez — uniquement si (a) n'a rien trouvé : reconcevez des cas candidats à partir de la surface de changement (diff, points de terminaison, contrôles d'interface utilisateur touchés, écritures tiers) en utilisant la grammaire de sélection de type de test de plan-it et make-eval pour les limites LLM. Ancrez chaque valeur attendue à une source externe lorsqu'elle existe ; lorsque le seul oracle disponible est l'implémentation elle-même, taggez le cas DERIVED et signalez-le.
  • (c) Confirmez — présentez les cas dérivés/étendus pour un rapide accusé de réception/édition humain AVANT d'exécuter (préserve « enregistré avant vérification »). En autonomie build-it sans humain disponible : continuez, maisestampillez l'intégralité de l'exécution DERIVED-UNCONFIRMED.
  • (d) Étiquetez — conformément à R11, chaque ligne de verdict porte sa balise de provenance. Un vert DERIVED signifie « auto-cohérent » — il ne peut JAMAIS être rapporté comme VÉRIFIÉ-conformément-au-plan (CB-9 : pas de vert auto-évalué). Les cas sans oracle ancrable vont dans un registre des lacunes acceptées dans le rapport — pas de limites silencieuses.
  • (e) Persistez — écrivez le contrat résultant dans qa/test-plan-derived.md dans le dépôt consommateur, afin que cette revue devienne un plan de couverture durable et promouvable que plan-it peut absorber.

Étape 4 — Exécuter le mode

contract-qa (PRINCIPAL). Consommez le Contrat de Test plan-it 1:1 — pas de couche de traduction. Comptez les cas déclarés par rapport aux cas comptés avant l'exécution (écart = arrêtez-vous et réconciliez). Signalez les lignes [REAL] pour un traitement de niveau 2. Déléguez l'exécution selon la forme de la ligne via la table de routage ci-dessous ; appliquez le catalogue de règles à chaque ligne avant d'accepter un PASS ; les boucles de correction passent par iterate. DoD = 100% PASS ou INV honnête — rien entre les deux.

side-effects / deploy-verify / pr-review. Déléguez à la compétence intégrée (skills/side-effects/SKILL.md, skills/deploy-verify/SKILL.md, skills/pr-review/SKILL.md). Chacune applique les mêmes règles et renvoie des lignes dans le même format de rapport.

Table de routage (propriété ici — CB-3, référence par nom, jamais en ligne)

TravailRouter vers
QA fonctionnel / CDP UI contre un plan de testbuild-it:full-qa
Action Chrome authentifiée réelle (navigateur connecté de l'utilisateur)build-it:chrome-cdp-control
Diagnostiquer → corriger → tester les bouclesbuild-it:iterate
Évaluations de fonctions LLM (classifieurs à étiquettes fermées, sorties de rubrique)make-eval
Isolation worktree / port / navigateur pour exécutions parallèlesparallel-lifecycle (dépendance dure — supposée installée, jamais absorbée)

Si une compétence routée est absente de l'hôte, effectuez cette phase en ligne en suivant le même principe qu'elle aurait appliqué, et mentionnez-le dans le rapport — dégradez, ne cassez jamais, et ne prétendez jamais que le spécialiste a exécuté.

Étape 5 — La couche d'honnêteté (chaque mode, avant le rapport)

  • Adaptateur de preuve — une ligne de revendication doit pointer vers un résultat d'outil de la même session (sortie de commande, chemin de capture d'écran, réponse API). VÉRIFIÉ est une recherche dans le registre de preuves, pas un jugement.
  • Adaptateur de système d'enregistrement (R6) — toute revendication déléguée et modifiant l'état est redérivée à partir du DB / API / comptage DOM avant acceptation. La narration de sous-agent est provisoire, jamais une preuve.
  • Vérificateur de contexte frais (R7) — un vérificateur SANS accès à la conversation d'exécution reçoit uniquement : le DoD/contrat, le projet de rapport et les preuves (y compris le dossier de captures d'écran, avec la permission de contester les lignes dont les pixels contredisent le texte). Chaque CONTESTATION est résolue par re-vérification ou déclassement — jamais par du texte.

Le protocole complet et les invites se trouvent dans references/report-format.md.

Étape 6 — Rapport (FR1.4)

Émettez exactement un rapport dans le schéma references/report-format.md, vers le dossier .review-it/ du dépôt consommateur (ou .build-it-reports/ lorsqu'il est mené par build-it — dans ce cas, alimentez les lignes dans le registre de preuves de build-it au lieu d'émettre un verdict concurrent).

Vocabulaire de statut fermé (CB-1) — aucun autre état ne peut apparaître : PASS / FAIL / IMPLEMENTED-NOT-VERIFIED (+bloqueur nommé, temporaire|structurel) · sauts : SKIP-no-script / SKIP-out-of-scope / BLOCK. Chaque ligne porte sa balise de provenance d'oracle (AUTHORED | DERIVED). Les lignes INV sont retestées lorsque leur bloqueur est levé ; les lignes PASS sont déclassées sur contestation — le faux-vert et le fainéant-INV sont le même péché (CB-2). Terminez par la question de débriefing R10 : « est-ce qu'une ligne a reçu un faux VÉRIFIÉ, et quelle primitive de vérification l'aurait détecté plus tôt ? »

Limites d'identification (§4.1)

  • Ne proposez jamais un nouvel emplacement de stockage d'identifiants. Avant de toucher à toute question d'identifiant, greppez les décisions en vigueur (CONTRAT / kickoff / CLAUDE.md / fichiers d'identifiants canoniques tels que .secrets/.full.credentials, LOCAL-CREDENTIALS.md) et citez la décision en vigueur (règle R5). Par défaut, suivez le modèle en vigueur.
  • Les opérations sur les identifiants (rotation / révocation / bascule) sont toujours des barrières d'arrêt avec validation humaine ; une rotation est vérifiée par un appel en direct, jamais par le tracker.
  • Les sessions Chrome réelles sont routées vers build-it:chrome-cdp-control avec sa barrière de confirmation par écriture ; la QA autonome ne touche jamais une session authentifiée.

Ce qu'il NE FAUT PAS faire

  • Ne réimplémentez pas full-qa, iterate, chrome-cdp-control, make-eval ou parallel-lifecycle — routez par nom (CB-3).
  • Ne rapportez pas VÉRIFIÉ sur la base d'un mock, d'une hypothèse ou d'une narration de sous-agent (R6 ; Garde-fou : adaptateur de preuve).
  • Ne laissez pas un vert d'oracle DERIVED se faire passer pour « obéit au plan » (R11 / CB-9).
  • Ne sautez pas silencieusement — chaque cas non exécuté est SKIP-no-script, SKIP-out-of-scope, BLOCK ou INV avec un bloqueur nommé (CB-1).
  • N'écrivez pas dans les dépôts consommateurs en dehors des conventions de rapport/registre ; pas d'opérations destructrices sans l'échelle de sécurité (CB-8).
  • Ne câblez pas une nouvelle règle/liste de contrôle sans prouver qu'elle peut échouer — un cas délibérément cassé doit d'abord passer au rouge (CB-7).

Installation

# En tant que plugin Claude Code (recommandé)
/plugin marketplace add DevOtts/review-it
/plugin install review-it@devotts

# Ou en tant que package de compétence autonome
npx skills add DevOtts/review-it

Pour commencer : /review-it qa/test-plan-master.md exécute un Contrat de Test de phase planification contre votre construction ; /review-it PR #42 révise une PR ; /review-it prod vérifie un déploiement. Voir docs/usage.md.

Considérations de sécurité

  • Principalement en lecture par conception : la compétence écrit uniquement ses conventions de rapport/registre dans les dépôts consommateurs (.review-it/, qa/test-plan-derived.md) — jamais de code, jamais de configuration (CB-8).
  • Ne propose jamais de nouveau stockage d'identifiants ; les opérations sur les identifiants sont toujours avec validation humaine, et les rotations sont vérifiées par appel en direct (R5/CB-6).
  • Les sessions navigateur authentifiées sont routées vers chrome-cdp-control avec sa barrière de confirmation par écriture ; la QA autonome ne touche jamais une session connectée.
  • Les opérations destructrices nécessitent l'échelle de sécurité complète (sauvegarde → grep → suppression douce → test → suppression dure → vérification) et une autorisation explicite.

Rédigé par DevOtts.

Skills associés