<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Inteligencia Artificial el josiete.com</title><link>https://www.josiete.com/tags/inteligencia-artificial/</link><description>Contenido reciente en Inteligencia Artificial el josiete.com</description><generator>Hugo</generator><language>es-es</language><lastBuildDate>Wed, 23 Sep 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://www.josiete.com/tags/inteligencia-artificial/index.xml" rel="self" type="application/rss+xml"/><item><title>Spec-Driven Development: darle memoria y dirección a los agentes de IA</title><link>https://www.josiete.com/posts/spec-driven-development/</link><pubDate>Wed, 23 Sep 2026 00:00:00 +0000</pubDate><guid>https://www.josiete.com/posts/spec-driven-development/</guid><description>&lt;p&gt;&lt;img src="https://www.josiete.com/images/spec-driven-development.webp" alt="Ilustración de una especificación conectando planificación, código, pruebas y revisión humana"&gt;&lt;/p&gt;&#10;&lt;p&gt;Los agentes LLM escriben código con una velocidad sorprendente. También olvidan con una velocidad sorprendente. Una conversación puede contener decisiones importantes y, sin embargo, esas decisiones se pierden cuando cambia la sesión, el modelo, la persona que mantiene el proyecto o simplemente el contexto que cabe en la ventana del agente.&lt;/p&gt;&#10;&lt;p&gt;Ahí aparece el &lt;strong&gt;Spec-Driven Development (SDD)&lt;/strong&gt;, o desarrollo dirigido por especificaciones. La idea es sencilla: antes de pedir código, se escribe qué queremos construir, por qué, qué límites debe respetar y cómo sabremos que está bien. Esa especificación deja de ser un documento efímero y se convierte en un contrato de trabajo que pueden leer el equipo y los agentes.&lt;/p&gt;&#10;&lt;h2 id="especificar-es-construir-memoria"&gt;Especificar es construir memoria&lt;/h2&gt;&#10;&lt;p&gt;Un prompt dice: “añade autenticación”. Una especificación dice qué usuarios existen, qué pueden hacer, qué ocurre cuando fallan, qué datos no deben filtrarse y qué escenarios deben pasar. La diferencia no es solo de longitud: es la diferencia entre una intención momentánea y un contexto que puede sobrevivir meses.&lt;/p&gt;&#10;&lt;p&gt;Para que un agente pueda trabajar en el largo plazo conviene conservar, como mínimo:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;el objetivo y el problema que se quiere resolver;&lt;/li&gt;&#10;&lt;li&gt;historias de usuario y escenarios de aceptación;&lt;/li&gt;&#10;&lt;li&gt;restricciones funcionales, de seguridad, rendimiento y accesibilidad;&lt;/li&gt;&#10;&lt;li&gt;decisiones técnicas y sus motivos;&lt;/li&gt;&#10;&lt;li&gt;una lista de tareas pequeñas, verificables y ordenadas;&lt;/li&gt;&#10;&lt;li&gt;el estado de lo implementado y las comprobaciones que siguen pendientes.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;El agente puede proponer la primera versión, pero la responsabilidad de revisar si describe el producto correcto sigue siendo humana. La especificación no elimina la conversación: la hace acumulativa.&lt;/p&gt;&#10;&lt;h2 id="un-flujo-sdd-práctico"&gt;Un flujo SDD práctico&lt;/h2&gt;&#10;&lt;p&gt;Un ciclo razonable separa cuatro preguntas:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&lt;strong&gt;Especificar&lt;/strong&gt;: ¿qué problema resolvemos y para quién?&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Planificar&lt;/strong&gt;: ¿qué diseño y decisiones técnicas permiten resolverlo dentro de las restricciones?&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Descomponer&lt;/strong&gt;: ¿qué tareas independientes puede ejecutar y verificar el agente?&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Implementar y comprobar&lt;/strong&gt;: ¿el código satisface los escenarios y sigue respetando la especificación?&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;Cuando aparece nueva información, se actualiza la especificación y se vuelve a planificar. No se trata de imponer una cascada rígida: se trata de que el cambio quede registrado y no dependa de que alguien recuerde una conversación antigua.&lt;/p&gt;&#10;&lt;h2 id="spec-kit"&gt;Spec Kit&lt;/h2&gt;&#10;&lt;p&gt;&lt;a href="https://speckit.org/"&gt;Spec Kit&lt;/a&gt; es el toolkit de código abierto de GitHub para este enfoque. Su flujo propone pasar de &lt;code&gt;/specify&lt;/code&gt; a &lt;code&gt;/plan&lt;/code&gt;, &lt;code&gt;/tasks&lt;/code&gt; y &lt;code&gt;/implement&lt;/code&gt;, con artefactos Markdown que proporcionan contexto estructurado al agente. También incluye comandos para establecer principios del proyecto, aclarar ambigüedades y analizar la coherencia de los artefactos.&lt;/p&gt;&#10;&lt;p&gt;Un arranque típico se parece a esto:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;/specify Describe el problema, los usuarios y los escenarios&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;/clarify Resuelve las preguntas que hayan quedado abiertas&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;/plan Elige la arquitectura y las decisiones técnicas&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;/tasks Convierte el plan en tareas verificables&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;/implement&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Su punto fuerte es hacer explícita la transición entre intención, diseño y ejecución. Es especialmente útil cuando el repositorio tiene varias reglas, cuando participan varios agentes o cuando queremos que el trabajo futuro pueda reanudarse leyendo los archivos del proyecto.&lt;/p&gt;&#10;&lt;h2 id="openspec"&gt;OpenSpec&lt;/h2&gt;&#10;&lt;p&gt;&lt;a href="https://openspec.dev/"&gt;OpenSpec&lt;/a&gt; se presenta como un framework ligero y configurable para crear y mantener especificaciones. Su flujo actual gira alrededor de &lt;code&gt;/opsx:explore&lt;/code&gt;, &lt;code&gt;/opsx:propose&lt;/code&gt;, &lt;code&gt;/opsx:apply&lt;/code&gt;, &lt;code&gt;/opsx:verify&lt;/code&gt; y &lt;code&gt;/opsx:archive&lt;/code&gt;: primero se entiende el problema y el código existente, después se redactan una propuesta, requisitos, diseño y tareas, y finalmente se implementa, verifica y archiva el cambio.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;/opsx:explore&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;/opsx:propose añade una preferencia de tema&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;/opsx:apply&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;/opsx:verify&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;/opsx:archive&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;La diferencia de énfasis es interesante: Spec Kit ofrece una secuencia muy clara de artefactos para pasar de la idea a la implementación; OpenSpec pone mucho peso en mantener los cambios, verificar que la implementación coincide con la especificación y trabajar sobre proyectos existentes. Ambos persiguen lo mismo: que el agente no improvise el producto a partir de una instrucción aislada.&lt;/p&gt;&#10;&lt;h2 id="ventajas-de-trabajar-así"&gt;Ventajas de trabajar así&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Continuidad&lt;/strong&gt;: un agente nuevo puede retomar el trabajo leyendo la especificación, sin reconstruir toda la historia desde cero.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Menos ambigüedad&lt;/strong&gt;: los escenarios de aceptación obligan a concretar qué significa “terminado”.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Mejor delegación&lt;/strong&gt;: las tareas pequeñas y ordenadas son más fáciles de asignar, revisar y repetir.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Revisiones más útiles&lt;/strong&gt;: se puede comparar el código con una intención escrita, no solo con una conversación.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Menos deriva&lt;/strong&gt;: los cambios de alcance, las restricciones y las decisiones quedan visibles para todo el equipo.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Mayor portabilidad&lt;/strong&gt;: el conocimiento del proyecto no queda encerrado en un proveedor, un IDE o una sesión de chat.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Aprendizaje acumulativo&lt;/strong&gt;: las especificaciones, decisiones y verificaciones forman memoria operativa del sistema.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Hay un coste: escribir y mantener especificaciones requiere disciplina. Un documento obsoleto puede desorientar tanto como la ausencia de documentación. Por eso la especificación debe ser breve cuando el problema es pequeño, revisarse junto con el código y eliminar ceremonias que no aporten claridad.&lt;/p&gt;&#10;&lt;h2 id="otros-proyectos-para-explorar"&gt;Otros proyectos para explorar&lt;/h2&gt;&#10;&lt;p&gt;El ecosistema está creciendo y no hay una única forma correcta de practicar SDD. Merece la pena comparar &lt;a href="https://kiro.dev/"&gt;Kiro&lt;/a&gt;, que organiza el trabajo alrededor de requisitos, diseño y tareas; &lt;a href="https://www.bmadcode.com/"&gt;The BMAD Method&lt;/a&gt;, un framework abierto con agentes y roles especializados para distintas fases del ciclo; &lt;a href="https://github.com/specd-sdd/SpecD"&gt;SpecD&lt;/a&gt;, que trata especificaciones, cambios y hooks como conceptos de primera clase; y &lt;a href="https://tessl.io/"&gt;Tessl&lt;/a&gt;, que explora un enfoque en el que la especificación tiene un papel todavía más central que el código.&lt;/p&gt;&#10;&lt;p&gt;También son buenas lecturas el &lt;a href="https://github.com/github/spec-kit"&gt;repositorio de ejemplos y herramientas de Spec Kit&lt;/a&gt; y el artículo de GitHub sobre &lt;a href="https://github.blog/ai-and-ml/generative-ai/spec-driven-development-with-ai-get-started-with-a-new-open-source-toolkit/"&gt;desarrollo dirigido por especificaciones con IA&lt;/a&gt;. Conviene comprobar siempre la documentación actual: los comandos, integraciones y niveles de madurez de estos proyectos cambian deprisa.&lt;/p&gt;&#10;&lt;h2 id="la-regla-de-oro"&gt;La regla de oro&lt;/h2&gt;&#10;&lt;p&gt;Un agente LLM no necesita que le repitamos infinitamente el mismo contexto: necesita que lo convirtamos en un artefacto consultable, versionado y revisable. Especificar no es escribir burocracia antes de programar. Es decidir qué memoria queremos dejarle al siguiente agente —o a nuestro yo de dentro de seis meses— para que pueda continuar sin adivinar.&lt;/p&gt;&#10;&lt;p&gt;La última palabra sigue siendo humana: revisar la especificación, comprobar el código y validar el comportamiento real. Pero, cuando el proyecto dura más que una sesión de chat, trabajar sin una especificación es pedirle al agente que construya con amnesia.&lt;/p&gt;&#10;</description></item></channel></rss>