Guía interactiva · Día 5 · Lee Boonstra (Google)

Del vibe al production-grade

La rutina diaria de un ingeniero de Google giró 180 grados: los coding agents producen mil líneas de código documentado antes del almuerzo. Pero velocidad de escritura no es software entregado. Esta guía resume el paper "Spec-Driven Production Grade Development in the Age of Vibe Coding" — el blueprint para transformar prototipos generados por IA en sistemas de producción confiables: specs como source of truth, code review en 3 tiers, guardrails zero-trust y evaluation continua.

📄 Paper: Día 5 · Lee Boonstra ⏱ ~20 min de estudio 🧪 7 snippets de código ✅ Quiz de 8 preguntas 🌐 EN · ES · PT-BR
👥 Para quién es esta guía
👩‍💻 Ingenieros que usan coding agents 🧭 Tech leads & managers 🛡️ Platform / security engineers 🏛️ Arquitectos

El objetivo: escalar el output de agentes sin convertir el repositorio en un campo minado — specs sólidas, review que escala, guardrails externos y humanos en el loop correcto. Presupone familiaridad con desarrollo moderno; no con ML.

dev@2026: ~/checkout — el agente escribe, el revisor bloquea
dev@2026:~/checkout$ agent "implementa el retry de pago según specs/payment_retry.md" ▸ agente: escribiendo payment_retry.py… 1.000 líneas generadas ✓ ▸ agente: abriendo pull request… PR #482 ⚠ revisor (code-check.md): SQL sin parámetros en retry.py:142 — CRITICAL ⚠ revisor: PII sin enmascarar en log línea 87 — CRITICAL ✗ REQUEST CHANGES — velocidad de escritura ≠ velocidad de entrega dev@2026:~/checkout$
0
líneas de código bien documentado que un coding agent puede generar antes del almuerzo — y que no significan, solas, software entregado.
SHIPPED?≠ software entregado
0%
de caída de performance con Markdown genérico no optimizado (estudio SkCC)
0%
de precisión de parsing de YAML en configs anidadas (vs 43,1% JSON · 33,8% XML)
0%
más probabilidad de burnout alto entre usuarios frecuentes de IA (Quantum Workplace/CNBC)
01

La ilusión de velocidad

Mil líneas antes del almuerzo impresionan — hasta que miras lo que llegó a producción.

La rutina cambió por completo. Antes, el día era excavar documentación de APIs, probar código línea por línea, descubrir si el lenguaje usa substring in string, string.includes() o string.contains() — y depurar la distancia entre el código funcional y la intención original. Hoy, coding agents como Antigravity y Gemini CLI no solo sugieren texto: usan herramientas, ejecutan tareas y producen mil líneas documentadas en minutos.

⏪ Antes: el artesano

  • Excavar APIs y documentación manualmente
  • Probar código línea por línea
  • Descubrir sintaxis por prueba y error
  • Depurar la distancia entre código e intención

⏩ Hoy: warp speed

  • Los agentes usan herramientas y ejecutan tareas
  • 1.000 líneas de código documentado, rápido
  • La IA escribe tests, specs, roadmaps y análisis
  • El cuello de botella migró a la revisión e integración humanas

Es como contratar una legión de pasantes que nunca duermen y nunca se quejan.

— sobre coding agents · Lee Boonstra

El problema: la Illusion of Speed es real. El bug-to-code ratio sigue siendo un desafío — la IA escribe mucho más rápido, pero también genera errores potenciales a una tasa sin precedentes. Y cuando un agente alucina (el modelo inventa confiadamente algo que no es verdad), no crea un bug: crea mil líneas de lógica "vibe-consistent" y funcionalmente rota.

Velocidad de escritura (con agentes)10×
Velocidad de entrega (review + integración)~1,3×

Si los revisores humanos se están ahogando en un mar de PRs generados por IA, la velocidad de escritura se vuelve irrelevante: el proceso no se aceleró — solo creó una pila más grande de "cosas" para triar después.

🎲 Vibe Coding

intención vaga → generar rápido → validar después (o nunca)
  • Genial para prototipos y experimentos
  • Output de IA no validado
  • Fallar es aceptable — es un borrador

🏭 Vibe in Production

spec sólida → generar → verificar → integrar
  • Todo intencional y controlado
  • Confiabilidad production-grade
  • En enterprise: "Development with Agentic AI"
Hybrid Team Member

Agentic AI difiere de la Generative AI estándar (autocompletado inteligente): el agente actúa como miembro híbrido del equipo — usa el LLM como cerebro para generar y herramientas como manos para integrar: razona, escribe specs y tests, usa el browser para probar la UI, commitea y mergea en Git. Hay formas de proteger este proceso — pero aplícalas desde el inicio, no a mitad de camino.

02

Spec-Driven Development

La mayor parte de tu tiempo ahora es escribir especificaciones — el código se volvió un subproducto desechable.

En el mundo tradicional, a los devs se les enseña a ser "Code-First": idea vaga → abrir el editor → escribir hasta que algo funcione. En la era de la Agentic AI, la mayor parte del tiempo se vuelve escribir especificaciones de alta calidad — instrucciones técnicas detalladas que le dicen a la IA exactamente qué construir. El rol del dev se acerca más a technical architect que a coder tradicional.

🧱 Code-First

Idea vaga → editor → escribir hasta que funcione. Apego emocional al código que costó 12 horas de depuración.

📐 Spec-First

Spec sólida → el agente genera → regenera cuando quieras. El dev se vuelve arquitecto; el código, output compilado.

El código es desechable

Con una spec sólida, el codebase entero puede regenerarse repetidamente — un agente puede incluso convertir un proyecto entero de Python a JavaScript en una tarde. Sin apego emocional: como no pasaste 12 horas depurando un punto y coma, no hay miedo de tirar todo y recomenzar si los requisitos cambian.

Los coding agents usan el LLM como cerebro (razonar) y herramientas como manos (ejecutar). La consecuencia directa:

🎲 Vibe en lugar de blueprint

vibe → el cerebro ADIVINA → Rogue Agent
  • El modelo llena huecos con suposiciones
  • En enterprise, adivinar = incidentes de "Rogue Agent"
  • Un agente actuando sin verificar nada
vs

📐 Blueprint

spec → ejecución precisa → production
  • Cada requisito está escrito y revisado
  • Código regenerable en cualquier momento
  • Auditable por humanos y por IA
03

Anatomía de una buena spec

La spec es la Estrella del Norte arquitectónica — y el antídoto contra el "teléfono descompuesto" digital.

Una spec production-grade funciona como Architectural North Star: previene la "context fragmentation" — el equivalente digital del juego del teléfono descompuesto, donde la IA pierde el hilo porque mira snapshots desactualizados de archivos. La IA puede ser coautora o revisora de la spec; vive en el codebase (carpeta specs/, en Markdown o YAML) y actúa como source of truth para humanos y máquinas.

Qué contiene una spec de proyecto nuevo

📦 Full Technical Design

Nada de "make a login page". Descompón: requisitos, database schemas (la estructura de los datos) y API specifications (los "contratos" que permiten a las partes del software conversar).

🎨 Visual Aids

Diagramas + lista de herramientas y bibliotecas específicas con números de versión — sin versión, el agente puede sugerir releases antiguos.

🧭 Background Information

Dale al agente el "porqué" detrás del "qué". Sabiendo el objetivo, piensa adelante y anticipa los pasos que probablemente serán necesarios.

🧪 Scenarios

Cómo es lo "bueno", qué está mal — y los edge cases. Los escenarios son la materia prima de los tests.

Mejor que un humano detecte un fallo de lógica en el diseño a esperar a que la IA ya haya generado miles de líneas de código roto.

— consejo del autor: escribe diseños técnicos en Google Docs, deja que muchos los revisen, luego File → Download → Markdown → specs/
🐴 Motor a reacción en una carreta

Mantener procesos antiguos con herramientas modernas es intentar colocar un motor a reacción en una carreta tirada por caballos: la tecnología no puede atornillarse en un workflow de 20 años esperando que vuele. La spec es el primer tornillo del nuevo workflow.

04

El formato correcto: YAML gana

Los LLMs tienen sensibilidad extrema al formato de las instrucciones — hasta 40% de caída con Markdown genérico.

El estudio SkCC (Ouyang et al., 2026 — "Portable and Secure Skill Compilation for Cross-Framework LLM Agents") mostró que los agentes exhiben sensibilidad extrema a cómo se formatean las instrucciones: hasta 40% de caída de performance con Markdown genérico no optimizado. Los investigadores crearon SkCC (Skill Compiler): una herramienta ultrarrápida que compila el archivo de instrucción single-source al formato objetivo óptimo del modelo en menos de 10 milisegundos.

Precisión de parsing — configuraciones profundamente anidadas

YAML
51,9%🏆 Ganador para configuraciones estructuradas y data schemas con profundidad de anidamiento > 3
JSON
43,1%Los inputs JSON pesados cobran un "format tax" de razonamiento y de tokens
XML
33,8%Verbosidad máxima, precisión mínima — evita para instrucciones de agente

Fuente: SkCC (Ouyang et al., 2026). Para equipos con Gemini, la mejor estrategia absoluta es el híbrido Markdown + Conditional YAML.

Estrategia híbrida para Gemini

Usa headers Markdown limpios para anclar la atención y cambia a YAML en cualquier configuración estructurada con anidamiento > 3. Renderizar specs anidadas en YAML + instrucciones narrativas en Markdown evita el "format tax" → Gemini opera con máxima precisión y economía óptima de tokens.

05

BDD & Gherkin

Convierte ideas humanas vagas en diseño arquitectónico preciso — sin espacio para adivinanzas.

Una spec BDD es la herramienta final para convertir ideas vagas y ambiguas en un diseño preciso que el agente puede construir sin adivinar. Behavior Driven Development usa lenguaje natural simple y estructurado para describir exactamente cómo debe comportarse el sistema desde la perspectiva del usuario antes de escribir cualquier código. La sintaxis estandarizada es Gherkin: un template declarativo Scenario / Given / When / Then que fuerza al LLM a pensar en State → Action → Outcome — eliminando completamente el "vibe coding" y manteniendo al agente en una pista estricta.

STATE · GivenACTION · WhenOUTCOME · Then
specs/payment_retry.featurespec ejecutable — sintaxis Gherkin
Feature: Retry de pagamentoScenario: Cartão recusado, nova tentativa automáticaGiven um pedido "#8842" com pagamento "recusado"And o cliente tem 2 tentativas restantesWhen o webhook "payment.retried" é recebidoThen o sistema agenda nova tentativa em 30 minutosAnd o cliente recebe notificação por email

Las specs ejecutables vencen a la prosa: cada escenario se vuelve un test verificable, y el agente sigue una pista estricta en lugar de interpretar párrafos ambiguos.

⚛️ La física de los tokens

Los LLMs no interpretan estructuras de datos — procesan texto tokenizado. Cada carácter enviado se descompone en tokens; cada token consume budget, tiempo y capacidad de contexto. Escribir specs production-grade es tratar la tokenización como una restricción física rígida: cada newline y espacio de indentación se traduce directamente en budget de desarrollo y latencia. Incluso plataformas generosas como Antigravity están limitadas por la física de tokens de los modelos subyacentes — cada espacio innecesario en un YAML anidado y cada Given/When/Then repetitivo consume ciclos y attention-heads en loops de razonamiento multi-turno. Trata /specs no como documentación, sino como un conjunto de instrucciones compilado y enxuto: Markdown legible por humanos + bloques YAML planos y altamente dirigidos.

06

Dónde viven las instrucciones

Tres capas con alcances y tiempos de vida diferentes — tirar todo en el chat agota el contexto.

Para practicar SDD, entiende cómo las herramientas de coding consumen instrucciones: no se escriben en un único lugar. Tirar un documento masivo de diseño de sistema de 100 páginas directo en la ventana de chat agota el budget de contexto de corto plazo, aumenta la latencia y fragmenta el contexto. Las instrucciones viven en tres capas:

Chat Interface — short-lived, session-specific capa 1

La caja conversacional efímera del IDE (side-panel Gemini o terminal). Vive con la sesión activa del dev — úsala puramente para orquestación de alto nivel y loops de feedback instantáneo.

  • Ejemplo: "Review the design in specs/payment_retry.md and generate the failing unit tests defined in Scenario 3."
  • Nunca: specs enteras pegadas en el prompt (prompt-stuffing manual)

Spec Folder — task-specific, versionado capa 2

Una carpeta estática commiteada directo en el repositorio: diseño técnico, escenarios BDD, contratos de API, schemas YAML estructurales. El agente indexa el directorio dinámicamente para construir y verificar código sin prompt-stuffing manual.

  • Ejemplo: ./my-app/specs/my_spec.md
  • Source of truth compartida por humanos y agentes

Agent Skills — reusable, feature-focused capa 3

Archivos Markdown estructurados con workflows especializados trigger-based. Enseñan hábitos de ingeniería repetibles (ej.: mantener el CHANGELOG.md automáticamente cuando se detectan cambios de código). La carpeta de skills también puede contener data assets y scripts.

  • Ejemplo: ./my-app/.agent/skills/docs-maintenance/SKILL.md
  • Deben vivir en el directorio .agent para que el Antigravity workspace manager las reconozca
+ Capa global: System Prompts

Gemini CLI y Antigravity escanean y concatenan contexto jerárquicamente, de overrides globales hasta configuraciones locales: Global Profile (~/.gemini/GEMINI.md — persona universal, estilo estándar y principios centrales, independiente del proyecto) → AGENTS.md compartido (fundación cross-tool para equipos con múltiples clientes de IA; el GEMINI.md local retiene prioridad para configs Google-specific) → Project Spec (./my-app/.gemini/GEMINI.md — el DNA del proyecto, detectado y leído automáticamente).

07

Los 5 modos de ejecución

Cinco personajes, cinco mindsets: elige el prompt por el trabajo, no por costumbre.

No existe una única forma de transformar una spec en código — cada trabajo pide un execution mode diferente. Haz clic en los personajes para ver el playbook de cada uno:

🏛️
Architect
Project Generation
🔨
Builder
Feature Generation
🔬
Forensic Specialist
Bug Fixing
✍️
Author
Documentation
📚
Librarian
Data Engineering
Regla de oro transversal

Números de versión para toda biblioteca, siempre. El knowledge cutoff del modelo está en el pasado: sin versión explícita, el agente sugiere releases antiguos — y hasta sugiere versiones más bajas de modelos (ej.: gemini-1.5-flash) simplemente porque las nuevas no existen en el entrenamiento. Las versiones propuestas deben verificarse siempre dos veces; usa RAG del editor o descarga documentación como Markdown en specs/, skills o profile prompts.

08

MCP: una integración, todos los frameworks

El "USB-C de las herramientas de IA" — construye un servidor, conecta cualquier agente.

El Model Context Protocol (creado por Anthropic, hoy estándar abierto) es apodado "the USB-C for AI tools" — una exageración, pero la analogía captura la idea: construye un servidor MCP para tu base de datos, API o sistema de archivos, y cualquier agente compatible puede usarlo sin escribir integración personalizada.

🗄️

1 servidor MCP

mcp_server.py · "knowledge-base"
🔌
🤖 Antigravity
⌨️ Gemini CLI
🧠 Tu agente ADK
🔧 Cualquier cliente MCP
mcp_server.pySnippet 1 — exponiendo un SQLite como 2 tools (~40 líneas)
from mcp.server import Serverfrom mcp.server.stdio import stdio_serverimport sqlite3 server = Server("knowledge-base") conn = sqlite3.connect("knowledge.db")@server.list_tools()async def list_tools():return [{"name": "query_knowledge","description": "Query the knowledge base with SQL","inputSchema": {"sql": "SQL query to execute (SELECT only)"}},{"name": "add_knowledge","description": "Add a new knowledge entry","inputSchema": {"title": ..., "content": ..., "tags": "Comma-separated tags"}}, ]@server.call_tool()async def call_tool(name, arguments):if name == "query_knowledge": sql = arguments["sql"]if not sql.strip().upper().startswith("SELECT"):return "Error: Only SELECT queries allowed"rows = conn.execute(sql).fetchall()return [dict(zip(cols, r)) for r in rows]   # → TextContentif name == "add_knowledge": conn.execute("INSERT INTO knowledge (title, content, tags) VALUES (?, ?, ?)", ...) conn.commit(); return "Knowledge entry added."async def main():async with stdio_server() as (r, w):await server.run(r, w, server.create_initialization_options())
Del otro lado del cable

El cliente (mcp_client.py, Snippet 2) es simétrico: StdioServerParameters(command="python", args=["mcp_server.py"])session.initialize()session.list_tools()session.call_tool("query_knowledge", {"sql": "SELECT * FROM knowledge WHERE tags LIKE '%agent%'"}). Una integración, todos los frameworks.

09

Cultura de equipo & evolución de procesos

PRs enormes, conflictos de merge y teléfono descompuesto: qué cambia cuando todo el equipo usa agentes.

Trabajar con coding agents modernos exige un cambio de mentalidad y de cultura. Sin él, el escenario clásico: los PRs se vuelven enormes, los conflictos de merge se multiplican (devs llegando a los mismos archivos) y la cadena de dependencias se vuelve imposible de desenredar — el PR #1 no mergea sin el PR #2, que necesita el PR #3, bloqueado por un revisor en otro huso horario. Algunos cambios aprobados mientras los relacionados esperan → aún más conflictos. De repente: branch roto.

⚔️ Merge conflicts

Múltiples devs (y sus agentes) llegando al mismo archivo en menos de una hora.

🪆 Review gridlock

El PR masivo se vuelve una "muñeca rusa" de sub-PRs anidados, imposible de revisar de una vez.

🧩 Context fragmentation

Mientras estás fuera, un colega renombra una variable en un archivo compartido; tu agente, citando un snapshot desactualizado, genera código que llama a una función que ya no existe.

Estrategias para integración de alta velocidad

📋 Bundled Summaries & Risk Assessments

Todo PR incluye un snapshot generado por IA de lo que cambió, potenciales puntos de quiebre y una evaluación de riesgo (Markdown o descripción de commit) — el revisor humano se enfoca en el impacto arquitectónico en lugar de perderse en las líneas.

🎯 Reimagined Ownership

El review humano sale del "nitpicking de estilo" en código desechable escrito por agente y pasa a garantizar la integridad de los blueprints arquitectónicos. El estilo es problema de herramientas automatizadas: linters compartidos y stylebooks (SKILLS.md).

⏱️ The "Conditional LGTM"

Elimina retrasos de 12 horas en equipos cross-timezone: el revisor aprueba el PR contingente a que todos los tests automatizados pasen — si quedan verdes, el código mergea automáticamente.

🕊️ No-Blame Culture

En entornos de alta velocidad, quien produce más código se vuelve el chivo expiatorio fácil de bugs y conflictos. Atribuye esos problemas a procesos de integración rotos — no al dev individual usando el agente.

Y la pregunta incómoda

Si puedes trabajar con un escuadrón de agentes, ¿realmente necesitas trabajar como equipo? Si la respuesta es sí, divide el trabajo para que los miembros raramente toquen los mismos archivos (ownership clara de APIs vs UX); cuando la superposición sea inevitable, un "part owner" designado se encarga de la sincronización final. Y automatiza: puedes escribir skills que hacen code review — y hasta skills que responden a code reviews (Snippet 3, code-check.md: analiza vulnerabilidades críticas, lógica, legibilidad y edge cases, devolviendo Description + Critical / Warnings / Best Practices / Quick Win), disparadas vía GitHub Actions o Gemini Code Assist on GitHub.

code-check.mdSnippet 3 — skill de code review: vulnerabilidades críticas, lógica & eficiencia, legibilidad y edge cases
Act as a Senior Software Engineer and Security Researcher. Review the provided code for this Github PR or Diff using these strict criteria: Use the command line to fetch the Github PR: `gh pr view <PR NUMBER>` First analyze the code, then code review: 1. **Critical Vulnerabilities:** Check for hardcoded secrets (API keys), SQL injection, XSS, or broken authentication. 2. **Logic & Efficiency:** Identify "off-by-one" errors, infinite loops, or redundant API calls. 3. **Readability:** Suggest better naming conventions or breaking down "megafunctions" into smaller pieces. 4. **Edge Cases:** What happens if the input is null? What if the network fails? Output Format: - **Description:** - What is this PR doing? Explain in details. ISSUES: -⚠ **Critical:** (Stop-ship issues) -⚠️ **Warnings:** (Code smells or style issues) -✅ **Best Practices:** (Specific lines to refactor for better performance) -💡 **Quick Win:** (One sentence summary of the biggest improvement) When there are no issues return - **Description:** - What is this PR doing? Explain in details. LGTM
0%
más probabilidad de burnout alto entre usuarios frecuentes de IA (Quantum Workplace, vía CNBC) — la cultura de equipo también es red de seguridad.
10

Los 3 tiers de code review

¿Quién ejecuta el revisor en cada PR, sin un humano apretando el botón? Un espectro de control × simplicidad.

Puedes escribir un gran prompt de review — pero la skill solo corre cuando se invoca desde dentro del IDE. El siguiente paso es el revisor continuo: servicios que observan el repositorio, reaccionan a eventos (PR abierto, cron nocturno) y publican hallazgos sin que nadie lo pida. Atrapan lo que los revisores cansados pierden un viernes por la tarde: una dependencia con un CVE nuevo, un TODO de 6 meses que se volvió una brecha silenciosa. Cuando el equipo envía PRs generados por IA en volumen, el revisor continuo es lo único que escala con el output. La pregunta es qué tan custom necesitas ir — la respuesta es un espectro de 3 tiers:

simplicidadcontrol
CriterioTier 1 · ManagedTier 2 · HybridTier 3 · Custom
EjemploGemini Code Assist on GitHub · revisor SaaSGitHub Action + CLI de coding agent (Antigravity CLI)Agente ADK en Gemini Enterprise Agent Engine
SetupHabilitar en la org · minutosSkill en el repo + acción CI · ~1 díaRuntime propio + webhooks · semanas
RuntimeDel vendor · pagas por seatDel proveedor de CITuyo (Agent Engine: Sessions + Memory Bank)
Criterios de reviewDel vendor (genéricos)Tuyos (skill commiteada en el repo)Tuyos + memoria de largo plazo
Memoria entre ejecucionesNoNoSí — contexto cross-PR, codebase memory
Eres dueño deNada más allá de la suscripciónPrompts, modelo, sandboxing, criteriosTodo: eval, observability, costo, on-call
Trade principalOpiniones del vendor, no las tuyasPunto de partida correcto para la mayoríaMáximo poder · máximo costo de operación

Las 3 preguntas que te dicen qué tier necesitas

1️⃣ ¿Qué tan específicos son tus criterios?

Genéricos → Tier 1. Específicos del equipo/repo → Tier 2 o 3.

2️⃣ ¿El agente necesita recordar entre ejecuciones?

No → Tier 1 o 2. Sí (memoria de codebase, contexto cross-PR) → Tier 3.

3️⃣ ¿Cuál es el peor caso si sale mal?

Comentario ruidoso → cualquier tier. Regresión mergeada o secreto filtrado → Tier 3 con Policy Server frente a cada tool call.

Cómo los equipos descubren su propio tier

En el momento en que el revisor gestionado pierde algo específico. Ejemplo del paper: un equipo de plataforma en una fintech mediana empezó en Tier 1 y descubrió que el revisor de compliance marcaba boilerplate que los auditores ya habían aprobado — mientras perdía el único patrón que importaba: PII sin enmascarar en declaraciones de log. Una skill compliance-check.md de 40 líneas en una GitHub Action (Tier 2) eliminó los falsos positivos en una semana. Tier 3 aún no fue necesario. Regla práctica: elige el tier más bajo que atrape lo que importa.

11

Tier 3 a escala total: review graph-native

No un agente que observa PRs — uno que entiende el sistema entero en el que viven los PRs.

En codebases legacy de cien millones de líneas, cargar código como texto plano en la ventana de contexto se queda sin espacio, y el RAG estándar elimina la estructura que hace el código legible (una clase pertenece a un archivo, una llamada de función remite a un doc de requisitos escrito hace una década). Aplanar todo en un vector store = el mapa desaparece. El patrón que emergió de las mayores modernizaciones: construir el agente sobre un knowledge graph — ingerir código, docs, tickets y PDFs de diseño en un graph database (ej.: Spanner Graph) y combinar 3 modos de retrieval:

🕸️
GRAPH TRAVERSAL (GQL)
Queries estructurales: "toda función que llama transitivamente a payment.process()"
🧬
VECTOR SEARCH (ANN)
Queries semánticas sobre node embeddings: "encuentra código que hace lo que este párrafo describe"
🔎
FULL-TEXT SEARCH
Matches exactos de identificadores
🗺️
MAPA DE IMPACTO
"¿Qué se rompe si cambio esto?" respondido con precisión — no con una suposición confiada
🔍 Search agent📖 Story agent💥 Impact agent🧱 Task-breakdown⌨️ Coding agent

La segunda mitad es descomposición: un único agente instruido a "refactorizar este módulo" falla. Dividido en un pipeline de sub-agentes ADK — explorar el grafo, capturar requisitos, predecir efectos colaterales, producir unidades atómicas de trabajo y SOLO ENTONCES codificar — el trabajo se vuelve manejable.

Figura 1 — Arquitectura Graph-Native de Code Understanding

2 sem → h
Pilotos en producción en codebases de millones de líneas movieron trabajo de refactorización equivalente de dos semanas a unas horas.
100M+
líneas de código legacy — la escala en la que solo el retrieval graph-native sobrevive (caso de estudio: Siemens).

Resumen del espectro: Managed = revisor genérico en minutos · Hybrid = TU revisor en un día · Custom = un revisor que entiende el sistema ENTERO — al costo de ser dueño del runtime y de la evaluation.

12

Approval fatigue: la sostenibilidad del proceso

Si cada tool call pide aprobación, nadie aprueba de verdad — solo hace clic.

Un fenómeno nuevo: ante un flujo constante de micro-aprobaciones (mejorar una sola línea, ajustar una tool call), los devs empiezan a hacer clic en "Approve" reflexivamente. Es una forma de agotamiento de bajo grado en la que el equipo deja de verificar el trabajo de la máquina solo para mantener el ritmo — y pierde atención a los detalles. La supervisión constante no escala; los límites estructurados, sí.

🌙 Digital Quiet Hours

Límites explícitos para que las solicitudes de aprobación no se filtren en noches y fines de semana. Un agente que nunca duerme no puede significar un humano que nunca duerme.

🤝 Agent Insight Sessions

Sesiones semanales donde los devs comparten patrones identificados por sus contrapartes de IA — convirtiendo hallazgos aislados en conocimiento organizacional compartido.

Semáforo + árbitro, no un guardia de tránsito en cada esquina

La respuesta a la fatiga no es quitar guardrails — es calibrarlos: reglas determinísticas y baratas (semáforos) para lo obvio, juicio inteligente (árbitro) para lo matizado, y humanos solo donde el riesgo realmente lo exige. Es exactamente el diseño del Policy Server de la sección 18.

13

El incidente del email: reacción en cadena

Un prompt inocente, modo YOLO y cincuenta colegas recibiendo contenido alucinado.

Durante una actualización de rutina, el autor descubrió el poder — y los límites — del browser integrado de Antigravity: el recurso permite al agente interactuar con aplicaciones en desarrollo sin credenciales de login (invaluable para tests de UX). Pero en modo YOLO (auto approve), el agente puede actuar más rápido de lo que un humano puede pensar. Un prompt simple para crear un botón disparó la siguiente cadena:

🖱️
Prompt simple: "crea un botón"
🌐
El browser agent hace clic en el botón nuevo, autónomamente
✉️
El botón era para un agente de email — sin URL especificada
🌀
Sin datos, el agente ALUCINA y conecta a un agente legacy descontinuado, sin salvaguardas
💥
50 colegas reciben emails falsos llenos de contenido alucinado
⚠ INCIDENTE — el agente cumplió la directiva con los datos disponibles, sin jamás verificar si DEBERÍA

El incidente destacó el riesgo de context hallucination: cuando la IA no tiene datos suficientes, llena huecos usando cualquier string que exista en el contexto — incluyendo información sensible como direcciones de email hardcodeadas o URLs. Puede parecer menor si es "solo un email". Pero considera lo que el agente estaba haciendo: cumpliendo su directiva con los datos disponibles, sin ninguna verificación de si debía. Ese es el riesgo central de los sistemas autónomos.

Los guardrails no son opcionales; son lo que impide que una herramienta útil se vuelva impredecible.

— sin human-in-the-loop o un policy engine, el agente optimiza para el objetivo usando lo que encuentre
14

Zero-Trust para agentes

Nunca confíes en la auto-policía del modelo — la gobernanza debe ser externa y a prueba de adulteración.

A medida que los límites de la Agentic AI se expanden, surge una paradoja: los agentes deben ser lo suficientemente autónomos para resolver problemas complejos, pero no puedes asumir el riesgo de que se vuelvan "rogue" en un entorno enterprise. Imagina un agente encargado de "resolver disputas de clientes": para ser eficaz, necesita acceso a datos de clientes, herramientas de email y sistemas internos — pero el desafío es garantizar que no envíe email accidentalmente a la base de datos entera o comparta código propietario.

🚫 Auto-policía del modelo

restricciones en el system prompt → frágil
  • Los LLMs son probabilísticos, no determinísticos
  • Los contextos se desbordan; las reglas se pierden
  • El prompt injection "convence" al agente de burlar las reglas
vs

🛡️ Enforcement externo

gobernanza externa → a prueba de adulteración
  • Políticas fuera del modelo, en el runtime
  • Toda tool call interceptada antes de ejecutarse
  • El agente no puede editar sus propias reglas
🧱

Sandboxing

Un entorno de ejecución restringido que contiene acciones destructivas (sección 15).

HITL Checkpoints

Aprobación humana para acciones de alto riesgo (sección 16).

🚦

Policy Server

Gating estructural + semántico antes de sistemas externos (sección 18).

📎 Paper companion

Para profundizar en proteger y evaluar agentes contra código malicioso, ve la guía del Día 4 — Vibe Coding Agent Security and Evaluation (enlace en la sección Companions).

15

Sandboxing & blast radius

Si el agente es engañado, el daño debe caber en una caja desechable.

Más allá de sanitizar strings, la seguridad real requiere un entorno de ejecución restringido para contener las acciones del agente. Incluso con filtrado riguroso de output, el LLM puede generar código sintácticamente válido pero lógicamente malicioso. Ejecutar tareas en contenedores efímeros y de bajo privilegio — aislados de la red principal y de sistemas de archivos sensibles — crea un "blast radius" que protege la infraestructura central: si el agente es engañado para ejecutar un comando destructivo, el daño queda confinado a una instancia desechable, limpiada y reiniciada sin consecuencias.

host intacto
sandbox efímero
🤖
agente

comando destructivo → error de permisos rígido a nivel del kernel → host completamente intacto

⚙️ En Antigravity: un toggle

User Settings → habilitar "Terminal Sandboxing". Listo: los comandos del agente corren contenidos.

🐳 Para el equipo: sandbox portátil en la nube

Containeriza el workspace: un Dockerfile personalizado (ej.: .gemini/sandbox.Dockerfile) a partir de la imagen oficial Gemini CLI sandbox, inyecta credenciales cloud con alcance limitado y fuerza el modo con export GEMINI_SANDBOX=docker.

16

Human-in-the-loop & testing

La automatización es el objetivo — pero las operaciones de alto riesgo exigen un humano en el checkpoint.

Aunque la automatización es el objetivo, las operaciones de alto riesgo exigen un protocolo Human-in-the-Loop (HITL) como fail-safe final: checkpoint gates para acciones que cumplen un perfil de riesgo específico. Presentar la intención sanitizada del agente a un supervisor humano para aprobación manual equilibra la velocidad de la IA con el juicio matizado del dev — y garantiza que la responsabilidad final por la integridad arquitectónica permanezca en manos humanas.

🚀

Deploy a producción

El código generado por IA solo sube con aprobación explícita.

🗃️

Cambios de database schema

Las migraciones son demasiado irreversibles para auto-approve.

💸

Transacciones financieras

Ningún agente inicia movimiento de dinero solo.

El auge de los tests generados por IA

El auge del código generado por IA empuja el proceso de los tests manuales hacia la cobertura de tests generada por IA — y aquí la IA tiene ventaja estructural: como la implementación ya no es el cuello de botella, puede escribir una cobertura de tests más amplia que cualquier humano en el mismo tiempo, de forma programática y poderosa. En un entorno de alta velocidad, el test-driven development se vuelve realidad: la máquina escribe los propios tests que validan su output.

1 · test que FALLA2 · agente corrige3 · suite verde4 · merge con confianza

El proceso fuerza al agente a producir un test unitario que falle o un comando de reproducción (como un request curl) antes de intentar cualquier corrección. Incrustar estos tests en el codebase significa que cada iteración rápida está respaldada por una suite verificable — los bugs no vuelven, y los revisores humanos pueden confiar en la "luz verde" automatizada para la integración.

17

Evaluation continua

Los tests tradicionales son insuficientes cuando el output es GENERADO, no COMPUTADO.

¿Por qué chequeos de calidad especiales para sistemas dirigidos por ML? Porque los tests de software tradicionales son insuficientes para sistemas cuyo output es generado en lugar de computado. Un agente (o cualquier componente dirigido por ML — clasificador, resumidor, retriever) puede pasar 100 tests unitarios de sus herramientas y aún fallar espectacularmente eligiendo la herramienta equivocada, parafraseando una respuesta crítica o alucinando un hecho. El margen de error no es un defecto a eliminar — es una propiedad inherente del modelo, y la estrategia de tests debe acomodarlo.

🧪 Test unitario

"¿La función devolvió el valor correcto?"
  • Respuesta binaria: pasa o falla
  • Atrapa regresiones determinísticas
  • El assert cambia → el gate se dispara

📊 Evaluation

"¿El comportamiento del agente es al menos tan bueno como el baseline?"
  • Score 0–5 de un LLM-as-judge (scorecard)
  • Verificación de trayectoria que tolera variancia de orden en tool calls
  • El gate se dispara cuando la calidad cae bajo un margen configurable — no cuando un assert cambia
0–5
juicios puntuados y bandas de tolerancia reemplazan aserciones binarias
baseline
cada ronda se compara contra la anterior — el drift comportamental se vuelve un número
loop
eval continua en CI: genera → evalúa → compara → solo entonces integra

Los tests atrapan regresiones determinísticas; la evaluation atrapa behavioural drift.

— la regla de oro de la calidad en sistemas con ML
18

El Policy Server

Dos capas de gating interceptan toda acción antes de llegar a sistemas externos.

El ejemplo central de guardrail del paper es el Hybrid Policy Server: un middleware que intercepta acciones antes de que lleguen a sistemas externos, operando en dos capas complementarias.

🚦

Structural Gating — los semáforos

rápido · determinístico · barato
  • Reglas determinísticas basadas en roles y entornos
  • Chequeos binarios: el rol viewer no puede usar send_email
  • Previene violaciones arquitectónicas SIN preguntar a un LLM
🧑‍⚖️

Semantic Gating — el árbitro inteligente

matizado · LLM juez · policies.yaml
  • Un LLM secundario especializado (Gemini) inspecciona intención y contenido contra políticas en lenguaje natural
  • Para cuando la tool ESTÁ PERMITIDA, pero la FORMA de usarla viola política: un admin puede usar send_email, pero no con PII sin enmascarar
  • Aquí es donde las reglas estructurales fallan — no se puede hacer regex de toda fuga posible de PII
policies.yamlSnippet 4 — reglas determinísticas
environments:localhost:blocked_tools:- send_emailroles:viewer:allowed_tools:- list_files- read_file
policy_server.pySnippet 5 — interceptación en runtime
def is_tool_allowed(self, tool_name):# 1) Environment blocksif tool_name in env_blocked: return False# 2) Role permissionsreturn "*" in role_allows or \ tool_name in role_allowsdef check_action_semantic(self, action_description): client = Client(vertexai=True) prompt = "Evaluate if this action violates " \f"PII policies: {action_description}"response = client.ai.models.generate_content( model="gemini-3.1-pro", contents=prompt)return not response.text.startswith("VIOLATION")

🎛️ Simula el Policy Server

Cuando el agente decide usar una tool, el flujo se intercepta: structural check (¿la tool está permitida para este rol/entorno?) → semantic check (¿los argumentos son seguros?) → execution (si ambos pasan) o un mensaje "Policy Violation" devuelto al agente para autocorrección o fallo elegante. Elige un escenario:

Intaketool call recibida
Structuralrol/entorno · YAML
SemanticLLM juez · PII
▸ elige un escenario arriba para ver el veredicto…
Separación crítica de concerns

El Policy Server crea una red de seguridad que separa la lógica de ejecución de la lógica de gobernanza — la separación crítica de concerns del software enterprise. El agente ejecuta; el servidor decide qué puede ejecutarse.

19

Context hygiene & el Context Resolver

El agente nunca debe ver PII real — solo placeholders resueltos en la última milla.

Un peligro significativo del desarrollo autónomo es la Context Hallucination: sin datos específicos, el agente llena huecos con cualquier string disponible en el contexto — potencialmente filtrando direcciones de email hardcodeadas o URLs privadas. La mitigación es Context Hygiene rigurosa vía middleware: PII masking e inyección de placeholders, para que el agente siempre opere con datos esterilizados. Y todo output del agente debe sanitizarse contra prompt injection e interacciones de UI rogue — el "vibe" de la máquina nunca debe volverse una vulnerabilidad arquitectónica.

1 · Raw tool outputargumentos con PII real: ana@corp.com
2 · PII scrubregex lo reemplaza por un placeholder: [[COMMENTER_EMAIL]]
3 · Truncatecorta para caber en el budget de contexto
4 · Injectcontexto esterilizado entra en el prompt
context_resolver.pySnippet 6 — placeholders dinámicos
def resolve_context(template_str, override_state):def replacement(match): var_name = match.group(1)# 1) Prioriza overrides de runtime stateif var_name in state_to_check \and state_to_check[var_name] is not None:return state_to_check[var_name]# 2) Fallback para env vars validadasif var_name in os.environ:return os.environ[var_name]# 3) Deixa não resolvido — sem falhas silenciosasreturn match.group(0)return re.sub(r'\[\[([^\]]+)\]\]', replacement, template_str)# ex.: resolve [[COMMENTER_EMAIL]] dinamicamente
tool_policy_engine.pySnippet 7 — middleware en el pipeline del agente
def validate_tool_call(tool_call): args = tool_call.function_call.args resolved_args = for k, v in args.items():if isinstance(v, str): resolved_args[k] = resolve_context( v, override_state)elif isinstance(v, list): resolved_args[k] = [resolve_context(i, override_state)if isinstance(i, str) else ifor i in v]else: resolved_args[k] = v args.clear(); args.update(resolved_args)# intercepta TODA tool call ANTES de rodar

Con el middleware conectado directamente al pipeline de ejecución, cualquier intento del agente de ejecutar una acción — enviar email, consultar una presentación en la nube — es interceptado. El engine traduce placeholders como [[COMMENTER_EMAIL]] o [[DEFAULT_PRESENTATION_ID]] en assets de prueba autorizados, de forma segura y silenciosa — eliminando PII hardcodeado de test suites y system prompts.

20

Resumen & dónde empezar

El cuello de botella se movió — y todo el blueprint se resume en tres comandos.

En menos de un año, los ciclos de desarrollo se volvieron dramáticamente más rápidos. Pero la velocidad reveló el cambio importante: la IA eliminó el cuello de botella de producción de código y movió la restricción río abajo — a los humanos que deben revisar, probar e integrar ese output. Esto es carga cognitiva compartida: los humanos actúan como arquitectos (Test Specs, Integration Specs, blueprints de MLOps/DevOps), mientras la IA se encarga del trabajo pesado (código de tests real, integraciones, detalles operacionales granulares).

🏭 Cuello de botella antiguo: producción

Escribir código era lo difícil. La IA lo resolvió — mil líneas antes del almuerzo.

🧭 Cuello de botella nuevo: integración

Verificar, integrar y entregar. Mejores prompts y modelos más rápidos, solos, no arreglan esto.

El éxito depende de evolucionar las dinámicas de equipo, refinar la colaboración con agentes y definir límites estrictos para herramientas que nunca duermen. El desafío cambió de la mera producción de código a orquestar sistemas que verifican, integran y entregan trabajo.

🚀 Los patrones se vuelven comandos que puedes ejecutar hoy

terminaluv google-agents-cli setup — instala las 7 skills en tu coding agent (scaffolding, código ADK, evaluation, deployment, publishing, observability)
# geração de projeto spec-drivenagents-cli scaffold# gate de cobertura de testes gerada por IAagents-cli eval run# deployment com sandbox para Cloud Run ou Vertex AI Agent Engineagents-cli deploy

Los vibes prototipan. Las specs entregan.

— el paper resumido en cuatro palabras
21

Quiz: ¿sobrevives a producción?

Ocho preguntas cubriendo todo el paper — de las specs al zero-trust.

22

Cheatsheets copiables

Tres artefactos listos para pegar en tu repositorio.

spec-template.mdCheat 1 — template de spec production-grade (híbrido Markdown + YAML)
# Feature: Payment Retry## 1. Background (o "porquê")Contexto de negócio, restrições, links para docs de design.Payments falham em ~3% dos checkouts; retry automático recupera ~40%.## 2. Technical Design (o "quê")requirements:- idempotency_key em toda tentativa- máximo de 3 tentativas, backoff 30/120/480 mindatabase_schema:payment_retries: {id, order_id, attempt, next_at, status}api_contract:POST /v1/payments/{id}/retry → 202 Accepted## 3. Libraries (com versão SEMPRE)dependencies:fastapi==0.115.0sqlalchemy==2.0.36## 4. Scenarios (Gherkin — vira teste)Scenario: Cartão recusado, nova tentativa automáticaGiven um pedido "#8842" com pagamento "recusado"When  o webhook "payment.retried" é recebidoThen  o sistema agenda nova tentativa em 30 minutos## 5. Out of scopeO que NÃO construir — evita alucinação de features.
gherkin-quickref.mdCheat 2 — referencia rápida de Gherkin/BDD
# Gherkin — State → Action → OutcomeFeature: Nome do comportamento (perspectiva do usuário)Scenario: Caminho felizGiven [STATE]  um estado inicial verificávelAnd   [STATE]  condições adicionaisWhen  [ACTION] o evento/ação que dispara o comportamentoThen  [OUTCOME] o resultado observável esperadoAnd   [OUTCOME] efeitos colaterais verificáveisScenario: Edge case — rede falhaGiven um pedido pendenteWhen  a gateway retorna timeoutThen  o sistema agenda retry e notifica o clienteRegras de ouro: Declarativo, nunca imperativo (descreva O QUÊ, não COMO) Cada Scenario = um teste executável Inclua o "bom", o "errado" e os edge cases Curto: cada token consome budget e attention-heads
zero-trust-checklist.mdCheat 3 — checklist zero-trust para agentes
# Zero-Trust Checklist — agentes em produção[ ] Sandboxing[ ] Terminal Sandboxing habilitado (Antigravity) ou GEMINI_SANDBOX=docker [ ] Containers efêmeros e de baixo privilégio, isolados da rede principal [ ] Credenciais cloud limitadas por escopo, nunca amplas[ ] Human-in-the-Loop[ ] Checkpoint gates: deploy em produção [ ] Checkpoint gates: mudança de database schema [ ] Checkpoint gates: transações financeiras[ ] Policy Server (2 camadas)[ ] Structural: blocked_tools por ambiente, allowed_tools por role [ ] Semantic: LLM juiz contra policies.yaml (PII não mascarada) [ ] Toda tool call interceptada ANTES da execução[ ] Context Hygiene[ ] PII masking + placeholder injection ([[VAR]]) [ ] Context resolver conectado ao pipeline (tool_policy_engine) [ ] Outputs sanitizados contra prompt injection[ ] Verificação contínua[ ] Teste que falha ANTES de qualquer correção [ ] Eval com scorecard 0–5 vs baseline (behavioural drift) [ ] Revisor contínuo de PRs no tier adequado (1/2/3)[ ] Nunca[ ] Modo YOLO (auto approve) sem guardrails [ ] Confiar na auto-polícia do system prompt [ ] Versões de biblioteca sem verificação dupla
23

Checklist de adopción

Marca lo que tu equipo ya practica — el progreso queda guardado en el navegador.

📐Adoptar SDD

Crear la carpeta specs/ en el repositorio
Escribir la primera spec en formato híbrido (Markdown + YAML)
Usar Gherkin (Given/When/Then) en los escenarios
Definir GEMINI.md / AGENTS.md por capa (global → proyecto)
Exigir números de versión para toda biblioteca

🛡️Montar la red de seguridad

Habilitar Terminal Sandboxing
Checkpoints HITL para deploy, schema y finanzas
Policy Server: capa estructural (policies.yaml)
Policy Server: capa semántica (LLM juez)
Context resolver en el pipeline de tool calls

🔄Escalar review & cultura

Elegir el tier de code review (1, 2 o 3)
Bundled summaries + risk assessment en todo PR
Adoptar el "Conditional LGTM"
Eval continua con scorecards vs baseline
Digital Quiet Hours + Agent Insight Sessions
24

Glosario

El vocabulario mínimo para navegar el paper.

Vibe Coding
Generar código rápidamente a partir de intención/vibe de alto nivel. Genial para prototipos — nunca para producción sin validación.
SDD (Spec-Driven Development)
Desarrollo guiado por especificaciones de alta calidad; el código se vuelve output desechable y regenerable.
Spec
Instrucción técnica detallada que le dice a la IA exactamente qué construir; source of truth para humanos y agentes.
Gherkin
La sintaxis estandarizada del BDD (Scenario/Given/When/Then) que fuerza al LLM a pensar en State → Action → Outcome.
MCP
Model Context Protocol — el "USB-C de las herramientas de IA": un servidor, cualquier agente compatible.
Sandbox
Un entorno de ejecución restringido (contenedor efímero, bajo privilegio) que contiene las acciones del agente.
Blast Radius
El área de daño máxima si algo sale mal — el sandbox la mantiene dentro de una instancia desechable.
Zero-Trust
Nunca confiar en la auto-policía del modelo: gobernanza externa y a prueba de adulteración sobre toda tool call.
HITL (Human-in-the-Loop)
Checkpoint gates con aprobación humana para acciones de alto riesgo: deploy, schema, finanzas.
Eval (Evaluation)
Juicios puntuados (0–5, LLM-as-judge) y bandas de tolerancia que atrapan behavioural drift — los tests atrapan regresiones.
Policy Server
Middleware que intercepta acciones antes de sistemas externos: gating estructural (determinístico) + semántico (LLM juez).
Approval Fatigue
Agotamiento por micro-aprobaciones que lleva a los devs a hacer clic en "Approve" reflexivamente — sin verificar.
Alucinación
El modelo inventa confiadamente algo que no es verdad; sin datos, llena huecos con strings del contexto (context hallucination).
Context Resolver
Utilitario que resuelve placeholders [[VAR]] vía runtime state/env vars, manteniendo PII fuera del contexto del agente.
25

Guías companions

La serie completa — del nuevo SDLC a la seguridad y evaluation de agentes.

HUBpunto de partida

Hub de la serie — todos los días

El índice navegable de todas las guías de estudio de la serie de whitepapers.

índicenavegación
D1fundamentos

The New SDLC with Vibe Coding

Cómo cambió el ciclo de vida de desarrollo con agentes — la base sobre la que esta guía construye.

nuevo SDLCvibe codingworkflow
D2herramientas

Agent Tools & Interoperability

Los 5 protocolos abiertos que conectan agentes a herramientas y entre sí.

MCPA2AA2UI
D3contexto

Context Engineering: Sessions, Memory & Skills

El complemento directo de la sección de context hygiene: cómo las sessions, la memoria y las skills alimentan al agente.

sessionsmemoriaskills
D4seguridad

Vibe Coding Agent Security and Evaluation

Referenciado explícitamente en este paper: proteger y evaluar agentes contra código malicioso, en profundidad.

seguridadevaluationquality gates
26

Referencias

Las 17 endnotes del paper + la cita principal.

[1]Google. Antigravity — plataforma de desarrollo agéntico (browser integrado, Terminal Sandboxing, workspace manager).
[2]Google. Gemini CLI — agente de línea de comandos con sandboxing y system prompts jerárquicos (GEMINI.md).
[3]OUYANG et al. SkCC: Portable and Secure Skill Compilation for Cross-Framework LLM Agents, 2026 — sensibilidad al formato (−40%) y compilador de skills <10 ms.
[4]Estudio SkCC (Ouyang et al., 2026) — precisión de parsing en configs anidadas: YAML 51,9% · JSON 43,1% · XML 33,8%.
[5]Cucumber. Gherkin Reference — sintaxis Given/When/Then para Behavior Driven Development.
[6]Google Cloud. Google Cloud Data Extension para IDEs — acceso a datos cloud directo desde el editor.
[7]GitHub. GitHub Actions — automatización CI para disparar skills de review en cada PR.
[8]Google. Gemini Code Assist on GitHub — revisor de PR gestionado (Tier 1).
[9]Google. Antigravity CLI — CLI de coding agent en modo non-interactive para pipelines CI (Tier 2).
[10]Google. Gemini Enterprise Agent Engine — runtime gestionado con Sessions y Memory Bank durables (Tier 3).
[11]Google. A2A (Agent2Agent) protocol — coordinación entre agentes.
[12]Google Cloud. Spanner Graph — graph database para el knowledge graph de código (traversal GQL).
[13]Google. ADK (Agent Development Kit) — pipelines de sub-agentes (Search, Story, Impact, Task-breakdown, Coding).
[14]Quantum Workplace (vía CNBC) — los usuarios frecuentes de IA tienen 45% más probabilidad de burnout alto.
[15]Google. Antigravity — Terminal Sandboxing (User Settings).
[16]Google. Gemini CLI sandbox image — imagen Docker oficial + GEMINI_SANDBOX=docker.
[17]Siemens — estudio de caso de modernización de legacy con agentes (Tier 3 a escala).
Cita principal

BOONSTRA, Lee. "Spec-Driven Production Grade Development in the Age of Vibe Coding: The Blueprint for Scalable Workflows and Team Evolution — From Vibe Prototypes to Production Reality". Google, mayo de 2026.