En la Parte 1 te dije que no necesitas un agente más inteligente: necesitas dirigir un equipo de agentes que piensen distinto. Esa pieza era el porqué. En la Parte 2 armaste tu primer agente, uno solo, de cero a uno que corre.

Ahora viene el equipo. En esta guía construimos el panel completo —varias miradas a la vez— y lo corremos sobre un caso real, incluido qué haces cuando las miradas no coinciden.

Si no leíste la Parte 1

La idea en una línea: un agente, por capaz que sea, es una sola mirada. Y ninguna mirada ve todo — ni la tuya, ni la del mejor modelo del mercado. La cobertura no sale de un cerebro brillante, sale de varias perspectivas que se cruzan. Acá lo armamos.


El patrón: un panel, no una cadena

En De prompts a agentes te mostré una línea de montaje: agentes en cadena, cada uno hace una etapa distinta (analizar → planificar → generar). El resultado de uno alimenta al siguiente.

Hoy es otra cosa. Un panel: varios agentes que miran lo mismo, al mismo tiempo, cada uno con una especialidad, y después concilian.

Misma historia 3 lentes en paralelo Cada uno su lista Reconciliación El director decide

Tres reglas hacen que esto funcione, y ninguna es opcional:

Ciegos entre sí — cada agente trabaja sin ver lo que encontraron los otros. Si se contaminan, dejan de ser perspectivas distintas y vuelven a ser una sola.
Mismo input, mismo momento — los tres reciben la misma historia con los mismos criterios. La diferencia no está en lo que leen, está en cómo lo miran.
Se concilian, no se apilan — el valor no es juntar tres listas. Es resolver dónde se cruzan y dónde chocan.

Por qué estos tres lentes

No elegí tres roles al azar. Elegí los tres ejes por los que la calidad falla de verdad:

El que piensa como usuario — la experiencia y el desvío humano

Recorre la historia como la recorrería una persona real. No el flujo ideal: el que se apura, se equivoca de paso, no entiende el mensaje, abandona y vuelve, usa un dispositivo malo. Mira la experiencia, no la especificación.

El que piensa en los bordes — las técnicas ISTQB sobre el espacio de entradas

Aplica clases de equivalencia, valores límite, tablas de decisión, transición de estados. Ataca el espacio de entradas y dónde se rompe: el valor justo, el valor ±1, la frontera exacta entre aceptar y rechazar.

El que piensa en el riesgo — el daño si esto falla en producción

Mira la misma historia preguntando qué cuesta más caro: fraude, suplantación, datos sensibles, cumplimiento, reputación. Piensa como atacante y como auditor. Prioriza por impacto del daño.

Un agente solo, por bueno que sea, suele cubrir bien uno de esos tres ejes y dejar flojos los otros dos.


Constrúyelo en Claude Code

Voy a aterrizar el patrón en Claude Code porque es lo que uso, pero el patrón es agnóstico: si tu herramienta deja definir agentes con un rol y un prompt de sistema, esto se traduce directo.

En Claude Code, un subagente es un archivo markdown en .claude/agents/. Tiene un encabezado (nombre, cuándo se usa, modelo) y debajo, el prompt de sistema: las instrucciones permanentes de ese agente.

¿Es tu primer agente?

Si nunca creaste uno, empieza por Tu primer agente de QA: ahí te muestro paso a paso dónde vive la carpeta .claude/agents/, cómo crearla y cómo se invoca un agente. Acá doy por hecho que ya armaste uno solo.

Acá están los tres. Cópialos tal cual a tu carpeta .claude/agents/ y ya tienes el panel.

Lo importante de cada archivo

Fíjate en tres cosas dentro de cada prompt: (1) el lente está definido en una sola frase fuerte, (2) le digo explícitamente qué NO mirar — para que no invada el territorio de los otros, (3) le pido un formato de salida fijo, para que después la reconciliación sea mecánica.

Archivo 1 — qa-lente-usuario.md
---
name: qa-lente-usuario
description: Lente "usuario" del panel de QA. Genera casos de prueba desde el comportamiento humano real y la experiencia de uso, sobre una historia de usuario con sus criterios de aceptación. Úsalo como uno de los tres lentes, en paralelo y ciego a los demás.
tools: Read
model: sonnet
---
Eres un agente de QA especializado. Tu único lente es EL QUE PIENSA COMO USUARIO.
Recibes una historia de usuario con sus criterios de aceptación. Generas casos
de prueba SOLO desde la perspectiva del comportamiento humano real y la
experiencia de uso.
Recorre la historia como la recorrería una persona de verdad: el camino feliz
y, sobre todo, el desvío humano — el que se apura, se equivoca de paso, se
confunde, no entiende el mensaje, usa un dispositivo malo o una conexión mala,
abandona a la mitad y vuelve, intenta atajos, interpreta mal la pantalla.
NO te enfoques en seguridad/fraude ni en límites numéricos de datos: eso lo
cubren otros lentes. Tu foco es la experiencia y el comportamiento humano.
## Reglas
- Quédate en tu lente. No invadas bordes ni riesgo.
- Casos concretos y específicos a la feature, no genéricos.
- Entre 8 y 14 casos.
## Formato de salida (obligatorio)
Devuelve SOLO una tabla markdown, sin preámbulo, con columnas:
| ID | Caso | Escenario | Por qué importa |
Usa IDs U1, U2, … Español, tuteo.
Archivo 2 — qa-lente-bordes.md
---
name: qa-lente-bordes
description: Lente "bordes" del panel de QA. Genera casos de prueba aplicando técnicas ISTQB (valores límite, clases de equivalencia, tablas de decisión, transición de estados) sobre una historia de usuario con sus criterios de aceptación. Úsalo como uno de los tres lentes, en paralelo y ciego a los demás.
tools: Read
model: sonnet
---
Eres un agente de QA especializado. Tu único lente es EL QUE PIENSA EN LOS BORDES.
Recibes una historia de usuario con sus criterios de aceptación. Generas casos
de prueba SOLO aplicando técnicas formales de diseño ISTQB: clases de
equivalencia (válidas e inválidas), valores límite/frontera, tablas de
decisión, transición de estados.
Tu foco es el espacio de entradas y dónde se rompe: formatos, tamaños exactos,
fechas frontera (vencimiento, mayoría de edad), longitudes, caracteres
especiales, combinaciones de campos, transiciones de estado en el punto exacto.
NO te enfoques en la experiencia emocional del usuario ni en fraude/seguridad:
eso lo cubren otros lentes. Tu foco es la precisión técnica de los límites.
## Reglas
- Quédate en tu lente. No invadas usuario ni riesgo.
- Para cada caso, nombra la técnica (valor límite, clase de equivalencia, etc.).
- Ataca los límites exactos: el valor justo, el valor ±1, la frontera.
- Entre 8 y 14 casos.
## Formato de salida (obligatorio)
Devuelve SOLO una tabla markdown, sin preámbulo, con columnas:
| ID | Caso | Escenario | Por qué importa |
Usa IDs B1, B2, … Español, tuteo.
Archivo 3 — qa-lente-riesgo.md
---
name: qa-lente-riesgo
description: Lente "riesgo" del panel de QA. Genera casos de prueba desde el daño potencial — fraude, seguridad, PII, cumplimiento, riesgo de negocio — sobre una historia de usuario con sus criterios de aceptación. Úsalo como uno de los tres lentes, en paralelo y ciego a los demás.
tools: Read
model: sonnet
---
Eres un agente de QA especializado. Tu único lente es EL QUE PIENSA EN EL RIESGO.
Recibes una historia de usuario con sus criterios de aceptación. Generas casos
de prueba SOLO desde la perspectiva del riesgo: qué cuesta más caro si falla.
Fraude y suplantación, seguridad (manipulación de cliente, endpoints, sesión,
inyección), datos sensibles/PII, cumplimiento (KYC/AML, menores), riesgo de
negocio y reputación.
Prioriza por impacto del daño.
NO te enfoques en usabilidad ni en partición de datos rutinaria: eso lo cubren
otros lentes. Tu foco es el daño y cómo un actor malicioso o un fallo grave
golpean al negocio y al usuario.
## Reglas
- Quédate en tu lente. No invadas usuario ni bordes.
- Para cada caso, nombra el tipo de daño (fraude, PII, cumplimiento, etc.).
- Piensa como atacante y como auditor: el camino más débil del sistema.
- Entre 8 y 14 casos.
## Formato de salida (obligatorio)
Devuelve SOLO una tabla markdown, sin preámbulo, con columnas:
| ID | Caso | Escenario | Por qué importa |
Usa IDs R1, R2, … Español, tuteo.

Para correrlos, le das a cada uno la misma historia de usuario con sus criterios de aceptación, en paralelo. En Claude Code es tan simple como pedir que los tres subagentes analicen la misma historia a la vez. Ninguno ve lo que devolvió el otro.

Concretamente, con los cuatro archivos en .claude/agents/, este es el pedido:

Analiza esta historia de usuario con tres subagentes EN PARALELO:
qa-lente-usuario, qa-lente-bordes y qa-lente-riesgo. Dale a cada uno
la misma historia con sus criterios de aceptación. Devuélveme las
tres listas por separado, sin mezclarlas.
Historia: [tu historia + criterios de aceptación]
Dos cosas que cambian el resultado
  • Nómbralos explícitamente. Si no, Claude elige cuál usar según la descripción de cada agente; al nombrarlos fuerzas que corran los tres.

  • Pide “en paralelo” o “a la vez”. Así Claude lanza las tres tareas en un mismo turno, no una tras otra.

La ceguera entre ellos es automática: cada subagente corre en su propio contexto aislado, no comparten memoria. Que “ninguno vea lo que devolvió el otro” pasa por diseño — no tienes que forzarlo.


Córrelo: la prueba de que no es humo

Esta es la corrida real. Tomé una feature de verificación de identidad por documento, la típica de onboarding: subes la foto de tu documento, el sistema la valida con OCR, compara una selfie y resuelve aprobado / rechazado / revisión manual.

Les di a los tres lentes solo la historia y los criterios de aceptación, sin pistas ni la lista de lo que yo esperaba encontrar. Cada uno devolvió 14 casos.

3 Lentes en paralelo
42 Casos generados
0 Casos compartidos entre los tres

Y cada lente encontró cosas que los otros, por su enfoque, no iban a mirar. Esta es la salida cruda:

Solo el lente USUARIOSolo el lente BORDESSolo el lente RIESGO
Retomar tras abandonar sin perder el documentoArchivo de 10 MB exacto / +1 byteDocumento fotografiado desde una pantalla
No dar permiso a la cámara”Vence hoy”: ¿< o <=?Selfie con deepfake (liveness)
Selfie a contraluzCumple 18 años hoy / 17 y 364 díasDocumento de una persona fallecida
Celular viejo de baja calidadTransición exacta en el intento 3PII filtrada en logs / respuesta de API
Cierra la pestaña por impacienciaNúmero con ceros o separadoresDocumentos en un bucket público

Un agente solo te entrega una de esas columnas. El equipo te entrega las tres. No es más volumen de casos: es cobertura por perspectiva.

¿Y si preparo un solo agente buenísimo para los tres ángulos?

No alcanza, y no es por la calidad de tu prompt: es estructural.

  • Una pasada, una mentalidad. Si le pides al mismo agente que sea a la vez el defensor del usuario, el atacante paranoico y el pedante de los bordes, las tres voces se promedian y regresan a la media. Tres contextos separados van a fondo en una sola mentalidad cada uno.

  • Puntos ciegos que no se solapan. Cada lente busca distinto: dónde tropieza una persona, cómo lo abusa un atacante, qué input rompe el parser. Tres agentes ciegos fallan en cosas diferentes, así que la unión cubre más que cualquier pasada única. Un agente solo tiene un punto ciego, y siempre el mismo.

¿Y el panel atrapa todo? Tampoco. Más adelante verás los casos que se le escaparon, y por qué esos los pones tú.


La reconciliación: cuando las miradas no coinciden

La mayoría de los tutoriales se quedan acá, porque juntar tres listas es fácil. Lo difícil es cuando dos o tres lentes miran el mismo escenario y no dicen lo mismo.

Para esto sumé un cuarto agente: el reconciliador. Ojo con su rol:

El reconciliador propone. El director decide.

Este agente NO decide qué entra al plan ni declara que la cobertura está completa. Desenreda las listas para que tú decidas más rápido. El que lidera sigues siendo tú.

Archivo 4 — qa-director-reconciliador.md
---
name: qa-director-reconciliador
description: Asistente de reconciliación del panel de QA. Toma las tres listas de casos (usuario, bordes, riesgo) y propone un plan consolidado, marcando solapamientos y discrepancias. NO decide la prioridad final ni declara cobertura completa — eso lo hace el director humano.
tools: Read
model: sonnet
---
Eres el asistente de reconciliación de un panel de QA. Recibes tres listas de
casos sobre la MISMA historia, generadas por tres lentes: usuario (Ux), bordes
(Bx) y riesgo (Rx).
Tu trabajo NO es decidir qué entra al plan ni declarar cobertura completa. Eso
lo hace el director humano. Tu trabajo es desenredar las tres listas.
## Qué producir
1. PUNTOS VISTOS POR VARIOS LENTES: agrupa los casos donde 2 o 3 lentes miran
el mismo escenario. Por grupo: nombra el escenario, lista qué aporta cada
lente (con su ID), y propón UN punto de prueba que junte todas las
verificaciones. Deja explícito que no son duplicados: son facetas del mismo
requisito.
2. CASOS ÚNICOS: lista por ID los que solo un lente encontró.
3. DISCREPANCIAS: marca dónde los lentes chocan en prioridad/severidad. NO lo
resuelvas: ponlo sobre la mesa para el humano.
## Reglas
- No inventes casos nuevos. Trabajas solo con lo que recibes.
- No digas "la cobertura está completa". Cierra recordando que el director debe
comparar contra su propio criterio para detectar lo que ningún lente vio.
- Conciso, estructurado, español, tuteo.

Cuando lo corrí sobre las tres listas, agrupó seis escenarios que más de un lente había mirado. Uno de ellos:

“Usuario ya aprobado intenta volver a subir su documento” — lo vieron los tres:

Usuario: que la UI bloquee y le explique que ya está verificado, sin un error genérico.
Bordes: que la lógica de estado en el backend impida entrar en un estado incoherente.
Riesgo: que el bloqueo sea server-side — si es solo de UI, se llama directo al endpoint y se salta.

Un agente solo te da una de las tres, y es fácil creer que cubriste “el caso de resubir”. No lo cubriste: es un punto de la feature con tres pruebas necesarias, en tres capas distintas. El director las reconoce como partes del mismo requisito, no como casos repetidos.

La reconciliación también hizo aparecer un requisito que ningún lente había escrito por separado. El lente usuario miró el error honesto: alguien que sube el documento de un familiar por equivocación. El lente riesgo miró el ataque: alguien que sube el documento de otra persona a propósito. Al juntar los dos sale una regla que ninguno había formulado solo: el mensaje de rechazo no debe decir cuál de los dos datos falló, porque esa pista le sirve a un atacante para ir corrigiendo intento tras intento.

Las discrepancias son tuyas

El reconciliador también marcó cuatro choques entre lentes — y no resolvió ninguno. Los dejó sobre la mesa, que es donde tienen que estar:

Las 4 discrepancias que decide el director
  1. Selfie rechazada: ¿error honesto (contraluz) o ataque (deepfake)? ¿Mismo mecanismo de liveness o una capa extra para el ataque?
  2. Calidad de imagen: ¿soporte al usuario (foto borrosa) o vector (foto de una pantalla)? ¿Mismo control o distintos?
  3. Estado “en revisión”: mejorar el mensaje para el usuario honesto sin entregar información que ayude al que quiere evadir.
  4. Número con separadores: normalizarlo para el usuario sin ampliar la superficie de inyección.

Decidir esto es criterio puro de QA. No hay agente que lo resuelva por ti, porque depende de tu contexto, tu normativa, tu negocio. Es exactamente donde tu experiencia vale más que cualquier modelo.


Los límites honestos

Ningún vendor te enseña esto en una demo. Comparé las tres listas contra mi propia rúbrica — lo que yo, con años en esto, sé que se rompe. Y el equipo, con sus 42 casos, no atrapó seis cosas:

Lo que el equipo de 3 lentes NO cubrió
  • Nacimiento el 29 de febrero (año bisiesto).
  • Tildes, ñ y caracteres no latinos que el OCR corta o transforma.
  • Números de documento con ceros a la izquierda que se pierden.
  • Documento de un país o tipo no soportado que pasa un OCR parcial.
  • Enumeración: el mensaje de error revela si un documento ya está registrado.
  • Una aprobación errónea sin forma de revertirse.

No es un fracaso del patrón: es la razón por la que el director no desaparece. Un panel de tres lentes cubre mucho más que un agente solo, pero igual tiene puntos ciegos. Por eso tu trabajo no es generar los casos, sino revisarlos contra tu criterio y agregar lo que ningún lente vio.

El propio reconciliador lo dejó dicho al cerrar:

“Lo que ninguno de los tres lentes garantiza ver: requisitos de negocio específicos de tu contexto — normativa local, SLAs de revisión manual, acuerdos con la fuente oficial de documentos. Comparar este panel contra tus criterios propios es el paso que solo el director puede dar.”

Hasta el sistema reconoce que hay un paso —tu contexto, tu normativa, tu negocio— que no puede dar. Ese paso es tuyo.


Cuándo NO armas un panel

Sin humo significa también decirte cuándo esto sobra.

Montar tres agentes y reconciliarlos tiene un costo: lo coordinas, lo lees, lo decides. Para una historia trivial, ese costo es mayor que el beneficio. No armes un panel para validar un cambio de copy o un campo opcional.

Panel: un flujo crítico, una historia ambigua, algo donde un punto ciego cuesta caro (dinero, datos, cumplimiento).
Panel para una historia chica y de bajo impacto: gastas más coordinando que probando.

Mi regla: el panel se justifica cuando lo que está en juego pesa. Para lo demás, un agente alcanza — y muchas veces, un buen prompt también.


Lo que te llevas

No necesitabas un agente más inteligente. Necesitabas un equipo de perspectivas distintas, y a alguien que lo dirija con criterio.

Ese alguien eres tú. La herramienta va a cambiar el mes que viene; el patrón —lentes ciegos, mismo input, reconciliación dirigida por un humano— no. Copia los cuatro archivos, córrelos sobre tu próxima historia que pese, y fíjate qué encuentra el equipo que tú, solo, habrías dejado pasar.

Y después revisa lo que el equipo dejó pasar. Esa parte sigue siendo tuya.