Stephen Cresswell lanza Yadda 3 tras una reconstrucción asistida por Claude de un día

El mantenedor de JavaScript de larga trayectoria dice que Claude se encargó de la mayor parte del trabajo, mientras que una suite de pruebas existente impidió que el agente redefiniera la corrección.

By · Published

Primary source: Signal Over Noise

Why it matters

Cresswell's release shows how maintainers can use coding agents safely: separate implementation from tests, stage mechanical changes, and treat human attention as the scarce resource.

Illustration of Stephen Cresswell typing as Claude-assisted code for Yadda 3 flows across a reflected screen.

Stephen Cresswell publicó Yadda 3.0.0 el 15 de agosto después de usar Claude Code para modernizar la librería de pruebas JavaScript en aproximadamente un día, y luego la siguió con la versión 3.1.0 y soporte para especificaciones ejecutables escritas como GitHub-flavored Markdown.

Los lanzamientos le dan a Cresswell un caso concreto para un argumento más amplio sobre el desarrollo de software con IA: los agentes de programación confiables necesitan restricciones que no puedan reescribir, y el reto emergente para los ingenieros es coordinar varios agentes capaces sin perder el control del trabajo.

Cresswell dice que Claude Code, ejecutando Opus 4.8, escribió la mayor parte de la modernización de Yadda con pocas intervenciones de su parte. Esa versión no ha sido auditada de forma independiente, aunque el repositorio público documenta la escala y la secuencia de los cambios. El issue de seguimiento de Yadda 3.0, abierto el 13 de agosto, dividió el trabajo en fases que abarcan integraciones obsoletas, herramientas de desarrollo, formato, modernización del código fuente, exploración de la API, ejemplos, integración continua, documentación y definiciones de TypeScript.

Cresswell mantuvo el formateo mecánico separado de los cambios de comportamiento. También evitó permitir que Claude cambiara el código de producción y sus pruebas correspondientes en el mismo paso. Un agente al que se le permite editar ambos puede hacer que una implementación rota parezca correcta cambiando las pruebas a su alrededor. El conjunto de pruebas existente de Yadda, en cambio, actuó como una definición externa del comportamiento aceptable.

Esa distinción es la parte útil del lanzamiento. El código generado por agentes es fácil de producir. La evidencia de que el código sigue haciendo lo que los usuarios esperan sigue siendo más difícil.

Un mantenedor regresa a una base de código de 2012

Cresswell ha mantenido Yadda desde 2012, según la documentación del repositorio. Su perfil de GitHub también apunta a años de trabajo en infraestructura Node.js en amqplib, el cliente Rascal RabbitMQ, el framework de inyección de dependencias Systemic y la herramienta de migraciones de base de datos Marv. Su perfil de Stack Overflow lo muestra como Head of Engineering en Haven y refleja un enfoque de larga duración en BDD, JavaScript y Node.js.

Yadda mapea especificaciones en lenguaje ordinario a funciones JavaScript ejecutables. Ocupa un territorio similar al de CucumberJS, mientras que permite a los desarrolladores escribir especificaciones sin forzar cada paso en la estructura Given, When and Then de Cucumber. Yadda se integra con runners de prueba como node:test, Mocha y Jasmine en lugar de incluir su propio runner.

La modernización eliminó el empaquetado para navegador e integraciones con herramientas como CasperJS, PhantomJS, Bower y Component. Yadda 3 ahora requiere Node.js 20 o superior, mueve sus propias pruebas a node:test, adopta Biome y lefthook, actualiza el código fuente a la sintaxis ES6, añade ejemplos de Playwright y Puppeteer, e incluye definiciones de TypeScript.

Esos cambios limpian años de historia de JavaScript sin convertir a Yadda en un producto nuevo. El repositorio describe un paquete con cero dependencias en tiempo de ejecución, poco más de 2,000 líneas de código fuente y alrededor de 200 pruebas. GitHub mostraba aproximadamente 410 estrellas al publicarse. Esas cifras indican una librería de código abierto madura y compacta más que una plataforma comercial de pruebas con una base de clientes o modelo de ingresos divulgados.

La secuencia de lanzamientos también fue más rápida de lo que sugiere el título original de la publicación de Cresswell. La página de tags de GitHub lista ambas versiones 3.0.0 y 3.1.0 el 15 de agosto, mientras que el archivo package actual identifica la 3.1.0. El lanzamiento posterior añadió archivos de características en Markdown, lo que permite que las especificaciones se rendericen junto con la documentación del proyecto a la vez que siguen siendo ejecutables.

Las pruebas se vuelven instrucciones para agentes

Cresswell ha sostenido durante mucho tiempo que el desarrollo guiado por comportamiento (BDD) da a los equipos un vocabulario compartido. Un product manager puede leer una oración que describe una decisión de la aplicación más fácilmente que una prueba programática construida a base de fixtures, mocks y asserts. Luego los desarrolladores conectan esa oración con código, dando al texto prosaico una manera de demostrar si el software se comporta como se describe.

La IA cambia la ecuación de costos detrás de esa práctica. Escribir y mantener especificaciones tradicionalmente ha exigido esfuerzo extra antes de que un equipo vea los beneficios. Cresswell argumenta que los agentes pueden convertir transcripciones de reuniones, discusiones y requerimientos en borradores de especificaciones, dejando a las personas juzgar el lenguaje y el comportamiento previsto.

Una vez aprobadas, esas especificaciones pueden guiar agentes de implementación, revisión y prueba. La integración continua puede ejecutarlas contra el software. El mismo artefacto contiene intención legible por humanos y comportamiento verificable por máquina, reduciendo la libertad que tiene un agente para interpretar una página de wiki ambigua o un requerimiento desactualizado.

El soporte de Markdown de Yadda 3.1 encaja con esa tesis. Las especificaciones pueden ubicarse cerca de las discusiones de GitHub, la documentación del proyecto y el código fuente en un formato que tanto humanos como agentes de programación pueden analizar. Los pasos ejecutables proporcionan el fundamento que la documentación ordinaria carece.

Esto no establece que BDD vaya a convertirse en la interfaz estándar para software escrito por agentes. Los equipos todavía deben elegir abstracciones útiles, evitar pasos duplicados o procedimentales y revisar si las especificaciones generadas capturan la decisión real del producto. Un requerimiento mal formulado puede ejecutarse fielmente y seguir estando equivocado.

El método de Cresswell aborda un problema más estrecho e inmediato: mantener el trabajo de implementación del agente separado de la evidencia utilizada para juzgarlo. Ese principio se aplica más allá de Yadda. Los agentes de programación necesitan pruebas independientes, cambios escalonados y límites de revisión si su salida va a ganarse la confianza.

El humano sube en la pila

Después de ejecutar varias sesiones de Claude Code en paralelo, Cresswell encontró que su propia atención se volvió el recurso limitante. Podía seguir cómodamente tres tareas, a veces cuatro o cinco, antes de perder el contexto sobre decisiones, revisiones y trabajos bloqueados.

"El cuello de botella es el humano que coordina el trabajo", escribió Cresswell en su ensayo de lanzamiento.

Esa observación explica por qué una pequeña librería BDD importa más allá de su base de usuarios. Cresswell usó un agente para comprimir una larga modernización en un día, con las pruebas actuando como barandales. Su siguiente limitación fue supervisar trabajo paralelo. El trabajo de ingeniería se desplaza hacia definir contratos, separar cambios, preservar contexto y decidir qué evidencia es lo suficientemente sólida como para hacer merge.

Yadda es el intento de Cresswell de hacer que uno de esos contratos sea legible por personas y ejecutable por máquinas. El paquete sigue siendo una herramienta especializada de pruebas para JavaScript. El método de desarrollo detrás de su lanzamiento es la contribución más grande: los agentes se mueven rápido cuando un mantenedor les da una secuencia, un alcance estrecho y un estándar de corrección que no pueden editar en silencio.

Reader comments

Conversation for this story loads after sign-in.