← Últimos Posts do Blog

🎵 Podcast no Spotify

El desarrollo de software moderno, a menudo complementado por Grandes Modelos de Lenguaje (LLMs), se ha visto obstaculizado por la "codificación por vibe" (vibe coding), donde las indicaciones amplias resultan en implementaciones imprecisas o inesperadas. Para combatir esta imprecisión y la falta de claridad en la especificación, GitHub presentó Spec Kit, un kit de herramientas de código abierto diseñado para establecer un flujo de trabajo de desarrollo estructurado y verificable. Spec Kit cambia el enfoque del desarrollo de software a una metodología orientada por especificación (Spec-Driven Development - SDD), donde la especificación se convierte en el artefacto vivo y ejecutable que define la intención de construcción, asegurando que todos los interesados y las herramientas de I.A. se alineen con una única fuente de verdad.

Spec Kit opera transformando la indicación ad hoc en flujos de trabajo por fases claramente definidas. El kit incluye una herramienta de línea de comandos (CLI) llamada specify, plantillas (templates) y steering prompts (indicaciones de dirección), y es compatible con varios agentes de codificación, como GitHub Copilot, Claude Code y Gemini CLI. Este enfoque tiene como objetivo cerrar las brechas entre la intención y la implementación, lo que lleva a un código más limpio, seguro y confiable. El uso del CLI, aunque opcional, simplifica el scaffolding del proyecto y la instalación de dependencias y plantillas iniciales, que también se pueden descargar directamente de las versiones (releases).

El flujo de trabajo de Spec Kit está rigurosamente organizado en cuatro fases cerradas con puntos de control de validación. La primera fase es Specify (Especificar), donde el desarrollador describe el qué y el por qué de la construcción, centrándose en los recorridos del usuario y los resultados. El agente de I.A. utiliza esta entrada para generar el documento de especificación detallado. Luego, la fase Plan (Planificar) define la pila tecnológica y las restricciones arquitectónicas, lo que resulta en un plan técnico que debe respetar los principios no negociables establecidos en la Constitution (Constitución) del proyecto. La Constitución establece principios fijos, como requisitos de prueba, pila tecnológica o reglas de entrega (ej: static first delivery).

Tras la planificación, la fase Tasks (Tareas) entra en acción, dividiendo la especificación y el plan en unidades pequeñas, procesables y comprobables. Finalmente, en la fase Implement (Implementar), la I.A. aborda las tareas de forma incremental, permitiendo al desarrollador revisar y refinar cada cambio. Spec Kit garantiza un control granular total sobre la ejecución. Los artefactos resultantes (Specification, Plan, Constitution y Tasks) son archivos Markdown, lo que facilita la edición manual por parte de humanos. Es crucial que el desarrollador, el "humano en el circuito", utilice comandos como /clarify para identificar y completar cualquier punto ciego o requisito subespecificado en la especificación.

La profunda integración técnica de Spec Kit con agentes, como Copilot dentro de Visual Studio Code (VS Code) Insiders, es posible gracias al uso de Modos de Chat (Chat Modes). Estos Modos de Chat funcionan como system prompts programables y se activan mediante indicaciones de acceso directo (comandos con barra inclinada como /specify). Esta reorganización permite al agente comprender exactamente qué comportamiento programático debe seguir.

Una característica técnica clave para optimizar el flujo de trabajo es el uso de Agent Handoffs (Transferencias de Agente), actualmente disponible en VS Code Insiders. Un handoff se define en el front matter YAML del modo de chat, y sirve para indicarle al agente cuál es el siguiente paso lógico una vez finalizada una tarea. Por ejemplo, después de finalizar la Constitución, el handoff sugiere el comando "Build Specification".

Los handoffs mejoran drásticamente la Experiencia del Usuario (UX) en VS Code al codificar la secuencia del flujo de trabajo directamente en el entorno de desarrollo. Esto elimina la necesidad de que el desarrollador adivine qué comando ejecutar a continuación (lo cual es vital dada la "expansión de comandos"—command sprawl—de Spec Kit, como /clarify, /analyze, /plan, etc.). Un handoff puede configurarse para simplemente sugerir el siguiente paso, requiriendo input adicional del usuario, o puede configurarse con la opción send: true para enviar la indicación automáticamente.

El proceso también utiliza ramas Git aisladas para cada iteración o característica, asegurando que el trabajo esté organizado y que los cambios puedan revertirse. Spec Kit fomenta la iteración; el desarrollador puede utilizar diferentes modelos (como GPT-5, Claude Sonnet 4, Grok) para distintas fases; por ejemplo, GPT-5 para scaffolding y Sonnet 4 para la implementación creativa de código. El objetivo final es crear software consistente, ya que la especificación y sus artefactos asociados (como contratos y planes) forman un contexto de memoria para el sistema. Este documento de especificación, al ser un "documento vivo", captura decisiones de diseño y lecciones aprendidas, lo que permite que el proyecto se reconstruya o adapte fácilmente a nuevas tecnologías en el futuro.