Communitygithub.com

método-santa

Verificación adversarial multiagente con bucle de convergencia. Dos agentes de revisión independientes deben aprobar antes de que el resultado se publique. Úsalo cuando el resultado debe superar dos revisores adversariales independientes antes de su publicación.

¿Qué es método-santa?

El método Santa es un marco de verificación adversarial multiagente diseñado para asegurar la calidad de salidas críticas generadas por IA. Su nombre evoca la canción infantil: 'Haz una lista, revísala dos veces; si es traviesa, arréglala hasta que sea buena'. El núcleo del método reconoce que un único agente revisando su propio trabajo comparte los mismos sesgos, lagunas de conocimiento y errores sistemáticos que produjeron la salida. Para romper este modo de fallo, el método emplea dos agentes de revisión independientes, sin contexto compartido, que evalúan la salida frente a una misma rúbrica objetiva. El flujo consta de cuatro fases: generación, revisión dual independiente, compuerta de veredicto y bucle de corrección. Solo si ambos revisores emiten un veredicto 'APROBADO' (PASS), la salida se envía; de lo contrario, se recogen todos los problemas señalados, se corrigen y se vuelve a ejecutar la revisión completa con agentes frescos, repitiendo hasta un máximo de iteraciones. Este método es ideal para salidas que se publicarán, desplegarán o consumirán por usuarios finales, especialmente en contextos con requisitos de cumplimiento, regulatorios o de marca, y cuando los riesgos de alucinación, errores o inconsistencias son altos. Funciona en cualquier plataforma que permita ejecutar agentes de IA, como Claude Code, Cursor o Codex, y se puede implementar mediante subagentes (para aislamiento total de contexto) o de forma secuencial simulada. Incluye además patrones de muestreo para lotes grandes y métricas para medir su efectividad, como la tasa de primer pase o el número medio de iteraciones hasta convergencia.

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

Preguntar en tu IA favorita

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

Documentación

Método Santa

Marco de verificación adversarial multiagente. Haz una lista, revísala dos veces. Si es traviesa, arréglala hasta que sea buena.

La idea central: un único agente revisando su propio resultado comparte los mismos sesgos, lagunas de conocimiento y errores sistemáticos que produjeron dicho resultado. Dos revisores independientes sin contexto compartido rompen este modo de fallo.

Cuándo activarlo

Invoca esta skill cuando:

  • El resultado se vaya a publicar, desplegar o consumir por usuarios finales
  • Se deban cumplir restricciones de cumplimiento normativo, regulatorias o de marca
  • El código se envíe a producción sin revisión humana
  • La precisión del contenido sea importante (documentación técnica, material educativo, textos para clientes)
  • Se generen lotes a gran escala donde el muestreo aleatorio pasa por alto patrones sistemáticos
  • El riesgo de alucinación sea elevado (afirmaciones, estadísticas, referencias a APIs, lenguaje legal)

NO la uses para borradores internos, investigación exploratoria o tareas con verificación determinista (usa pipelines de compilación/pruebas/lint para esas).

Arquitectura

┌─────────────┐
│  GENERADOR   │  Fase 1: Haz una lista
│  (Agente A)   │  Produce el entregable
└──────┬───────┘
       │ salida
       ▼
┌──────────────────────────────┐
│     REVISIÓN DUAL INDEPENDIENTE  │  Fase 2: Revísala dos veces
│                                │
│  ┌───────────┐ ┌───────────┐  │  Dos agentes, misma rúbrica,
│  │ Revisor B │ │ Revisor C │  │  sin contexto compartido
│  └─────┬─────┘ └─────┬─────┘  │
│        │              │        │
└────────┼──────────────┼────────┘
         │              │
         ▼              ▼
┌──────────────────────────────┐
│     PUERTA DE VEREDICTO       │  Fase 3: ¿Traviesa o buena?
│                                │
│  ¿B aprueba Y C aprueba? → BUENA  │  Ambas deben aprobar.
│  De lo contrario → TRAVIESA        │  Sin excepciones.
└──────┬──────────────┬─────────┘
       │              │
    BUENA           TRAVIESA
       │              │
       ▼              ▼
   [ ENVIAR ]    ┌─────────────┐
                 │  CICLO DE    │  Fase 4: Arrégiala hasta
                 │  CORRECCIÓN  │  que sea buena
                 │              │
                 │ iteración++  │  Recoge todas las banderas.
                 │ si i > MAX:  │  Corrige todos los problemas.
                 │   escalar    │  Vuelve a ejecutar ambos revisores.
                 │ sino:        │  Bucle hasta convergencia.
                 │   ir a Fase 2│
                 └──────────────┘

Detalles de las fases

Fase 1: Haz una lista (Generar)

Ejecuta la tarea principal. Sin cambios en tu flujo de trabajo de generación normal. El método Santa es una capa de verificación posterior a la generación, no una estrategia de generación.

# El generador funciona con normalidad
salida = generar(especificacion_tarea)

Fase 2: Revísala dos veces (Revisión dual independiente)

Genera dos agentes de revisión en paralelo. Invariantes críticos:

  1. Aislamiento de contexto — ningún revisor ve la evaluación del otro
  2. Rúbrica idéntica — ambos reciben los mismos criterios de evaluación
  3. Mismos insumos — ambos reciben la especificación original Y la salida generada
  4. Salida estructurada — cada uno devuelve un veredicto con tipo, no texto libre
PROMPT_REVISOR = """
Eres un revisor de calidad independiente. NO has visto ninguna otra revisión de esta salida.

## Especificación de la tarea
{especificacion_tarea}

## Salida bajo revisión
{salida}

## Rúbrica de evaluación
{rubrica}

## Instrucciones
Evalúa la salida frente a CADA criterio de la rúbrica. Para cada uno:
- APROBADO: criterio cumplido completamente, sin problemas
- SUSPENSO: problema específico encontrado (cita el problema exacto)

Devuelve tu evaluación como JSON estructurado:
{
  "veredicto": "APROBADO" | "SUSPENSO",
  "comprobaciones": [
    {"criterio": "...", "resultado": "APROBADO|SUSPENSO", "detalle": "..."}
  ],
  "problemas_criticos": ["..."],   // bloqueantes que deben corregirse
  "sugerencias": ["..."]           // mejoras no bloqueantes
}

Sé riguroso. Tu trabajo es encontrar problemas, no aprobar.
"""
# Genera revisores en paralelo (subagentes de Claude Code)
revisor_b = Agente(prompt=PROMPT_REVISOR.format(...), descripcion="Revisor Santa B")
revisor_c = Agente(prompt=PROMPT_REVISOR.format(...), descripcion="Revisor Santa C")

# Ambos se ejecutan concurrentemente — ninguno ve al otro

Diseño de la rúbrica

La rúbrica es el insumo más importante. Las rúbricas vagas generan revisiones vagas. Cada criterio debe tener una condición de aprobado/suspendido objetiva.

CriterioCondición de aprobadoSeñal de fallo
Precisión fácticaTodas las afirmaciones verificables con material fuente o conocimiento comúnEstadísticas inventadas, números de versión incorrectos, APIs inexistentes
Sin alucinacionesSin entidades, citas, URLs o referencias fabricadasEnlaces a páginas que no existen, citas atribuidas sin fuente
IntegridadCada requisito de la especificación está cubiertoSecciones faltantes, casos límite omitidos, cobertura incompleta
CumplimientoSupera todas las restricciones específicas del proyectoTérminos prohibidos usados, violaciones de tono, incumplimiento normativo
Consistencia internaSin contradicciones dentro de la salidaLa sección A dice X, la sección B dice no-X
Corrección técnicaEl código compila/ejecuta, los algoritmos son sólidosErrores de sintaxis, bugs lógicos, afirmaciones de complejidad erróneas

Extensiones de rúbrica por dominio

Contenido/Marketing:

  • Adherencia a la voz de marca
  • Requisitos SEO cumplidos (densidad de palabras clave, metaetiquetas, estructura)
  • Sin uso indebido de marcas registradas de competidores
  • Llamada a la acción presente y correctamente enlazada

Código:

  • Seguridad de tipos (sin fugas de any, manejo adecuado de nulos)
  • Cobertura de manejo de errores
  • Seguridad (sin secretos en el código, validación de entrada, prevención de inyección)
  • Cobertura de pruebas para nuevas rutas

Con cumplimiento normativo (regulado, legal, financiero):

  • Sin garantías de resultados ni afirmaciones no fundamentadas
  • Descargos de responsabilidad requeridos presentes
  • Solo terminología aprobada
  • Lenguaje apropiado para la jurisdicción

Fase 3: ¿Traviesa o buena? (Puerta de veredicto)

def veredicto_santa(revisor_b, revisor_c):
    """Ambos revisores deben aprobar. Sin crédito parcial."""
    if revisor_b.veredicto == "APROBADO" and revisor_c.veredicto == "APROBADO":
        return "BUENA"  # Enviarlo

    # Combinar banderas de ambos revisores, deduplicar
    todos_problemas = deduplicar(revisor_b.problemas_criticos + revisor_c.problemas_criticos)
    todas_sugerencias = deduplicar(revisor_b.sugerencias + revisor_c.sugerencias)

    return "TRAVIESA", todos_problemas, todas_sugerencias

Por qué ambos deben aprobar: si solo un revisor detecta un problema, ese problema es real. El punto ciego del otro revisor es exactamente el modo de fallo que el método Santa existe para eliminar.

Fase 4: Arrégiala hasta que sea buena (Bucle de convergencia)

MAX_ITERACIONES = 3

for iteracion in range(MAX_ITERACIONES):
    veredicto, problemas, sugerencias = veredicto_santa(revisor_b, revisor_c)

    if veredicto == "BUENA":
        registrar_resultado_santa(salida, iteracion, "aprobado")
        return enviar(salida)

    # Corregir todos los problemas críticos (las sugerencias son opcionales)
    salida = agente_correccion.ejecutar(
        salida=salida,
        problemas=problemas,
        instruccion="Corrige SOLO los problemas señalados. No refactorices ni añadas cambios no solicitados."
    )

    # Volver a ejecutar AMBOS revisores sobre la salida corregida (agentes nuevos, sin memoria de la ronda anterior)
    revisor_b = Agente(prompt=PROMPT_REVISOR.format(salida=salida, ...))
    revisor_c = Agente(prompt=PROMPT_REVISOR.format(salida=salida, ...))

# Iteraciones agotadas — escalar
registrar_resultado_santa(salida, MAX_ITERACIONES, "escalado")
escalar_a_humano(salida, problemas)

Crítico: cada ronda de revisión usa agentes nuevos. Los revisores no deben tener memoria de rondas anteriores, ya que el contexto previo crea sesgo de anclaje.

Patrones de implementación

Patrón A: Subagentes de Claude Code (Recomendado)

Los subagentes proporcionan un verdadero aislamiento de contexto. Cada revisor es un proceso separado sin estado compartido.

# En una sesión de Claude Code, usa la herramienta Agent para generar revisores
# Ambos agentes se ejecutan en paralelo para mayor rapidez
# Pseudocódigo para invocación de la herramienta Agent
revisor_b = Agente(
    descripcion="Revisor Santa B",
    prompt=f"Revisa esta salida por calidad...\n\nRÚBRICA:\n{rubrica}\n\nSALIDA:\n{salida}"
)
revisor_c = Agente(
    descripcion="Revisor Santa C",
    prompt=f"Revisa esta salida por calidad...\n\nRÚBRICA:\n{rubrica}\n\nSALIDA:\n{salida}"
)

Patrón B: Secuencial en línea (Alternativa)

Cuando los subagentes no están disponibles, simula el aislamiento con reinicios de contexto explícitos:

  1. Genera la salida
  2. Nuevo contexto: "Eres el Revisor 1. Evalúa SOLO frente a esta rúbrica. Encuentra problemas."
  3. Registra los hallazgos textualmente
  4. Limpia el contexto por completo
  5. Nuevo contexto: "Eres el Revisor 2. Evalúa SOLO frente a esta rúbrica. Encuentra problemas."
  6. Compara ambas revisiones, corrige, repite

El patrón de subagentes es estrictamente superior: la simulación en línea corre el riesgo de contaminación de contexto entre revisores.

Patrón C: Muestreo por lotes

Para lotes grandes (100+ elementos), aplicar el método Santa completo a cada elemento es prohibitivo. Usa muestreo estratificado:

  1. Ejecuta Santa en una muestra aleatoria (10-15% del lote, mínimo 5 elementos)
  2. Categoriza los fallos por tipo (alucinación, cumplimiento, integridad, etc.)
  3. Si surgen patrones sistemáticos, aplica correcciones dirigidas a todo el lote
  4. Vuelve a muestrear y verificar el lote corregido
  5. Continúa hasta que una muestra limpia pase
import random

def santa_lote(elementos, rubrica, tasa_muestra=0.15):
    muestra = random.sample(elementos, max(5, int(len(elementos) * tasa_muestra)))

    for elemento in muestra:
        resultado = santa_completo(elemento, rubrica)
        if resultado.veredicto == "TRAVIESA":
            patron = clasificar_fallo(resultado.problemas)
            elementos = corregir_lote(elementos, patron)  # Corregir todos los elementos que coinciden con el patrón
            return santa_lote(elementos, rubrica)           # Volver a muestrear

    return elementos  # Muestra limpia → enviar lote

Modos de fallo y mitigaciones

Modo de falloSíntomaMitigación
Bucle infinitoLos revisores siguen encontrando nuevos problemas tras las correccionesLímite máximo de iteraciones (3). Escalar.
Aprobación automáticaAmbos revisores aprueban todoPrompt adversarial: "Tu trabajo es encontrar problemas, no aprobar."
Deriva subjetivaLos revisores señalan preferencias de estilo, no erroresRúbrica estricta con criterios de aprobado/suspendido objetivos solamente
Regresión de correcciónCorregir el problema A introduce el problema BRevisores nuevos en cada ronda detectan regresiones
Sesgo de acuerdo entre revisoresAmbos revisores pasan por alto lo mismoMitigado por la independencia, no eliminado. Para salidas críticas, añade un tercer revisor o verificación humana puntual.
Explosión de costesDemasiadas iteraciones en salidas grandesPatrón de muestreo por lotes. Límites de presupuesto por ciclo de verificación.

Integración con otras skills

SkillRelación
Verification LoopÚsala para verificaciones deterministas (compilación, lint, pruebas). Usa Santa para verificaciones semánticas (precisión, alucinaciones). Ejecuta verification-loop primero, Santa después.
Eval HarnessLos resultados del método Santa alimentan las métricas de evaluación. Realiza un seguimiento de pass@k en las ejecuciones de Santa para medir la calidad del generador a lo largo del tiempo.
Continuous Learning v2Los hallazgos de Santa se convierten en instintos. Fallos repetidos en el mismo criterio → comportamiento aprendido para evitar el patrón.
Strategic CompactEjecuta Santa ANTES de compactar. No pierdas el contexto de revisión en medio de la verificación.

Métricas

Realiza un seguimiento de estas para medir la efectividad del método Santa:

  • Tasa de primer pase: % de salidas que pasan Santa en la ronda 1 (objetivo: >70%)
  • Media de iteraciones hasta convergencia: rondas promedio hasta BUENA (objetivo: <1.5)
  • Taxonomía de problemas: distribución de tipos de fallo (alucinación vs. integridad vs. cumplimiento)
  • Acuerdo entre revisores: % de problemas señalados por ambos revisores vs. solo uno (bajo acuerdo = la rúbrica necesita ajuste)
  • Tasa de escape: problemas encontrados después del envío que Santa debería haber detectado (objetivo: 0)

Análisis de costes

El método Santa cuesta aproximadamente 2-3 veces el coste de tokens de la generación sola por ciclo de verificación. Para la mayoría de las salidas de alto riesgo, es una ganga:

Coste de Santa = (tokens de generación) + 2×(tokens de revisión por ronda) × (rondas medias)
Coste de NO Santa = (daño a la reputación) + (esfuerzo de corrección) + (pérdida de confianza)

Para operaciones por lotes, el patrón de muestreo reduce el coste a ~15-20% de la verificación completa, mientras detecta >90% de los 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.

Skills relacionados