Qu'est-ce que DESIGN.md et d'où vient-il ?
DESIGN.md a vu le jour chez Google Labs comme format supportant Stitch, son outil de génération d'UI. Google a rendu la spécification open source, et la spécification est désormais hébergée sur GitHub. Elle s'est rapidement diffusée au-delà de Google : Atlassian a publié un retour d'expérience sur le test d'un contexte de design portable en pratique, et un écosystème de catalogues s'est développé autour.
L'extension .md signifie simplement markdown. Le fichier n'a pas de syntaxe spéciale, pas de schéma de validation, ni d'étape de build. C'est délibéré : un agent le lit comme n'importe quel autre fichier de votre dépôt.
Pourquoi un fichier plutôt qu'un prompt
Un agent de code chargé de construire une UI doit puiser ses valeurs visuelles quelque part. En l'absence de source, il utilise les valeurs par défaut des bibliothèques — c'est pourquoi les produits créés par IA convergent vers un même look. Vous pouvez fournir des valeurs dans un prompt, mais les prompts appartiennent à une conversation, et les conversations s'estompent à mesure qu'elles s'allongent.
Un fichier, lui, ne s'estompe pas. C'est tout le principe du mécanisme, et tout le reste du format en découle.
Le format n'est pas complexe. Il réside simplement à un endroit qui est relu systématiquement, ce qui s'avère être l'essentiel de la solution.
Que contiennent réellement les fichiers DESIGN.md ?
Plutôt que de faire des suppositions, nous avons procédé à un échantillonnage. Nous avons extrait 299 fichiers DESIGN.md situés à la racine de dépôts via la recherche de code GitHub et analysé leur contenu. Le premier résultat a été surprenant et recadre tout le reste.
Seuls 24 % des fichiers DESIGN.md publics concernent le design
Sur 299 fichiers, seuls 72 comportaient une section sur les couleurs ou la typographie. Le reste sont des documents d'architecture logicielle — comment un système est construit, et non à quoi un produit ressemble. DESIGN.md est un nom de fichier sujet à collision, et la signification liée au design visuel est actuellement minoritaire. Si vous en ajoutez un à un dépôt, attendez-vous à ce que certains lecteurs s'attendent à trouver un document d'architecture.
Parmi ces 72 fichiers de design visuel authentiques, le constat est constant. Le fichier médian compte 1 337 mots sur 263 lignes ; ce ne sont donc pas des ébauches, les auteurs y consacrent un effort réel. Ils se concentrent sur les trois mêmes sections et en oublient les quatre mêmes.
| Fichiers concernés | |
|---|---|
| Typographie | 83% |
| Couleur | 67% |
| Composants | 67% |
| Espacement | 57% |
| Motifs ou principes | 43% |
| Élévation | 26% |
| Mouvement | 25% |
| À faire et à ne pas faire | 24% |
| Accessibilité | 22% |
| Rayon (Radius) | 21% |
| Iconographie | 10% |
La couleur et la typographie sont quasi universelles. Le rayon, l'élévation, l'iconographie et l'accessibilité sont rares. Et une omission est plus critique que toutes les autres, car elle reste invisible jusqu'à ce que quelqu'un active un interrupteur.
Le problème du mode sombre : 69 % des fichiers l'ignorent
Sur les 72 fichiers de design visuel analysés, 50 ne contiennent aucun mode sombre — pas de bloc .dark, pas de prefers-color-scheme, pas de second jeu de valeurs. Soit 69 %.
C'est la lacune la plus lourde de conséquences dans la pratique actuelle, et elle échoue silencieusement. Tout semble correct en mode clair. Puis l'utilisateur bascule le thème et l'agent doit inventer chaque valeur sombre à la volée : un arrière-plan jamais choisi, un premier plan dont le contraste n'a jamais été vérifié, une couleur d'accentuation qui s'efface car personne n'a augmenté sa chroma pour un fond sombre.
Le mode sombre n'est pas une inversion
Inverser l'échelle de luminosité produit un thème sombre où l'accent est délavé et où l'élévation ne fonctionne plus, car les ombres sont à peine perceptibles sur des fonds sombres. Élevez plutôt les surfaces au lieu d'approfondir les ombres, évitez le noir pur pour l'arrière-plan, évitez le blanc pur pour le premier plan, et augmentez la chroma des accents plutôt que de la réduire.
## 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)Seulement 6 % des fichiers analysés utilisent OKLCH. Le passage à ce format en vaut la peine ici spécifiquement parce que son canal de luminosité est perceptuellement uniforme, vous permettant ainsi de modifier une teinte sans avoir à revérifier chaque paire de contraste.
Que doit contenir un DESIGN.md, section par section ?
Couleur — rôles sémantiques, les deux modes
La décision la plus cruciale du fichier est de nommer par *rôle* plutôt que par teinte. --primary indique à un agent où placer la valeur ; --blue-600 ne le fait pas. Les rôles lui permettent d'appliquer correctement votre système dans des situations que vous n'aviez pas anticipées, et ils survivent à un rebranding.
86 % des fichiers analysés n'utilisent aucun nom de rôle sémantique. Ils listent des codes hexadécimaux ou nomment les couleurs par teinte. C'est là toute la différence entre un fichier qu'un agent peut appliquer à un composant que vous n'avez jamais décrit et un fichier dont il ne peut que copier les valeurs. C'est la couche de tokens sémantiques qui effectue ici le travail réel.
Typographie — familles, échelle et usage
Nommez les familles, les graisses, l'approche (tracking) et les paliers de l'échelle. L'erreur classique est d'écrire *une police serif pour les titres, une sans-serif pour le corps* — une instruction que l'agent doit interpréter, et il le fera différemment à chaque fois.
## 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.Espacement, rayon, élévation
Une échelle d'espacement, un rayon qui varie selon la taille de l'élément et deux ou trois niveaux d'élévation cohérents avec une source lumineuse. Le rayon n'est couvert que par 21 % des fichiers et l'élévation par 26 %, ce qui explique pourquoi tant d'UI générées appliquent un angle de 0.5rem sur chaque élément, quelle que soit sa taille.
## 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.Motifs et interdictions — la partie que la plupart des fichiers oublient
Les tokens indiquent à un agent quelles valeurs utiliser. Ils ne disent rien sur la marche à suivre face à un composant que votre fichier n'a jamais mentionné. Les motifs et les interdictions comblent ce vide ; ils font la différence entre un fichier qui contraint le résultat et un fichier qui se contente de le colorer.
76 % des fichiers ne mentionnent aucune interdiction et 57 % aucun motif. Ce sont les deux sections les plus simples à rédiger et les plus souvent absentes.
## 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.Traitement des composants et iconographie
Couvrez les primitives qui portent le plus d'identité : boutons, champs de saisie et cartes, avec leurs différents états. Vous n'avez pas besoin de lister chaque composant. L'iconographie est la section la plus simple du fichier et la plus rare en pratique (10 %) — nommez la bibliothèque d'icônes, l'épaisseur du trait, les paliers de taille et ajoutez une ligne sur le traitement des images.
Quelles sont les erreurs les plus courantes ?
Au-delà des sections manquantes, un mode d'échec apparaît dans plus de la moitié du corpus : l'utilisation d'un adjectif là où une valeur est attendue.
54 % des fichiers analysés contiennent au moins un adjectif vague en guise de décision. Les plus fréquents étaient *clean* (39 % des fichiers), *modern* (36 %) et *professional* (22 %), suivis de *generous whitespace*, *elegant* et *beautiful*. De plus, 44 % ne contiennent aucune valeur concrète d'espacement ou de taille dans tout le fichier.
Le test pour chaque ligne
Lisez une ligne et demandez-vous si deux personnes compétentes produiraient les mêmes pixels à partir de celle-ci. « Clean and modern » échoue. « 96px entre les sections sur desktop » réussit. Tout ce qui échoue est une décision que vous n'avez pas encore prise, et l'agent la prendra pour vous — différemment à chaque fois.
- Des adjectifs au lieu de valeurs. Le défaut le plus courant, présent dans plus de la moitié des fichiers.
- Mode sombre omis. Dans 69 % des cas, et l'échec est silencieux.
- Couleurs nommées par teinte plutôt que par rôle. Dans 86 % des cas, et cela pose problème dès que l'agent rencontre un composant que vous n'avez pas décrit.
- Aucune interdiction. Dans 76 % des cas. Les interdictions sont suivies plus rigoureusement que les préférences.
- Une section qui dit « utilisez votre jugement ». Pire que l'absence de section, car elle redonne exactement la discrétion que le reste du fichier tentait de supprimer.
Où placer le fichier et comment les agents le trouvent-ils ?
Placez-le à la racine du dépôt, à côté de AGENTS.md. La racine est cruciale : un DESIGN.md imbriqué dans docs/ est un document pour les humains, alors que les agents qui recherchent cette convention regardent la racine.
Référencez-le ensuite dans vos instructions d'agent en une ligne, afin qu'il soit découvert plutôt que trouvé par hasard. Il est un complément de ces fichiers et non un concurrent — ces quatre fichiers remplissent des rôles différents.
# AGENTS.md
## Design
Never hardcode theme colors, spacing or radii. Use the tokens in DESIGN.md.AGENTS.md est la convention plus large pour les instructions d'agent et est lue par un nombre croissant d'outils. DESIGN.md contient le contrat visuel ; AGENTS.md y renvoie.
À quoi ressemble un fichier complet une fois rendu ?
C'est l'élément que tous les autres guides oublient. Un DESIGN.md ne vaut que par l'interface qu'il produit ; les sections précédentes ne sont pas une illustration, mais la forme sérialisée du kit ci-dessous.
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
Faut-il l'écrire à la main ou le générer ?
| Écrit à la main | Généré à partir d'un kit | |
|---|---|---|
| Idéal quand | Une marque existe déjà et doit être transcrite | On part de zéro |
| Échec habituel | Adjectifs au lieu de valeurs ; mode sombre omis | Acceptation du premier résultat sans édition |
| Mode sombre | Absent dans 69 % des fichiers réels | Dérivé en parallèle du mode clair |
| Motifs et interdictions | Ignorés dans 57 % et 76 % des cas | Inclus, mérite une révision |
Si vous l'écrivez à la main, les deux sections sur lesquelles vous devez vous forcer sont le mode sombre et les interdictions. Le corpus montre sans ambiguïté que ce sont celles que les gens sautent, et ce sont elles qui déterminent si le fichier impose réellement des contraintes.
Générez un DESIGN.md complet en une seule commande
Chaque kit Identity Forge est sérialisé en un fichier DESIGN.md complet — tokens light et dark, appairage de polices réel, motifs et interdits — et installe les fichiers de tokens correspondants. Les kits gratuits ne nécessitent aucun compte.
Who created DESIGN.md?
Google Labs, comme format pour son outil de génération d'UI Stitch. Google a rendu la spécification open source, laquelle se trouve désormais sur github.com/google-labs-code/design.md. L'adoption s'est étendue bien au-delà de Google — Atlassian a publié son propre retour d'expérience sur son utilisation.
Que signifie l'extension .md dans DESIGN.md ?
Simplement du Markdown. Il n'y a pas de syntaxe spéciale, pas de schéma et pas d'étape de build. Le fichier est en Markdown brut, donc un agent le lit exactement comme il lit tout autre fichier du dépôt.
Le fichier DESIGN.md est-il un standard officiel ?
Il s'agit d'une spécification publiée et open source avec une origine claire, plutôt que d'un standard ratifié. En pratique, les outils s'accordent sur la forme — un fichier Markdown de valeurs visuelles à la racine du dépôt — et varient selon les sections qu'ils lisent.
Où le fichier doit-il se trouver ?
À la racine du dépôt, aux côtés de AGENTS.md. Un fichier DESIGN.md placé dans docs/ est interprété comme une documentation destinée aux humains ; les agents qui suivent cette convention recherchent le fichier à la racine.
Quelle doit être sa longueur ?
La médiane des fichiers publics est de 1 337 mots. La longueur n'est pas l'enjeu, c'est l'exhaustivité qui compte. Un fichier de 400 mots incluant les deux modes de couleur, une échelle typographique et cinq interdictions est préférable à un fichier de 2 000 mots rempli d'adjectifs.
Puis-je copier le DESIGN.md de quelqu'un d'autre ?
C'est possible, mais vous obtiendrez leur image de marque. C'est un moyen raisonnable d'étudier le format, mais une mauvaise méthode pour définir une identité. Copiez la structure, mais générez les valeurs à partir de votre propre marque.
Est-ce que cela remplace un design system ?
C'est sa projection lisible par un agent. Si vous disposez de bibliothèques Figma et d'une bibliothèque de composants, DESIGN.md est le moyen par lequel leurs décisions sont transmises à un agent de code — et non un remplacement de celles-ci.
Et si mon agent l'ignore ?
Vérifiez trois points dans l'ordre : qu'il est référencé dans AGENTS.md, qu'il est formulé comme une interdiction plutôt que comme une préférence, et que les valeurs sont bien des valeurs. La plupart des rapports de « fichiers ignorés » s'avèrent être des fichiers remplis d'adjectifs.