Planos · agentic-dev-boilerplate
00 — el plano antes de la obra

Del plano al producto, con la IA de por medio.

Antes de que una sola línea de código se escriba, cada pantalla se dibuja como un mockup — el plano. Esta guía muestra la maniobra completa de /design-system: cómo, historia por historia, se produce ese plano con una herramienta de diseño, se entrega a la IA, y se convierte en el contrato visual que guía /sprint-development.

para quien arma la historia, no solo quien la codea herramientas: Claude Design · Open Design · Figma · HTML manual motor: Claude Code / OpenCode + skills
Intención

Historia de usuario

Qué debe hacer el usuario en esa pantalla.

Plano

Mockup

Se dibuja en una herramienta externa. La IA no lo inventa.

Contrato

Master design plan

La IA mapea el mockup a la historia.

Obra

Sprint dev

Se construye contra el plano, no a ciegas.

01 — modelo mental

Dos planos que nunca se confunden

El error más común es mezclar el sistema de diseño con el diseño de pantallas. Son dos artefactos, con dos dueños y dos consumidores distintos — y de hecho, dos "drop zones" físicas distintas en el repo.

Sistema — se define una vez

DESIGN.md

./DESIGN.md

Los tokens: paleta, tipografía, espaciado, radios, componentes. La "voz visual" del producto entero.

  • Lo genera la skill /design-system, uno de 5 caminos (A–E: gallery manual, getdesign+matcher, Open Design, Claude Design, o custom).
  • Formato abierto (Google Labs), lo lee cualquier agente.
  • Lo consume /project-bootstrap al montar el frontend.
  • Su drop zone de bundle es design/handoff/<slug>/ (raíz del repo) — no confundir con la de pantallas.
Pantallas — se hace por feature

master-design-plan.md

.context/design/master-design-plan.md

La spec por pantalla (§4) + el mapa Historia → Pantalla (§8). Dice qué pantalla renderiza cada historia y cómo debe verse.

  • Lo arma /design-system (fase opt-in, siempre pregunta) desde tus mockups.
  • La IA no dibuja las pantallas — orquesta el handoff.
  • Lo consume /sprint-development en cada historia de UI (Regla 14 del repo).
  • Su drop zone de mockups crudos es .context/designs/<proyecto>/<lote>/ — plural "designs", distinto de "design" singular del plan.
Regla de oro: DESIGN.md manda sobre tokens; el master design plan manda sobre pantallas. Nunca se duplican valores: el plan de pantallas apunta a DESIGN.md como autoridad de color/tipografía. Y ojo con los nombres de carpeta: design/handoff/ (bundle de tokens) vs. .context/designs/ (mockups de pantalla) vs. .context/design/ (el plan ya armado) — tres carpetas, tres cargas distintas.
02 — el bucle

Un mockup por historia, justo antes de construirla

No se diseñan todas las pantallas de golpe al inicio. Se diseña just-in-time: las pantallas de un feature se dibujan justo antes de su sprint. Así el plano llega fresco y ya alineado con la UI viva.

Cada historia de usuario nueva que renderiza interfaz debería tener su propio mockup — siempre que sea posible. Las historias puramente de backend no tienen pantalla (se marcan con en el mapa). Cuando /sprint-development topa una historia de UI sin fila en §8, te frena y te manda a diseñar ese mockup primero — es literalmente la Regla 14 (UI Fidelity Contract) del repo.

La historia entra al sprint

Tomás una historia de UI. /sprint-development la busca en el mapa Historia → Pantalla (§8 del master design plan).

¿Tiene mockup? Si no, se diseña ahora

Sin fila en §8 → el flujo se detiene. Volvés a /design-system para producir el mockup de ese lote de pantallas. Es el patrón universal de handoff (siguiente sección).

El mockup se convierte en contrato

La IA lee el mockup, escribe la spec de pantalla (§4) y agrega la fila al mapa (§8). Te muestra la lista de pantallas para que la confirmes antes de guardar.

Se construye contra el plano

Recién ahí /sprint-development implementa la historia — abriendo la spec de §4 y respetando los tokens de DESIGN.md. Fidelidad al mockup, sin refactors de backend.

Live-UI-first: el mockup es inspiración, no evangelio. La UI viva actual es la fuente de verdad de fidelidad — se reutilizan los componentes que ya existen y el mockup se adapta a ellos, no al revés. Si el mockup trae algo genuinamente bueno que la UI viva no tiene, no se fuerza en la historia actual: se archiva como tech-story futura.
03 — el patrón universal

Cómo se entrega un mockup a la IA

Este handoff es idéntico en su forma para todas las herramientas — lo que cambia es dónde dibujás las pantallas (paso 2) y, para Open Design, quién hace el paso 3 y 4 (vos, o la IA sola vía MCP — ver §05).

Das el opt-in

Corrés /design-system. La fase de screen-mapping siempre pregunta, nunca corre sola — vía AskUserQuestion, con tres opciones: sí tengo/voy a producir mockups, no (los tokens alcanzan), o todavía no.

vos → "sí, voy a producir mockups para estas historias"

La IA te entrega un BRIEF

La IA escribe BRIEF.md sembrado con los tokens de DESIGN.md (valores reales inline) + las historias y comportamientos visibles. Es el prompt portable que vas a pegar en la herramienta — o que la IA misma va a usar si el camino es MCP-driven.

.context/designs/<proyecto>/<lote>/BRIEF.md

Diseñás en la herramienta externa (o la IA lo hace por MCP)

Pegás el brief en Claude Design / Open Design / la que sea, iterás las pantallas conversando, y exportás el resultado. En el camino manual, este paso lo hacés vos. En Open Design con MCP conectado, la IA puede disparar y pollear el run sola — ver Modo A en §05.

El bundle cae en la "drop zone"

Los archivos exportados quedan en la misma carpeta del brief. Esa es la zona de entrega que la IA vigila (o que ella misma llena, en Modo A).

.context/designs/<proyecto>/<lote>/

La IA arma el contrato

Le avisás que ya está (o ella misma lo detecta al terminar su run). La IA lee los mockups, enumera pantallas, escribe §4 + §8, y te muestra el mapa para revisar. Listo para el sprint.

vos → "ya dejé los mockups en la carpeta, armá el master design plan"
Resume-safe: mientras diseñás (Modo B manual), la IA deja un checkpoint y pausa. Podés cerrar la sesión: al volver retoma exactamente donde estaba, esperando tu bundle. No inventa pantallas para "seguir".
04 — herramienta A

Claude Design

La herramienta de Anthropic (claude.ai/design). Convertís texto en prototipos interactivos HTML/CSS/JS que refinás conversando. Es Path D de las cinco vías de DESIGN.md, y también sirve para screen mockups pegando el BRIEF.md.

Pro+
Requiere plan Pro, Max, Team o Enterprise. En Enterprise, el admin debe habilitarlo (default OFF).
Opus 4.7
Modelo de visión que lo impulsa. Research preview, lanzado 2026-04-17.
HTML
El medio son prototipos vivos .dc.html, no PNGs ni Figma.
claude.ai/design — flujo de login
Import
Export ▼
Chat
Aquí tenés una primera versión del login. ¿Ajustamos algo?
Hacé el botón primario más grande y agregá estado de error
✓ Editing · Login.dc.html
✓ Done
Describí un cambio…
Canvas · preview vivo
2
Esquema aproximado — no es fiel al producto. Chat a la izquierda · canvas vivo a la derecha · Export arriba a la derecha.
04·b — paso a paso, para screen mockups

Abrís un proyecto y pegás el BRIEF

Creás un proyecto (hereda el design system de tu org). Le enchufás contexto: repo de GitHub o directorio local, assets existentes. Pegás el BRIEF.md completo como primer mensaje del chat.

Iterás de cuatro formas

Chat para cambios grandes · comentarios inline (clic en un elemento del canvas) · edición directa (arrastrar / redimensionar / alinear) · sliders que Claude genera para espaciado, color y layout.

Cubrís los estados y varias pantallas

Un proyecto sostiene el flujo completo (varias pantallas conectadas con navegación). Generá los estados borde — vacío, cargando, error — antes del handoff.

Exportás — dos rutas

Botón Export (arriba a la derecha): "Send to local coding agent" empuja el bundle directo a tu Claude Code local corriendo en el repo, o "Save as folder" lo descarga como ZIP/carpeta para que vos lo muevas a mano.

Confirmás el destino

Con "Save as folder": descomprimís en .context/designs/<proyecto>/<lote>/. Con "Send to local coding agent": le decís al agente esa misma ruta de destino — el scope de este drop zone es screen mockups, no el bundle de DESIGN.md (ese usa design/handoff/).

05 — herramienta B

Open Design

La alternativa open source y gratuita a Claude Design (nexu-io/open-design, Apache-2.0). Hoy es una desktop app (no Docker) que usa tu propio agente de código como motor — y puede operarse sola vía MCP.

v0.16.1
Desktop app Electron, firmada y notarizada. Puerto dinámico, no fijo — 3 procesos locales por sesión.
BYOK
Trae tu CLI (Claude Code, Codex, OpenCode…) o tus API keys. Gratis.
18 tools
MCP mcp__open-design__* — la IA puede operar la app sin que abras la ventana.
Open Design · Studio (desktop app, puerto dinámico)
HomeStudioAutomationDesign SystemPlugin
Chat / MCP
Onboarding: bienvenida, selector de plan, confirmación
▌ start_run vía MCP…
✓ get_run → succeeded
Instrucción…Send
Design files
▾ onboarding/
  welcome.html v3
  plans.html v5
  confirm.html v2
▸ history
Preview
cp → repo
Esquema aproximado — no es fiel al producto. En Modo A no hay botón Export que tocar: la IA ubica el resultado con get_artifact/list_files y lo copia (cp) al repo — el MCP no escribe fuera de su propio directorio de datos.
05·b — dos modos, mismo destino
Modo A — preferido

MCP-driven

mcp__open-design__*

Con el daemon de Open Design conectado como MCP server, la IA misma llama create_project + start_run con el contenido del BRIEF.md, pollea get_run cada 30–60s en un loop foreground, y al ver status: succeeded ubica el resultado con get_artifact / list_files y lo copia (cp) desde el data root de Open Design a la drop zone del repo — sin que vos toques la ventana.

Modo B — fallback

Manual + PAUSE

handoff manual

Si el MCP no está conectado: la IA deja el BRIEF.md y pausa. Abrís la desktop app vos, pegás el brief en Studio → New Project (skill/template + DESIGN.md + brief), iterás, y copiás el archivo final desde la carpeta de datos del proyecto (o corrés od export) a la drop zone, y avisás cuando esté.

05·c — instalar y conectar el motor
# Vía recomendada — sin Docker, binario firmado Descargá el instalador de nexu-io/open-design releases (macOS/Win/Linux) y abrí la app. No hace falta puerto fijo ni host.docker.internal. # Docker sigue existiendo, pero ya no es el camino recomendado — # solo si ya vivís en containers o necesitás acceso remoto.

Configurás el motor

En Settings elegís cómo genera: apuntando a tu CLI ya autenticado (Claude Code / Codex / OpenCode — sin key extra) o cargando una API key de cualquier endpoint compatible con la API de OpenAI (BYOK).

Conectás el MCP a tu agente

Registrás el daemon de Open Design como MCP server en tu coding agent (Claude Code, etc.). Una vez conectado, los 18 tools mcp__open-design__* quedan disponibles y el Modo A se vuelve el camino por defecto.

Elegís los 3 inputs y disparás

Skill de OD (para pantallas de aplicación usá frontend-design; a 0.16.x no existen web-prototype ni dashboard como skill — no los cites) + design system (tu DESIGN.md real) + brief en lenguaje natural (el BRIEF.md). Send — a mano en Studio, o vía start_run si es la IA quien dispara.

El artifact se streamea en vivo

El agente interno de Open Design emite un HTML completo y auto-contenido; el panel derecho lo streamea como prototipo navegable — botones, tabs y modales funcionan. Cada follow-up crea una nueva versión, las anteriores quedan en el historial.

Cierra el handoff

Modo A: la IA ubica el archivo con get_artifact y lo copia (cp) a la drop zone — el MCP no escribe fuera de su propio data root. Modo B: copiás el archivo (o corrés od export) a .context/designs/<proyecto>/<lote>/ y avisás.

05·d — gotchas verificados en producción

Si vas a operar Open Design vía MCP (Modo A), estas cuatro señales confunden si no las conocés de antemano.

El mensaje del agente miente antes que el archivoEl self-report (agentMessage) puede reportar el idioma o resultado equivocado aunque el HTML generado esté correcto. El archivo en disco es el ground truth — grepealo, no reacciones al mensaje.
"produced no files" puede ser un hint falsoCon artifactCount: 1 y el archivo ya escrito, el hint de get_run a veces dice lo contrario. El filesystem manda.
updatedAt se congela durante extended thinkingMinutos sin movimiento en el timestamp del run no son un hang — es el modelo pensando. Verificá liveness real contra el último evento de events.jsonl.
Poll solo foreground, nunca sleep desnudo en backgroundUn subagente que espera un run con sleep largo en background se estanca a sí mismo. Patrón probado: un loop foreground con timeout y sleep corto adentro — nunca un sleep suelto.
Detalle clave: Open Design consume DESIGN.md, no lo reemplaza — pero no es automático. Primero hay que instalar el design system del repo como paquete de usuario (user:<slug>) y publicarlo (arranca en draft, los proyectos no pueden usarlo hasta publicarse). Sin eso, las pantallas pueden salir con valores inventados en vez de tu paleta y tipografía reales.
06 — otras vías

Cualquier prototipador sirve

El repo trata como fuente de pantallas cualquier cosa que caiga en la drop zone. Claude Design y Open Design son las recomendadas, pero el patrón universal (§03) también acepta:

Figma

export estático

Diseñás en Figma como siempre y exportás las pantallas (imágenes / HTML / specs) a la drop zone. La IA las lee como referencia visual. Ideal si tu equipo ya vive en Figma. La contra: no son prototipos vivos HTML, así que la IA infiere layout desde la imagen + tu brief.

HTML manual

sin herramienta visual

Lo escribís vos — a mano, o pegando el output de un chat de IA cualquiera que uses como bloc de notas, en otra sesión, sin conexión con la que está corriendo /design-system. Rápido y sin salir de la terminal. La contra: sin canvas visual para iterar cómodo, el refinamiento es por chat en esa otra sesión y revisando el HTML renderizado.

Regla dura — delegar, no generar: la sesión que corre /design-system nunca escribe el mockup ella misma (nada de Write / write_file sobre HTML de diseño — anti-patrones S1 de screen-design-mapping.md, D7 del SKILL.md, B4 de screen-design-brief.md). Si el HTML nace de una IA, es de otra sesión, tratada exactamente como un export de Figma: un archivo externo que vos soltás en la drop zone — nunca algo que la sesión orquestadora escribe "mientras espera".
06·b — la vía manual, paso a paso

La opción más rápida cuando no querés levantar ninguna app. Sirve bien para pantallas simples y para iterar rápido antes de pulir en una herramienta visual — siempre que el archivo lo produzcas y lo muevas vos, no la sesión de /design-system.

Producís la primera pantalla, aparte

En otra ventana o sesión (o a mano), un prompt que ancla tres cosas: qué pantalla, qué historia, y que use los tokens de DESIGN.md. Pedís un archivo autocontenido (abrible en el navegador de una).

vos, en esa otra sesión → "Generá un mockup HTML autocontenido de la pantalla de login para la historia BK-14. Usá los tokens de DESIGN.md. Un solo archivo."

Lo guardás vos en la drop zone

Copiás el .html resultante a .context/designs/<proyecto>/<lote>/login.html — acción tuya, igual que descomprimir un zip de Claude Design. Lo abrís y lo mirás en el navegador: ese render es tu canvas.

Iterás en esa otra sesión

Describís el cambio en palabras allá; esa sesión reescribe el archivo; vos volvés a copiarlo a la drop zone y refrescás el navegador. Repetís hasta que quede.

vos, en esa otra sesión → "el botón primario más grande, agregá el estado de error y un enlace de recuperar contraseña"

Cubrís los estados borde

Pedí explícitamente vacío, cargando y error — no se agregan solos. Son parte del contrato de pantalla.

Volvés a la sesión de /design-system y cerrás el handoff

El archivo ya está en la drop zone (lo pusiste vos en el paso 2). Le pedís a /design-system que arme el plan. Mismo final que Claude Design u Open Design.

vos → "listo el mockup, armá el master design plan para BK-14"
El principio no cambia: venga de donde venga el mockup, termina en .context/designs/<proyecto>/<lote>/ puesto ahí por vos, y la IA lo convierte en spec de pantalla + fila en el mapa Historia→Pantalla. La herramienta es intercambiable; quién lo produce puede variar; el contrato — y quién lo mueve a la drop zone — es siempre el mismo.
07 — comparación

Cuál elegir

  Claude Design Open Design Figma HTML manual
Costo / acceso plan de pago gratis local free/pago incluido
Dónde corre Web (claude.ai/design) Tu máquina (desktop app, puerto dinámico) Web / desktop Otra sesión, aparte del repo
Medio Prototipo vivo HTML/CSS/JS Prototipo vivo HTML Diseño vectorial → export HTML plano
Iteración Chat · inline · drag · sliders Chat + versiones · MCP Modo A autónomo Manual (vos diseñás) Chat aparte + vos copiás el render
Usa DESIGN.md Vía design system de la org Sí, lo consume directo Manual (tokens a mano) Sí, se lo pasás
Mejor para Refinamiento visual rico y rápido Todo local, sin costo, y automatizable end-to-end Equipos ya en Figma Pantallas simples, sin fricción

Rutas, drop zones, comandos MCP y versión verificados contra .claude/skills/design-system/ de este repo a 2026-07-30 (Open Design v0.16.1, release 2026-07-23). Los mecanismos de interacción de Claude Design (chat / inline / drag / sliders) son conocimiento general de producto, no están documentados en la skill. Features en evolución rápida — confirmá antes de una demo importante.

08 — qué le decís a la IA

Los comandos exactos

Toda la maniobra, del lado tuyo, se reduce a unas pocas frases. Esto es lo que tipeás en Claude Code / OpenCode.

Arrancás la fase de diseño

vos → /design-system

Y cuando pregunte por el mapeo de pantallas: "sí, voy a producir los mockups".

Recibís el brief, diseñás afuera (o dejás que la IA opere Open Design)

La IA deja BRIEF.md en la carpeta del lote. Modo B: lo pegás en Claude Design u Open Design, iterás, exportás el bundle a esa misma carpeta. Modo A (Open Design + MCP): no hace falta que hagas nada más, la IA dispara y pollea sola.

Cerrás el handoff

vos → "ya dejé los mockups en .context/designs/<proyecto>/<lote>/, armá el master design plan"

La IA lee, escribe §4 + §8 y te muestra el mapa Historia→Pantalla para que lo confirmes.

Construís la historia

vos → "implementar la historia BK-XX"  ·  /sprint-development

Si esa historia no tenía mockup, el propio flujo te devuelve al paso 1 con un brief solo para ese lote de pantallas.

En una frase: /design-system (opt-in) → BRIEF.md → diseñás afuera o la IA opera Open Design por MCP → el bundle cae en la drop zone → la IA arma el plan → /sprint-development construye contra él.
09 — antes de arrancar

Precondiciones, en una lista

Antes de empezar a producir mockups, tené esto listo:

DESIGN.md existe. Los mockups se siembran con sus tokens congelados. Sin él no hay contrato visual — corré /design-system primero.
Backlog con historias de usuario. Se necesitan para sembrar el brief y armar el mapa Historia→Pantalla.
Herramienta elegida y lista. Claude Design (plan Pro+) · Open Design (desktop app instalada, MCP conectado si querés Modo A) · Figma · o la propia IA.
Opt-in dado. La fase de pantallas siempre se pide explícito; nunca corre sola.
Drop zone clara. Sabés en qué .context/designs/<proyecto>/<lote>/ va a caer el bundle — y que no es la misma carpeta que design/handoff/.
10 — empezá ahora

Arrancar de cero

Runbook literal. Dos caminos según cuánto quieras montar. Los dos parten de abrir Claude Code u OpenCode en la raíz del repo — las skills viven en .claude/skills/ y ambas terminales las leen igual, así que /design-system y /sprint-development están disponibles en cualquiera de las dos.

Camino A — flujo completo con la skill

Con herramienta visual

Cuando vas a diseñar en Claude Design u Open Design y querés el BRIEF sembrado con tus tokens.

# raíz del repo claude # o: opencode # dentro de la sesión: /design-system # responder al opt-in de pantallas: "sí, voy a producir los mockups"

La IA deja el BRIEF.md, lo pegás en tu herramienta, exportás el bundle a la drop zone, y cerrás con "armá el master design plan".

Camino B — HTML manual, sin app externa

Vos producís el HTML, aparte

El más rápido para arrancar hoy. No levantás nada — pero el archivo lo generás y lo movés vos, en una sesión distinta a la que corre /design-system.

# en OTRA ventana/sesión — no la del repo con /design-system claude # o: opencode, o cualquier chat de IA # prompt semilla (ajustá pantalla + historia): "Generá un mockup HTML autocontenido de la pantalla <X> para la historia BK-XX. Usá los tokens de DESIGN.md. Incluí los estados vacío, cargando y error. Un solo archivo." # vos copiás el resultado a la drop zone: cp pantalla.html .context/designs/<proyecto>/<lote>/<X>.html

Abrís el .html en el navegador, iterás por chat en esa otra sesión, y recién ahí volvés a la sesión de /design-system y cerrás con "armá el master design plan para BK-XX".

Regla para el prompt: anclá siempre pantalla + historia (BK-XX) + "usá los tokens de DESIGN.md". Con esas anclas el mockup sale alineado — vos sos quien lo lleva a la drop zone para el resto del flujo, nunca la sesión orquestadora.
Cuándo cada camino: Camino B para pantallas simples y para probar rápido antes de comprometerte. Camino A cuando la pantalla es rica y querés el refinamiento visual (canvas, sliders, comentarios) de Claude Design, o el automatismo end-to-end de Open Design en Modo A. Podés empezar en B y migrar a A sin perder nada: el mismo BRIEF.md sirve para las dos.