junio de 2026
A Best-of-Breed Chain for AI-Assisted Software Development
Por qué la parte difícil del vibe coding es la verificación, no la generación, y cómo Claude Code, GitHub, Vercel, Next.js y Postgres cierran el bucle sobre el que construimos la plataforma Nashua 360
Resumen
Un agente de codificación capaz cambia la economía del desarrollo de software: escribir código, la actividad que solía dominar el día de un desarrollador, se vuelve rápido y casi gratuito, mientras que las actividades que lo rodean, decidir qué construir y asegurarse de que el resultado es correcto, no. La restricción se traslada de la generación a la verificación. Este artículo sostiene que el valor de un montaje de desarrollo asistido por IA no reside en el modelo que escribe el código, sino en la cadena de herramientas que lo rodea y que permite a un equipo verificar, a toda velocidad, lo que el agente produce, y que atrapa sus errores antes de que lleguen a los usuarios. Es un relato técnico y con opinión de la cadena sobre la que en Nashua construimos y operamos nuestro propio producto, la Nashua 360 Enterprise Platform, y de por qué cada eslabón es lo que es: Claude Code como el agente, ejecutado en un bucle con el resto de la cadena y accesible desde una aplicación móvil, de modo que un cambio pueda iniciarse y un resultado revisarse desde un teléfono; GitHub como la columna vertebral, con una rama principal protegida, comprobaciones de estado requeridas y un pull request como unidad de cambio; Vercel dando a cada pull request su propio despliegue de previsualización aislado y en ejecución; Next.js como un framework tipado y convencional cuyo verificador de tipos es la primera y más barata puerta y cuyo modelo de renderizado y de ejecución el agente navega con fluidez; y PostgreSQL como estado duradero, cambiado mediante migraciones revisadas y reversibles. Entramos en las partes que importan a los profesionales: cómo se le da contexto al agente y se le mantiene honesto, qué se ejecuta en integración continua, qué es realmente un despliegue de previsualización, cómo renderiza Next.js y dónde se ejecuta, y cómo cambiar una base de datos en producción sin romperla. Sostenemos que, para el trabajo asistido por IA, best-of-breed significa convencional, porque el agente escribe mejor las herramientas que más ha visto, y somos francos sobre los costes: el acoplamiento al proveedor, la disciplina que exige la puerta de revisión humana, el riesgo de un agente con acceso amplio y la irreversibilidad de los datos. Esto es consejo orientado a los profesionales, no un benchmark.
Palabras clave: desarrollo asistido por IA; vibe coding; agentes de codificación; Claude Code; GitHub; Vercel; Next.js; PostgreSQL; entrega continua; despliegues de previsualización; revisión de código; migraciones de base de datos; herramientas para desarrolladores; Nashua 360
1. Introducción
Durante la mayor parte de la historia del software, el recurso escaso era la escritura. El oficio de un desarrollador se medía por la capacidad de convertir una intención en código correcto, y las horas se iban en teclear, consultar cosas, conectar bibliotecas entre sí, arreglar los pequeños errores que revelaban los errores de compilación y las pruebas que fallaban. Un agente de codificación capaz elimina la mayor parte de eso. Dele una instrucción clara y acceso a un código base y producirá un cambio que funciona en minutos, en expresiones idiomáticas que ha visto un millón de veces, con el código repetitivo ya correcto. El nombre coloquial de trabajar de esta manera, popularizado a comienzos de 2025, es vibe coding: describir lo que se quiere y dejar que el modelo lo produzca, guiándose por los resultados en lugar de escribir cada línea. Es genuinamente un cambio de escala, y es fácil confundirlo con toda la historia.
No es toda la historia, porque hacer aparecer código nunca fue la parte difícil del software, solo la laboriosa. Las partes difíciles son decidir qué construir y saber que lo construido es realmente correcto, seguro y apto para ejecutarse. Estas no se abaratan cuando lo hace la generación; en todo caso se vuelven más difíciles, porque ahora hay mucho más código que comprender, producido más rápido de lo que lo escribía una persona, por un autor que está seguro de sí mismo incluso cuando se equivoca. El cuello de botella del desarrollo de software se desplaza. Solía estar en la generación, en lo rápido que un equipo podía escribir código correcto. Con un agente está en la verificación: en lo rápido que un equipo puede estar seguro de que el código es correcto y dejarlo pasar.
Este artículo trata de la consecuencia de ese desplazamiento para las herramientas, y es deliberadamente concreto. Si la verificación es la restricción, entonces lo más valioso que un montaje asistido por IA puede hacer no es generar más rápido, sino ayudar a un equipo a verificar más rápido y de forma más segura, atrapando los errores del agente de manera barata y temprana. Describimos la cadena específica que en Nashua usamos para construir y operar nuestro propio producto, la Nashua 360 Enterprise Platform, Claude Code como el agente, GitHub como la columna vertebral versionada y la puerta de revisión, Vercel para una previsualización en ejecución de cada cambio, Next.js como el framework de la aplicación y Postgres como la base de datos, y entramos en cómo funciona realmente cada pieza, porque el detalle es donde está el valor. Cada eslabón se gana su lugar por apretar un bucle o añadir una puerta, no por ser individualmente ingenioso.
La contribución es un argumento y una recomendación trabajada, no un benchmark. La Sección 2 expone qué cambió la IA y qué no, y localiza el cuello de botella. La Sección 3 presenta la cadena como un bucle (Figura 1), defiende que para el trabajo asistido por agentes best-of-breed significa convencional, y explica por qué las puertas independientes se componen. Las Secciones 4 a 9 toman las cinco piezas por turnos y entran en sus entrañas, incluida la arquitectura de ejecución que un despliegue tiene realmente (Figura 2) y la parte que sorprende a la gente, que un cambio puede ahora iniciarse y revisarse desde un teléfono. Las Secciones 10 a 12 tratan la puerta humana y sus modos de fallo, los costes reales y cómo se ejecuta la cadena en la práctica. La pregunta a lo largo de todo el texto es: una vez que un agente puede escribir el código, ¿qué debería poner un equipo a su alrededor para que escribir rápido no signifique entregar mal?
2. Qué cambió la IA y qué no
2.1 El desplazamiento
El cambio que trae un agente se enuncia mejor con precisión. No es que la máquina ahora comprenda el problema; es que el coste de producir una implementación plausible, a menudo correcta, de un cambio bien especificado se ha desplomado. Un desarrollador que habría pasado una tarde en una función puede tener una primera versión en el tiempo que lleva describirla, y puede desechar varias versiones de forma barata. El modo de trabajo pasa de la autoría a la dirección: enunciar la intención, leer resultados, corregir el rumbo. Esto es apalancamiento real, y un equipo que lo rechace será superado.
2.2 No hay bala de plata
El cambio también está acotado, y la cota es antigua. Brooks (1987) trazó la distinción que todavía rige aquí: la complejidad accidental del software, el trabajo impuesto por nuestras herramientas y lenguajes y no por el problema, puede atacarse y reducirse, pero la complejidad esencial, comprender el problema y especificar una solución correcta, no puede automatizarse hasta desaparecer, porque es el problema. Un agente de codificación es el ataque más poderoso construido hasta ahora contra la complejidad accidental: absorbe la sintaxis, el código repetitivo, las consultas de API, las expresiones idiomáticas. No hace nada respecto de la esencia. Saber qué necesita el negocio, decidir el diseño correcto y establecer que un cambio dado cumple realmente la necesidad sin romper algo más, siguen siendo trabajo humano, y son el trabajo que siempre fue difícil.
2.3 La verificación se convierte en la restricción
Junte las dos cosas y la conclusión se sigue. La generación, la parte accidental, es ahora rápida y barata. La verificación, que es donde vive la esencia, que este cambio es correcto, que hace lo que se quería, que no ha roto nada, que es seguro exponerlo, no lo es. En cualquier canalización el caudal lo fija la etapa más lenta, y cuando la generación acelera por delante de la verificación, la verificación se convierte en la restricción vinculante. Un equipo que puede generar diez cambios al día pero verificar dos entregará dos, y acumulará un atasco de código sin verificar que es un pasivo, no un activo. Peor aún, un agente produce trabajo seguro de sí mismo y superficialmente correcto, de modo que el coste de subverificar, de fusionar lo que parece correcto y no lo es, sube exactamente cuando sube la tentación de hacerlo. El resto de este artículo trata de construir una cadena cuyo trabajo es elevar el techo de verificación y hacer difícil la subverificación.
3. La cadena, y por qué gana lo convencional
3.1 El bucle
Un buen montaje asistido por IA es un bucle, no una herramienta. La Figura 1 dibuja el que usamos. Un desarrollador enuncia una intención. Claude Code, el agente, la convierte en un cambio sobre una rama, no sobre el código en producción. El cambio se vuelve un pull request de GitHub, donde dos puertas automáticas se ejecutan sin la atención de nadie: el verificador de tipos y la suite de integración continua. Vercel construye la rama en un despliegue de previsualización real y en ejecución, una copia completa de la aplicación con el cambio en vivo, accesible en su propia URL. Un humano revisa el cambio, leyendo el diff y recorriendo la previsualización, en un escritorio o, cada vez más, en un teléfono. Solo entonces se fusiona a la rama principal, que Vercel despliega a producción, respaldada por Postgres. El resultado alimenta la siguiente intención. La idea del diagrama es que el agente ocupa una casilla; cada otra casilla es un bucle que se cierra o una puerta que atrapa, y ahí es donde están la seguridad y la velocidad.
3.2 Best-of-breed significa convencional
La manera habitual de elegir herramientas es ordenarlas por potencia y quedarse con la más capaz. Para una cadena asistida por agentes el criterio es distinto, y es la idea más útil de este artículo. Un agente escribe mejor las herramientas que más ha visto. Su competencia en un framework o una base de datos es función de cuánto código correcto que use esa herramienta había en su entrenamiento, y esa cantidad sigue la popularidad de la herramienta, su documentación y la estabilidad de sus convenciones. Una herramienta mayoritaria, bien documentada y cargada de convenciones no es, por tanto, solo una elección humana segura; es la elección en la que el agente es más capaz y menos propenso a inventar una API que no existe. El efecto se compone: las herramientas populares reciben más código generado por agentes, que funciona, lo que refuerza su popularidad. Para el desarrollo asistido por IA, best-of-breed y lo más convencional han convergido, y cada herramienta de la Tabla 1 se eligió con eso en mente. Esto es también una advertencia: el framework exótico que un experto humano podría manejar con brillantez es a menudo exactamente donde un agente es más débil, porque es lo que menos ha visto.
3.3 Por qué las puertas independientes se componen
La cadena no confía en ninguna comprobación aislada. Verifica un cambio a través de varias puertas que miran cosas genuinamente distintas: el verificador de tipos comprueba las formas, las pruebas de integración continua comprueban el comportamiento, el despliegue de previsualización muestra el resultado en ejecución y el revisor humano juzga la intención. Como las puertas son en gran medida independientes, sus fallos se multiplican en lugar de sumarse: un defecto llega a producción solo si todas las puertas fallan en atraparlo, de modo que cuatro puertas modestas que cada una atrapa la mayor parte de lo que ve dejan pasar solo una pequeña fracción del producto de lo que se les escapa. Este es el principio de defensa en profundidad, conocido desde hace tiempo en la ingeniería de seguridad como la superposición de barreras imperfectas (Reason, 2000), y tiene un corolario práctico afilado. Quitar o debilitar una puerta, saltarse la previsualización, apagar un tipo estricto, aprobar sin leer, no añade un poco de riesgo; multiplica la tasa de escape por el recíproco de lo que esa puerta solía atrapar. La manera más barata de mantenerse seguro es mantener honestas varias puertas distintas e imperfectas, que es exactamente para lo que está dispuesta la cadena.
Tabla 1. La cadena. Cada eslabón se elige por el bucle que cierra o la puerta que añade, y por ser lo bastante convencional para que el agente lo maneje bien. La última columna nombra aquello contra lo que el eslabón protege principalmente.
| Eslabón | Qué usamos | Bucle que cierra o puerta que añade | Contra qué protege |
|---|---|---|---|
| Agente de codificación | Claude Code (CLI, nube y móvil) | Convierte la intención en un cambio sobre una rama; ejecuta él mismo las comprobaciones y las pruebas antes de entregar | Un humano haciendo a mano el trabajo accidental; iteración lenta |
| Control de versiones y revisión | GitHub (ramas, pull requests, Actions) | Cada cambio es un diff revisable; nada llega a la rama principal sin revisar; CI se ejecuta en cada uno | Cambio sin revisar llegando a producción; historial perdido; sin rastro de auditoría |
| Previsualización y despliegue | Vercel (conectado a git) | Una previsualización aislada y en ejecución de cada pull request en su propia URL; despliegue a producción y rollback en un clic | Revisar código que no puedes ver ejecutarse; versiones arriesgadas |
| Framework web | Next.js (TypeScript) | Los tipos como primera puerta automática; estructura convencional basada en archivos que el agente navega bien | Clases enteras de defecto que el verificador de tipos rechaza; el agente perdiéndose |
| Base de datos | PostgreSQL (gestionado) | Estado duradero y transaccional con migraciones revisadas y versionadas | Pérdida de datos; deriva silenciosa del esquema; entornos irreproducibles |
| Puerta de revisión humana | Una persona, en el pull request | El juicio que ninguna puerta automatiza: ¿es esto lo que queríamos, y es seguro? | Código seguro de sí mismo y equivocado que pasó cada comprobación automática |
4. El agente: cómo encaja Claude Code
Claude Code es el agente: una herramienta que lee el código base, escribe y edita archivos, ejecuta comandos, corre las pruebas y abre pull requests, trabajando a partir de una instrucción y corrigiéndose contra los resultados que ve. Cómo se le ejecuta importa más que la habilidad en bruto del modelo, y tres cosas sobre él merecen la atención de un profesional.
La primera es el contexto. Un agente solo es tan bueno como lo que sabe sobre tu código base, y el artefacto de mayor apalancamiento es un archivo de convenciones versionado, en nuestro caso un CLAUDE.md del proyecto, que le dice al agente las reglas de la casa: cómo está dispuesto el proyecto, cómo ejecutar el verificador de tipos y las pruebas, qué desplegar y cómo, qué no tocar nunca. El agente lo lee en cada ejecución, de modo que una corrección escrita una vez deja de repetirse. A su alrededor hay una superficie más amplia, skills reutilizables para tareas repetidas, hooks que se ejecutan en las llamadas a herramientas para hacer cumplir una regla de forma mecánica, y servidores MCP que dan al agente acceso tipado a sistemas externos, GitHub entre ellos, para que pueda abrir y actualizar pull requests como acciones de primera clase en lugar de mediante screen-scraping. La ingeniería de contexto, decidir qué debe saber y poder hacer el agente, es el verdadero trabajo de adoptar uno, y es higiene de software ordinaria: escribe las convenciones, haz que las comprobaciones sean ejecutables, mantén la superficie pequeña.
La segunda es que el agente se ejecuta en el bucle y no en aislamiento. Se espera que ejecute él mismo el verificador de tipos y las pruebas, lea lo que informan y lo arregle, antes de que ningún humano mire, de modo que las puertas automáticas de la cadena ya estén en verde para cuando se abre un pull request. Para tareas mayores puede repartir el trabajo entre subagentes que cada uno lleva su propio contexto y reportan de vuelta, lo que mantiene el hilo principal enfocado y el contexto limpio. La disciplina es dejar que la retroalimentación rápida y barata, tipos y pruebas, ocurra dentro del propio bucle del agente, y reservar la retroalimentación lenta y cara, el humano, para el final.
La tercera es dónde se ejecuta. Más allá de la terminal, Claude Code se ejecuta como una sesión en la nube accesible desde una aplicación móvil, lo que cambia la forma de la jornada laboral. Un cambio puede iniciarse desde un teléfono de camino a algún sitio, dejarse ejecutar en la nube, y su pull request y previsualización revisarse y aprobarse desde el mismo teléfono más tarde. Somos deliberados con esto no porque el trabajo móvil sea una novedad, sino porque acorta el bucle: el intervalo entre notar algo e iniciar el cambio, y entre que un cambio esté listo y que alguien lo apruebe, se desploma de horas a minutos, lo cual, en un mundo limitado por la verificación, es exactamente el intervalo que vale la pena cerrar.
5. La columna vertebral: GitHub
GitHub es la parte de la cadena que hace seguro todo lo demás, y es la menos glamurosa. Sostiene la única fuente de verdad, el repositorio, y hace cumplir la regla sobre la que descansa todo el argumento: la rama principal, la que se entrega, está protegida, y solo puede alcanzarse a través de un pull request que un humano ha aprobado y cuyas comprobaciones de estado requeridas han pasado. El agente nunca edita el código de producción directamente; propone, sobre una rama, y la propuesta es un diff que un humano puede leer y una máquina puede probar.
Las comprobaciones requeridas son donde viven las puertas automáticas. En cada pull request, GitHub Actions ejecuta la suite que exigimos antes de que algo se fusione: el verificador de tipos, el linter, la suite de pruebas y una build de producción, cada una un estado requerido que bloquea el botón de fusión hasta que está en verde. Como las hace cumplir la plataforma y no la disciplina de nadie, no pueden saltarse con prisa, y como el agente sabe que se ejecutarán, las satisface primero. El pull request es la unidad de cambio: pequeño, autocontenido, revisable individualmente y revertible individualmente, que es lo que mantiene barata la revisión y legible el historial. Y como cada cambio es un commit con un autor y un mensaje, el historial es un rastro de auditoría y el deshacer es total, cualquier cosa que el agente hizo puede verse, atribuirse y revertirse. Un agente de codificación es un actor rápido, poderoso y falible, y GitHub es la estructura que hace seguro soltar a uno, al asegurar que nada de lo que hace queda sin revisar, sin probar o sin ser irreversible.
6. Los ojos: Vercel
Leer un diff te dice qué cambió; no te dice qué hace el cambio. Vercel cierra ese hueco construyendo cada pull request en un despliegue de previsualización: una instancia completa, aislada y en ejecución de la aplicación con el cambio aplicado, en su propia URL, creada automáticamente y actualizada en cada push. Esta es la puerta que atrapa lo que los tipos y las pruebas no atrapan, la maquetación que se rompió, el flujo que ganó un paso, la cosa que es técnicamente correcta y está mal en uso, y es la mayor parte de por qué la cadena puede moverse rápido sin moverse a ciegas. Un revisor, y el agente, recorren el resultado real en lugar de imaginarlo a partir del código.
Lo que hace confiable la previsualización es que es una build real de toda la pila, no un mock (Figura 2): el mismo framework, el mismo entorno de ejecución, sus propias variables de entorno y, bien hecho, su propia base de datos aislada o en rama, de modo que ejercitarla no pueda tocar los datos de producción. Los despliegues son inmutables: cada uno es una build distinta y direccionable, de modo que promover una previsualización revisada a producción es un movimiento de puntero en vez de una reconstrucción, y una versión mala es un rollback instantáneo al despliegue inmutable anterior en vez de un hotfix frenético. Al fusionar a la rama principal, la misma maquinaria que construyó la previsualización construye producción, de modo que lo que se revisó es lo que se entrega. En el modelo de esta cadena, los despliegues de previsualización son una puerta de verificación barata y automática con una alta tasa de captura para una clase de defecto que ninguna otra puerta ve.
7. Sin fisuras gracias a git: por qué los tres encajan
La razón por la que Claude Code, GitHub y Vercel se sienten menos como tres herramientas y más como un solo sistema es que comparten una única interfaz, y esa interfaz es git. La salida natural de Claude Code no es un despliegue; es una rama y un pull request. El trabajo de GitHub es almacenar esos commits, ejecutar las comprobaciones y sostener la revisión. Vercel vigila el repositorio y convierte cada rama en una previsualización y la rama principal en producción. A ninguno de ellos hubo que enseñarle sobre los otros: el agente nunca aprende una API de despliegue, abre un pull request; Vercel nunca aprende sobre el agente, vigila el repo. La costura entre ellos es el protocolo git que los tres ya hablan, que es la razón por la que añadir un agente a la cadena no cambió nada sobre cómo funcionaba el despliegue, y por la que todo el camino de un prompt a producción no tiene traspasos.
La consecuencia es que el despliegue deja de ser un paso que alguien ejecuta y se vuelve una consecuencia de la acción de git que de todos modos iba a tomar. Un push es una build. Un pull request es un entorno de previsualización, creado y desmontado por sí solo. Una fusión a la rama principal es un despliegue a producción. Una reversión es un rollback. Nadie ejecuta una versión; fusionan, y la versión ocurre. No hay servidor de build que cuidar, ni script de despliegue que el agente pueda equivocar, ni herramienta de promoción aparte, ni ventana en la que alguien ha escrito el código pero aún no lo ha entregado. Para un equipo limitado por la verificación este es exactamente el lugar correcto donde quitar fricción: el único acto deliberado y humano que queda en el camino es la revisión, que es el único acto que debería ser deliberado, y todo lo mecánico a su alrededor lo manejan las herramientas que vigilan git.
Esta es también la razón por la que la ausencia de fisuras es segura y no temeraria, y las dos propiedades vienen del mismo hecho. Como el despliegue cabalga sobre git, hereda las garantías de git: cada despliegue a producción está atado a un commit específico y revisado, con un autor y un mensaje; cada previsualización está atada a una rama; y como los despliegues son inmutables, hacer rollback es solo apuntar producción a la build de un commit anterior. El mismo cableado que deja que un cambio fluya de un prompt tecleado en el teléfono a un sitio en vivo sin que nadie toque una consola de despliegue también asegura que nada llega a ese sitio en vivo salvo a través de un commit revisado, atribuible y revertible. La integración es un acierto no porque los proveedores la coordinaran, sino porque los tres se construyeron para tratar git como la fuente de verdad, y cuando el agente se sumó a esa convención, la canalización que necesitaba ya estaba allí.
8. El terreno: Next.js
El agente tiene que navegar un código base, y el framework del código base es el terreno. Next.js es una elección fuerte por dos razones que ambas regresan a la verificación. La primera es que es TypeScript, y los tipos son la primera y más barata puerta. Ejecutado en modo estricto, el verificador de tipos rechaza una gran clase de error, una forma equivocada, un campo que falta, un valor que podría ser nulo, en el momento en que el agente lo escribe, que es exactamente cuando una corrección es más barata, antes de que el código se ejecute y mucho antes de que un humano mire. Llevamos la misma idea a los bordes del programa, validando la entrada externa, los cuerpos de las peticiones, las variables de entorno, las filas de la base de datos, contra un esquema, de modo que los datos sin tipar que vienen de fuera se vuelvan tipados y comprobados en la frontera en vez de confiados. Los tipos no son burocracia aquí; son la puerta que convierte el error más común del agente, una forma plausible que es sutilmente incorrecta, en un subrayado rojo que él mismo arregla.
La segunda razón es que Next.js es convencional, y su modelo, aunque rico, está lo bastante trillado como para que el agente lo escriba con fluidez. Vale la pena ser concreto sobre ese modelo, porque es donde vive mucha de la ingeniería. El App Router renderiza en el servidor por defecto: los Server Components se ejecutan en el servidor y nunca envían su código al navegador, manteniendo el acceso a datos y los secretos del lado del servidor, mientras que los Client Components, marcados explícitamente, llevan la interactividad. Las mutaciones pasan por Server Actions, funciones de servidor que un formulario o un botón pueden llamar directamente, y los Route Handlers proporcionan la superficie de API. Cada ruta elige cómo renderiza, estática en tiempo de build, regenerada incrementalmente según una agenda, o dinámicamente por petición, y dónde se ejecuta, el ligero entorno de ejecución Edge cerca del usuario o el más completo entorno de ejecución Node.js, con middleware ejecutándose antes de la petición para manejar cosas como la autenticación y la configuración regional. Son muchas palancas, pero son palancas públicas, documentadas y estables que el agente ha visto usarse correctamente a escala, de modo que echa mano de la correcta, y el framework es lo bastante poderoso para construir un producto real sin dejar de ser el terreno en el que el agente es más capaz, lo cual, por el argumento de la Sección 3, es la combinación que importa.
9. El estado: Postgres
Todo lo anterior concierne al código, que es seguro cambiar porque está versionado y es reversible. Los datos no lo son: una columna eliminada o una migración mala puede destruir algo que ningún commit puede restaurar. Postgres es el estado duradero y transaccional al fondo de la cadena, y la disciplina a su alrededor es deliberadamente más estricta que la del código. PostgreSQL se gana su lugar de la misma manera que el resto de la cadena, es la elección convencional, probada en combate y soberbiamente documentada, de modo que el agente escribe SQL correcto y migraciones correctas contra él, y una instancia gestionada elimina el trabajo operativo sin cambiar el modelo.
El cuidado va en el cambio. Los cambios de esquema son migraciones: archivos ordenados y versionados, versionados en el repositorio y revisados como cualquier otro cambio, ejecutados contra la previsualización antes que producción, y escritos para ser reversibles. Una base de datos en producción no puede cambiarse como una recién creada, de modo que un cambio arriesgado se hace como una secuencia de cambios seguros, el patrón de expandir y contraer (Ambler & Sadalage, 2006): añade la nueva columna o tabla y empieza a escribir en ella, rellena hacia atrás, mueve las lecturas, y solo entonces, en un despliegue posterior, elimina la vieja forma, de modo que en cada paso intermedio el código en ejecución y el esquema sean compatibles y el paso sea reversible. Postgres ayuda haciendo transaccionales la mayoría de los cambios de esquema, de modo que una migración fallida hace rollback limpiamente en vez de dejar la base de datos a medio cambiar. Dos puntos operativos importan en un escenario serverless, donde muchas instancias de función de vida corta quieren cada una una conexión: un pool de conexiones no es opcional, porque una base de datos tiene un límite duro de conexiones que una flota de trabajadores serverless de otro modo agotará; y la seguridad a nivel de fila deja que la propia base de datos haga cumplir quién puede ver qué filas, un respaldo que no depende de que la aplicación acierte cada consulta. La regla que mantenemos es simple y vale la pena enunciarla: el agente puede proponer una migración, pero una migración es la única clase de cambio que un humano siempre lee con plena atención, porque es la única clase que la cadena no puede deshacer del todo.
10. La puerta humana y cómo falla
Cada puerta automática de esta cadena existe para abaratar la puerta humana, no para eliminarla. El revisor en el pull request hace lo único que ninguna puerta automatiza: juzgar si el cambio es lo que el negocio realmente quería y si es seguro exponerlo, preguntas que los tipos, las pruebas y las previsualizaciones informan pero no responden. El propósito entero de la cadena es entregar a ese revisor un cambio pequeño, en ejecución y precomprobado, de modo que el juicio sea rápido y bien fundado. Pero la puerta tiene modos de fallo característicos, y nombrarlos es parte de usar bien la cadena.
El primero es el sello de goma. Cuando el agente suele acertar, el revisor aprende a aprobar rápido, y la revisión se degrada en una formalidad que no atrapa nada. La defensa es mantener los cambios pequeños, de modo que leerlos como es debido siga siendo barato, y tratar la previsualización como obligatoria, no opcional: una revisión que no recorrió el cambio en ejecución no es una revisión. El segundo es el exceso de confianza, la creencia de que como el código pasó el verificador de tipos y las pruebas debe de ser correcto; esas puertas atrapan formas y comportamientos pero no la intención, y el humano es la única puerta sobre la intención. El tercero es la fatiga de escala: un agente puede abrir más pull requests de los que un equipo puede revisar en serio, y un atasco de cambios revisados a medias es el régimen limitado por la verificación reafirmándose. La respuesta no es revisar más rápido sino generar de forma más deliberada, dejar que el agente produzca solo lo que el equipo puede verificar realmente, porque el cambio sin verificar es un pasivo sea cual sea su volumen.
11. Costes y disyuntivas
La cadena es un conjunto de elecciones, y la honestidad exige enunciar qué cuestan. La más obvia es el acoplamiento: Next.js y Vercel vienen de la misma empresa, y construir sobre ellos compra un camino suave e integrado al precio de un grado de dependencia, tanto de un framework que se mueve rápido y a veces rompe la compatibilidad entre versiones mayores, como de una plataforma de hosting cuyos precios y primitivas adoptas. Juzgamos que la disyuntiva vale la pena por la velocidad y la calidad del bucle de previsualización, pero es una dependencia real, y un equipo debería mantener portables su lógica de dominio y sus datos, de modo que el framework y el host sigan siendo infraestructura reemplazable en vez del producto. El segundo coste es la disciplina que exige la puerta: la cadena es solo tan segura como la revisión en la que culmina, y un equipo que deja decaer la puerta humana hasta el sello de goma tiene una manera rápida de entregar errores seguros de sí mismos, que es peor que una manera lenta de entregar aciertos meditados. El tercero es el acceso del agente: una herramienta que puede editar el repositorio y disparar despliegues es un actor poderoso, y debe acotarse como tal, con protección de ramas, con credenciales de mínimo privilegio, con secretos mantenidos fuera del repositorio y del alcance del agente, y con los cambios de permisos e infraestructura revisados con cuidado particular. El cuarto es la irreversibilidad de los datos, tratada arriba: el único lugar donde la red de seguridad de la cadena tiene un agujero, y el lugar donde gastar la mayor atención humana. Ninguno de estos es una razón para no adoptar la cadena; cada uno es una razón para adoptarla deliberadamente.
12. Cómo operamos la plataforma Nashua 360 sobre ella
La cadena de este artículo no es una propuesta que hayamos teorizado; es la que usamos para construir y operar nuestro propio producto. La Nashua 360 Enterprise Platform es una aplicación Next.js, desplegada en Vercel, respaldada por Postgres, con su código fuente en GitHub, y se desarrolla con Claude Code como el agente, incluso desde la aplicación móvil cuando un cambio es mejor iniciarlo o aprobarlo lejos de un escritorio. Un archivo de convenciones versionado le dice al agente las reglas de la casa; cada cambio a la plataforma es una rama y un pull request; cada pull request obtiene su verificación de tipos, su ejecución de integración continua y su despliegue de previsualización sobre una copia aislada de la pila; nada llega a la rama de producción sin que un humano lea el diff y recorra la previsualización; y las migraciones son los cambios que leemos con más dureza. No ensamblamos esta cadena para estar a la moda. La ensamblamos porque, una vez que aceptamos que un agente había abaratado la generación y vuelto la verificación la restricción, cada eslabón se siguió de la pregunta de cómo verificar rápido y de forma segura, y porque el mismo razonamiento que la hace correcta para nosotros, herramientas convencionales que el agente maneja bien, envueltas en bucles y puertas que atrapan sus errores, la hace correcta para la mayoría de los equipos que construyen software web hoy. Que además deje avanzar un producto serio desde un teléfono en un tren no es la razón por la que la elegimos, pero es una buena señal de cuánto ha cambiado la forma del trabajo.
13. Objeciones y respuestas
Esto no es más que entrega continua con un agente atornillado. En gran parte, deliberadamente. Las prácticas sobre las que descansa la cadena, el control de versiones, los cambios pequeños y revisados, la integración continua, el despliegue automatizado con previsualizaciones y rollback, son la disciplina establecida de la entrega de software moderna (Humble & Farley, 2010; Forsgren et al., 2018), y ese es el punto: el agente no sustituye esa disciplina, eleva su prima, porque es la disciplina la que suministra la verificación que la velocidad del agente ahora exige. La contribución no es una práctica nueva sino el argumento de por qué las viejas prácticas importan más, no menos, una vez que la generación es barata.
Un modelo mejor hará innecesaria la herramienta. No lo hará, porque la herramienta aborda la parte que un modelo mejor no toca. Un agente más capaz genera más rápido y, en un mundo limitado por la verificación, generar más rápido no eleva lo que de hecho se entrega; solo verificar más rápido lo hace. El modelo mejor también produce más código, más rápido, para que un humano lo compruebe, lo que hace las puertas más necesarias, no menos. La cadena es una apuesta por la verificación, y esa apuesta mejora, no empeora, a medida que mejora la generación.
Estás atado a la pila de un solo proveedor. En parte, y lo dijimos. El acoplamiento de Next.js y Vercel es un coste real aceptado por un beneficio real, el bucle de previsualización integrado que es central para todo el argumento. La mitigación es mantener portable la lógica esencial, el código de dominio y la base de datos, y tratar el framework y el host como infraestructura reemplazable. Un equipo con un apetito de riesgo distinto puede mantener la forma de la cadena, agente, control de versiones, previsualización aislada, framework tipado, base de datos revisada, sobre otros componentes.
14. Limitaciones
Esto es consejo orientado a los profesionales, y sus límites deberían enunciarse. Es una recomendación razonada basada en nuestro propio uso, no una comparación controlada; no hemos medido la cadena contra alternativas. Las herramientas específicas son las actuales a finales de 2026, y este es un campo que se mueve rápido: el argumento, que la verificación es la restricción y que la cadena debería leerse como bucles y puertas, pretende sobrevivir a cualquier herramienta en particular, pero las herramientas en particular cambiarán, y un lector debería conservar el argumento y reexaminar las partes. La recomendación está acotada a la clase de software que construimos, aplicaciones web con una base de datos, y se traslada con menos directez a dominios con restricciones distintas, como sistemas donde el coste de una puerta de verificación es en sí prohibitivo, o donde ningún agente ha visto lo suficiente de la pila como para confiarle ella. Y la seguridad de la cadena descansa en una puerta humana que la cadena abarata pero no puede hacer automática; un equipo que no esté dispuesto a mantener honesta esa puerta debería esperar la velocidad sin la seguridad.
15. Conclusión
Un agente de codificación vuelve rápido escribir software, y al hacerlo saca a la luz la parte difícil. La generación, la parte que solía dominar el día, se vuelve barata; la verificación, decidir qué construir y estar seguro de que el resultado es correcto, no, y se convierte en la restricción. La lección para las herramientas es que el valor de un montaje asistido por IA no está en el agente sino en la cadena a su alrededor que permite a un equipo verificar a la velocidad a la que el agente genera y atrapar sus errores antes de que lo hagan los usuarios. Construimos y operamos la plataforma Nashua 360 sobre una cadena así: Claude Code para escribir, en un bucle con las comprobaciones y accesible desde un teléfono; GitHub para hacer de cada cambio un diff revisado y reversible tras una rama protegida; Vercel para dar a cada cambio su propia previsualización en ejecución y a cada versión un rollback instantáneo; Next.js como un terreno tipado y convencional cuyos tipos son la primera puerta; y Postgres como estado duradero cambiado mediante migraciones revisadas y reversibles. Cada eslabón cierra un bucle o añade una puerta, las puertas son independientes de modo que ninguna de ellas tiene que ser perfecta, y el conjunto se elige con un criterio particular de este momento: que para un agente, la herramienta convencional es la capaz. Escribe rápido, verifica más rápido, y no dejes que nada llegue a producción que una persona no haya visto en ejecución. Eso es todo, y es suficiente.
Apéndice A. Una lista de comprobación de adopción
Las prácticas de abajo son lo que hace la cadena segura en vez de meramente rápida. Ninguna es novedosa; la disciplina es el valor.
Tabla 2. Una lista de comprobación de adopción. Cada práctica mantiene honesta una puerta o corto un bucle; la columna de la derecha es el fallo que previene.
| Práctica | Qué previene |
|---|---|
| Proteger la rama principal; fusionar solo vía pull request revisado con comprobaciones requeridas | Cambio sin revisar o sin probar llegando a producción |
| Mantener un archivo de convenciones versionado para el agente | Repetir las mismas correcciones; deriva del contexto |
| Mantener los cambios pequeños | La revisión degradándose en sello de goma |
| Hacer que el agente ejecute tipos y pruebas antes de entregar | Un humano haciendo la verificación de la máquina |
| Tratar la previsualización como obligatoria en la revisión | Aprobar código que nadie vio en ejecución |
| Dar a las previsualizaciones datos aislados | Una revisión tocando datos de producción |
| Leer cada migración con plena atención; expandir y luego contraer | El único cambio que la cadena no puede deshacer |
| Mantener los secretos fuera del repositorio y del alcance del agente; mínimo privilegio | Un actor poderoso con credenciales que no necesita |
| Generar solo lo que puedes verificar | Un atasco de cambio sin verificar y pasivo |
Referencias
Ambler, S. W., & Sadalage, P. J. (2006). Refactoring databases: Evolutionary database design. Addison-Wesley. ISBN 978-0-321-29353-5.
Bacchelli, A., & Bird, C. (2013). Expectations, outcomes, and challenges of modern code review. In Proceedings of the 35th International Conference on Software Engineering (ICSE) (pp. 712–721). IEEE. https://doi.org/10.1109/ICSE.2013.6606617
Beck, K. (2000). Extreme programming explained: Embrace change. Addison-Wesley. ISBN 978-0-201-61641-5.
Brooks, F. P. (1987). No silver bullet: Essence and accidents of software engineering. Computer, 20(4), 10–19. https://doi.org/10.1109/MC.1987.1663532
Chen, M., Tworek, J., Jun, H., et al. (2021). Evaluating large language models trained on code. arXiv preprint arXiv:2107.03374. https://arxiv.org/abs/2107.03374
Anthropic (2026). Claude Code documentation. https://code.claude.com/docs
Forsgren, N., Humble, J., & Kim, G. (2018). Accelerate: The science of lean software and DevOps: Building and scaling high performing technology organizations. IT Revolution Press. ISBN 978-1-942788-33-1.
Fowler, M. (2006). Continuous integration. martinfowler.com. https://martinfowler.com/articles/continuousIntegration.html
GitHub (2026). GitHub documentation. https://docs.github.com
Humble, J., & Farley, D. (2010). Continuous delivery: Reliable software releases through build, test, and deployment automation. Addison-Wesley. ISBN 978-0-321-60191-9.
Vercel (2026). Next.js documentation. https://nextjs.org/docs
Peng, S., Kalliamvakou, E., Cihon, P., & Demirer, M. (2023). The impact of AI on developer productivity: Evidence from GitHub Copilot. arXiv preprint arXiv:2302.06590. https://arxiv.org/abs/2302.06590
PostgreSQL Global Development Group (2026). PostgreSQL documentation. https://www.postgresql.org/docs/
Reason, J. (2000). Human error: Models and management. BMJ, 320(7237), 768–770. https://doi.org/10.1136/bmj.320.7237.768
Sadowski, C., Söderberg, E., Church, L., Sipko, M., & Bacchelli, A. (2018). Modern code review: A case study at Google. In Proceedings of the 40th International Conference on Software Engineering: Software Engineering in Practice (ICSE-SEIP) (pp. 181–190). ACM. https://doi.org/10.1145/3183519.3183525
Vercel (2026). Vercel documentation. https://vercel.com/docs
