CommunityRedacción y edicióngithub.com

AlpharomeroJL/invarianteval

Puerta de evaluación de invariantes de seguridad declarados: aplica tus reglas de campos bloqueados en cada salida y se niega a finalizar cuando un modelo completa automáticamente un campo propiedad del humano. Incluye herramienta MCP y habilidad de agente.

¿Qué es invarianteval?

InvariantEval es una habilidad de agente que garantiza que las salidas estructuradas (como JSON) respeten invariantes de seguridad declarados por el usuario. Su función principal es verificar que los campos bloqueados —como estado de cumplimiento o resultado de aprobación/rechazo— no sean completados automáticamente por el modelo sin confirmación humana. Si se detecta una infracción, la habilidad se niega a finalizar la salida, exigiendo intervención del usuario: corrección del campo, confirmación explícita o actualización de las reglas declaradas. Está diseñada para plataformas como Claude Code, Cursor o Codex y se utiliza antes de finalizar cualquier salida estructurada. Su flujo de trabajo incluye localizar o crear un archivo `suite.yaml` con las políticas de campos y aserciones, ejecutar una verificación mediante un script Python (o la herramienta MCP `check_invariants` si está disponible), y detener el proceso si la verificación falla. No infiere invariantes ni reescribe la salida; solo aplica las reglas que el usuario ha declarado explícitamente.

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

Installed? Explore more Redacción y edición skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Habilidad de agente InvariantEval

InvariantEval aplica los invariantes que tú declaras. No hace que un agente sea "correcto" ni reescribe la salida por ti. La única afirmación honesta: tu agente ejecuta tus reglas de seguridad declaradas en cada salida y se niega a finalizar cuando un campo bloqueado se ha completado automáticamente sin confirmación humana.

Cuándo usar esta habilidad

Úsala antes de finalizar cualquier salida JSON estructurada (o similar) cuando:

  • El dominio tiene campos bloqueados declarados (aprobado/rechazado, estado de cumplimiento, etc.)
  • Tienes (o necesitas) un suite.yaml con field_policies y aserciones de invariantes
  • Un humano debe poseer ciertos campos y el modelo no debe completarlos voluntariamente

No uses esta habilidad para adivinar invariantes. Tu trabajo es hacer que declararlos sea sencillo, no inferirlos.

Flujo de trabajo

1. Localizar o crear un conjunto declarado

  • Encuentra un suite.yaml existente en el proyecto, o
  • Copia suite.template.yaml al proyecto y pide al usuario que complete field_policies, equivalence_classes y assertions.

Nunca inventes campos bloqueados sin declaración del usuario en el conjunto.

2. Ejecutar la verificación de invariantes antes de finalizar

Tienes la salida analizada sin procesar del modelo y la salida final prevista. Ejecuta:

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

Escribe los archivos JSON desde el turno actual. --human-confirmed es opcional (usa {} cuando no se haya confirmado nada explícitamente).

El conjunto debe contener un caso con el --case-id dado (predeterminado: agent-check) y las aserciones que deseas aplicar.

3. Si la verificación falla: DETENTE

  • No finalices, confirmes ni presentes la salida como completa.
  • Muestra el fallo de invariante exacto desde la salida de la CLI (por ejemplo, never_auto_filled[pass_fail_result]).
  • Exige una de las siguientes acciones:
    • El usuario edita la salida final para eliminar o corregir la infracción, o
    • El usuario confirma explícitamente el campo (human_confirmed en el fixture), o
    • El usuario actualiza el conjunto declarado si la regla era incorrecta (raro).

4. Si la verificación pasa: continúa

Finaliza solo después del código de salida 0.

Alternativa MCP

Si el entorno tiene instalado el extra [mcp], prefiere la herramienta MCP check_invariants para las mismas entradas. Consulta docs/mcp.md.

Marco honesto (obligatorio)

  • Di: "invariantes declarados", "se niega a finalizar", "campo bloqueado completado automáticamente"
  • Nunca digas: "autocorrección", "hace que el agente sea correcto", "inferir invariantes automáticamente"

Skills relacionados