El engine es abierto y gratis. Aquí está entero: los cuatro comandos, los agentes, las herramientas MCP y los hooks que bloquean, con las cifras que publica cada versión.
Antes de escribir una línea: para quién es (ICP) y qué trabajo le resuelve (JTBD), en una conversación guiada.
Dejadoc/discovery/<feature>/icp_jtbd.md
ControlEl discovery tiene que quedar completo (READY_FOR_PRD) para pasar al PRD.
02/prd
Historias, casos de uso y criterios de aceptación medibles, directamente en tu board.
DejaUS · UC · AC en el board
ControlDefinition Quality Gate: cada criterio tiene que ser específico, medible y comprobable.
03/plan
Plan técnico por fases, componentes y el diseño de cada pantalla con los tokens del sistema.
Dejadoc/plans/<feature>_plan.md + diseños
ControlCada plan deja escrita su fuente de diseño: los tokens del sistema, no un brand kit aparte.
04/implement
Rama, fases aisladas, código, tests y PR. Los agentes se reparten el trabajo y el orquestador coordina.
DejaPR + un recibo por criterio
ControlAG-08 da GO o NO-GO en cada fase y AG-09 acepta o rechaza cada caso de uso: sin los dos no hay merge.
Control
Lo que no se negocia.
Un fichero de instrucciones sugiere. En el engine, los gates deciden, los hooks bloquean y el self-healing repara, con un límite.
Gates que deciden
Definition Quality GateEn /prd. Un criterio que no es específico, medible y comprobable se rechaza y se propone otro.
AG-08 · Quality AuditorEn cada fase de /implement. GO o NO-GO: con NO-GO la fase no avanza.
AG-09 · AceptaciónEn /implement. Acepta, acepta con condiciones o rechaza cada caso de uso según sus criterios y su evidencia.
/feedbackLo que encuentra una persona probando invalida el veredicto: un fallo crítico o mayor bloquea el merge.
Aparte y bajo demanda: /audit hace una auditoría ISO/IEC 25010 con informe en PDF.
Hooks que bloquean
quality-first-guard.mjsNo se modifica un fichero que no se ha leído.
spec-guard.mjsSin un caso de uso activo, o en main, no se escribe código.
commit-spec-guard.mjsNingún commit en main.
pre-commit-lint.mjsLint a cero antes de cada commit.
no-bypass-guard.mjsNi --no-verify, ni push --force, ni reset --hard.
design-system-gate.mjsEn autopilot, ningún color ni fuente fuera del sistema de diseño.
healing-budget-guard.mjsOcho intentos de reparación como máximo.
Self-healing, con límite
Cuando una fase falla, el engine intenta repararse antes de pedir ayuda: dos intentos por fase y ocho por implementación; si fallan dos fases seguidas, para.
1
Auto-fixCorrige lint, formato e imports (por ejemplo, eslint --fix).
2
PatchDiagnostica y arregla la causa: un import que falta, un tipo incorrecto, una ruta mal resuelta.
3
RollbackVuelve al último estado limpio, marca el checkpoint como fallido y reintenta la fase.
4
Una personaSi la fase sigue fallando, para y escala con el diagnóstico escrito.
Por qué bloquean
En marzo de 2026 un agente implementó nueve casos de uso saltándose el pipeline y dejó el board vacío y sin trazabilidad. Ese día nacieron los bloqueos.
Inventario
Todo lo que trae, contado desde el código.
Agentes, comandos y herramientas salen del inventario que publica cada versión del engine: ninguna cifra está escrita a mano.
13 agentes
El orquestador nunca escribe código: coordina, delega y consolida.
Orchestrator
AG-01Feature Generator
AG-02UI/UX Designer
AG-03DB Specialist
AG-04QA & Validation
AG-05n8n Specialist
AG-06Google Stitch MCP
AG-07Apps Script Specialist
AG-08Quality Auditor
AG-09aAcceptance Tester
AG-09bAcceptance Validator
AG-10Developer Tester
/auditISO/IEC 25010
25 comandos
Los cuatro del pipeline primero; después, los que lo rodean: calidad, diseño, backends, pagos y releases.
/discovery
/prd
/plan
/implement
/acceptance-check
/adapt-ui
/app-init
/app-sync
/audit
/check-designs
/compliance
/explore
/feedback
/handoff
/manual-test
/optimize-agents
/quality-gate
/queue-review
/quickstart
/release
/stripe-connect
/stripe-standard
/stripe-switch-account
/switch-backend
/visual-setup
192 herramientas MCP
En un solo servidor, alojado en mcp.specbox.build. Los módulos con más herramientas:
21spec_drivenHistorias, casos de uso y criterios, con cualquier backend
17stitchProxy completo de Google Stitch
16stateCheckpoints, healing y sesiones
12migrationCambio de backend sin perder avance
11onboardingAlta, actualización y matriz de versiones
8milestone_managementHitos y reparto entre repos
8spec_mutationsAlta y edición de historias, casos y criterios
6board_operationsCalidad y metadatos de los criterios
Y 93 herramientas más en otros 30 módulos.
Se adapta a tu proyecto
Tu board, tu stack y tus servicios.
Dónde vive tu tracking
Cuatro backends con la misma interfaz, y migración entre ellos sin perder avance.
·La plantilla de los proyectos activa los hooks que el engine instala
·«Comprobar salud» avisa si un hook configurado no existe
·Workflow hooks.yml
·CLAUDE.md nombra lo que hay
v6.19.0
Escaparate2026-10-04
·Escaparate público de la home
·server/db/migration_twins.py
·La foto de actividad cuadra
·El inventario del site cuenta lo que lista el MCP
Seguridad: qué evita esta versión
·La home pública nunca enseña el detalle de un recibo ni los criterios internos, solo enlaza a specbox.build o al repositorio público del engine, y solo puede enseñar UC del board del orquestador: fijar una de otro proyecto lo rechaza la base de datos.
·Las tablas del escaparate son privadas (seguridad por filas sin políticas ni privilegios para los roles públicos), y las tres vistas públicas (site_activity, site_stats y site_showcase) solo admiten lectura: nadie puede escribir en ellas desde la API pública.
·site_publish se niega a publicar el inventario de un engine que no es el checkout importado, y un inventario vacío nunca vacía las tablas del site.
v6.18.0
Mudanza2026-10-02
·El servidor responde en mcp.specbox.build
·scripts/check-mcp-hosts.mjs
·La extensión y specbox login usan mcp.specbox.build
·Las entradas antiguas se mudan solas, con copia
Seguridad: qué evita esta versión
·La mudanza nunca saca la credencial del almacén seguro del sistema: se copia de una clave a otra dentro del mismo almacén, sin pasar por un fichero ni por la salida de una orden.
·La copia de las entradas de Claude Code que se guarda antes de reescribirlas solo la puede leer su usuario (0600) y nunca lleva el valor de una cabecera Authorization.
·La comparación de los dos nombres no imprime el token, y la que corre en GitHub lo hace sin token: ningún token con acceso a los boards queda guardado en los secretos del repositorio.
v6.17.1
EngineFirst2026-10-01
·provision_native_project (y setup_board) crean el proyecto aunque no haya organización que asignar
·En el panel, un proyecto sin organización no lo ve ningún tenant (filtros de UC-1304) hasta que el SuperAdmin se la asigna: la «degradación segura» que ya describía la 0020
·CLAUDE.md explica los proyectos sin organización y deja de hablar del NOT NULL de la 0019
·100% backwards-compatible para quien usa el panel: el registro da organización a cada developer, así que sus proyectos siguen cayendo en ella
v6.17.0
Evidencias2026-10-01
·Recibos estructurados en mark_ac y mark_ac_batch
·get_uc devuelve los recibos de cada AC
·Migración 0028 (sin DDL)
·CI native-tests
Seguridad: qué evita esta versión
·Nadie puede atribuirse ni atribuir una aceptación: quién y cuándo de cada recibo y de cada veredicto los pone el servidor con la sesión que marca, nunca quien llama, y donde el autor no consta se deja vacío en vez de suponerlo.
·Un recibo solo enlaza a http(s): cualquier otro esquema se rechaza al escribirlo.
Versiones anteriores (25)
v6.16.0
Goma2026-10-01
·delete_uc con purge=true borra de verdad una UC que nunca tuvo trabajo
·Prueba de traducciones de la extensión
·La extensión habla español de principio a fin
·El comprobador de seguridad de cada versión
Seguridad: qué evita esta versión
·Un borrado real no deja trabajo ni rastro fuera de su sitio: solo alcanza una UC sin trabajo del proyecto de la sesión (se comprueba la membresía del proyecto que se escribe), lo que no cumple las condiciones se archiva y nunca se pierde, y cada borrado deja la copia de la UC y de sus AC en audit_log, que no se borra. Modelo de amenazas: T14.
·El comprobador de cada versión reconoce siempre una credencial aunque el mismo mensaje hable de diseño, de modo que un cambio en mcp_token, dev_token, service_role o una API key no puede pasar como cambio visual.
v6.15.0
Tinta2026-10-01
·Las herramientas de diseño leen el sistema
·El gate de diseño bloquea lo que se sale del sistema
·La extensión de VSCode habla el mismo idioma visual
·La CLI specbox se publica sola en npm con cada etiqueta, con trusted publishing (.github/workflows/publish-specbox-cli.yml)
Seguridad: qué evita esta versión
·Publicar la CLI no necesita ningún token guardado: npm la publica con trusted publishing (una credencial de un solo uso por ejecución) y cada versión lleva su procedencia firmada, así que no hay un token de npm en los secretos del repositorio que pueda filtrarse ni publicaciones que no salgan de una etiqueta.
·La página de vuelta del inicio de sesión, rehecha con el sistema de diseño, no muestra el token y escapa todo lo que llega en la dirección (el código y la descripción del error), así que un enlace manipulado no puede inyectar contenido; solo ejecuta el cierre de la pestaña.
v6.14.2
Idle Watch2026-09-30
·Revocación por inactividad
·Cinco dispositivos por persona
·specbox login explica ese caso y dónde desconectar un dispositivo
·La sección Security llega al site
Seguridad: qué evita esta versión
·Un token olvidado deja de valer solo: sin uso real durante 60 días se revoca, y la persona ve el motivo en el panel.
·Nadie acumula dispositivos: el sexto no entra hasta que se desconecta otro, y el intento rechazado no cambia nada.
·La conexión del ordenador no depende de un aviso pendiente: la extensión adopta, renueva y limpia antes de cualquier diálogo de arranque.
·El modelo de amenazas del MCP remoto está escrito y cada tool nueva se contrasta con él antes de registrarse.
v6.14.1
Forward Only2026-09-29
·Política de divulgación responsable
·Comprobación de seguridad del release
·La extensión nunca se degrada al actualizarse
·Tokens anteriores a la caducidad
Seguridad: qué evita esta versión
·La actualización automática solo instala la versión que toca: un paquete antiguo en la carpeta de la extensión ya no puede sustituir la versión en ejecución por una anterior.
·Los tokens sin caducidad tienen fecha: los emitidos antes de esta versión dejan de valer el 2026-12-28; desde entonces solo conectan los tokens de dispositivo, que caducan y se renuevan solos.
·Cómo avisar de un problema de seguridad queda publicado en SECURITY.md, con un canal privado y plazos de respuesta.
·Cada versión cuenta qué evita: la comprobación del release exige esta sección siempre que haya cambios de seguridad.
v6.14.0
Front Door2026-09-29
·Autenticación en el transporte
·Tokens por dispositivo
·specbox, paquete npm (packages/specbox-cli)
·Registro de accesos por tool
Seguridad: qué evita esta versión
·Aislamiento por usuario en el servidor remoto: el backend FreeForm remoto trabaja solo con el contenido que envía el cliente y el registro de proyectos solo muestra los proyectos de quien llama.
·Base de datos del board: las vistas se evalúan con los derechos de quien consulta y los roles públicos no pueden escribir en ninguna tabla.
·Operaciones de borrado de estado reservadas al operador.
·Identidad en cada conexión y tokens que caducan (ver Added).
v6.13.0
Tenant Guard2026-08-25
·internal en los criterios de aceptación
·Check de exposición
·Guía de redacción cara-al-cliente en /prd, referenciada desde /plan
·Batería permanente de aislamiento por tenant sobre todos los mutadores native
·5 new tests in tests/test_dual_backend.py exercise the real dirty state the previous suite never hit (the trello_project fixture always pre-seeded the entry
v6.10.1
Reentrant Reserve2026-06-11
·reserve_uc reentrant inside a caller transaction
·New PG-gated test_start_uc_atomic_after_reserve_same_dev_does_not_abort_tx reproduces the bug (fails with asyncpg.exceptions.InFailedSQLTransactionError without the fix, passes wi…
·Trade-off aceptado: las welcome views del sidebar pueden mostrar estado vacío ~1-15s al arrancar (hasta que health.run() resuelve y dispara setContext)