WORKSHOP Arquitectura · Gobernanza · IA Agéntica

La IA acelera el código.
La arquitectura decide si esa aceleración te ayuda o te entierra.

PRESENTADO PARAEquipos de ingeniería · Credicorp
FORMATOWorkshop · 2 días · 16 ejercicios
TEMAVibe Coding & Gobernanza
HERRAMIENTASClaude Code + Claude Cowork
Vibe Coding & Gobernanza
tesis · 01

tesis de apertura

El error más caro hoy
no es usar mal la IA.

Es adoptar IA sobre una arquitectura que no tolera aceleración.
El daño no aparece en el primer sprint. Aparece tres trimestres después, cuando ya no se puede revertir sin reescribir.

credicorp · vibe coding02 / 57
Vibe Coding & Gobernanza
tesis · 02

throughput de código × arquitectura

La IA multiplica el throughput.
La arquitectura decide qué se multiplica.

salida A

Capacidad compuesta

Cada feature compone con la anterior. El sistema soporta más velocidad sin perder coherencia.

salida B

Deuda técnica exponencial

El equipo entrega más rápido, pero cada release agrega más fricción a la siguiente.

salida C

Colapso operativo

La velocidad supera la capacidad de razonar el sistema. Los incidentes ya no tienen dueño.

No hay una cuarta. La elección la hace tu arquitectura, no tu IA.

credicorp · vibe coding03 / 57
Vibe Coding & Gobernanza
marco · 01

qué evalúa este workshop

No estamos eligiendo framework.
Estamos detectando topología y construyendo gobernanza.

Lo que medimos no es qué stack usas, sino si la topología de tu sistema es coherente con el nivel de aceleración que la IA va a producir sobre él. Cada concepto del workshop tiene su ejercicio sobre el repo real del equipo.

Día 01: 12 ejercicios de diagnóstico con Cowork. Día 02: 4 ejercicios maestros de implementación con Code.

  • El dominio y su complejidad real
  • El nivel de autonomía deseado para la IA
  • La gobernanza que el equipo puede sostener
  • El modelo de colaboración humano-IA
  • La capacidad operativa del equipo hoy
credicorp · vibe coding04 / 57
DÍA 01 · DIAGNÓSTICO

Día 01
Topologías + 12 problemas.

Mañana: cinco topologías que pueden absorber IA. Tarde: los 12 modos de degradación que la IA introduce, cada uno con un ejercicio de diagnóstico sobre tu repo. Herramienta principal: Claude Cowork para explorar; Claude Code donde haya que correr análisis.

PARTE 01 · 05

Cinco topologías,
cinco contextos.

El mapa de arquitecturas que pueden absorber IA sin colapsar. La elección no es de gusto: cada topología tolera un perfil de complejidad y autonomía distinto.

Topologías arquitectónicas
parte 01

cinco topologías · cinco contextos

Cada arquitectura tolera un perfil distinto de aceleración.

01

Modular Monolith

Producto temprano o mediano con dominio cohesivo. Boundaries explícitos, despliegue único.

02

Hexagonal

Necesidad de desacoplamiento y múltiples integraciones. Dominio aislado, adaptadores intercambiables.

03

Event-Driven

Procesos asincrónicos y workflows complejos. Comunicación por eventos, acoplamiento temporal.

04

Agent-Oriented

Workflow-native: IA opera tareas semiautónomas con tools, memoria y pasos verificables.

05

Microservices

Escala organizacional y dominios altamente separados. Costo operativo alto, autonomía alta.

credicorp · vibe coding07 / 57
Topologías arquitectónicas
parte 01

verdad incómoda

La mayoría de empresas no necesita microservicios.

Los microservicios resuelven un problema organizacional de coordinación entre equipos. No resuelven un problema técnico de complejidad. Y traen consigo costos operativos que la IA no compensa: observabilidad distribuida, contratos, versionado, idempotencia, eventual consistency.

punto de partida típico Modular Monolith + Hexagonal
cuando hay async real Event-Driven moderado
cuando hay >40 ingenieros y 6+ dominios Microservicios — no antes
credicorp · vibe coding08 / 57
Topologías arquitectónicas
parte 01

recomendación operativa

Empieza simple. Hexagonal te da los boundaries que la IA va a respetar.

por qué Modular Monolith
  • Boundaries explícitos sin overhead distribuido
  • Refactor barato — la IA puede mover código entre módulos
  • Observabilidad simple — un solo proceso
  • Tests rápidos — feedback loop corto para la IA
por qué Hexagonal
  • El dominio no toca infraestructura — la IA no la corrompe
  • Ports & adapters son contratos legibles para LLMs
  • Permite reemplazar adaptadores sin tocar reglas de negocio
  • Habilita contract tests — verificables por fitness functions
credicorp · vibe coding09 / 57
PARTE 02 · 09

Doce formas en que la IA
degrada tu sistema.

Ningún equipo cae en uno solo. Caen en cuatro o cinco al mismo tiempo, y los efectos se componen. Reconocerlos es prerrequisito para mitigarlos.

Los 12 problemas del Vibe Coding
parte 02

mapa completo

Cuatro categorías. Doce síntomas. Todos componibles.

Estructural
  • 01 · Architecture Drift
  • 02 · Context Collapse
  • 03 · Complexity Inflation
  • 07 · Hidden Coupling
Operacional
  • 04 · Memory Leaks
  • 08 · Testing Theater
  • 09 · Operational Fragility
Cognitivo
  • 06 · Semantic Inconsistency
  • 10 · Prompt-Driven Architecture
  • 12 · Skill Atrophy
Métrico
  • 05 · False Sense of Velocity
  • 11 · Local Optimization Trap
credicorp · vibe coding11 / 57
Los 12 problemas
01 · drift

problema 01 · architecture drift

El sistema evoluciona como coral, no como arquitectura.

01architecture drift

Cada prompt agrega decisiones locales razonables. Pero nadie está defendiendo invariantes, boundaries, patrones, contratos, ni la semántica global del sistema.

  • Decisiones aisladas se acumulan sin documentación
  • Patrones contradictorios coexisten en el mismo módulo
  • El "estilo de la casa" se diluye en cada PR generada por IA
  • Nadie puede explicar por qué el sistema está como está
credicorp · vibe coding12 / 57
Ejercicio práctico · 01 / 16
contra · architecture drift

ejercicio 01 · architecture drift

Auditoría de drift sobre los últimos 90 días.

DURACIÓN · 30 min  ·  ROL · arquitecto + Claude Code

Objetivo

Detectar dónde se degradó la arquitectura desde el último commit "estable" y producir un reporte priorizado de remediación.

Pasos

  • Definir el commit base ("punto de salud")
  • Pedir auditoría de drift contra ese commit
  • Cruzar con ADRs vigentes — qué se violó
  • Priorizar 3 remediaciones por ratio impacto/coste
claude codegit historyremediación
prompt sugerido · claude code
Compara el repo en HEAD contra commit
<SHA>. Identifica drift respecto a:

· /ai-system/architecture/boundaries.md
· /ai-system/architecture/anti-patterns.md
· /ai-system/architecture/adr/*.md

Para cada violación reporta:
  archivo:línea
  regla violada
  severidad (alta/media/baja)
  remediación mínima viable

Ordena por severidad descendente.
No propongas refactors masivos.
credicorp · vibe coding13 / 57
Los 12 problemas
02 · context collapse

problema 02 · context collapse

La IA trabaja por ventanas de contexto. Tu sistema no.

02context collapse

La IA solo ve lo que cabe en su ventana. El sistema completo no cabe. A medida que el proyecto crece, la IA pierde comprensión histórica, olvida decisiones y contradice implementaciones previas.

síntoma

"La IA reimplementa algo que ya existe en otro módulo."

causa

No tiene memoria persistente del sistema. Cada sesión empieza ciega.

credicorp · vibe coding14 / 57
Ejercicio práctico · 02 / 16
contra · context collapse

ejercicio 02 · context collapse

Carga el contexto del repo en una sesión Cowork.

DURACIÓN · 25 min  ·  ROL · 1 ingeniero + Claude Cowork

Objetivo

Probar el efecto de un contexto curado vs vacío. Comparar respuestas de Cowork sobre la misma pregunta con y sin Memory Pack mínimo.

Pasos

  • Abrir nueva conversación en Cowork sin contexto
  • Hacer una pregunta arquitectónica (ej. "¿dónde reescribiría el módulo X?")
  • Repetir con architecture.md + boundaries.md cargados
  • Comparar especificidad y propuestas reimplementadas
claude coworkcomparativamemory pack
prompt sugerido · claude cowork
[Adjuntar architecture.md + boundaries.md]

Eres asistente arquitectónico de este
repo. Antes de responder, lista:

1. Qué módulos existen y sus responsabilidades
2. Qué boundaries no se pueden cruzar
3. Qué decisiones (ADR) están vigentes

Luego responde:
"¿Dónde y cómo agregaría una nueva
capacidad de notificaciones sin violar
los boundaries actuales?"

Si falta evidencia, di "sin evidencia".
credicorp · vibe coding15 / 57
Los 12 problemas
03 · complexity inflation

problema 03 · complexity inflation

La IA sobreconstruye por defecto.

03complexity inflation

El modelo está entrenado con código de proyectos grandes. Por defecto produce abstracciones de proyectos grandes — incluso para problemas chicos.

Factories innecesarias

Interfaces absurdas

Generic hell

Wrappers infinitos

Sin un presupuesto de complejidad explícito, la IA siempre elige la versión más sofisticada de la solución.

credicorp · vibe coding16 / 57
Ejercicio práctico · 03 / 16
contra · complexity inflation

ejercicio 03 · complexity inflation

Audita un módulo y elimina lo que no debería estar.

DURACIÓN · 20 min  ·  ROL · 1 ingeniero + Claude Cowork

Objetivo

Establecer un presupuesto de complejidad explícito y detectar abstracciones innecesarias añadidas por la IA en los últimos sprints.

Pasos

  • Elegir un módulo con > 200 LoC añadidas en 30 días
  • Pedir a Cowork que liste interfaces, factories y wrappers con un solo uso
  • Marcar cuáles eliminar / inlinizar / mantener
  • Acordar 1 regla de presupuesto: "no factory sin 2+ implementaciones"
claude coworkpresupuesto complejidad
prompt sugerido · claude cowork
Lee el módulo <ruta> y lista:

1. Interfaces con 1 sola implementación
2. Factories que solo se llaman en 1 sitio
3. Wrappers que reexportan sin agregar valor
4. Genéricos <T> con 1 sola instanciación
5. Capas de adaptador sin cambio de tipo

Para cada uno, propón:
   - inlinizar
   - eliminar
   - mantener (justifica con >1 razón)

No reescribas el código. Solo el inventario.
credicorp · vibe coding17 / 57
Los 12 problemas
04 · memory leaks

problema 04 · memory leaks técnicos y cognitivos

Hay leaks que el profiler no ve.

técnicos

Lo que el sistema acumula

  • Listeners sin cleanup
  • Caches infinitos
  • Sockets vivos
  • Referencias circulares
cognitivos

Lo que el equipo deja de saber

  • Qué partes son críticas
  • Qué depende de qué
  • Qué puede romperse y cómo
  • Quién es dueño de cada subsistema

Los segundos son peores. Los técnicos se diagnostican; los cognitivos se descubren cuando ya hubo un incidente.

credicorp · vibe coding18 / 57
Ejercicio práctico · 04 / 16
contra · memory leaks

ejercicio 04 · memory leaks técnicos y cognitivos

Inventaría lo que el sistema acumula y lo que nadie ya entiende.

DURACIÓN · 25 min  ·  ROL · 1 ingeniero + Claude Code

Objetivo

Producir dos listas: leaks técnicos potenciales y leaks cognitivos (subsistemas sin dueño claro). Ambas alimentan el siguiente sprint.

Pasos

  • Pedir a Claude Code un grep de listeners sin cleanup, caches sin eviction y sockets sin close
  • Listar los módulos que no aparecen en CODEOWNERS
  • Cruzar con incidentes recientes — ¿alguno tocó un módulo huérfano?
  • Asignar dueño a cada módulo huérfano antes de cerrar el ejercicio
claude codecodeownersrunbook
prompt sugerido · claude code
Realiza dos auditorías en este repo:

A. Técnica:
   · addEventListener sin removeEventListener
   · setInterval / setTimeout sin clear
   · subscribe sin unsubscribe
   · Map / Set globales que solo crecen
   · sockets / streams sin close

B. Cognitiva:
   · módulos sin entrada en CODEOWNERS
   · módulos modificados por IA en últimos
     30 días sin revisión humana registrada

Output: dos tablas markdown.
Ruta · línea · síntoma.
credicorp · vibe coding19 / 57
Los 12 problemas
05 · false velocity

problema 05 · false sense of velocity

Generar código no es entregar capacidad sostenible.

Las dashboards muestran más PRs, más líneas, más features. El sistema parece más rápido. Pero la velocidad de salida no es la misma cosa que la velocidad de aprendizaje del producto.

3.4×

PRs por semana


+62%

tiempo medio para resolver incidentes en producción

// patrón observado en equipos sin gobernanza

credicorp · vibe coding20 / 57
Ejercicio práctico · 05 / 16
contra · false velocity

ejercicio 05 · false sense of velocity

Distingue throughput de aprendizaje real.

DURACIÓN · 20 min  ·  ROL · tech lead + Claude Cowork

Objetivo

Identificar qué métricas actuales son vanity (PRs, líneas, features) y reemplazarlas por métricas sostenibles (lead-time, time-to-restore, change-fail-rate).

Pasos

  • Listar las 5 métricas que el equipo reporta hoy
  • Pedir a Cowork clasificarlas: vanity / saludable / mixta
  • Definir 4 métricas DORA + 1 de incidente para reemplazar las vanity
  • Acordar dónde se ven (dashboard único o muere)
claude coworkDORAdashboard
prompt sugerido · claude cowork
Te paso las métricas que reportamos hoy:

  · PRs/semana
  · líneas modificadas
  · features cerradas
  · % cobertura
  · velocidad story points

Para cada una clasifica:
   - vanity (mide actividad, no valor)
   - saludable (mide capacidad)
   - mixta (depende del uso)

Propón 5 métricas que reemplacen las
vanity, alineadas a DORA + lead-to-incident.
Para cada una: definición, fuente de datos,
frecuencia, dueño.
credicorp · vibe coding21 / 57
Los 12 problemas
06 · semantic inconsistency

problema 06 · semantic inconsistency

La IA no entiende tu dominio.
Predice plausibilidad lingüística.

El modelo no sabe qué significa "transferencia", "liquidación" o "cliente" en tu sistema. Sabe qué palabras suelen acompañarlas en código que ha visto antes.

Cuando tu dominio tiene términos cargados — regulatorios, contractuales, de riesgo — la IA produce código que parece correcto pero contradice tu modelo.

síntomas típicos
  • Mismo concepto con tres nombres distintos
  • Validaciones que duplican lógica de dominio
  • Estados implícitos que el dominio prohíbe
  • Términos del lenguaje del negocio mal aplicados
credicorp · vibe coding22 / 57
Ejercicio práctico · 06 / 16
contra · semantic inconsistency

ejercicio 06 · semantic inconsistency

Extrae el lenguaje ubicuo que ya vive en el código.

DURACIÓN · 30 min  ·  ROL · domain expert + ingeniero + Cowork

Objetivo

Producir domain-glossary.md con cada término del negocio que aparece en el código, su definición canónica y los aliases que se deben corregir.

Pasos

  • Listar 20 términos del dominio que aparecen en código
  • Pedir a Cowork detectar aliases y sinónimos en el repo
  • Acordar el término canónico con el experto de dominio
  • Marcar deprecaciones para el siguiente refactor
claude coworkdomain expertglossary
prompt sugerido · claude cowork
Lista los 30 términos de dominio más
frecuentes en el código (clases, tipos,
nombres de variables, comentarios).

Para cada término:
   · forma canónica
   · aliases detectados (Cliente / User /
     Account / Customer)
   · ubicaciones (rutas representativas)
   · ¿estado, evento, agregado, valor?

Marca los términos con >1 alias como
"normalizar". No renombres aún.
credicorp · vibe coding23 / 57
Los 12 problemas
07 · hidden coupling

problema 07 · hidden coupling explosion

La IA crea acoplamientos que no aparecen en el diff.

07hidden coupling

Un campo agregado en un servicio. Un nuevo evento publicado. Un retry implícito. Tres semanas después, otro módulo depende silenciosamente de cualquiera de ellos. El acoplamiento ya está, pero no en el código que la IA mostró.

  • Servicios que comparten esquemas sin contrato explícito
  • Tareas que dependen de side-effects de otras tareas
  • Tests que pasan solo en cierto orden
  • Configuración compartida que nadie reclamó como dueño
credicorp · vibe coding24 / 57
Ejercicio práctico · 07 / 16
contra · hidden coupling

ejercicio 07 · hidden coupling explosion

Vuelve visibles los acoplamientos que el diff no muestra.

DURACIÓN · 30 min  ·  ROL · 1 ingeniero + Claude Code

Objetivo

Generar el grafo real de dependencias entre módulos y detectar acoplamientos no documentados, ciclos y violaciones a boundaries esperados.

Pasos

  • Correr dependency-cruiser con configuración baseline
  • Pedir a Code anotar el grafo: ciclos, cross-feature, dominio→infra
  • Identificar acoplamientos vía side-effects (no en imports)
  • Escribir 1 ADR que decida cómo resolver el acoplamiento más caro
claude codedependency-cruisergrafo
prompt sugerido · claude code
Genera el grafo de dependencias de este
repo con dependency-cruiser. Luego:

1. Lista los ciclos (orden topológico fallido)
2. Imports de domain/* → infra/*
3. Imports cross-feature
4. Side-effect coupling: módulos que
   se rompen si NO se importa otro
   antes (revisa side-effects en index)

Output: tabla por categoría +
recomendación de boundary a codificar.
credicorp · vibe coding25 / 57
Los 12 problemas
08 · testing theater

problema 08 · testing theater

Tests verdes ≠ sistema seguro.

La IA es muy buena escribiendo tests que pasan. Eso no es un cumplido.

Tests escritos contra la implementación que la IA acaba de escribir verifican que el código hace lo que el código dice — no que el sistema hace lo que el dominio requiere.

test de implementación
expect(svc.calc()).toBe(
  svc.calc()
)
// pasa siempre
test de comportamiento
given: cuenta saldo 100
when:  retiro 150
then:  rechazado
       y saldo == 100
credicorp · vibe coding26 / 57
Ejercicio práctico · 08 / 16
contra · testing theater

ejercicio 08 · testing theater

Reescribe tres tests de implementación como tests de comportamiento.

DURACIÓN · 30 min  ·  ROL · 1 ingeniero + Claude Code

Objetivo

Convertir tests tautológicos generados por la IA en tests given-when-then contra reglas de dominio. Romperlos a propósito para validar señal.

Pasos

  • Identificar 3 tests que verifican implementación, no comportamiento
  • Escribir cada uno como escenario de dominio (given/when/then)
  • Romper deliberadamente la regla — el test debe fallar
  • Restaurar — debe pasar
claude codevitestgiven-when-then
prompt sugerido · claude code
Toma estos tests y reescríbelos como
tests de comportamiento de dominio:

  <rutas>

Reglas:
   · No mockear el código bajo prueba
   · Solo mockear infra (DB, HTTP, time)
   · Estructura given-when-then explícita
   · El nombre del test es la regla
     de negocio, no la función

Después, modifica el dominio para violar
la regla. El test DEBE fallar. Si pasa,
el test sigue siendo teatro.
credicorp · vibe coding27 / 57
Los 12 problemas
09 · operational fragility

problema 09 · operational fragility

La IA rara vez piensa en producción.

El modelo optimiza por código que compila y pasa los tests. Eso es la mitad inferior del ciclo de vida.

observabilidad

Logs sin estructura, métricas ausentes, traces que no atraviesan boundaries.

backpressure

Consumidores sin límite. Productores que no respetan colas saturadas.

retries

Reintentos sin backoff, sin idempotencia, sin circuit breakers.

race conditions

Estado compartido sin locks, lecturas-modificaciones-escrituras no atómicas.

credicorp · vibe coding28 / 57
Ejercicio práctico · 09 / 16
contra · operational fragility

ejercicio 09 · operational fragility

Production readiness checklist sobre un servicio real.

DURACIÓN · 25 min  ·  ROL · 1 ingeniero + Claude Code

Objetivo

Aplicar la mitad operativa que la IA ignora: observabilidad, backpressure, retries, race conditions. Cerrar el ciclo con un PR de instrumentación.

Pasos

  • Elegir un endpoint o consumer crítico (uno por equipo)
  • Pedir a Code el checklist y los gaps detectados
  • Generar un PR que añada logs estructurados, métricas y backoff
  • Validar: ¿el SLO es testeable con lo añadido?
claude codeopentelemetrybackoff
prompt sugerido · claude code
Audita el servicio <ruta> contra este
checklist de readiness:

  [ ] Logs estructurados con trace_id
  [ ] Métricas: latencia p50/p95/p99,
      error rate, throughput
  [ ] Retries con exponential backoff
  [ ] Idempotencia donde reintenta
  [ ] Circuit breaker en dependencias
  [ ] Backpressure en consumers
  [ ] Locks o atómicos en estado compartido

Lista gaps con severidad y propón
el PR mínimo viable que los cierra.
credicorp · vibe coding29 / 57
Los 12 problemas
10 · prompt-driven

problema 10 · prompt-driven architecture

Tu arquitectura no debería emerger de prompts ad-hoc.

Cuando cada feature se construye prompteando, la arquitectura es la suma agregada de las decisiones puntuales que la IA tomó esa semana — no una decisión consciente del equipo.

El resultado: un sistema cuyo diseño nadie eligió, pero todos heredan.

señales tempranas
  • Cada PR introduce una librería distinta para lo mismo
  • Los layers están mezclados de forma diferente en cada feature
  • El equipo descubre patrones nuevos leyendo el repo, no decidiéndolos
  • Las ADRs llegan después de la implementación, si llegan
credicorp · vibe coding30 / 57
Ejercicio práctico · 10 / 16
contra · prompt-driven architecture

ejercicio 10 · prompt-driven architecture

Refactoriza un módulo con un prompt vago vs uno contractual.

DURACIÓN · 45 min  ·  ROL · 1 ingeniero + Claude Cowork

Objetivo

Probar la diferencia entre un prompt vago y uno contractual sobre el mismo refactor. Comparar PRs lado a lado: drift introducido, archivos tocados, tests rotos.

Pasos

  • Elegir un módulo de tamaño medio (300–800 LoC)
  • Pedir refactor con prompt vago en una rama
  • Pedir refactor con prompt contractual en otra
  • Comparar diff size, tests rotos, drift introducido
claude cowork2 ramascomparativa
prompt contractual · claude cowork
Refactoriza módulo orders/ siguiendo:

· Mantener la API pública intacta
  (verificable: contract tests)
· No modificar archivos fuera del módulo
· No introducir nuevas librerías
· Reducir complejidad ciclomática
  máxima de cada función a <= 10
· Cobertura de comportamiento >= 85%
· Si encuentras un acoplamiento
  hacia infra dentro del dominio,
  detente y reporta. No lo arregles.
credicorp · vibe coding31 / 57
Los 12 problemas
11 · local optimization

problema 11 · local optimization trap

Los sistemas complejos fallan por interacción, no por componente.

La IA mejora componentes individuales muy bien. El componente queda más rápido, más limpio, más legible. La interacción entre componentes — la única superficie donde fallan los sistemas serios — queda fuera de su vista.

refactor de un módulo+18% performance local
impacto en flujo end-to-end−7% throughput global

// el módulo correcto, en el sistema equivocado

credicorp · vibe coding32 / 57
Ejercicio práctico · 11 / 16
contra · local optimization

ejercicio 11 · local optimization trap

Mira el flujo entero antes de optimizar el componente.

DURACIÓN · 25 min  ·  ROL · 2 ingenieros + Claude Cowork

Objetivo

Trazar un flujo end-to-end (request → respuesta o evento → side-effect) y detectar dónde una optimización local degrada el throughput global.

Pasos

  • Elegir un flujo de negocio crítico (ej. "alta de cliente")
  • Pedir a Cowork dibujar el flujo con sus pasos y latencias
  • Marcar dónde la IA optimizó un módulo en los últimos 60 días
  • ¿La optimización mejoró el flujo end-to-end? Validar con un smoke test
claude coworkflow testssmoke
prompt sugerido · claude cowork
Traza el flujo end-to-end "<nombre>":

1. Lista los pasos en orden
   (módulo · operación · IO esperado)
2. Para cada paso, latencia p95 conocida
3. Marca pasos modificados en últimos
   60 días (commit hash + autor)
4. Identifica el cuello real
   ("el flujo NO se acelera si optimizo X")

Output: diagrama de cajas + tabla de
métricas por paso + recomendación
end-to-end.
credicorp · vibe coding33 / 57
Los 12 problemas
12 · skill atrophy

problema 12 · skill atrophy

El equipo pierde capacidad de razonar el sistema.

12skill atrophy

Si la IA depura, modela, perfila y diseña por nosotros, el músculo se atrofia. La paradoja: cuando la IA falla — y va a fallar — el equipo ya no tiene la capacidad para tomar el relevo.

  • Depurar sin asistencia se vuelve incómodo
  • Modelar dominios se delega al modelo
  • Perfilar performance se omite porque "compila"
  • Diseñar sistemas se reduce a redactar prompts
credicorp · vibe coding34 / 57
Ejercicio práctico · 12 / 16
contra · skill atrophy

ejercicio 12 · skill atrophy

Una hora sin IA. Reverse-engineering manual + retrospectiva.

DURACIÓN · 30 min  ·  ROL · todo el equipo · sin asistencia IA + retro Cowork

Objetivo

Forzar al equipo a razonar sobre el sistema sin asistencia. Detectar qué músculos se atrofiaron y cuáles se mantienen. Cerrar con una retro estructurada.

Pasos

  • Elegir un módulo que el equipo no haya tocado en 30 días
  • Cada persona explica en 5 min qué hace y por qué — sin abrir IDE
  • Discutir discrepancias contra lo que el código realmente hace
  • Retro con Cowork: ¿qué prácticas devuelven el músculo?
sin IAclaude cowork (retro)human-in-the-loop
prompt retro · claude cowork
Te paso las notas de la sesión sin-IA
(adjuntas). Identifica:

1. Conceptos que el equipo no pudo
   reconstruir sin abrir el código
2. Decisiones que solo conoce 1 persona
3. Áreas donde la IA es load-bearing
   (sin ella, el equipo se detiene)

Propón 3 prácticas concretas para
recuperar capacidad de razonar:
   · pair sin IA
   · architecture katas
   · code reading sessions

Una recomendación por mes, no más.
credicorp · vibe coding35 / 57
DÍA 02 · GOBERNANZA

Día 02
Estrategias + implementación.

Mañana: una estrategia por cada dolor del Día 01, con sus 4 ejercicios maestros. Tarde: cómo se implementa la gobernanza en el repo (AI OS, prompts contractuales, fitness functions, pipeline, observabilidad) y stack recomendado. Herramienta principal: Claude Code en repo abierto.

PARTE 03 · 23

Una estrategia
por cada dolor.

No hay una bala de plata. Hay doce intervenciones específicas, cada una atacando un modo de degradación distinto. Implementarlas no es opcional si quieres compounding en lugar de colapso.

Estrategias de mitigación
parte 03

tabla maestra · 12 dolores · 12 estrategias · 1/2

Para cada modo de degradación, una intervención específica.

#DolorEstrategiaArtefacto / Práctica
01Architecture driftADRs + fitness functions/architecture/adr/*.md
02Context collapseArchitecture Memory Pack/ai-system/architecture/*
03Complexity inflationPresupuesto de complejidadchecklist + revisión PR
04Memory leaksProfiling + ownership explícitoCODEOWNERS + runbook
05False velocityMétricas sosteniblesDORA + lead-to-incident
06Semantic inconsistencyLenguaje ubicuodomain-glossary.md
credicorp · vibe coding38 / 57
Estrategias de mitigación
parte 03

tabla maestra · 12 dolores · 12 estrategias · 2/2

Para cada modo de degradación, una intervención específica.

#DolorEstrategiaArtefacto / Práctica
07Hidden couplingBoundaries verificablesdependency-cruiser
08Testing theaterTests por comportamientocontract + scenario tests
09Operational fragilityObservabilidad firstOpenTelemetry + SLOs
10Prompt-driven arch.Prompting contractual/prompts/*.md plantillas
11Local optimizationRevisión end-to-endflow tests + smoke
12Skill atrophyHuman-in-the-loopcode review obligatorio
credicorp · vibe coding39 / 57
Ejercicio práctico · 13 / 16
tabla maestra · diagnóstico

ejercicio 13 · mapeo de dolores

Cuáles de los 12 dolores tienes ahora. Prioriza tres.

DURACIÓN · 30 min  ·  ROL · todo el equipo + Claude Cowork

Objetivo

Mapear cada uno de los 12 modos de degradación a evidencia concreta del repo del equipo, y elegir 3 dolores prioritarios para el siguiente sprint.

Pasos

  • Para cada dolor, una evidencia concreta o "no aplica"
  • Cowork ayuda a buscar señales en el repo y en métricas
  • Votar los 3 dolores con mayor ratio impacto/coste de remediación
  • Asignar dueño y deadline a cada uno antes de cerrar
claude coworkvotaciónpriorización
prompt sugerido · claude cowork
Para cada uno de los 12 dolores del
Vibe Coding, busca en este repo señales:

   01 drift · 02 context collapse ·
   03 complexity inflation · 04 memory
   leaks · 05 false velocity · 06 semantic
   inconsistency · 07 hidden coupling ·
   08 testing theater · 09 operational
   fragility · 10 prompt-driven · 11
   local optimization · 12 skill atrophy

Output por dolor:
   · evidencia (ruta · ejemplo · métrica)
   · severidad (alta/media/baja)
   · coste estimado de remediación

Si no hay evidencia, di "no detectado".
credicorp · vibe coding40 / 57
Estrategias de mitigación
drift

contra architecture drift

ADRs declaran la intención. Fitness functions la verifican.

ADR · architecture decision record

Documento corto, versionado en el repo, que captura una decisión arquitectónica: contexto, decisión, consecuencias.

# ADR-007: Comunicación entre módulos Status: accepted Context: el módulo billing necesita reaccionar a eventos de orders. Decision: usar event bus interno con contratos versionados. Consequences: no acoplamiento síncrono. Coste: gestión de schemas.
fitness function

Test automatizado que verifica una propiedad de la arquitectura — no del feature. Falla el build si alguien la viola, incluso si es la IA.

// dependency-cruiser { "name": "no-domain-to-infra", "severity": "error", "from": { "path": "domain" }, "to": { "path": "infra" } }
credicorp · vibe coding41 / 57
Ejercicio práctico · 14 / 16
estrategia · ADRs + fitness

ejercicio 14 · ADRs + fitness functions

Codifica tres boundaries como fitness functions ejecutables.

DURACIÓN · 45 min  ·  ROL · 1 ingeniero + Claude Code

Objetivo

Convertir tres reglas tácitas que viven solo en la cabeza del equipo en tests automatizados que fallan el build cuando se violan, con ADR adjunto.

Pasos

  • Listar 3 reglas tácitas con el equipo (15 min)
  • Pedir a Code codificarlas con dependency-cruiser y ArchUnit
  • Correrlo contra el repo — esperar al menos una violación
  • Decidir: ¿se arregla el código o se actualiza la regla? Escribir ADR
claude codedependency-cruiserADRCI
prompt sugerido · claude code
Necesito codificar 3 boundaries como
reglas de dependency-cruiser:

1. domain/* no puede importar de infra/*
2. features/auth no puede importar de
   features/billing
3. shared/* no puede importar de
   features/*

Genera el archivo .dependency-cruiser.cjs
completo, con severidad "error" y un
mensaje claro por regla.

Luego corre la herramienta y reporta
cualquier violación encontrada.

Por último, redacta ADR-NN.md con
contexto, decisión y consecuencias.
credicorp · vibe coding42 / 57
Estrategias de mitigación
context collapse

contra context collapse

Si la IA olvida tu sistema, dale memoria explícita.

El Architecture Memory Pack es un conjunto de documentos vivos que la IA carga al inicio de cada sesión. Es la "memoria a largo plazo" que el modelo no tiene por sí solo.

architecture.md

Topología, capas, estilos de comunicación, decisiones globales.

boundaries.md

Qué módulo puede hablar con qué módulo, y bajo qué contrato.

domain-glossary.md

Lenguaje ubicuo: cada término del negocio con su definición canónica.

anti-patterns.md

Patrones específicamente prohibidos en este repo, con razones.

adr/*.md

Decisiones tomadas y vigentes — la historia del porqué.

coding-standards.md

Convenciones que la IA debe respetar en cada PR.

credicorp · vibe coding43 / 57
Ejercicio práctico · 15 / 16
estrategia · architecture memory pack

ejercicio 15 · architecture memory pack

Genera el Memory Pack desde el repo actual.

DURACIÓN · 60 min  ·  ROL · 2 ingenieros + Claude Code

Objetivo

Producir /ai-system/architecture/* a partir del repo, no en blanco. La IA propone, los humanos aprueban línea por línea.

Pasos

  • Apuntar Claude Code al repo en modo lectura
  • Pedir architecture.md, boundaries.md y glossary.md
  • Revisar línea por línea — corregir, no aceptar ciegamente
  • Commitear con un ADR-001 que registre el ejercicio
claude coderepo read-onlyADR-001
prompt sugerido · claude code
Lee el repositorio completo. Genera:

1. architecture.md — topología actual,
   capas detectadas, estilos de
   comunicación. Marca con [?] cualquier
   inconsistencia.
2. boundaries.md — qué módulo importa
   de qué. Marca acoplamientos sospechosos.
3. domain-glossary.md — términos del
   dominio que aparecen en código,
   con conteo y ubicaciones.

No inventes. Si no hay evidencia, di
"sin evidencia en el repo".
credicorp · vibe coding44 / 57
Estrategias de mitigación
hidden coupling

contra hidden coupling explosion

Si un boundary no se puede verificar automáticamente, no existe.

Una regla escrita en un documento la IA puede ignorar sin que nadie lo note. Una regla codificada como test la IA no puede violar sin romper el build.

Toda decisión arquitectónica importante debería venir con un test que la verifica.

herramientas que codifican boundaries
  • dependency-cruiser · grafos de dependencias
  • eslint-plugin-boundaries · capas en JS/TS
  • tsarch · arquitectura en TypeScript
  • ArchUnit · arquitectura en JVM
  • jscpd · duplicación detectable
credicorp · vibe coding45 / 57
Ejercicio práctico · 16 / 16
estrategia · boundaries verificables

ejercicio 16 · boundaries verificables

Codifica las capas de tu repo en eslint-plugin-boundaries.

DURACIÓN · 45 min  ·  ROL · 1 ingeniero + Claude Code

Objetivo

Pasar las capas implícitas (domain, application, infra, ui) a configuración verificable en cada PR. Ningún boundary que no se ejecute en CI cuenta.

Pasos

  • Definir las capas y sus reglas de visibilidad con el equipo
  • Pedir a Code generar la config eslint-plugin-boundaries
  • Conectar al pipeline (paso 05: architecture tests)
  • Documentar excepciones explícitas si quedan
claude codeeslint-plugin-boundariesCI
prompt sugerido · claude code
Configura eslint-plugin-boundaries con
estas capas y reglas:

  · domain   → puede importar: domain
  · application → domain, application
  · infra    → domain, application, infra
  · ui       → application, ui

Reglas adicionales:
   · features/* aisladas entre sí
   · shared/* nunca importa de features/*
   · tests pueden romper reglas, marcado

Genera .eslintrc, mensaje por regla y un
script npm run boundaries:check.
credicorp · vibe coding46 / 57
PARTE 04 · 28

Cómo se implementa
en el repo.

La gobernanza no es una política en Confluence. Es un conjunto de archivos, prompts, fitness functions y pasos de pipeline que viven en el mismo repositorio que el código.

Implementación operativa
ai operating system

ai operating system del repositorio

Un directorio. Toda la gobernanza vive ahí.

/ai-system /architecture architecture.md // topología boundaries.md // reglas entre módulos domain-glossary.md // lenguaje ubicuo anti-patterns.md // qué nunca hacer /adr // decisiones /prompts feature.md // nueva feature refactor.md // reescritura segura bugfix.md // fix con regresión audit.md // revisión de drift /quality checklist.md coding-standards.md observability.md

Cada archivo es un contrato. La IA los lee al inicio de cada sesión, los humanos los actualizan cuando cambian de opinión, el pipeline los verifica.

  • Versionado junto al código — no en otro sistema
  • Editado en PRs — cada cambio tiene revisión
  • Cargado por la IA explícitamente — no implícitamente
  • Validado por fitness functions — no solo escrito
credicorp · vibe coding48 / 57
Implementación operativa
prompt engineering estructural

prompt engineering estructural

El prompt es el contrato. Si no es preciso, no existe.

prompt vago — produce drift
Implementa autenticación JWT.

La IA elegirá librería, ubicación, estilo, contratos. Cada uno de esos puede contradecir tu sistema.

prompt contractual — produce capacidad
Implementa autenticación JWT siguiendo:

· Arquitectura hexagonal
· Sin acceso directo a infra desde dominio
· Reutilizar AuthPort existente
· Compatibilidad con refresh tokens actuales
· No modificar módulos billing/*
· Cobertura mínima 85%
· Generar contract tests
· Logs estructurados obligatorios

Plantillas de prompt viven en /ai-system/prompts/. La IA siempre opera con uno cargado.

credicorp · vibe coding49 / 57
Implementación operativa
fitness functions

architecture fitness functions

Tests para tu topología, no solo para tu lógica.

Un test unitario verifica un comportamiento. Una fitness function verifica una propiedad estructural del sistema: capas, dependencias, ciclos, complejidad ciclomática, peso de bundle.

Si la IA introduce un import desde dominio hacia infraestructura, el build falla. Punto.

// reglas mínimas no-cycle // sin ciclos en grafo domain-no-infra // dominio puro no-cross-feature // features aisladas api-stable // contratos versionados bundle-budget // peso máximo complexity-cap // ciclomática < N
credicorp · vibe coding50 / 57
Implementación operativa
pipeline

pipeline de pre-merge

Diez pasos entre el código de la IA y main.

01
IA implementa la feature
02
Linter
03
Type check
04
Unit tests
05
Architecture tests
06
Security scan
07
Performance smoke test
08
Observability validation
09
Human review obligatorio
10
Merge a main

El paso 09 es el único negociable solo en una dirección: nunca lo saques. Si lo sacas, todo lo anterior se reduce a un sello automático sin dueño.

credicorp · vibe coding51 / 57
Implementación operativa
observabilidad first

observabilidad first

El log estructurado es el primer código que escribes, no el último.

log estructurado mínimo
{ "event": "payment_processed", "trace_id": "a3f...", "user_id": "usr_...", "amount": 1450.00, "currency": "PAB", "latency_ms": 123, "outcome": "ok" }
métricas mínimas por servicio
  • Latencia (p50, p95, p99)
  • Memoria y CPU por proceso
  • Retries y dead-letter rate
  • Throughput por endpoint
  • Token usage de IA
  • Costo IA por feature
credicorp · vibe coding52 / 57
PARTE 05 · 34

Stack recomendado
para cada capa.

La selección no es ideológica. Cada herramienta cubre una capa específica del sistema operativo de gobernanza que acabamos de describir.

Stack recomendado
parte 05

stack recomendado por capa

Cinco capas. Una elección defendible para cada una.

base
  • GitHub// repo + ci/cd
  • Claude Code// agente en repo
  • Codex// asistencia inline
  • Cursor// editor con IA
governance
  • ADRs// decisiones
  • dependency-cruiser// boundaries
  • eslint boundaries// capas
  • CODEOWNERS// dueños
calidad
  • Vitest// unit + behaviour
  • Playwright// e2e
  • Pact / contract// integraciones
  • jscpd// duplicación
observabilidad
  • OpenTelemetry// traces + métricas
  • Grafana// dashboards
  • Sentry// errores
  • Loki// logs estructurados
workflows IA
  • Temporal// orquestación durable
  • LangGraph// grafos de agentes
  • Mastra// runtime de agentes
  • MCP servers// tools tipados
credicorp · vibe coding54 / 57
Insight final
cierre · 01

insight final

La IA convierte el desarrollo en un problema de gobernanza operacional.

No es un problema de productividad. No es un problema de herramienta. Es un problema de cómo se decide en un equipo cuando una parte del equipo es un modelo que nunca duerme y nunca recuerda.

credicorp · vibe coding55 / 57
El equipo que gane no será el que genere más código.
Será el que mejor controle complejidad, coherencia, memoria, boundaries y degradación sistémica.
Vibe Coding & Gobernanza · Workshop Credicorp
Próximos pasos
cierre · 03

compromisos post-workshop · 30 días

Tres entregables del Día 02 que viven en CI a partir de mañana.

semana 01

Memory Pack en el repo

Ejercicio 15. Un PR con /ai-system/architecture/* committeado, revisado y aprobado.

semana 02

Boundaries verificables

Ejercicios 14 y 16. Tres fitness functions y la config de eslint-plugin-boundaries fallando el build cuando se violan.

semana 03

Auditoría de drift recurrente

Ejercicio 01. Reporte de drift sobre los últimos 90 días, con tres remediaciones priorizadas y un cron mensual.

Revisión a 30 días: los tres entregables corriendo en CI, el equipo demostrando uno de los ejercicios del Día 01 sin asistencia.

credicorp · vibe coding57 / 57