sdd-assistant
SDD Assistant: Orquestador de IA para Software-Driven Development
SDD Assistant es la extensión oficial de Visual Studio Code para el paradigma Software-Driven Development. Funciona como el "puente" local y determinista entre tu repositorio y tus agentes de IA: un sistema de agentes (Cursor, GitHub Copilot, Antigravity, Terminal, Clipboard) que gestiona los prompts de las tareas del ciclo Software-Driven Development y una máquina de estados finita (FSM) que orquesta el ciclo de vida de cada Historia de Usuario. La extensión es 100% local y determinista: no requiere red, no empaqueta LLM ni motores de conocimiento embebidos.
🚀 ¿Qué hace SDD Assistant?
En lugar de depender de que una IA intente "adivinar" toda la arquitectura de tu proyecto, SDD Assistant estructura un andamiaje documental (.sdd/) y gestiona dinámicamente el contexto (AGENTS.md + derivados por IDE) inyectando únicamente las especificaciones de la historia de usuario activa.
- Gestión de Contexto Reactivo: Observa tus ramas de Git (ej.
feature/HU-101) y compila dinámicamente tu archivo de reglas de IA en tiempo real. - Onboarding Automático: Prepara tu repositorio para colaborar con Inteligencia Artificial con un solo comando.
- Sistema de Agentes Multi-IDE: Enruta cada prompt de tarea al agente configurado (GitHub Copilot, Cursor, Antigravity o portapapeles); Terminal se usa como fallback interno.
- Máquina de Estados Finita (FSM) Inquebrantable: Ciclo de vida estricto (
raw → writing → pending → certified → in-progress → smell-check → testing → done → closed) con autoridad única de escritura de sus banderas y protecciones contra retrocesos no deseados. - Panel de Control de IA (Sidebar): Vista lateral nativa para gestionar el Backlog, el Historial, adoptar Roles/Skills y lanzar comandos de verificación.
- Commit-Guardian: Valida Markdown antes del cierre, solicita confirmación del commit y aplica Git-First; Guardian sanea secretos en los prompts enviados al agente.
- ADR (Architecture Decision Records): Sistema formal de decisiones arquitectónicas en
.sdd/project/adr/; los 6 ADRs fundacionales se validan automáticamente solo cuando están presentes localmente. - Almacenamiento local SQLite (sql.js/WASM): Persistencia del backlog de HUs con SQLite embebido (sin dependencias nativas ni de red).
🏛️ Arquitectura Interna (Clean Architecture)
El código fuente sigue Clean Architecture estrictamente dividida en capas bajo src/:
src/
├── core/ # Dominio puro — sin dependencia de `vscode` ni librerías externas
│ ├── domain/ # Entidades, Value Objects, FSM de tareas
│ ├── ports/ # Interfaces (contratos) hacia infraestructura
│ └── __tests__/ # Tests unitarios BDD con Vitest (coverage ≥ 90%)
├── contexts/ # Bounded Contexts de negocio (task-management, quality-gate,
│ # guardian, prompt-engine, sdd-compilation, telemetry…)
├── infrastructure/ # Adaptadores: SQLite WASM, Git, FileSystem, estrategias de agente
├── presentation/ # Sidebar WebViews, comandos VS Code, renderers, dashboard
└── bootstrap/ # Composition root: ensambla agentes, servicios y BD (HU-134)Invariante crítico: Nada dentro de
src/core/puede importarvscode. El scriptcheck:core-isolationlo verifica automáticamente en cada build. El composition root (única capa que construye los adaptadores concretos) vive ensrc/bootstrap/.
🛠️ Instalación y Configuración Inicial
- Descarga e instala el archivo
sdd-assistant-X.Y.Z.vsixen tu Visual Studio Code:Extensions → ··· → Install from VSIX… - Abre tu proyecto local en VS Code.
- Abre la paleta de comandos (
Ctrl+Shift+P/Cmd+Shift+P) y ejecuta:SDD: Inicializar Proyecto
¿Qué ocurre al inicializar?
- Se crea la carpeta
.sdd/con el esqueleto completo:project/architecture.md— Stack tecnológico e invariantes.project/verification.md— Comandos de tests, lint y seguridad.project/contracts.md— Índice de contratos públicos (Anti-Drift).project/product.md— Visión de negocio.project/adr/— Registro opcional de decisiones arquitectónicas medianteadr-writer; no se crea durante onboarding.
- Se crea el
backlog.jsonpara gestionar el ciclo de vida de HUs. - Se instala un hook
pre-commitque valida conmarkdownlintlos Markdown de.sdd/incluidos en el commit. - Se copia al proyecto el ecosistema versionado de templates, agents, skills y standards.
- El VSIX incluye
resources/completo para que el onboarding pueda leerlo; las guías deresources/guides/permanecen en la extensión y no se copian a.sdd/. .vscode/settings.jsones un archivo versionado del repositorio y no debe eliminarse como parte del onboarding.
🖥️ Interfaz (Sidebar)
Una vez inicializado el proyecto verás el ícono SDD en la barra de actividad de VS Code. La vista main orquesta el trabajo activo y la calidad:
- Gestión de HUs: Crea y edita Historias de Usuario a través de un formulario Webview con campos de Fibonacci, MoSCoW y descripción completa.
- Ciclo de Vida FSM: Botones de transición de estado siguen estrictamente la cadena
raw → writing → pending → certified → in-progress → smell-check → testing → done → closed. No se permiten saltos de estado;donesigue siendo activa hasta el cierre humano (closed). - Flujo de Trabajo Seguro: La UI bloquea el estado durante procesos asíncronos (evita race conditions).
- Quality Gate Interactivo: Antes del cierre, ejecuta ESLint; el cierre transaccional valida Markdown con
markdownlint. Permite autocorrección o continuar explícitamente; los tests se ejecutan por separado. - Verificación Dinámica (Terminal): Botones context-aware que lanzan comandos desde
verification.md. Si detectan la rama actual (ej.feature/HU-139), muestran únicamente los comandos relevantes para esa HU. - Indicador de actividad (status-bar): Estados fiables de la extensión (compilar, quality-gate, transiciones, envío a agente) notificados al webview vía IPC
agentStatus.
Además de la vista main, el sidebar dispone de la vista dedicada Historial.
Los Roles y Skills ya no son vistas separadas del activity bar:
se invocan desde el botón Roles & Skills del título de la vista main, que
abre un selector rápido (QuickPick) para enviar el prompt del rol/skill elegido
al agente configurado.
🗃️ Historial
- Gestión de HUs finalizadas o bloqueadas.
- Archivado profundo (
archiveOldTasks): mueve tareas con más de 30 días a subcarpetas mensuales (.sdd/features/archive/YYYY-MM/).
👥 Roles (vía QuickPick)
Inyecta el prompt del rol correcto para cada fase del ciclo de desarrollo. Roles disponibles:
| Rol | Descripción |
|---|---|
architect |
Invariantes, ADRs, deuda técnica |
developer |
Implementación KISS/SOLID, Test-First |
technical_lead |
Mentoría, revisión de complejidad CoCo/CC |
refactoring_partner |
Revisión continua: anti-patrones, patrones aplicables, refactorización KISS |
qa_auditor |
Validación DoD, checklist de seguridad OWASP |
scrum_master |
Estimación, cycle time, flujo HITL |
product_owner |
Valor de negocio, priorización MoSCoW |
project_manager |
Cronograma, riesgos, burn-down |
db_administrator |
Esquemas SQLite, integridad referencial |
security_auditor |
OWASP Top 10, secrets, autenticación |
devops |
CI/CD, monitoreo, handoff a producción |
🛠️ Skills (vía QuickPick)
Micro-Agentes especializados accesibles desde el panel y mediante prompts:
Ciclo de Vida de HUs
hu-writer— Redacción estructurada de Historias de Usuario (modo completar/entrevistar).multi-agent-certification— Comité de Architect + DBA + Security Auditor para certificar HUs antes de iniciar desarrollo.
Calidad y Arquitectura
smell-detector— Análisis estático de Code Smells y Anti-Patrones con routing multi-agente.code-cleaner— Refactorización guiada bajo principios KISS/SOLID.pattern-refactorer— Aplicación de patrones de diseño correctivos.automata-architect— Refactoriza código de estado frágil a Autómatas Finitos (DFA/NFA).contracts-writer— Actualiza contratos públicos en.sdd/project/contracts/(Anti-Drift).mermaid-expert— Generación de diagramas Mermaid (C4, sequence, flowchart, state).adr-writer— Redacción y actualización de Architecture Decision Records al formato canónico.
Testing y Verificación
golden-tester— Generación de tests resilientes (BDD, Gherkin, Vitest/Mocha).ci-writer— Configuración de pipelines de integración continua.commit-guardian— Validación pre-commit con Quality Gate interactivo.
Análisis de Ecosistema
project-onboarder— Escaneo del código existente y configuración inicial de SDD.product-onboarder— Entrevista de producto para definir visión y alcance.business-context-analyzer— Detección de Bounded Contexts en el código.domain-scaffolder— Generación de scaffolding de dominio (entidades, ports, adapters).security-auditor— Auditoría OWASP, vulnerabilidades y fixes dinámicos.dependency-analyzer— Verificación de dependencias obsoletas o vulnerables.
Mantenimiento
verification-updater— Autodescubrimiento de scripts de testing.config-exporter— Exportación del ecosistema SDD a ZIP/TAR para compartir configuración de equipo.
🤖 Agentes (Configuración IA)
Configura hacia dónde se envían los prompts contextuales:
- Auto-Prompting Dinámico: La extensión detecta la rama activa e instruye a la IA para leer las especificaciones del Backlog antes de actuar. El asistente nunca programa a ciegas.
- Detección automática de agente: En modo
auto, detecta Copilot, Antigravity o Cursor; Terminal es fallback interno y portapapeles el último fallback (HU-174).
📊 Dashboard Dinámico
Webview interactivo (Ver Dashboard, comando sdd-assistant.openDashboard) con:
- Progreso en vivo del Backlog (por estado y prioridad).
- Salud Arquitectónica (lectura de frontmatter de
architecture.md). - Resúmenes técnicos extraídos de Frontmatter YAML de las HUs.
⚡ Comandos Disponibles
Paleta de Comandos (Ctrl+Shift+P)
| Comando | Descripción |
|---|---|
SDD: Inicializar Proyecto |
Crea el andamiaje .sdd/ completo |
SDD: Compilar y Desplegar Contexto |
Fuerza recompilación del contexto SDD |
SDD: Limpiar Caché Huérfana (GC) |
Elimina contextos de ramas inactivas |
Ver Dashboard |
Abre el Dashboard Dinámico en Webview |
Archivar Antiguas |
Archiva HUs con más de 30 días a subcarpetas mensuales |
SDD: Ver estadísticas de tokens |
Muestra métricas de uso de tokens |
| Roles & Skills | Abre el selector rápido (QuickPick) de roles y skills para enviar su prompt al agente |
| Agentes & Comandos | Abre el selector rápido (QuickPick) de agentes y comandos disponibles |
Los botones del sidebar (Certificar HU, Iniciar Desarrollo, Smell Check, Handoff)
disparan las transiciones FSM correspondientes (sdd.certifyHU, sdd.startDevelopment,
sdd.smellCheck, sdd.handoff) a través del agente configurado.
Scripts NPM
| Script | Descripción |
|---|---|
npm run compile |
Compila TypeScript (typecheck, tsc --noEmit) |
npm run bundle |
Empaqueta out/extension.js con esbuild + copia sql-wasm.wasm |
npm run watch |
Compilación incremental en modo watch |
npm run lint |
ESLint sobre todo src/ |
npm run test |
Tests de extensión VS Code (vscode-test / Electron) |
npm run test:coverage |
Tests del Core con Vitest (threshold ≥ 90%) |
npm run check:circular |
Detecta dependencias circulares (madge) |
npm run check:core-isolation |
Verifica que src/core/ no importe vscode |
npm run validate |
Lint + tests unitarios + markdownlint (gate local) |
npm run package:vsix |
Empaqueta la extensión como .vsix |
npm run deploy |
Compila, empaqueta e instala localmente |
⚙️ Settings de Integración Multi-IDE
sdd-assistant.targetIde:auto | cursor | vscode | antigravity | universalauto→ detecta el IDE en runtime con fallback segurocursor→AGENTS.md+.cursor/rules/sdd-context.mdcvscode→AGENTS.md+.github/copilot-instructions.mdantigravity→AGENTS.md+.agents/*+GEMINI.mduniversal→ todos los anteriores, compilandoAGENTS.mduna sola vez
sdd-assistant.agentIntegration:auto | cursor | copilot | antigravity | clipboardsdd-assistant.agentModel: modelo a sugerir al agente (opcional).sdd-assistant.copilotTransport: transporte para la integración con GitHub Copilot (auto | cli | api).sdd-assistant.debugLogging: activa el registro de depuración (por defectofalse).
🏗️ ADRs Fundacionales
Las decisiones arquitectónicas del proyecto están documentadas en .sdd/project/adr/ y son validadas automáticamente por la suite de tests:
| ADR | Título | Estado |
|---|---|---|
| ADR-001 | Clean Architecture — separación core/infrastructure/presentation | |
| ADR-002 | Aislamiento de VS Code API fuera del dominio (src/core/) |
|
| ADR-003 | CQRS para gestión de tareas | |
| ADR-004 | Strangler Fig Pattern para migración incremental | |
| ADR-005 | Flujo HITL como invariante de proceso | |
| ADR-006 | Cobertura estricta ≥ 90% como gate de calidad |
🧭 Convención de Rutas
- En prompts, mensajes y Markdown: rutas POSIX con prefijo
./(ej../.sdd/project/product.md). - Toda ruta textual es relativa a la raíz del workspace.
- Evita formatos ambiguos como
~.sdd/...o rutas absolutas en documentos. - En código TypeScript/Node usa
path.join(...)siempre.
🆕 Historial de Versiones Recientes
v0.28.7 — 22 de Septiembre de 2026
Documentación — routing-table y protocolo de escalamiento
- Eliminados 6 triggers solapados del
refactoring_partnerenrouting-table.json(4 contechnical_lead, 2 conarchitect). - Añadida referencia a
pattern-refactorery protocolo de escalamiento aTECHNICAL_LEADenrefactoring_partner.md.
v0.28.6 — 11 de Septiembre de 2026
Blindaje — una HU cerrada no puede volver a contar como activa aunque su frontmatter no lo diga
scanDirderiva el estado por ubicación: ficheros enhistory/sonclosedaunque su frontmatter diga otra cosa.
v0.28.5 — 11 de Septiembre de 2026
Corregido — prompt de cada gate pertenece a su self-loop
v0.25.1 — Julio de 2026
Eliminación del motor RAG/embeddings — La extensión no empaqueta @huggingface/onnx ni modelos de embeddings. La inyección de contexto se delega al sistema de agentes y la compilación de AGENTS.md.
La terminal v2 con
xterm.jsembebido en el Sidebar es una mejora post-MVP condicionada a demanda real de usuarios (≥ 30% de preferencia confirmada). Ver ADR-006 en.sdd/project/adr/.
Última actualización: 22 de Septiembre de 2026 — v0.28.7
Hecho con