Commencer

Comment générer un DESIGN.md (et à quoi cela sert)

Un DESIGN.md indique à un agent de code à quoi votre produit doit ressembler et pourquoi. Générez-en un à partir d'un kit réel pour que les règles écrites restent liées aux design tokens exacts de votre code.

Mis à jour 2026-08-04

Qu'est-ce qu'un DESIGN.md

Un DESIGN.md se place à côté du code et décrit le design prévu dans des termes exploitables par un agent. Les agents de code implémentent bien les interfaces, mais sans direction artistique, ils ont tendance à revenir à un style neutre par défaut. Ce nom est devenu depuis un petit écosystème : Google Labs a open-sourcé une spécification de format DESIGN.md (provenant de l'équipe Stitch, Apache 2.0, toujours en version alpha), laquelle a récolté des dizaines de milliers d'étoiles sur GitHub en quelques mois. Leur spécification associe des tokens lisibles par machine dans un front matter YAML à un raisonnement lisible par l'humain en prose, et fournit un CLI qui valide les fichiers et exporte vers Tailwind et le format design-token du W3C.

Cette structure, alliant valeurs exactes et intention écrite dans un seul fichier, est la même conclusion que celle défendue par ce guide. Il est important d'être précis sur ce que la spécification apporte et ce qu'elle n'apporte pas. Un format vous indique où placer les tokens et la prose. Il ne produit pas le design system lui-même : les tokens doivent provenir de quelque part, et les motifs, les interdictions et les règles de structure de page doivent toujours être décidés par quelqu'un. Les sites de catalogues collectent des fichiers DESIGN.md finis ; les approches de génération présentées ci-dessous en produisent un à partir d'un système réel, ce qui fait la différence entre un fichier qui est simplement valide et un fichier qui modifie ce qu'un agent construit.

Un DESIGN.md a besoin de plus qu'une simple liste de couleurs. Les agents ont également besoin de directives sur la mise en page, l'espacement, le traitement des composants et les détails qui distinguent un design d'un autre. Un brief utile consacre la majeure partie de son texte à ces décisions.

Ce qui doit figurer dans un DESIGN.md

Un brief complet couvre l'ensemble du système, pas seulement les tokens. Le DESIGN.md généré par Identity Forge est organisé selon les sections suivantes :

  • Overview : ce qu'est le design, à qui il s'adresse et le sentiment recherché, en une phrase ou deux.
  • Colors : les tokens sémantiques sous forme de variables CSS prêtes à être collées dans globals.css, en modes clair et sombre. Explication des tokens de couleur sémantiques.
  • Typography : l'association typographique, l'échelle, l'approche (tracking) et les graisses, ainsi qu'une configuration de police prête pour Next.js.
  • Layout : la base d'espacement, la largeur du conteneur et les règles de composition.
  • Elevation & Depth : le système d'ombres (ou l'absence délibérée de celui-ci).
  • Shapes : les rayons de courbure par élément (boutons, cartes, champs de saisie, badges) et le traitement des bordures.
  • Components : la manière dont les composants principaux doivent être traités, avec un exemple.
  • Page Structure & Layout : comment composer des pages entières ; c'est ici que l'on empêche les résultats d'IA génériques.
  • Personality & References : la voix et les références qui sous-tendent le design.
  • Distinctive Motifs : les éléments signatures à reproduire ; "ils définissent le design autant que les tokens."
  • Do's & Don'ts : les règles qui maintiennent l'interface générée dans l'univers du design.
  • Agent Rules : des instructions explicites destinées à l'agent de code lui-même.

Les motifs et les interdictions sont l'essentiel

N'importe qui peut lister cinq codes hexadécimaux. Ce qui distingue un véritable design system d'un template recoloré, c'est l'intention écrite : les motifs à reproduire et les erreurs à éviter. Ce sont ces sections qui font qu'un DESIGN.md modifie le résultat d'un agent, contrairement à une simple palette.

Ce que contiennent réellement la plupart des fichiers DESIGN.md

La liste ci-dessus détaille ce que couvre un brief complet. Il est utile de savoir à quel point les fichiers publiés en sont éloignés, car l'écart est constant et vous indique précisément quelles sections prioriser si vous en rédigez un manuellement.

Nous avons analysé 299 fichiers DESIGN.md publiés dans des dépôts et répertoires publics : des fichiers réels, écrits pour guider les agents sur le plan du design. 72 étaient spécifiquement dédiés au design visuel.

Part des fichiers
Couleurs en hex brut, sans rôle sémantique86%
Aucune consigne (do's & don'ts) de quelque nature que ce soit76%
Aucune définition du mode sombre69%
Aucun motif distinctif57%
Au moins un adjectif vague utilisé comme instruction54%
Aucune valeur de taille concrète44%
Mentionne la typographie83%
Ce qui manque dans les fichiers DESIGN.md publiés (n=299).

Comparez les deux dernières lignes et le schéma est sans équivoque. La typographie est mentionnée dans 83 % des fichiers, alors que 44 % des fichiers n'indiquent jamais une seule taille. Ce sont des documents qui parlent de typographie sans jamais préciser la dimension des éléments.

Le chiffre concernant les adjectifs explique le reste. « Clean » apparaît dans 39 % de ces fichiers et « modern » dans 36 %. Ce sont deux mots auxquels un modèle répond en produisant le centre de sa distribution d'entraînement, ce qui correspond précisément au résultat générique que le fichier était censé éviter.

Un modèle à qui l'on demande du « clean and modern » produit la moyenne de tout ce qu'il a vu. C'est également ce que produisent tous les autres modèles auxquels on demande la même chose.

Descriptif versus exécutable

L'unique distinction entre un brief qui modifie le résultat et un autre qui ne le fait pas : une phrase peut-elle être vérifiée par rapport à un écran rendu ? Si ce n'est pas le cas, c'est de la décoration.

Descriptif : aucun effetExécutable : modifie le résultat
Espacement« Espacement généreux et aéré »« Écart entre sections : 64px. Padding des cartes : 24px. Padding des contrôles : 8 à 12px. »
Typographie« Hiérarchie typographique claire »« Graisses 400 et 600 uniquement. La hiérarchie provient de la taille et de la couleur, jamais d'une graisse supérieure à 600. »
Élévation« Profondeur subtile et raffinée »« L'élévation est un saut de surface plus une bordure de 1px. Jamais de box-shadow. »
Couleur« Une palette retenue avec une seule couleur d'accent »« L'accent apparaît uniquement sur les boutons primaires et l'état actif de la navigation. Jamais sur le texte, les bordures, les arrière-plans ou les dégradés. »
Une même intention, écrite de deux manières.

Chaque entrée de la colonne de droite peut être vérifiée en consultant un écran ou en effectuant un grep dans le code. Chaque entrée de la colonne de gauche peut être satisfaite par presque n'importe quoi, ce qui signifie qu'elle n'impose aucune contrainte.

Remarquez à quel point la colonne de droite est composée d'interdictions. Les trois quarts des fichiers publiés n'en contiennent aucune, et une règle qui précise uniquement ce qui est permis laisse tout le reste autorisé, ce qui représente la majeure partie d'une interface. Si vous rédigez une section à la main, concentrez-vous sur les interdictions.

Rédiger une interdiction efficace

Trois propriétés distinguent une interdiction appliquée d'une interdiction ignorée.

FaibleFortePourquoi
Spécifique"Évitez les styles trop décoratifs""Pas de dégradés, pas d'ombres portées, pas de bordures décoratives"Un modèle ne peut pas évaluer ce qui est "trop"
Vérifiable"Gardez une typographie sobre""N'utilisez jamais de font-weight supérieur à 600"L'un peut être greppé ; l'autre non
Propose un remplacement"N'utilisez pas de box-shadow""Pas de box-shadow : l'élévation est définie par un niveau de surface plus une bordure de 1px"Interdire sans remplacer laisse le modèle inventer un substitut
Interdictions faibles et fortes.

La troisième ligne est celle que l'on oublie le plus souvent. Une interdiction sans alternative ouvre une brèche que le modèle comble en puisant dans la même distribution d'entraînement que celle que vous essayiez d'éviter. Chaque "jamais X" nécessite un "à la place, Y".

Un template minimal

Si vous en rédigez un à la main plutôt que de le générer, voici une structure de départ viable. Elle est volontairement courte. Un brief que personne ne peut garder en tête entre en concurrence avec la tâche réelle pour l'attention du modèle. Environ 400 lignes constituent un plafond gérable ; ce squelette est bien en dessous.

# DESIGN.md

## Overview

A dense internal tool for operations staff who work in it for hours.
Quiet, information-first. Nothing here has to convince anyone of anything.

## Don'ts

- No gradients
- No drop shadows — elevation is a surface step plus a 1px border
- No font-weight above 600
- No colour value outside the tokens in globals.css
- No border-radius above 12px
- No decorative use of the state colours

## Colours

Defined as semantic roles in globals.css, light and dark.
Do not restate values here — read them from that file.

- `--primary` — primary buttons and active nav state ONLY.
  Never on text, borders, backgrounds or gradients.
- `--muted-foreground` — secondary and supporting text only.
- `--border` — structural edges and dividers.
- `--destructive` / `--success` / `--warning` — reserved for state.

## Typography

Family: Inter (variable). Weights 400 and 600 only.
Scale: 12 / 14 / 16 / 20 / 24 / 32 / 48.
Tracking: -0.02em at 32px and above, 0 below, +0.02em on 12px caps.
Hierarchy comes from size and colour, never from weight above 600.

## Spacing & density

Scale: 4 / 8 / 12 / 16 / 24 / 32 / 48 / 64. No other values.
Controls: 8–12px padding. Table rows: 32px. Section gap: 32px.

## Elevation

A surface step plus a 1px `--border`. Never a box-shadow.

## Shapes

Controls 6px. Cards and panels 12px. Nothing above 12px.

## Composition

One primary action per section.
Related controls share a group; unrelated ones are separated by a full step.
Tables are never nested inside cards.

## Motifs

Section headings carry a 2px `--primary` rule on the left edge.
Numeric columns are always tabular-nums and right-aligned.
Empty states are a single line of `--muted-foreground` text, never an illustration.

## Agent rules

Read this file before writing or editing any UI.
Match the nearest existing component in this repo rather than inventing a
new pattern. If no similar component exists, say so before writing one.
Squelette de DESIGN.md écrit à la main : adaptez les valeurs, conservez la structure

Deux éléments de ce fichier valent la peine d'être copiés, même si vous changez tout le reste. Les interdictions arrivent en second lieu, avant tout élément qu'elles pourraient modifier, afin qu'un modèle lisant de haut en bas rencontre les contraintes avant les permissions. De plus, la section des couleurs renvoie vers globals.css plutôt que de répéter les valeurs : dès qu'une valeur hexadécimale existe à deux endroits, l'un sera mis à jour et l'autre non, et le modèle utilisera avec assurance la version obsolète.

La dernière ligne des règles de l'agent est plus efficace que sa longueur ne le suggère. "Copiez le composant existant le plus proche et, si aucun n'existe, précisez-le avant d'en créer un" transforme l'échec le plus courant de l'agent — l'invention silencieuse d'un nouveau pattern — en une question à laquelle vous pouvez répondre.

L'appliquer à un système réel

Un DESIGN.md ne vaut que par le système qui le soutient. Voici le kit gratuit ambient-sage : les tokens, polices et traitements décrits dans son DESIGN.md, rendus en direct :

Ambient Sage

Live render

Rendered from the kit's actual tokens, fonts, and treatments

Ambient SageOverview
Search anything⌘K
AS

Analytics

Revenue overview

See revenue and retention trends alongside account health.

Jan 1 to Jan 30, 2026
Overview
Analytics
Reports
Notifications

Active users

15.1k

2,491 new

+5%

MRR

$49.1k

Net of churn

+3%

Retention

89%

28-day window

+2%

NPS

69

1,204 replies

+3

Revenue

Last 12 months

$49.1k +18.2%

12m30d7d
JanFebMarAprMayJunJulAugSepOctNovDec

Acquisition

Goal completion

On track
78%of goal
Organic48%
Direct31%
Referral21%

Recent transactions

Latest activity across your workspace

View all
CustomerStatusDateAmount
AR

Alex Rivera

Founder & CEO

Paid2 min ago$1,999.00
MO

Mira Okonkwo

Head of Product

Pending1 hour ago$39.00
JF

Jonas Feld

Design Lead

Processing3 hours ago$299.00

Typography

Plus Jakarta Sans

Color system

28 semantic roles, light + dark

Agent outputs

DESIGN.md, CSS, Tailwind, shadcn

Ambient Sage. Son DESIGN.md transforme exactement ce système en instructions que votre agent suit.

En générer un (trois méthodes)

  1. 1

    CLI : écrire le DESIGN.md + les tokens dans votre repo

    La voie la plus rapide. Choisissez un slug de kit dans la galerie et appliquez-le ; vous obtenez un DESIGN.md commité ainsi qu'un fichier de tokens correspondant.

    identityforge apply ambient-sage
  2. 2

    MCP : laisser l'agent le récupérer

    Une fois le serveur MCP installé, l'agent appelle get_design_md(slug) pour lire le brief complet et apply_theme pour l'écrire. Installez-le pour votre outil :

    npx --yes identityforge@latest install --client claude-code
  3. 3

    shadcn : installer les tokens référencés par le DESIGN.md

    Si vous ne voulez que les valeurs, l'élément du registre installe directement les variables CSS du kit.

    npx shadcn add https://identityforge.io/r/ambient-sage.json

Identity Forge génère le DESIGN.md et les tokens à partir du même kit, donc le texte décrit les valeurs de la feuille de style. Pour comprendre en quoi cela diffère de l'adaptation manuelle d'une entrée de catalogue DESIGN.md, consultez Identity Forge vs getdesign.md.

Vérifier que cela fonctionne

Écrire le fichier et supposer qu'il a été pris en compte est le meilleur moyen pour les équipes de découvrir le problème trois semaines plus tard. Quatre vérifications, de la plus simple à la plus complexe.

  1. 1

    Grep pour les valeurs de couleurs littérales

    Si l'agent respecte les rôles sémantiques, aucune valeur hexadécimale ne doit se trouver en dehors du fichier de tokens. C'est le signal le plus rapide possible.

    grep -rn --include='*.tsx' --include='*.css' -E '#[0-9a-fA-F]{3,8}\b' src \
      | grep -v 'tokens\|globals.css'
  2. 2

    Utilisez grep pour rechercher les graisses de police interdites

    La graisse est l'endroit où la hiérarchie revient discrètement aux valeurs par défaut ; c'est le premier signe qu'une consigne d'interdiction n'est pas appliquée.

    grep -rn --include='*.tsx' -E 'font-(bold|extrabold|black)' src | head -30
  3. 3

    Demandez le même écran deux fois, dans des sessions distinctes

    La cohérence entre les sessions est le véritable test. Si deux exécutions diffèrent significativement sur l'espacement, le rayon des bordures ou la hiérarchie, le diff vous indique précisément quelle section du brief est manquante.

  4. 4

    Construisez d'abord un écran en mode sombre

    Si le mode sombre a été déduit plutôt que défini, c'est ici qu'il apparaît : ombres inertes, gris moyens ternes, accent trop criard. Il est bien moins coûteux de s'en rendre compte sur le premier écran que sur le vingtième.

Les deux premiers doivent être intégrés à la CI. Un contrôle qui rejette une pull request contenant une valeur hexadécimale brute fait plus pour la cohérence à long terme que n'importe quelle quantité de texte, ce qui est la même conclusion que celle atteinte par Salesforce avec le linter SLDS.

FAQ

Qu'est-ce qu'un DESIGN.md ?

Un DESIGN.md est un fichier Markdown dans votre repo qui indique à un agent de code IA l'apparence que doit avoir le produit : son intention, ses systèmes de couleurs et de typographie, ses règles de mise en page et d'espacement, le traitement des composants, ses motifs distinctifs et ses consignes (do's & don'ts). L'agent le lit avant de construire l'UI afin que le résultat reste fidèle à la marque et cohérent.

Comment générer un DESIGN.md ?

Appliquez un kit Identity Forge : identityforge apply <slug> écrit un DESIGN.md complet ainsi que les tokens correspondants dans votre projet. Avec le serveur MCP installé, l'agent peut également le récupérer lui-même via l'outil get_design_md.

Un DESIGN.md n'est-il qu'une liste de couleurs ?

Non. Les couleurs sont la partie facile. Un DESIGN.md utile consacre la majeure partie de son contenu à la mise en page, à l'espacement, au traitement des composants, aux motifs distinctifs et aux consignes (do's & don'ts) : les domaines où l'UI générée par IA devient généralement générique.

Existe-t-il une spécification officielle pour le DESIGN.md ?

Google Labs publie une spécification et un validateur DESIGN.md en version alpha. Identity Forge génère son brief et ses tokens à partir du même kit de design, ce qui permet de lier les règles écrites aux valeurs exportées.