¿Qué es DESIGN.md y de dónde viene?
DESIGN.md comenzó en Google Labs como el formato detrás de Stitch, su herramienta de generación de UI. Google publicó la especificación como código abierto y la especificación ahora reside en GitHub. Se extendió rápidamente más allá de Google: Atlassian publicó un relato sobre las pruebas de contexto de diseño portátil en la práctica, y surgió un ecosistema de catálogos a su alrededor.
La extensión .md es simplemente markdown. El archivo no tiene una sintaxis especial, ni un esquema contra el cual validar, ni un paso de compilación. Esto es deliberado: un agente lo lee de la misma manera que lee cualquier otro archivo de su repositorio.
Por qué un archivo en lugar de un prompt
Un agente de código al que se le pide construir una UI debe obtener sus valores visuales de algún lugar. A falta de una fuente, utiliza los valores predeterminados de la librería, que es por qué los productos creados con IA convergen en una misma apariencia. Puede proporcionar valores en un prompt, pero los prompts viven en una conversación y las conversaciones se degradan a medida que crecen.
Un archivo no se degrada. Ese es el mecanismo fundamental, y todo lo demás sobre el formato se deriva de ello.
El formato no es complejo. Simplemente reside en un lugar que se vuelve a leer, lo cual resulta ser la clave de todo el problema.
¿Qué contienen realmente los archivos DESIGN.md reales?
En lugar de suponer, hemos tomado una muestra. Extrajimos 299 archivos DESIGN.md de la raíz de repositorios mediante la búsqueda de código de GitHub y analizamos el contenido de cada uno. El primer resultado fue una sorpresa y redefine todo lo demás.
Solo el 24% de los archivos DESIGN.md públicos tratan sobre diseño
De 299 archivos, solo 72 incluían una sección de color o tipografía. El resto son documentos de arquitectura de software: cómo se construye un sistema, no cómo se ve un producto. DESIGN.md es una colisión de nombres de archivo, y el significado de diseño visual es actualmente el minoritario. Si añade uno a un repositorio, espere que algunos lectores lleguen buscando un documento de arquitectura.
Dentro de esos 72 archivos genuinos de diseño visual, el panorama es consistente. El archivo mediano tiene 1,337 palabras en 263 líneas, por lo que no son borradores simples: la gente está dedicando un esfuerzo real. Lo están aplicando a las mismas tres secciones y omitiendo las mismas cuatro.
| Archivos que lo incluyen | |
|---|---|
| Tipografía | 83% |
| Color | 67% |
| Componentes | 67% |
| Espaciado | 57% |
| Motivos o principios | 43% |
| Elevación | 26% |
| Movimiento | 25% |
| Lo que se debe y no se debe hacer | 24% |
| Accesibilidad | 22% |
| Radio | 21% |
| Iconografía | 10% |
El color y la tipografía son casi universales. El radio, la elevación, la iconografía y la accesibilidad son poco comunes. Y hay una omisión más grave que todas estas, porque es invisible hasta que alguien pulsa un interruptor.
El problema del modo oscuro: el 69% de los archivos lo omiten
De los 72 archivos de diseño visual que analizamos, 50 no contienen ningún modo oscuro: sin bloques .dark, sin prefers-color-scheme, sin un segundo conjunto de valores. Eso es el 69%.
Este es el vacío más crítico en la forma en que se aplica el formato, y falla silenciosamente. Todo parece correcto en modo claro. Entonces, el usuario cambia el tema y el agente tiene que inventar cada valor oscuro sobre la marcha: un fondo que nunca fue elegido, un primer plano cuyo contraste nunca se comprobó, un color de acento que se desvanece porque nadie aumentó su croma para un fondo oscuro.
El modo oscuro no es una inversión
Invertir la escala de luminosidad produce un tema oscuro donde el acento es un lavado pálido y la elevación deja de funcionar, ya que las sombras apenas se perciben en fondos oscuros. En su lugar, eleve las superficies en vez de profundizar las sombras, evite que el fondo sea negro puro, que el primer plano no llegue al blanco puro y aumente el croma del acento en lugar de reducirlo.
## Color
### Light
--background: oklch(0.98 0.006 85)
--foreground: oklch(0.22 0.014 85)
--card: oklch(1 0 0)
--muted-foreground: oklch(0.48 0.012 85)
--primary: oklch(0.52 0.13 152)
--border: oklch(0.90 0.008 85)
### Dark
--background: oklch(0.17 0.010 85) /* not pure black */
--foreground: oklch(0.95 0.006 85) /* not pure white */
--card: oklch(0.22 0.010 85) /* raised, not shadowed */
--muted-foreground: oklch(0.70 0.010 85)
--primary: oklch(0.68 0.16 152) /* higher chroma to survive the dark ground */
--border: oklch(0.30 0.010 85)Solo el 6% de los archivos analizados utilizan OKLCH. Vale la pena hacer el cambio específicamente aquí porque su canal de luminosidad es perceptualmente uniforme, por lo que puede cambiar un tono sin tener que volver a comprobar cada par de contraste.
¿Qué debe incluir un DESIGN.md, sección por sección?
Color: roles semánticos, ambos modos
La decisión más trascendental del archivo es nombrar por *rol* en lugar de por tono. --primary le indica al agente dónde va el valor; --blue-600 no. Los roles le permiten aplicar su sistema correctamente en situaciones que nunca anticipó y sobreviven a un cambio de marca.
El 86% de los archivos analizados no utilizan nombres de roles semánticos. Enumeran códigos hex o nombran los colores por su tono. Esa es la diferencia entre un archivo que un agente puede aplicar a un componente que nunca describió y un archivo del que solo puede copiar. La capa de tokens semánticos es la que realiza el trabajo real aquí.
Tipografía: familias, escala y función de cada una
Defina las familias, los pesos, el tracking y los pasos de la escala. El error común es escribir *una serif para encabezados, una sans para el cuerpo*; una instrucción que el agente debe resolver, y la resolverá de forma distinta cada vez.
## Typography
Heading: "Fraunces", serif — 600, tracking -0.02em
Body: "Inter", sans-serif — 400, line-height 1.6
Mono: "JetBrains Mono" — 400, tabular figures in tables
Scale: 0.8125 / 0.875 / 1 / 1.25 / 1.5 / 2 / 3rem
H1 uses 3rem at 1.05 line-height; body copy never exceeds 68ch.Espaciado, radio, elevación
Una escala de espaciado, un radio que varíe según el tamaño del elemento y dos o tres niveles de elevación que coincidan con una fuente de luz. El radio solo está cubierto en el 21% de los archivos y la elevación en el 26%, razón por la cual gran parte de la UI generada tiene una esquina de 0.5rem en cada elemento, independientemente de su tamaño.
## Spacing
Scale: 4 / 8 / 12 / 16 / 24 / 32 / 48 / 64 / 96px
Section rhythm: 96px desktop, 64px mobile.
## Radius
sm 0.25rem (inputs) · md 0.5rem (buttons) · lg 0.875rem (cards) · xl 1.25rem (modals)
## Elevation
0 flush — use a border, no shadow
1 cards — 0 1px 2px rgb(0 0 0 / 0.06)
2 dropdowns — 0 4px 12px rgb(0 0 0 / 0.08)
Dark mode: raise the surface, do not deepen the shadow.Motivos y prohibiciones: la parte que la mayoría de los archivos omiten
Los tokens indican al agente qué valores usar. No dicen nada sobre qué hacer cuando se encuentra con un componente que su archivo nunca mencionó. Los motivos y las prohibiciones cubren ese vacío, y son la diferencia entre un archivo que restringe el resultado y uno que simplemente le da color.
El 76% de los archivos no definen prohibiciones y el 57% no definen motivos. Estas son las dos secciones más sencillas de escribir y las dos que más a menudo faltan.
## Motifs
- Hairline rules separate sections; no boxed cards on marketing pages.
- Numerals are tabular everywhere they can be compared.
- One accent per screen. If two things compete, one becomes muted.
## Don't
- No gradient text, ever.
- No shadow on a flush surface — use --border.
- Never hardcode a hex. If a role is missing, add the role.Tratamiento de componentes e iconografía
Cubra las primitivas que aportan más identidad: botones, inputs y tarjetas, con sus estados. No necesita incluir cada componente. La iconografía es la sección más sencilla del archivo y la más rara en la práctica, con un 10%: nombre la librería de iconos, el grosor del trazo, los pasos de tamaño y una línea sobre el tratamiento de imágenes.
¿Cuáles son los errores más comunes?
Más allá de las secciones faltantes, un modo de fallo aparece en más de la mitad del corpus: escribir un adjetivo donde debería ir un valor.
El 54% de los archivos analizados contienen al menos un adjetivo vago que sustituye a una decisión. Los más comunes fueron *clean* (39% de los archivos), *modern* (36%) y *professional* (22%), seguidos de *generous whitespace*, *elegant* y *beautiful*. Además, el 44% no contiene ningún valor concreto de espaciado o tamaño en ningún lugar del archivo.
La prueba para cada línea
Lea una línea y pregúntese si dos personas competentes producirían los mismos píxeles a partir de ella. 'Clean and modern' falla. '96px between sections on desktop' pasa. Cualquier elemento que falle es una decisión que aún no ha tomado, y el agente la tomará por usted, de forma distinta cada vez.
- Adjetivos en lugar de valores. El defecto más común, presente en más de la mitad de los archivos.
- Dark mode omitido. En el 69%, y falla silenciosamente.
- Colores nombrados por tono en lugar de por rol. En el 86%, y se rompe en cuanto el agente se encuentra con un componente que usted no describió.
- Sin prohibiciones. En el 76%. Las prohibiciones se siguen con más fiabilidad que las preferencias.
- Una sección que dice 'use your judgment'. Peor que no tener sección, porque devuelve exactamente la discreción que el resto del archivo intentaba restringir.
¿Dónde se ubica el archivo y cómo lo encuentran los agentes?
Colóquelo en la raíz del repositorio, junto a AGENTS.md. La raíz es fundamental: un DESIGN.md anidado en docs/ es un documento para humanos, y los agentes que buscan la convención miran en la raíz.
A continuación, haga referencia a él desde las instrucciones de su agente en una sola línea, para que sea descubierto en lugar de hallado por azar. Es un elemento hermano de esos archivos en lugar de un competidor: los cuatro archivos realizan tareas distintas.
# AGENTS.md
## Design
Never hardcode theme colors, spacing or radii. Use the tokens in DESIGN.md.AGENTS.md es la convención más amplia para las instrucciones de los agentes y es leída por un conjunto creciente de herramientas. DESIGN.md contiene el contrato visual; AGENTS.md lo señala.
¿Cómo se ve un archivo completo cuando se renderiza?
Esta es la parte que omiten todos los demás tutoriales. Un DESIGN.md es tan bueno como la interfaz que produce, y las secciones anteriores no son una ilustración: son la forma serializada del kit que se muestra a continuación.
Terrain Vivant
Live renderRendered from the kit's actual tokens, fonts, and treatments
Dashboard
Welcome back — here's how Terrain Vivant is performing today.
Active users
12.6k
+4%Trending up this month
vs. previous 30 days
MRR
$64.6k
+12%Strong recurring growth
Net of churn
Retention
94%
+1%Engagement above target
Rolling 28-day window
NPS
54
+6Meets growth projections
Survey · n=1,204
Total revenue
Last 12 months
$64.6k+18.2%
Recent sales
You closed 265 deals this month.
Alex Rivera
alex@terrainvivant.com
Mira Okonkwo
mira@terrainvivant.com
Jonas Feld
jonas@terrainvivant.com
Sana Qureshi
sana@terrainvivant.com
Theo Lindgren
theo@terrainvivant.com
Recent transactions
View all| Customer | Status | Date | Amount |
|---|---|---|---|
AR Alex Rivera Founder & CEO | Paid | 2m ago | $1,999.00 |
MO Mira Okonkwo Head of Product | Pending | 1h ago | $39.00 |
JF Jonas Feld Design Lead | Processing | 3h ago | $299.00 |
SQ Sana Qureshi Engineering Lead | Paid | Yesterday | $99.00 |
TL Theo Lindgren Brand Director | Refunded | 2d ago | $2,400.00 |
Typography
Space Mono
Color system
28 semantic roles, light + dark
Agent outputs
DESIGN.md, CSS, Tailwind, shadcn
Kit showcase · live surfaces
Terrain Vivant
Live renderTerrain Vivant rendered from its real tokens across 3 surfaces.
Sample headline
Supporting copy goes here.
Active users
12.6k
+4%
MRR
$64.6k
+12%
Retention
94%
+1%
Why Terrain Vivant
Everything you need to ship
Brochure websites
Clear defaults keep every screen consistent from first draft to launch.
Annual reports
Accessible components and visible states are built into the system.
Event microsites
Reusable patterns give product, marketing, and content one visual language.
By the numbers
Growth you can measure
Monthly recurring revenue
$64.6k+12%
Targets
Activity
Last 12 months of usage
Start building with Terrain Vivant today
A bold two-color institutional editorial system built on vivid green and cobalt blue full-screen surfaces, with monospace type throughout and zero-radius geometry.
Dashboard
Welcome back — here's how Terrain Vivant is performing today.
Active users
12.6k
+4%Trending up this month
vs. previous 30 days
MRR
$64.6k
+12%Strong recurring growth
Net of churn
Retention
94%
+1%Engagement above target
Rolling 28-day window
NPS
54
+6Meets growth projections
Survey · n=1,204
Total revenue
Last 12 months
$64.6k+18.2%
Recent sales
You closed 265 deals this month.
Alex Rivera
alex@terrainvivant.com
Mira Okonkwo
mira@terrainvivant.com
Jonas Feld
jonas@terrainvivant.com
Sana Qureshi
sana@terrainvivant.com
Theo Lindgren
theo@terrainvivant.com
Recent transactions
View all| Customer | Status | Date | Amount |
|---|---|---|---|
AR Alex Rivera Founder & CEO | Paid | 2m ago | $1,999.00 |
MO Mira Okonkwo Head of Product | Pending | 1h ago | $39.00 |
JF Jonas Feld Design Lead | Processing | 3h ago | $299.00 |
SQ Sana Qureshi Engineering Lead | Paid | Yesterday | $99.00 |
TL Theo Lindgren Brand Director | Refunded | 2d ago | $2,400.00 |
Terrain Vivant UI
Every shadcn component, themed by this kit.
Buttons
Badges
Avatar / chips
Form
Controls
Feedback
Sample headline
A bold two-color institutional editorial system built on vivid green and cobalt blue full-screen surfaces, with monospace type throughout and zero-radius geometry.
Tabs
Manage your account settings and preferences.
Alert
Heads up
Your trial ends in 7 days. Upgrade to keep access.
Tooltip
¿Debe escribir uno a mano o generarlo?
| Escrito a mano | Generado a partir de un kit | |
|---|---|---|
| Es mejor cuando | Ya existe una marca que transcribir | Se parte de cero |
| Fallo habitual | Adjetivos en lugar de valores; dark mode omitido | Aceptar el primer resultado sin editar |
| Dark mode | Ausente en el 69% de los archivos reales | Derivado junto con el modo claro |
| Motivos y prohibiciones | Omitidos en el 57% y 76% | Incluidos, merece la pena revisarlos |
Si lo escribe a mano, las dos secciones por las que debe obligarse a pasar son el dark mode y las prohibiciones. El corpus es inequívoco en que esas son las que la gente omite, y son las que determinan si el archivo restringe algo o no.
Obtenga un DESIGN.md completo con un solo comando
Cada kit de Identity Forge se serializa en un DESIGN.md completo —con design tokens para modo claro y oscuro, una combinación de fuentes real, motivos y restricciones— e instala los archivos de tokens junto a él. Los kits gratuitos no requieren cuenta.
Who created DESIGN.md?
Google Labs, como el formato detrás de su herramienta de generación de UI, Stitch. Google liberó la especificación como código abierto, que ahora se encuentra en github.com/google-labs-code/design.md. Su adopción se ha extendido mucho más allá de Google; Atlassian ha publicado su propio relato sobre cómo lo utiliza.
¿Qué significa la extensión .md en DESIGN.md?
Simplemente markdown. No hay sintaxis especial, ni esquema, ni paso de compilación. El archivo es markdown puro, por lo que un agente lo lee exactamente igual que cualquier otro archivo del repositorio.
¿Es DESIGN.md un estándar oficial?
Es una especificación publicada y de código abierto con un origen claro, más que un estándar ratificado. En la práctica, las herramientas coinciden en la estructura —un archivo markdown de valores visuales en la raíz del repositorio— y varían en qué secciones leen.
¿Dónde debe ubicarse el archivo?
En la raíz del repositorio, junto a AGENTS.md. Un archivo DESIGN.md ubicado en docs/ se interpreta como documentación para humanos; los agentes que siguen esta convención buscan el archivo en la raíz.
¿Qué longitud debe tener?
La mediana de los archivos públicos es de 1,337 palabras. La longitud no es lo importante, sino la exhaustividad. Un archivo de 400 palabras con ambos modos de color, una escala tipográfica y cinco prohibiciones es mejor que un archivo de 2,000 palabras lleno de adjetivos.
¿Puedo copiar el DESIGN.md de otra persona?
Puede hacerlo, pero obtendrá la marca de esa persona. Es una forma razonable de estudiar el formato, pero una forma deficiente de definir una identidad. Copie la estructura y genere los valores a partir de su propia marca.
¿Sustituye a un sistema de diseño?
Es la proyección de un sistema de diseño legible para el agente. Si dispone de librerías de Figma y una librería de componentes, DESIGN.md es el medio por el cual sus decisiones llegan a un agente de código, no un sustituto de estas.
¿Qué pasa si mi agente lo ignora?
Verifique tres cosas en orden: que se haga referencia a él desde AGENTS.md, que esté redactado como una prohibición en lugar de una preferencia y que los valores sean realmente valores. La mayoría de los informes de «archivos ignorados» resultan ser un archivo lleno de adjetivos.