Communitygithub.com

método-santa

Verificación adversarial multiagente con bucle de convergencia. Dos agentes de revisión independientes deben aprobar antes de que se envíe la salida. Úsalo cuando la salida deba pasar dos revisores adversariales independientes antes de enviarse.

¿Qué es método-santa?

El método Santa es un marco de verificación adversarial multiagente diseñado para garantizar que la salida generada por un agente de IA pase controles rigurosos antes de ser publicada, desplegada o consumida por usuarios finales. Se basa en la idea de que un solo agente que revisa su propio trabajo comparte los mismos sesgos, lagunas de conocimiento y errores sistemáticos que generaron la salida. Al emplear dos agentes de revisión independientes y sin contexto compartido, se rompe este modo de fallo, aumentando la fiabilidad de la revisión. El proceso consta de cuatro fases: Generación (el agente A produce la salida), Revisión dual independiente (los agentes B y C evalúan la salida con la misma rúbrica pero sin comunicarse entre sí), Puerta de veredicto (solo se aprueba si ambos revisores pasan la salida) y Bucle de corrección (si hay fallos, se recopilan, se corrigen y se vuelve a evaluar, con un límite de iteraciones). Es compatible con plataformas como Claude Code (subagentes) y también ofrece patrones de implementación secuencial y muestreo por lotes para reducir costes. El método Santa es ideal para escenarios donde la precisión, el cumplimiento normativo o la reputación de la marca son críticos, como la generación de código en producción, documentos técnicos, contenido legal o marketing automatizado. Su rúbrica de evaluación es altamente configurable, con criterios objetivos de aprobación/rechazo para evitar revisiones subjetivas. También incluye métricas de seguimiento (tasa de primer paso, iteraciones medias, taxonomía de fallos) y análisis de costes, lo que permite medir su eficacia y justificar su inversión.

Compatible con✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/affaan-m/ECC/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 travieso, arréglalo hasta que sea bueno.

La idea central: un solo agente que revisa su propia salida comparte los mismos sesgos, lagunas de conocimiento y errores sistemáticos que produjeron la salida. Dos revisores independientes sin contexto compartido rompen este modo de fallo.

Cuándo activarlo

Invoca esta habilidad cuando:

  • La salida será publicada, desplegada o consumida por usuarios finales
  • Se deben cumplir restricciones de cumplimiento normativo, regulatorio o de marca
  • El código se envía a producción sin revisión humana
  • La precisión del contenido es importante (documentación técnica, material educativo, texto para clientes)
  • Generación por lotes a gran escala donde el muestreo puntual pasa por alto patrones sistémicos
  • El riesgo de alucinación es alto (afirmaciones, estadísticas, referencias a APIs, lenguaje legal)

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

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: Travieso o bueno
│                                │
│  B aprueba Y C aprueba → BUENO │  Ambos deben aprobar.
│  De lo contrario → TRAVIESO    │  Sin excepciones.
└──────┬──────────────┬─────────┘
       │              │
    BUENO          TRAVIESO
       │              │
       ▼              ▼
   [ ENVIAR ]    ┌─────────────┐
                  │  CICLO DE     │  Fase 4: Arréglalo hasta que sea bueno
                  │  CORRECCIÓN   │
                  │              │
                  │ iteración++  │  Recopila 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. No hay 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 normalmente
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. Mismas entradas — ambos reciben la especificación original Y la salida generada
  4. Salida estructurada — cada uno devuelve un veredicto tipado, no prosa
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 contra CADA criterio de la rúbrica. Para cada uno:
- APROBADO: el criterio se cumple completamente, sin problemas
- RECHAZADO: se encontró un problema específico (cita el problema exacto)

Devuelve tu evaluación como JSON estructurado:
{
  "veredicto": "APROBADO" | "RECHAZADO",
  "verificaciones": [
    {"criterio": "...", "resultado": "APROBADO|RECHAZADO", "detalle": "..."}
  ],
  "problemas_criticos": ["..."],   // bloqueantes que deben arreglarse
  "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 la entrada más importante. Las rúbricas vagas producen revisiones vagas. Cada criterio debe tener una condición de aprobado/rechazado objetiva.

CriterioCondición de aprobadoSeñal de fallo
Precisión factualTodas las afirmaciones verificables contra 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
CompletitudCada requisito en la especificación está cubiertoSecciones faltantes, casos límite omitidos, cobertura incompleta
CumplimientoPasa todas las restricciones específicas del proyectoTérminos prohibidos usados, violaciones de tono, incumplimiento regulatorio
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 incorrectas

Extensiones de rúbrica por dominio

Contenido/Marketing:

  • Adherencia a la voz de la 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 correcto 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

Sensible a cumplimiento (regulado, legal, financiero):

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

Fase 3: Travieso o bueno (Puerta de veredicto)

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

    # Combinar banderas de ambos revisores, deduplicar
    todos_problemas = dedupe(revision_b.problemas_criticos + revision_c.problemas_criticos)
    todas_sugerencias = dedupe(revision_b.sugerencias + revision_c.sugerencias)

    return "TRAVIESO", 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églalo hasta que sea bueno (Bucle de convergencia)

MAX_ITERACIONES = 3

for iteracion in range(MAX_ITERACIONES):
    veredicto, problemas, sugerencias = veredicto_santa(revision_b, revision_c)

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

    # Corregir todos los problemas críticos (las sugerencias son opcionales)
    salida = agente_de_correccion.ejecutar(
        salida=salida,
        problemas=problemas,
        instruccion="Corrige SOLO los problemas marcados. No refactorices ni agregues cambios no solicitados."
    )

    # Volver a ejecutar AMBOS revisores sobre la salida corregida (agentes nuevos, sin memoria de la ronda anterior)
    revision_b = Agente(prompt=PROMPT_REVISOR.format(salida=salida, ...))
    revision_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 velocidad
# Pseudocódigo para invocación de la herramienta Agent
revisor_b = Agente(
    descripcion="Revisor Santa B",
    prompt=f"Revisa esta salida en busca de calidad...\n\nRÚBRICA:\n{rubrica}\n\nSALIDA:\n{salida}"
)
revisor_c = Agente(
    descripcion="Revisor Santa C",
    prompt=f"Revisa esta salida en busca de calidad...\n\nRÚBRICA:\n{rubrica}\n\nSALIDA:\n{salida}"
)

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

Cuando no haya subagentes disponibles, simula el aislamiento con reinicios explícitos de contexto:

  1. Genera la salida
  2. Nuevo contexto: "Eres el Revisor 1. Evalúa SOLO contra esta rúbrica. Encuentra problemas."
  3. Registra los hallazgos textualmente
  4. Borra el contexto por completo
  5. Nuevo contexto: "Eres el Revisor 2. Evalúa SOLO contra 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 fuga de contexto entre revisores.

Patrón C: Muestreo por lotes

Para lotes grandes (más de 100 elementos), aplicar Santa completo a cada elemento es prohibitivo en coste. Utiliza 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, completitud, etc.)
  3. Si surgen patrones sistemáticos, aplica correcciones específicas 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 == "TRAVIESO":
            patron = clasificar_fallo(resultado.problemas)
            elementos = corregir_lote(elementos, patron)  # Corregir todos los elementos que coincidan 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 después de las correccionesTope máximo de iteraciones (3). Escalar.
Aprobación automáticaAmbos revisores aprueban todoPrompt adversarial: "Tu trabajo es encontrar problemas, no aprobar."
Deriva subjetivaLos revisores marcan preferencias de estilo, no erroresRúbrica estricta con criterios objetivos de aprobado/rechazado solamente
Regresión en correccionesCorregir 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ñadir 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 habilidades

HabilidadRelación
Bucle de verificaciónUsar para comprobaciones deterministas (compilación, lint, pruebas). Santa para comprobaciones semánticas (precisión, alucinaciones). Ejecutar bucle de verificación primero, Santa después.
Arnés de evaluaciónLos resultados del Método Santa alimentan métricas de evaluación. Rastrear pass@k en ejecuciones de Santa para medir la calidad del generador a lo largo del tiempo.
Aprendizaje continuo v2Los hallazgos de Santa se convierten en instintos. Fallos repetidos en el mismo criterio → comportamiento aprendido para evitar el patrón.
Compacto estratégicoEjecutar Santa ANTES de compactar. No perder contexto de revisión a mitad de verificación.

Métricas

Rastrea estas para medir la efectividad del Método Santa:

  • Tasa de primer paso: % de salidas que aprueban Santa en la ronda 1 (objetivo: >70%)
  • Iteraciones medias hasta convergencia: rondas promedio hasta BUENO (objetivo: <1.5)
  • Taxonomía de problemas: distribución de tipos de fallo (alucinación vs. completitud vs. cumplimiento)
  • Acuerdo entre revisores: % de problemas señalados por ambos revisores vs. solo uno (bajo acuerdo = la rúbrica necesita ajustes)
  • 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 promedio)
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/content-engine

Create platform-native content systems for X, LinkedIn, TikTok, YouTube, newsletters, and repurposed multi-platform campaigns. Use when the user wants social posts, threads, scripts, content calendars, or one source asset adapted cleanly across platforms.

affaan-m/ECC

Multi-platform content distribution across X, LinkedIn, Threads, and Bluesky. Adapts content per platform using content-engine patterns. Never posts identical content cross-platform. Use when the user wants to distribute content across social platforms.

affaan-m/fal-ai-media

Unified media generation via fal.ai MCP — image, video, and audio. Covers text-to-image (Nano Banana), text/image-to-video (Seedance, Kling, Veo 3), text-to-speech (CSM-1B), and video-to-audio (ThinkSound). Use when the user wants to generate images, videos, or audio with AI.

affaan-m/manim-video

日本語翻訳:このファイルは manim-video 用の日本語翻訳が必要です

affaan-m/remotion-video-creation

Remotion のベストプラクティス - React で動画を作成する。3D、アニメーション、音声、字幕、チャート、トランジションなどをカバーするドメイン固有の29のルール。

affaan-m/video-editing

AI-assisted video editing workflows for cutting, structuring, and augmenting real footage. Covers the full pipeline from raw capture through FFmpeg, Remotion, ElevenLabs, fal.ai, and final polish in Descript or CapCut. Use when the user wants to edit video, cut footage, create vlogs, or build video content.

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.

agent-self-evaluation

Use after completing any non-trivial task. The agent self-rates its output on 5 axes — accuracy, completeness, clarity, actionability, conciseness — with concrete evidence per criterion. Produces a structured 1-5 scorecard with specific improvement suggestions.

agent-sort

Build an evidence-backed ECC install plan for a specific repo by sorting skills, commands, rules, hooks, and extras into DAILY vs LIBRARY buckets using parallel repo-aware review passes. Use when ECC should be trimmed to what a project actually needs instead of loading the full bundle.

ai-first-engineering

Engineering operating model for teams where AI agents generate a large share of implementation output. Use when setting team process, review gates, or ownership rules for a codebase largely written by agents.

ai-regression-testing

Regression testing strategies for AI-assisted development. Sandbox-mode API testing without database dependencies, automated bug-check workflows, and patterns to catch AI blind spots where the same model writes and reviews code. Use when adding regression coverage to AI-assisted code, or when the same model both wrote and reviewed a change.

android-clean-architecture

Clean Architecture patterns for Android and Kotlin Multiplatform projects — module structure, dependency rules, UseCases, Repositories, and data layer patterns. Use when structuring modules, layers, or data flow in an Android or KMP project.

angular-developer

Generates Angular code and provides architectural guidance. Trigger when creating projects, components, or services, or for best practices on reactivity (signals, linkedSignal, resource), forms, dependency injection, routing, SSR, accessibility (ARIA), animations, styling (component styles, Tailwind CSS), testing, or CLI tooling.

Skills relacionados