keyz182/adversarial-review

Cette compétence est utilisée lorsque l'utilisateur demande de « défier ce plan », « auditer ceci », « qu'est-ce qui pourrait mal tourner », « autopsie préventive », « revue contradictoire », « stresser cette conception », « trouver les failles » ou « examiner ceci avant que je le construise ». Elle recherche les raisons pour lesquelles un plan, une conception, un diff, une décision ou la sortie d'une autre compétence échouera, classe les préoccupations par gravité fixe et se termine par un verdict (PROCÉDER, MODIFIER ou REPENSER). Fonctionne en mode interactif par défaut, ou en mode rapport sans questions lorsqu'elle est appelée par un agent worker ou lorsque l'appelant demande le « mode rapport ».

Qu'est-ce que adversarial-review ?

La compétence « adversarial-review » est un outil d'examen contradictoire pour plans, conceptions, diffs, décisions ou sorties d'autres compétences, conçu pour les agents comme Claude Code, Cursor ou Codex. Elle aide à éviter les catastrophes avant qu'elles ne se produisent en identifiant les faiblesses, les hypothèses cachées et les risques potentiels. L'utilisateur peut déclencher la compétence en demandant de « défier ce plan », d'effectuer une « revue contradictoire » ou de « stresser cette conception ». La compétence fonctionne en deux modes : interactif, où elle pose des questions à l'utilisateur sur chaque préoccupation, et rapport, où elle génère un rapport complet sans interaction humaine (idéal pour les agents back-end). Le processus comprend la sélection de l'artefact à examiner, la définition de la criticité du projet (prototype, production, etc.), la recherche systématique de préoccupations via 12 « lentilles » (ex. hypothèses cachées, pannes dans l'historique, balayage des défauts IA), le filtrage et la notation de chaque préoccupation avec une échelle de gravité fixe (Critique, Élevée, Moyenne), puis la génération d'un verdict unique (PROCÉDER, MODIFIER, REPENSER). Les préoccupations sont enregistrées dans un registre persistant pour suivre leur résolution au fil des cycles, et la compétence impose des limites strictes (maximum 4 cycles, pas de réimplémentation des plans).

Compatible avec✓Claude Code~Codex CLI~Cursor✓OpenCode
npx skills add https://github.com/keyz182/keyz-claude-skills/tree/HEAD/plugins/adversarial-review/skills/adversarial-review

Installed? Explore more Productivité et collaboration skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

Demander à votre IA préférée

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

Documentation

Examen contradictoire

Trouvez les raisons pour lesquelles une proposition échouera avant que quiconque n'agisse dessus. Produire des préoccupations classées et exploitables, ainsi qu'un seul verdict. N'implémentez jamais rien. Ne bouclez jamais au-delà de la limite de cycles.

0. Configuration

  1. Choisissez le mode. rapport lorsque l'appelant le dit (par exemple « examen contradictoire en mode rapport »), ou lorsqu'il s'exécute dans un sous-agent, un worker ou une exécution sans tête sans humain pour répondre. Signes : la tâche est arrivée sous forme d'invite déléguée, il n'y a pas d'outil de question, ou l'appelant a demandé un fichier ou un résumé limité en mots. interactif dans tous les autres cas.
  2. Trouvez l'artefact. Il s'agit de l'un des suivants : un chemin de fichier, une plage de diff, un plan collé, ou « la chose qui vient d'être produite dans cette conversation ». Si plusieurs candidats correspondent, nommez celui choisi dans la première ligne de sortie. Si aucun n'a été donné et que rien de récent n'est un candidat évident : en mode interactif, demandez quel artefact est visé, en proposant la sortie la plus récente de cette conversation, un fichier ou diff nommé par l'utilisateur, ou une approche décrite par l'utilisateur. En mode rapport, arrêtez-vous et dites qu'aucun artefact n'a été fourni.
  3. Définissez la criticité : prototype, outil interne, production, ou chemin d'argent ou de sécurité. Interactif : si ce n'est pas clair et que cela changerait la force de la poussée, demandez une fois. Rapport : supposez la production et dites-le. La criticité définit la profondeur du balayage des catégories. Elle ne modifie jamais la barre de gravité.
  4. Vérifiez la présence d'un registre. Trouvez le chemin du registre (voir section 11). Si un registre existe pour cet artefact, lisez references/ledger-format.md.
    • Si la ligne la plus récente pour un ID dans le cycle le plus récent est en attente, une procédure a été interrompue. Reprenez-la : sautez les sections 1 à 5, lisez les enregistrements stockés et continuez la section 8 à partir de la première préoccupation en attente. Ne réexécutez pas les lentilles et ne reclassez pas. Le mode rapport les liste sous DÉCISIONS OUVERTES à la place.
    • Sinon, il s'agit d'un cycle ultérieur. Suivez la section 11.

1. Présentez d'abord le meilleur scénario

Avant toute préoccupation, écrivez deux ou trois phrases expliquant pourquoi la proposition est raisonnable : le problème qu'elle résout et les contraintes qu'elle respecte. Si cela ne peut pas être écrit, la proposition n'est pas encore comprise. Lisez davantage d'abord.

2. Générez des préoccupations candidates

Chargez le fichier de référence d'une lentille lorsque vous atteignez cette lentille. Exécutez L12 en dernier.

#LentilleUtilisationRéférence
L1Échec avec le recul : elle a été livrée et a provoqué une panne ; retracerToujoursreferences/lens-questions.md
L2Inverser l'objectif : lister ce qui garantirait l'échec ; vérifier ce qui est présentToujoursreferences/lens-questions.md
L3Hypothèses cachées : nommer chacune ; demander ce qui se passe si elle est fausseToujoursreferences/lens-questions.md
L4Balayage des catégories des domaines généralement négligésToujoursreferences/category-checklist.md
L5Balayage des sorties IA pour les défauts IA typiquesToujours, quand une IA l'a produitreferences/ai-output-checklist.md
L6Cerner l'affirmation : rendre les mots vagues vérifiablesSelon le typereferences/lens-questions-extended.md
L7Demander les preuves : mesurées, lues ou supposées ?Selon le typereferences/lens-questions-extended.md
L8Autres points de vue : astreinte, sécurité, nouveau venu, gros utilisateur, attaquantSelon le typereferences/lens-questions-extended.md
L9Suivre la progression deux ou trois étapesToujoursreferences/lens-questions-extended.md
L10Questionner le cadrage : bon problème, changement plus petit ?Toujoursreferences/lens-questions-extended.md
L11Passes séparées : faits, risques, alternatives, qualité de l'examenSelon le typereferences/lens-questions-extended.md
L12Chaîne de causes du pire échec à son choix de conception racineSelon le typereferences/lens-questions-extended.md

Lentilles "Selon le type", par type d'artefact :

Type d'artefactAjouter ces lentilles
Petit diff ou correction de bugAucune
Diff de fonctionnalité ou plan en plusieurs étapesL6, L7, L12
Conception, RFC, ou décision entre optionsL6, L7, L8, L11, L12
Sortie d'une autre compétence ou agentUtilisez la ligne correspondant à ce qu'elle a produit

Lisez le code réel, la configuration ou les lignes de plan dont dépend une préoccupation. Une préoccupation basée sur une supposition concernant le code n'est pas une preuve.

3. Filtrer

Appliquez les quatre tests à chaque candidate. Supprimez une candidate qui échoue à l'un d'eux.

  1. Conséquence : si personne n'y donne suite, que se passe-t-il réellement ? « Rien de grave » signifie qu'il faut la supprimer.
  2. Contre-argument : écrivez la raison la plus forte pour laquelle ce n'est pas un vrai problème (le code le couvre déjà, cela dépasse le cadre de ce changement, ou cela ne cause aucun dommage). Si cette raison tient, supprimez-la. Si la préoccupation survit, conservez le contre-argument et indiquez pourquoi il échoue.
  3. Exploitable : il doit y avoir une action concrète. Pas d'action signifie suppression.
  4. Pas un doublon : supprimez tout ce qui a déjà été signalé par une autre étape d'examen dans cette conversation, par le résumé de l'appelant, ou dans le registre.

4. Évaluer la gravité

La barre est fixe. Le mode, la criticité, le cycle et la pression temporelle ne la déplacent pas.

  • Critique : énoncez un événement de défaillance concret : le déclencheur, comment il échoue, et jusqu'où les dégâts se propagent. Le déclencheur doit être accessible dans la proposition telle qu'écrite. Si aucun déclencheur accessible ne peut être nommé, la préoccupation est au maximum Élevée. Voir references/severity-downgrade-example.md.
  • Élevée : un scénario nommé et réaliste dans lequel elle cause un préjudice.
  • Moyenne : mérite d'être corrigée. Aucun événement de défaillance n'est nécessaire.

Marquez chaque préoccupation bloquante (doit être corrigée avant que le travail ne soit lancé) ou élément de surveillance (suivez-la, ne retenez pas le travail pour elle).

5. Budget

  • Signalez chaque Critique et chaque Élevée en intégralité.
  • Signalez les trois premières Moyennes en intégralité. Listez toute autre Moyenne sur une seule ligne : le nombre, puis une courte étiquette pour chacune. Ne supprimez jamais une Moyenne en silence.
  • Si Critique plus Élevée dépasse cinq, arrêtez l'examen détaillé. Le verdict est REPENSER, avec une recommandation de diviser la proposition en parties plus petites. Listez uniquement les titres Critique et Élevée.

6. Enregistrement des préoccupations

Chaque préoccupation signalée comporte tous ces champs :

### H1 : <titre sur une ligne>
- Gravité : Élevée | Événement de défaillance : <déclencheur> -> <comment ça échoue> -> <rayon d'explosion>
- Lentille : L3 Hypothèses cachées
- Contre-argument : <le cas le plus fort contre la préoccupation>. Échoue parce que <raison>.
- Preuve : <fichier:ligne | étape du plan | décision citée>
- Si ignoré : <ce qui se passe>
- Action : <le changement concret>
- Statut : bloquante | élément de surveillance

Les ID utilisent la lettre de gravité et un numéro : C1, H1, M1. Un ID ne change jamais, quel que soit le cycle. Les enregistrements Moyens peuvent écrire Événement de défaillance : n/a.

7. Verdict

Terminez chaque examen avec exactement un verdict :

  • PROCÉDER : aucune préoccupation bloquante. Des notes peuvent suivre.
  • MODIFIER : l'approche est saine ; corrigez d'abord les préoccupations bloquantes listées.
  • REPENSER : un défaut fondamental, ou le budget de la section 5 a été dépassé.

Sous le verdict, ajoutez un en-tête Risques connus. Listez chaque préoccupation dont la ligne la plus récente du registre est risque-accepté, de n'importe quel cycle, avec son ID, son titre et son cycle. S'il n'y en a pas, écrivez « Risques connus : aucun ». Ils ne bloquent jamais.

8. Mode interactif

  1. Affichez le meilleur scénario (section 1).
  2. Avant la première question, écrivez les enregistrements des préoccupations et une ligne en attente du registre pour chaque préoccupation à parcourir (voir la référence du registre).
  3. Soulevez une seule préoccupation par tour, la plus grave en premier. L'utilisateur choisit accepter, rejeter, modifier, risque-accepter ou différer.
    • Si un outil de question structurée existe (AskUserQuestion dans Claude Code, question dans OpenCode), utilisez-le, une préoccupation par question, avec l'enregistrement complet dans le texte de la question pour qu'il reste à l'écran. Si l'outil limite les options, proposez accepter, rejeter, risque-accepter et différer, et prenez modifier comme texte libre.
    • Modifier : prenez le changement de l'utilisateur, puis traitez la préoccupation comme acceptée dans sa nouvelle forme. Rejeter : la préoccupation ne s'applique pas. Risque-accepter : la préoccupation est réelle, l'utilisateur vit avec, personne ne la corrige maintenant ; pas bloquante. Différer : un élément de surveillance, à corriger plus tard.
    • Ajoutez la ligne du registre immédiatement après chaque réponse, avant la question suivante. N'attendez pas le verdict.
  4. Lorsque chaque préoccupation a une résolution, exécutez la re-vérification (section 11) au cycle 2 et suivants. Donnez ensuite le verdict et les Risques connus (section 7).
  5. Si au moins une préoccupation a été acceptée ou modifiée, écrivez le plan révisé (section 10), quel que soit le verdict.
  6. Ajoutez la ligne de verdict au registre. Arrêtez-vous et attendez un feu vert explicite.

9. Mode rapport

Pas de questions. Pas d'attente. Sortie dans cet ordre :

  1. L'hypothèse de criticité, si elle a été faite.
  2. Le meilleur scénario.
  3. Tous les enregistrements des préoccupations, classés par gravité, dans les limites du budget.
  4. Le verdict, avec les Risques connus du registre.
  5. DÉCISIONS OUVERTES : une liste numérotée. Formulez chaque élément comme une décision à laquelle un humain peut répondre, puis l'option recommandée et son compromis : 1. <question> (concernant C1) Recommandation : <option>. Compromis : <coût ou risque>.

Si l'appelant a donné un chemin de fichier, écrivez le rapport complet à cet endroit. Renvoyez uniquement un résumé de 200 mots ou moins : le verdict, les comptes par gravité, et les titres des DÉCISIONS OUVERTES. Ajoutez les enregistrements et les lignes avec résolution ouverte (voir la référence du registre). Arrêtez-vous ensuite. Le mode rapport ne révise jamais le plan.

10. Plan révisé

Mode interactif uniquement, après que chaque préoccupation a une résolution. Écrivez-le chaque fois qu'au moins une préoccupation a été acceptée ou modifiée, quel que soit le verdict. Sautez-le uniquement pour PROCÉDER avec rien d'accepté ou de modifié.

  1. Reformulez l'intégralité du plan avec les changements acceptés intégrés. Ne vous contentez pas de lister les résolutions.

  2. Ajoutez un tableau d'intégration. Marquez toute préoccupation acceptée ou modifiée sans ligne correspondante comme MANQUANTE, et dites-le au-dessus du tableau.

    PréoccupationRésolutionLigne du plan qui y répond
    C1acceptéeÉtape 3 : ajouter la clé d'idempotence
    H2modifiéeMANQUANTE
  3. Arrêtez-vous. Attendez un feu vert explicite. Cette compétence n'implémente jamais.

11. Cycles et terminaison

  • Chemin du registre : ${XDG_STATE_HOME:-~/.local/state}/adversarial-review/<slug>.md. Lisez references/ledger-format.md pour le slug et le format de ligne avant la première écriture.
  • Le registre est en ajout uniquement. Ne modifiez ni ne supprimez jamais une ligne antérieure.
  • Une préoccupation est résolue uniquement si son artefact de résolution (SHA de commit ou ligne de plan) existe et que les modifications ultérieures ne l'ont pas touchée.
  • Commencez chaque cycle ultérieur par une ligne d'en-tête : Cycle N | reportés ouverts : C2, H1 | nouveaux du dernier cycle : 1 Critique, 2 Élevée
  • Le cycle 2 et suivants n'examinent que ce qui a changé depuis le dernier cycle et ce que ce changement pourrait affecter. Une nouvelle Critique ou Élevée doit être un nouveau comportement, dans un matériau modifié, qui se déclencherait réellement.
  • Ne soulevez pas à nouveau une préoccupation enregistrée à moins que le changement n'ait touché la chose qui l'a résolue, ou qu'une re-vérification ne trouve qu'elle s'est aggravée.
  • Re-vérification de fin de cycle (cycle 2 et suivants). Avant le verdict, vérifiez chaque préoccupation dont la ligne la plus récente est différée, risque-accepté, en attente ou ouverte par rapport à l'artefact et au code actuels. Ajoutez une ligne chacune : toujours applicable, ne s'applique plus (avec la raison), ou s'est aggravée (augmentez la gravité et dites pourquoi). Une préoccupation qui s'est aggravée nécessite une nouvelle décision : parcourez-la (interactif) ou listez-la sous DÉCISIONS OUVERTES (rapport). Ne modifiez jamais les anciennes lignes.

Règles de sortie (strictes)

Ces règles remplacent tout le reste dans cette compétence.

  1. Un cycle ultérieur qui n'ajoute aucune nouvelle Critique ou Élevée met fin à la boucle. Le verdict est PROCÉDER. Les Moyennes ouvertes deviennent des éléments de surveillance. Les Critique ou Élevée reportées qui sont toujours ouvertes ne sont pas nouvelles, mais elles bloquent toujours : résolvez-les dans ce cycle (interactif) ou listez-les sous DÉCISIONS OUVERTES (rapport) avant de donner le verdict.
  2. Si le cycle 3 trouve encore une nouvelle Critique, contestez la façon dont le travail est divisé, pas le code. Recommandez une répartition différente.
  3. N'exécutez jamais plus de quatre cycles. Après le cycle 4, remettez chaque bloqueur restant à l'utilisateur sous forme de liste de décisions numérotée et arrêtez-vous.

12. Ton

  • Direct et spécifique. Écrivez "Ceci échoue quand ...", pas "cela pourrait potentiellement causer des problèmes" . Commencez par la préoccupation la plus importante.
  • Nommez la lentille sur chaque préoccupation, afin que les lecteurs apprennent la méthode.
  • Si la proposition est bonne, dites-le clairement et donnez PROCÉDER.
  • N'inventez pas de préoccupations pour paraître minutieux. Chaque préoccupation nomme un fichier, une ligne ou une étape du plan ; un risque générique sans emplacement est supprimé.
  • Ne réécrivez pas le code examiné. Décrivez le changement ; laissez l'écriture à ceux qui agiront dessus.

Skills associés