CommunityRédaction et éditiongithub.com

AlpharomeroJL/invarianteval

Passerelle d'évaluation d'invariants déclarés : applique vos règles de champs verrouillés sur chaque sortie et refuse de finaliser lorsque le modèle remplit automatiquement un champ appartenant à un humain. Outil MCP et compétence d'agent inclus.

Qu'est-ce que invarianteval ?

InvariantEval est une compétence d'agent conçue pour faire respecter les invariants que vous déclarez explicitement. Elle ne rend pas un agent « correct » et ne réécrit pas les sorties à votre place. Son objectif est simple : votre agent exécute vos règles de sécurité déclarées sur chaque sortie et refuse de finaliser si un champ verrouillé a été automatiquement rempli sans confirmation humaine. Cette compétence est idéale avant de finaliser toute sortie JSON structurée (ou similaire) dans des domaines comme l'évaluation de conformité, les décisions binaires (succès/échec) ou tout cas où certains champs doivent rester sous contrôle humain. Elle fonctionne en localisant ou créant un fichier `suite.yaml` contenant des `field_policies`, des `equivalence_classes` et des `assertions`, puis en exécutant un script Python de vérification avant finalisation. InvariantEval prend également en charge une alternative via un outil MCP pour les environnements disposant de l'extension `[mcp]`. Important : ne jamais inventer de règles ou d'invariants – ils doivent toujours être déclarés par l'utilisateur dans le fichier de suite.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add AlpharomeroJL/invarianteval

Installed? Explore more Rédaction et édition skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · 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

Compétence d'agent InvariantEval

InvariantEval applique les invariants que vous déclarez. Il ne rend pas un agent « correct » et ne réécrit pas les sorties à votre place. La seule affirmation honnête : votre agent exécute vos règles de sécurité déclarées sur chaque sortie et refuse de finaliser lorsqu'un champ verrouillé a été automatiquement rempli sans confirmation humaine.

Quand utiliser cette compétence

À utiliser avant de finaliser toute sortie JSON structurée (ou similaire) lorsque :

  • Le domaine comporte des champs verrouillés déclarés (succès/échec, statut de conformité, etc.)
  • Vous possédez (ou avez besoin) d'un suite.yaml avec field_policies et des assertions d'invariants
  • Un humain est censé posséder certains champs et le modèle ne doit pas les renseigner volontairement

N'utilisez pas cette compétence pour deviner des invariants. Votre travail consiste à rendre leur déclaration sans friction, non à les inférer.

Flux de travail

1. Localiser ou créer une suite déclarée

  • Trouvez un fichier suite.yaml existant dans le projet, ou
  • Copiez suite.template.yaml dans le projet et demandez à l'utilisateur de remplir field_policies, equivalence_classes et assertions.

N'inventez jamais de champs verrouillés sans déclaration de l'utilisateur dans la suite.

2. Exécuter la vérification d'invariants avant de finaliser

Vous disposez de la sortie brute parsée du modèle et de la sortie finale prévue. Exécutez :

python agent-skill/invarianteval/check.py \
  --suite path/to/suite.yaml \
  --case-id agent-check \
  --model-parsed /tmp/model_parsed.json \
  --final-output /tmp/final_output.json \
  --human-confirmed /tmp/human_confirmed.json

Écrivez les fichiers JSON à partir du tour en cours. --human-confirmed est facultatif (utilisez {} lorsque rien n'a été explicitement confirmé).

La suite doit contenir un cas avec le --case-id donné (par défaut : agent-check) et les assertions que vous souhaitez voir appliquées.

3. Si la vérification échoue : ARRÊTEZ

  • Ne finalisez pas, ne validez pas et ne présentez pas la sortie comme terminée.
  • Faites remonter l'échec exact de l'invariant depuis la sortie CLI (par exemple never_auto_filled[pass_fail_result]).
  • Exigez l'une des actions suivantes :
    • L'utilisateur modifie la sortie finale pour supprimer ou corriger la violation, ou
    • L'utilisateur confirme explicitement le champ (human_confirmed dans le fixture), ou
    • L'utilisateur met à jour la suite déclarée si la règle était erronée (rare).

4. Si la vérification réussit : continuez

Finalisez uniquement après un code de sortie 0.

Alternative MCP

Si l'environnement dispose de l'extension [mcp] installée, privilégiez l'outil MCP check_invariants pour les mêmes entrées. Voir docs/mcp.md.

Cadre honnête (obligatoire)

  • Dites : « invariants déclarés », « refuse de finaliser », « champ verrouillé rempli automatiquement »
  • Ne dites jamais : « auto-correction », « rend l'agent correct », « inférer automatiquement des invariants »

Skills associés