Communitygithub.com

santa-method

Verificação adversarial multiagente com loop de convergência. Dois agentes revisores independentes devem aprovar antes do envio. Use quando a saída precisar passar por dois revisores adversariais independentes antes de ser enviada.

O que é santa-method?

O Santa Method é uma estrutura de verificação adversarial multiagente que garante que a saída gerada por um agente de IA seja rigorosamente revisada por dois revisores independentes antes de ser enviada. Inspirado no conceito de 'faça uma lista, verifique duas vezes', o método elimina vieses e lacunas de conhecimento comuns a um único revisor, garantindo que erros sistemáticos sejam detectados e corrigidos antes da publicação ou implantação. Ele suporta plataformas como Claude Code (com subagentes), além de oferecer padrões de implementação inline ou em lote para cenários de alto volume. O processo é dividido em quatro fases: Geração (fase 1), Revisão Dupla Independente (fase 2), Portão de Veredito (fase 3) e Loop de Correção (fase 4). O método é ideal para saídas que serão publicadas, implantadas ou consumidas por usuários finais, especialmente quando conformidade, precisão técnica ou risco de alucinação são críticos. Não deve ser usado para rascunhos internos ou tarefas com verificação determinística, que devem usar pipelines de build/teste/lint. As principais vantagens incluem a detecção robusta de erros, a redução de vieses de revisão e a capacidade de escalar a verificação por amostragem estratificada em lotes grandes.

Funciona com✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/affaan-m/everything-claude-code/tree/main/skills/santa-method

Perguntar na sua IA favorita

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

Documentação

Método Santa

Estrutura de verificação adversarial multiagente. Faça uma lista, verifique duas vezes. Se estiver 'levando', corrija até ficar 'bonzinho'.

A percepção central: um único agente revisando sua própria saída compartilha os mesmos vieses, lacunas de conhecimento e erros sistemáticos que produziram a saída. Dois revisores independentes, sem contexto compartilhado, quebram esse padrão de falha.

Quando Ativar

Invoque esta habilidade quando:

  • A saída for publicada, implantada ou consumida por usuários finais
  • Restrições de conformidade, regulatórias ou de marca forem impostas
  • Código for enviado para produção sem revisão humana
  • A precisão do conteúdo for importante (documentação técnica, material educacional, texto voltado para o cliente)
  • Geração em lote em escala, onde a verificação por amostragem perde padrões sistêmicos
  • O risco de alucinação for elevado (afirmações, estatísticas, referências de API, linguagem jurídica)

NÃO use para rascunhos internos, pesquisa exploratória ou tarefas com verificação determinística (use pipelines de build/teste/lint para esses casos).

Arquitetura

┌─────────────┐
│  GERADOR    │  Fase 1: Faça uma Lista
│  (Agente A) │  Produza a entrega
└──────┬──────┘
       │ saída
       ▼
┌──────────────────────────────┐
│    REVISÃO DUPLA INDEPENDENTE │  Fase 2: Verifique Duas Vezes
│                                │
│  ┌───────────┐ ┌───────────┐  │  Dois agentes, mesma rubrica,
│  │ Revisor B │ │ Revisor C │  │  sem contexto compartilhado
│  └─────┬─────┘ └─────┬─────┘  │
│        │              │        │
└────────┼──────────────┼────────┘
         │              │
         ▼              ▼
┌──────────────────────────────┐
│      PORTÃO DE VEREDITO       │  Fase 3: Levando ou Bonzinho
│                                │
│  B aprova E C aprova → BONZINHO │  Ambos devem aprovar.
│  Caso contrário → LEVANDO      │  Sem exceções.
└──────┬──────────────┬─────────┘
       │              │
    BONZINHO        LEVANDO
       │              │
       ▼              ▼
   [ ENVIAR ]    ┌─────────────┐
                  │  CICLO DE   │  Fase 4: Corrija Até Ficar Bonzinho
                  │  CORREÇÃO   │
                  │              │
                  │ iteração++  │  Colete todas as bandeiras.
                  │ se i > MAX: │  Corrija todos os problemas.
                  │   escalar   │  Reexecute ambos os revisores.
                  │ senão:      │  Loop até convergência.
                  │   vá p/ F.2 │
                  └──────────────┘

Detalhes das Fases

Fase 1: Faça uma Lista (Gerar)

Execute a tarefa principal. Nenhuma alteração no seu fluxo normal de geração. O Método Santa é uma camada de verificação pós-geração, não uma estratégia de geração.

# O gerador funciona normalmente
saida = gerar(especificacao_tarefa)

Fase 2: Verifique Duas Vezes (Revisão Dupla Independente)

Crie dois agentes revisores em paralelo. Invariantes críticos:

  1. Isolamento de contexto — nenhum revisor vê a avaliação do outro
  2. Rubrica idêntica — ambos recebem os mesmos critérios de avaliação
  3. Mesmas entradas — ambos recebem a especificação original E a saída gerada
  4. Saída estruturada — cada um retorna um veredito tipado, não texto corrido
PROMPT_REVISOR = """
Você é um revisor de qualidade independente. Você NÃO viu nenhuma outra revisão desta saída.

## Especificação da Tarefa
{especificacao_tarefa}

## Saída Sob Revisão
{saida}

## Rubrica de Avaliação
{rubrica}

## Instruções
Avalie a saída em relação a CADA critério da rubrica. Para cada:
- APROVADO: critério totalmente atendido, sem problemas
- REPROVADO: problema específico encontrado (cite o problema exato)

Retorne sua avaliação como JSON estruturado:
{
  "veredito": "APROVADO" | "REPROVADO",
  "verificacoes": [
    {"criterio": "...", "resultado": "APROVADO|REPROVADO", "detalhe": "..."}
  ],
  "problemas_criticos": ["..."],   // bloqueadores que devem ser corrigidos
  "sugestoes": ["..."]            // melhorias não bloqueantes
}

Seja rigoroso. Seu trabalho é encontrar problemas, não aprovar.
"""
# Crie revisores em paralelo (subagentes Claude Code)
revisor_b = Agente(prompt=PROMPT_REVISOR.format(...), descricao="Revisor Santa B")
revisor_c = Agente(prompt=PROMPT_REVISOR.format(...), descricao="Revisor Santa C")

# Ambos executam concorrentemente — nenhum vê o outro

Design da Rubrica

A rubrica é a entrada mais importante. Rubricas vagas produzem revisões vagas. Cada critério deve ter uma condição objetiva de aprovação/reprovação.

CritérioCondição de AprovaçãoSinal de Falha
Precisão factualTodas as afirmações verificáveis contra material de origem ou conhecimento comumEstatísticas inventadas, números de versão errados, APIs inexistentes
Livre de alucinaçãoNenhuma entidade, citação, URL ou referência fabricadaLinks para páginas que não existem, citações atribuídas sem fonte
CompletudeCada requisito da especificação é abordadoSeções ausentes, casos extremos ignorados, cobertura incompleta
ConformidadePassa em todas as restrições específicas do projetoTermos proibidos usados, violações de tom, não conformidade regulatória
Consistência internaNenhuma contradição dentro da saídaSeção A diz X, seção B diz não-X
Correção técnicaCódigo compila/executa, algoritmos são sólidosErros de sintaxe, bugs de lógica, alegações de complexidade erradas

Extensões de Rubrica Específicas de Domínio

Conteúdo/Marketing:

  • Aderência à voz da marca
  • Requisitos de SEO atendidos (densidade de palavras-chave, meta tags, estrutura)
  • Sem uso indevido de marcas registradas de concorrentes
  • CTA presente e vinculada corretamente

Código:

  • Segurança de tipos (sem vazamentos de any, tratamento adequado de nulos)
  • Cobertura de tratamento de erros
  • Segurança (sem segredos no código, validação de entrada, prevenção de injeção)
  • Cobertura de testes para novos caminhos

Sensível a Conformidade (regulado, jurídico, financeiro):

  • Sem garantias de resultado ou afirmações não fundamentadas
  • Isenções de responsabilidade necessárias presentes
  • Apenas terminologia aprovada
  • Linguagem apropriada para a jurisdição

Fase 3: Levando ou Bonzinho (Portão de Veredito)

def veredito_santa(revisor_b, revisor_c):
    """Ambos os revisores devem aprovar. Sem crédito parcial."""
    if revisor_b.veredito == "APROVADO" and revisor_c.veredito == "APROVADO":
        return "BONZINHO"  # Envie

    # Mescle as bandeiras de ambos os revisores, deduplique
    todos_problemas = deduplicar(revisor_b.problemas_criticos + revisor_c.problemas_criticos)
    todas_sugestoes = deduplicar(revisor_b.sugestoes + revisor_c.sugestoes)

    return "LEVANDO", todos_problemas, todas_sugestoes

Por que ambos devem aprovar: se apenas um revisor detecta um problema, esse problema é real. O ponto cego do outro revisor é exatamente o modo de falha que o Método Santa existe para eliminar.

Fase 4: Corrija Até Ficar Bonzinho (Loop de Convergência)

MAX_ITERACOES = 3

for iteracao in range(MAX_ITERACOES):
    veredito, problemas, sugestoes = veredito_santa(revisor_b, revisor_c)

    if veredito == "BONZINHO":
        registrar_resultado_santa(saida, iteracao, "aprovado")
        return enviar(saida)

    # Corrija todos os problemas críticos (sugestões são opcionais)
    saida = agente_correcao.executar(
        saida=saida,
        problemas=problemas,
        instrucao="Corrija APENAS os problemas sinalizados. Não refatore nem adicione alterações não solicitadas."
    )

    # Reexecute AMBOS os revisores na saída corrigida (agentes novos, sem memória da rodada anterior)
    revisor_b = Agente(prompt=PROMPT_REVISOR.format(saida=saida, ...))
    revisor_c = Agente(prompt=PROMPT_REVISOR.format(saida=saida, ...))

# Iterações esgotadas — escalar
registrar_resultado_santa(saida, MAX_ITERACOES, "escalado")
escalar_para_humano(saida, problemas)

Crítico: cada rodada de revisão usa agentes novos. Os revisores não devem carregar memória de rodadas anteriores, pois o contexto anterior cria viés de ancoragem.

Padrões de Implementação

Padrão A: Subagentes Claude Code (Recomendado)

Subagentes fornecem verdadeiro isolamento de contexto. Cada revisor é um processo separado, sem estado compartilhado.

# Em uma sessão Claude Code, use a ferramenta Agent para criar revisores
# Ambos os agentes executam em paralelo para velocidade
# Pseudocódigo para invocação da ferramenta Agent
revisor_b = Agente(
    descricao="Revisor Santa B",
    prompt=f"Revise esta saída quanto à qualidade...\n\nRUBRICA:\n{rubrica}\n\nSAÍDA:\n{saida}"
)
revisor_c = Agente(
    descricao="Revisor Santa C",
    prompt=f"Revise esta saída quanto à qualidade...\n\nRUBRICA:\n{rubrica}\n\nSAÍDA:\n{saida}"
)

Padrão B: Sequencial Inline (Fallback)

Quando subagentes não estiverem disponíveis, simule o isolamento com redefinições explícitas de contexto:

  1. Gere a saída
  2. Novo contexto: "Você é o Revisor 1. Avalie SOMENTE contra esta rubrica. Encontre problemas."
  3. Registre as descobertas textualmente
  4. Limpe o contexto completamente
  5. Novo contexto: "Você é o Revisor 2. Avalie SOMENTE contra esta rubrica. Encontre problemas."
  6. Compare ambas as revisões, corrija, repita

O padrão de subagentes é estritamente superior — a simulação inline corre o risco de vazamento de contexto entre revisores.

Padrão C: Amostragem em Lote

Para lotes grandes (100+ itens), executar o Santa completo em cada item é proibitivo em custo. Use amostragem estratificada:

  1. Execute o Santa em uma amostra aleatória (10-15% do lote, mínimo 5 itens)
  2. Categorize as falhas por tipo (alucinação, conformidade, completude, etc.)
  3. Se padrões sistemáticos surgirem, aplique correções direcionadas a todo o lote
  4. Re-amostre e re-verifique o lote corrigido
  5. Continue até que uma amostra limpa seja aprovada
import random

def santa_lote(itens, rubrica, taxa_amostragem=0.15):
    amostra = random.sample(itens, max(5, int(len(itens) * taxa_amostragem)))

    for item in amostra:
        resultado = santa_completo(item, rubrica)
        if resultado.veredito == "LEVANDO":
            padrao = classificar_falha(resultado.problemas)
            itens = correcao_lote(itens, padrao)  # Corrija todos os itens que correspondem ao padrão
            return santa_lote(itens, rubrica)       # Re-amostre

    return itens  # Amostra limpa → envie o lote

Modos de Falha e Mitigações

Modo de FalhaSintomaMitigação
Loop infinitoRevisores continuam encontrando novos problemas após correçõesLimite máximo de iterações (3). Escalar.
CarimboAmbos os revisores aprovam tudoPrompt adversarial: "Seu trabalho é encontrar problemas, não aprovar."
Deriva subjetivaRevisores sinalizam preferências de estilo, não errosRubrica restrita com critérios objetivos de aprovação/reprovação apenas
Regressão de correçãoCorrigir problema A introduz problema BRevisores novos a cada rodada detectam regressões
Viés de concordância entre revisoresAmbos os revisores perdem a mesma coisaMitigado pela independência, não eliminado. Para saída crítica, adicione um terceiro revisor ou verificação humana por amostragem.
Explosão de custosMuitas iterações em saídas grandesPadrão de amostragem em lote. Limites de orçamento por ciclo de verificação.

Integração com Outras Habilidades

HabilidadeRelacionamento
Loop de VerificaçãoUse para verificações determinísticas (build, lint, teste). Santa para verificações semânticas (precisão, alucinações). Execute o loop de verificação primeiro, Santa depois.
Eval HarnessOs resultados do Método Santa alimentam métricas de avaliação. Acompanhe pass@k nas execuções Santa para medir a qualidade do gerador ao longo do tempo.
Aprendizado Contínuo v2As descobertas do Santa tornam-se intuições. Falhas repetidas no mesmo critério → comportamento aprendido para evitar o padrão.
Pacote EstratégicoExecute Santa ANTES de compactar. Não perca o contexto de revisão no meio da verificação.

Métricas

Acompanhe estas métricas para medir a eficácia do Método Santa:

  • Taxa de primeira aprovação: % de saídas que aprovam o Santa na rodada 1 (alvo: >70%)
  • Média de iterações até convergência: média de rodadas até BONZINHO (alvo: <1,5)
  • Taxonomia de problemas: distribuição dos tipos de falha (alucinação vs. completude vs. conformidade)
  • Concordância entre revisores: % de problemas sinalizados por ambos os revisores vs. apenas um (baixa concordância = rubrica precisa ser apertada)
  • Taxa de escape: problemas encontrados após o envio que o Santa deveria ter pegado (alvo: 0)

Análise de Custo

O Método Santa custa aproximadamente 2-3x o custo de tokens da geração sozinha por ciclo de verificação. Para a maioria das saídas de alto risco, isso é um bom negócio:

Custo do Santa = (tokens de geração) + 2×(tokens de revisão por rodada) × (média de rodadas)
Custo de NÃO usar Santa = (dano à reputação) + (esforço de correção) + (erosão da confiança)

Para operações em lote, o padrão de amostragem reduz o custo para ~15-20% da verificação completa, enquanto detecta >90% dos problemas sistemáticos.

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

accessibility

Design, implement, and audit inclusive digital products using WCAG 2.2 Level AA. Use when building or auditing UI that must meet WCAG 2.2 Level AA, or when reviewing a change for keyboard, contrast, or screen-reader support.

affaan-m/claude-api

Anthropic Claude API patterns for Python and TypeScript. Covers Messages API, streaming, tool use, vision, extended thinking, batches, prompt caching, and Claude Agent SDK. Use when building applications with the Claude API or Anthropic SDKs.

affaan-m/everything-claude-code

End-to-end marketing campaign planning and execution. Covers audience research, positioning, campaign angle definition, landing page copy, email sequences, social posts, ad copy, short-form video scripts, and content calendars. Use as the orchestration layer for multi-channel product launches. Use when planning or executing a multi-channel product launch, or producing landing page, email, social, or ad copy.

affaan-m/everything-claude-code

Development conventions and patterns for everything-claude-code. JavaScript project with conventional commits.

affaan-m/everything-claude-code-conventions

Development conventions and patterns for everything-claude-code. JavaScript project with conventional commits.

affaan-m/frontend-design

Create distinctive, production-grade frontend interfaces with high design quality. Use when the user asks to build web components, pages, or applications and the visual direction matters as much as the code quality.

affaan-m/gget

gget CLI and Python workflow for quick genomic database queries, sequence lookup, BLAST-style searches, enrichment checks, and reproducible bioinformatics evidence logs.

affaan-m/literature-review

Systematic literature-review workflow for academic, biomedical, technical, and scientific topics, including search planning, source screening, synthesis, citation checks, and evidence logging.

affaan-m/motion-ui

Production-ready UI motion system for React/Next.js. Use when implementing animations, transitions, or motion patterns.

affaan-m/project-guidelines-example

Example project-specific skill template based on a real production application.

affaan-m/pubmed-database

Direct PubMed and NCBI E-utilities search workflows for biomedical literature, MeSH queries, PMID lookup, citation retrieval, and API-backed literature monitoring.

affaan-m/scholar-evaluation

Structured scholarly-work evaluation for papers, proposals, literature reviews, methods sections, evidence quality, citation support, and research-writing feedback.

affaan-m/uspto-database

USPTO patent and trademark data workflow for official record lookup, PatentSearch queries, TSDR checks, assignment data, and reproducible IP research logs.

agent-architecture-audit

Full-stack diagnostic for agent and LLM applications. Audits the 12-layer agent stack for wrapper regression, memory pollution, tool discipline failures, hidden repair loops, and rendering corruption. Produces severity-ranked findings with code-first fixes. Essential for developers building agent applications, autonomous loops, or any LLM-powered feature. Use when an agent or LLM feature misbehaves and the failing layer is unknown, or before shipping an agent stack.

agent-eval

Head-to-head comparison of coding agents (Claude Code, Aider, Codex, etc.) on custom tasks with pass rate, cost, time, and consistency metrics. Use when choosing between coding agents, or when a change to an agent setup needs measured pass rate, cost, and time rather than an impression.

agent-harness-construction

Design and optimize AI agent action spaces, tool definitions, and observation formatting for higher completion rates. Use when defining or revising an agent

agentic-engineering

Operate as an agentic engineer using eval-first execution, decomposition, and cost-aware model routing. Use when planning or executing engineering work that agents will carry out end to end.

agentic-os

Build persistent multi-agent operating systems on Claude Code. Covers kernel architecture, specialist agents, slash commands, file-based memory, scheduled automation, and state management without external databases. Use when building a persistent multi-agent system on Claude Code with its own memory, commands, and scheduling.

agent-introspection-debugging

Structured self-debugging workflow for AI agent failures using capture, diagnosis, contained recovery, and introspection reports. Use when an agent run fails and you need a reproducible diagnosis instead of a retry.

agent-payment-x402

Add x402 payment execution to AI agents with per-task budgets, spending controls, and non-custodial wallets. Supports Base through agentwallet-sdk and X Layer through OKX Payments / OKX Agent Payments Protocol. Use when an agent must pay for something itself and needs per-task budgets, spending controls, and a non-custodial wallet.

Habilidades Relacionadas