CommunityEscrita e Ediçãogithub.com

InvariantEval

Gate de avaliação de invariantes declarados: impõe suas regras de campos bloqueados em toda saída e se recusa a finalizar quando o modelo preenche automaticamente um campo pertencente ao humano. Inclui ferramenta MCP e skill de agente.

O que é InvariantEval?

InvariantEval é uma skill para agentes de IA (como Claude Code, Cursor, Codex) que impõe invariantes declarados pelo usuário, garantindo que campos bloqueados nunca sejam preenchidos automaticamente pelo modelo sem confirmação humana. Ao contrário de soluções que tentam 'auto-corrigir' ou inferir regras, o InvariantEval exige que o desenvolvedor declare explicitamente suas políticas de campo, classes de equivalência e asserções em um arquivo `suite.yaml`. Antes de finalizar qualquer saída JSON estruturada, a skill executa uma verificação local via CLI (ou ferramenta MCP) que compara a saída parseada do modelo com a saída final desejada e um arquivo opcional de confirmação humana. Se encontrar uma violação (ex.: um campo pass/fail foi preenchido pelo modelo), ela retorna código de saída diferente de zero e bloqueia a finalização, forçando o humano a corrigir, confirmar o campo ou ajustar as regras declaradas. A abordagem é intencionalmente restritiva e transparente: o agente nunca finaliza sem passar pelo gate, e o desenvolvedor mantém controle total sobre quais campos são 'bloqueados'. A skill funciona em qualquer projeto Python e inclui integração opcional via MCP para ambientes que suportam o protocolo Model Context Protocol.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add AlpharomeroJL/invarianteval

Installed? Explore more Escrita e Edição skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Skill de agente InvariantEval

InvariantEval impõe os invariantes que você declarar. Ele não torna um agente "correto" e não reescreve a saída para você. A única afirmação honesta: seu agente executa suas regras de segurança declaradas em toda saída e se recusa a finalizar quando um campo bloqueado foi preenchido automaticamente sem confirmação humana.

Quando usar esta skill

Use antes de finalizar qualquer saída JSON estruturada (ou similar) quando:

  • O domínio possui campos bloqueados declarados (aprovado/reprovado, status de conformidade, etc.)
  • Você tem (ou precisa de) um suite.yaml com field_policies e asserções de invariante
  • Um humano deve ser o dono de certos campos e o modelo não deve fornecê-los voluntariamente

Não use esta skill para adivinhar invariantes. Sua tarefa é tornar a declaração deles sem atrito, não inferi-los.

Fluxo de trabalho

1. Localize ou crie uma suite declarada

  • Encontre um suite.yaml existente no projeto, ou
  • Copie suite.template.yaml para o projeto e peça ao usuário para preencher field_policies, equivalence_classes e assertions.

Nunca invente campos bloqueados sem declaração do usuário na suite.

2. Execute a verificação de invariante antes de finalizar

Você tem a saída parseada bruta do modelo e a saída final pretendida. Execute:

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

Escreva os arquivos JSON a partir do turno atual. --human-confirmed é opcional (use {} quando nada foi explicitamente confirmado).

A suite deve conter um caso com o --case-id fornecido (padrão: agent-check) e as asserções que você deseja impor.

3. Se a verificação falhar: PARE

  • Não finalize, faça commit ou apresente a saída como concluída.
  • Exiba a falha exata do invariante na saída do CLI (ex.: never_auto_filled[pass_fail_result]).
  • Exija uma das seguintes ações:
    • O usuário edita a saída final para remover ou corrigir a violação, ou
    • O usuário confirma explicitamente o campo (human_confirmed no fixture), ou
    • O usuário atualiza a suite declarada se a regra estava errada (raro).

4. Se a verificação passar: prossiga

Finalize somente após código de saída 0.

Alternativa MCP

Se o ambiente tiver o extra [mcp] instalado, prefira a ferramenta MCP check_invariants para as mesmas entradas. Veja docs/mcp.md.

Enquadramento honesto (obrigatório)

  • Diga: "invariantes declarados", "se recusa a finalizar", "campo bloqueado preenchido automaticamente"
  • Nunca diga: "autocorreção", "torna o agente correto", "inferir invariantes automaticamente"

Habilidades Relacionadas