O que é DESIGN.md

Seu agente de IA gera uma UI diferente toda vez porque ele não tem memória das suas decisões de design. Cores diferentes na segunda, espaçamento diferente na terça, um estilo de botão completamente novo na sexta. Você cola as mesmas instruções em todo prompt. Ele ignora metade.

DESIGN.md resolve isso. É um único arquivo Markdown — design tokens legíveis por máquina no YAML front matter mais regras de design legíveis por humanos em prosa — que fica na raiz do repo. O agente lê em toda interação. Sem prompt repetido. Sem drift. Um arquivo, output consistente. A especificação oficial do DESIGN.md é open-source (Apache 2.0), mantida pelo Google Labs, e tem 17.2k stars no GitHub.

DESIGN.md está para design visual como AGENTS.md está para convenções de código. Contexto persistente que o agente consulta toda vez — não um prompt descartável que é esquecido três mensagens depois.

O Problema

Antes e depois do DESIGN.md

Sem DESIGN.md

  • → Agente escolhe um azul aleatório pra botões porque você disse "visual moderno"
  • → Fonte muda entre prompts — Inter, depois Poppins, depois volta pra system fonts
  • → Espaçamento é 16px num componente, 20px no próximo, 12px depois de um refactor
  • → Border radius: arredondado num dia, reto no outro
  • → Você re-explica o design system a cada três prompts

Com DESIGN.md

  • → Agente lê os tokens: #B8422E pra CTAs, sempre
  • → Headlines em Public Sans Semi-Bold, toda vez
  • → Escala de 8px com half-step de 4px — sem improvisação
  • → 4px de border-radius em tudo, como especificado
  • → Você descreve o que construir. O agente cuida do como.

A diferença não é sutil. É a diferença entre um design system e CSS aleatório.

Formato

Duas camadas em um arquivo

Um arquivo DESIGN.md tem duas partes: YAML front matter com design tokens, e um corpo Markdown com o racional por trás deles. Os tokens são a fonte de verdade para valores. A prosa diz ao agente como usar esses valores — e quando não usar.

---
name: Heritage
colors:
  primary: "#1A1C1E"
  secondary: "#6C7278"
  tertiary: "#B8422E"
  neutral: "#F7F5F2"
typography:
  h1:
    fontFamily: Public Sans
    fontSize: 3rem
  body-md:
    fontFamily: Public Sans
    fontSize: 1rem
rounded:
  sm: 4px
  md: 8px
spacing:
  sm: 8px
  md: 16px
---

## Overview

Architectural Minimalism meets Journalistic Gravitas.
The UI evokes a premium matte finish.

## Colors

- **Primary (#1A1C1E):** Deep ink for headlines and core text.
- **Tertiary (#B8422E):** "Boston Clay" — the sole driver for interaction.

Entregue esse arquivo a um agente e o resultado é previsível: headlines em Public Sans cor de tinta, fundo limestone quente, botões em Boston Clay. Sem adivinhação.

Tokens

Schema de design tokens

Tokens ficam no YAML front matter. O schema se inspira na spec W3C Design Tokens — grupos tipados, sintaxe {path.to.token} para referências cruzadas entre valores. Familiar pra quem já mexeu com Figma variables ou temas Tailwind.

version: <string>          # opcional, atual: "alpha"
name: <string>
description: <string>      # opcional
colors:
  <token-name>: <Color>
typography:
  <token-name>: <Typography>
rounded:
  <scale-level>: <Dimension>
spacing:
  <scale-level>: <Dimension | number>
components:
  <component-name>:
    <token-name>: <string | token reference>

Tipos de token

Tipo Formato Exemplo
Color Qualquer cor CSS (hex, rgb(), oklch(), named, etc.) "#1A1C1E", "oklch(62% 0.18 250)"
Dimension número + unidade (px, em, rem) 48px, -0.02em
Token Reference {path.to.token} {colors.primary}
Typography objeto com fontFamily, fontSize, fontWeight, lineHeight, letterSpacing ver exemplo acima

Estrutura

8 seções da especificação oficial

Seções usam headings ##. Pode pular qualquer uma, mas as que estiverem presentes devem seguir esta ordem — o LLM lê de cima pra baixo, e a sequência importa pra construção de contexto.

1. Overview (alias: Brand & Style)

O panorama geral. Como o produto deve se sentir — divertido ou sério, denso ou espaçado. Personalidade da marca, público-alvo, tom emocional. É o que o agente consulta quando nenhuma regra específica cobre uma decisão.

## Overview
Architectural Minimalism meets Journalistic Gravitas.
The UI evokes a premium matte finish — a high-end broadsheet
or contemporary gallery.

2. Colors

Sua paleta com papéis semânticos definidos. Convenção: primary, secondary, tertiary, neutral. Cada cor ganha um valor hex, nome descritivo e regra de uso. Sem esse nome semântico, o LLM vai usar seu vermelho de erro como accent sem pestanejar — experiência própria.

## Colors
- **Primary (#1A1C1E):** Deep ink for headlines and core text.
- **Secondary (#6C7278):** Sophisticated slate for borders, captions.
- **Tertiary (#B8422E):** "Boston Clay" — sole driver for interaction.
- **Neutral (#F7F5F2):** Warm limestone foundation.

3. Typography

Níveis tipográficos — a maioria dos systems tem entre 9 e 15. Tokens incluem fontFamily, fontSize, fontWeight, lineHeight, letterSpacing, fontFeature e fontVariation. Agentes precisam de números. "Fonte grande" não significa nada pra uma máquina. 48px sim.

## Typography
- **Headlines:** Public Sans Semi-Bold — institutional, trustworthy.
- **Body:** Public Sans Regular at 16px — long-form readability.
- **Labels:** Space Grotesk — geometric precision. Uppercase, generous spacing.

4. Layout (alias: Layout & Spacing)

Estratégia de layout e regras de espaçamento. Grids, margins, safe areas. Os tokens de spacing definem a escala em que seu projeto vive — de xs até xl, mais os levels custom que fizerem sentido.

## Layout
Fluid Grid model for mobile, Fixed-Max-Width Grid for desktop (max 1200px).
Strict 8px spacing scale with 4px half-step for micro-adjustments.

5. Elevation & Depth (alias: Elevation)

Como você mostra hierarquia visual. Baseado em sombras? Defina spread, blur, cor. Design flat? Explique o que usa no lugar — bordas, camadas tonais, contraste de cor. O agente precisa conhecer as regras de profundidade do seu sistema.

## Elevation & Depth
Depth through Tonal Layers rather than heavy shadows.
Background uses soft off-white, primary content on pure white cards.

6. Shapes

A linguagem de formas. Tokens de rounded — sm, md, lg, full — controlam border-radius em botões, cards, inputs. Detalhe pequeno que faz diferença enorme na personalidade percebida.

## Shapes
Architectural Sharpness. All interactive elements use minimal 4px corner radius.
Just enough softness to feel modern while maintaining a rigid aesthetic.

7. Components

Tokens de componentes mapeiam um nome para um conjunto de propriedades — backgroundColor, textColor, typography, rounded, padding, size, height, width. Variantes como hover, active e pressed ganham entradas próprias. O agente escolhe a variante certa pra cada estado.

components:
  button-primary:
    backgroundColor: "{colors.tertiary}"
    textColor: "{colors.on-tertiary}"
    rounded: "{rounded.sm}"
    padding: 12px
  button-primary-hover:
    backgroundColor: "{colors.tertiary-container}"

8. Do's and Don'ts

Guardrails. LLMs respondem muito bem a instruções negativas — dizer o que NÃO fazer costuma ser mais eficaz do que regras positivas. É aqui que você impede o agente de tornar seu design genérico.

## Do's and Don'ts
- Do use primary only for the single most important action per screen
- Don't mix rounded and sharp corners in the same view
- Do maintain WCAG AA contrast ratios (4.5:1 for normal text)
- Don't use more than two font weights on a single screen

Ferramentas

CLI oficial

O pacote @google/design.md vem com quatro comandos: validar, comparar, exportar e inspecionar. Tudo roda via npx — sem precisar instalar global.

lint — Validar estrutura

Verifica referências quebradas, contraste WCAG AA, tokens órfãos, ordem de seções e tipografia ausente.

npx @google/design.md lint DESIGN.md

diff — Comparar versões

Detecta mudanças token a token entre duas versões. Exit code 1 se houver regressões.

npx @google/design.md diff DESIGN.md DESIGN-v2.md

export — Converter tokens

Exporta tokens para Tailwind v3 theme config, Tailwind v4 CSS theme ou DTCG tokens.json (W3C Design Tokens Format).

npx @google/design.md export --format json-tailwind DESIGN.md
npx @google/design.md export --format css-tailwind DESIGN.md
npx @google/design.md export --format dtcg DESIGN.md
Format Output Descrição
json-tailwindJSONObjeto theme.extend para Tailwind v3
css-tailwindCSSBloco @theme { ... } do Tailwind v4 com CSS custom properties
tailwindJSONAlias para json-tailwind (retrocompatível)
dtcgJSONW3C Design Tokens Format Module

spec — Injetar spec no prompt

Imprime a especificação completa do formato. Útil para injetar contexto da spec em prompts de agentes.

npx @google/design.md spec
npx @google/design.md spec --rules --format json

Validação

Regras de linting

O linter verifica 9 regras no seu arquivo. Cada uma gera findings com severidade fixa — errors bloqueiam, warnings avisam, info apenas reporta.

Regra Severidade O que verifica
broken-referrorToken references que não resolvem para nenhum token definido
missing-primarywarningCores definidas mas sem cor primary
contrast-ratiowarningPares backgroundColor/textColor abaixo do mínimo WCAG AA (4.5:1)
orphaned-tokenswarningTokens de cor definidos mas nunca referenciados por componentes
token-summaryinfoResumo de quantos tokens estão definidos em cada seção
missing-sectionsinfoSeções opcionais (spacing, rounded) ausentes quando outros tokens existem
missing-typographywarningCores definidas mas sem tokens de tipografia
section-orderwarningSeções fora da ordem canônica da spec
unknown-keywarningChave YAML top-level parece typo de chave conhecida (ex: colours: → colors:)

API Programática

Use o linter como biblioteca

Precisa do linter dentro da sua própria tooling — pipelines de CI, extensões de editor, validadores custom? Ele exporta como biblioteca JavaScript.

import { lint } from '@google/design.md/linter';

const report = lint(markdownString);

console.log(report.findings);       // Finding[]
console.log(report.summary);        // { errors, warnings, info }
console.log(report.designSystem);   // Parsed DesignSystemState

Formato

Por que Markdown + YAML e não só JSON

Markdown é o formato que LLMs entendem melhor — a maior parte dos dados de treino usa essa estrutura. Não precisa de instrução extra de parsing.

Tokens JSON definem valores, mas não regras. Não dá pra expressar "use primary só no CTA principal" num tokens.json. DESIGN.md resolve isso juntando tokens YAML (valores exatos pra máquinas) com prosa Markdown (semântica e restrições pro agente) num arquivo só, zero build pipeline. O comando export converte pra Tailwind ou DTCG quando você precisar downstream.

Critério DESIGN.md Tokens (JSON) Style Guide
Legível por LLM Nativo (treinado em MD) Requer parsing Não legível
Tokens legíveis por máquina Sim (YAML front matter) Sim (JSON) Não
Legível por humano Sim, sem tooling Parcial Sim
Versionável (Git) Sim Sim Não (binário)
Context window Leve (~2-5K tokens) Médio N/A
Build pipeline Nenhum (export disponível) Necessário N/A
Regras semânticas Sim (Do's/Don'ts) Não (só valores) Sim
Referências entre tokens Sim ({path.to.token}) Sim ($ref) N/A
CLI/linter oficial Sim (@google/design.md) Varia N/A

Já usa tokens JSON com build pipeline? Mantenha. DESIGN.md coexiste — use export pra conectar os dois.

Obtenção

Como obter um DESIGN.md

Quatro caminhos, do mais rápido ao mais manual.

1. Copiar da biblioteca designmd.app

Escolha por vertical ou estilo visual, ajuste os valores pro seu projeto, pronto. A biblioteca tem 461 arquivos documentados prontos pra usar.

2. Gerar com a skill design-md

Aponte a skill pro seu codebase. Ela escaneia componentes, variáveis CSS, tokens existentes — e extrai um DESIGN.md estruturado a partir dos padrões encontrados.

3. Exportar do Google Stitch

Já usa Stitch? O export é nativo — mesma estrutura documentada aqui, sem passos extras.

4. Escrever manualmente

Siga a estrutura de 8 seções acima. Valide com npx @google/design.md lint. Controle máximo — você decide cada token e cada regra.

Nomenclatura

Nomes de tokens recomendados (Não-Normativo)

Esses nomes aparecem na maioria dos design systems. Não são obrigatórios — mas usá-los torna seu DESIGN.md instantaneamente familiar pra qualquer pessoa (ou agente) lendo.

Colors

primary, secondary, tertiary, neutral, surface, on-surface, error

Typography

headline-display, headline-lg, headline-md, body-lg, body-md, body-sm, label-lg, label-md, label-sm

Rounded

none, sm, md, lg, xl, full

Setup

Configuração por agente

Cada agente de IA tem seu arquivo de configuração. O DESIGN.md fica na raiz do projeto — a config só precisa dizer ao agente pra lê-lo. Sem plugins, sem integrações, sem lock-in.

Agente Config Referência
Claude Code CLAUDE.md Siga regras visuais de @DESIGN.md
Cursor .cursor/rules/*.mdc Include do DESIGN.md
Kiro .kiro/steering/ Copiar DESIGN.md para steering
Windsurf .windsurfrules Referenciar DESIGN.md
Google Stitch UI nativa Import direto

Configuração passo a passo: Claude Code · Cursor · Kiro · Windsurf · Google Stitch

FAQ

Perguntas frequentes

O que é DESIGN.md?

Um arquivo Markdown com front matter YAML que define o design system do projeto — cores, tipografia, espaçamento, componentes — num formato que agentes de IA leem nativamente. Claude Code, Cursor, Kiro, todos entendem sem configuração extra. Formato open-source mantido pelo Google.

DESIGN.md substitui o Figma?

Não. Figma é onde você desenha visualmente. DESIGN.md é como você comunica essas decisões pra agentes de IA de forma que eles realmente sigam. São complementares.

Preciso saber design para usar DESIGN.md?

Não pra usar um pronto. A biblioteca designmd.app tem 461+ arquivos pra copiar e customizar. A skill design-md também gera um a partir do seu codebase existente.

Funciona com qualquer agente de IA?

Sim. Qualquer agente que leia arquivos do repositório pode usar — Claude Code, Cursor, Kiro, Windsurf, Google Stitch. É só Markdown. Sem integração especial.

Qual a diferença entre DESIGN.md e design tokens em JSON?

Tokens JSON definem valores mas não conseguem expressar regras como "use essa cor só no CTA principal." DESIGN.md combina tokens (valores) com prosa (regras e intenção) num arquivo só. Sem build pipeline. Exporte pra Tailwind ou DTCG quando precisar de tooling downstream.

Posso usar em projeto existente?

Sim. Coloque o arquivo na raiz do projeto, referencie na config do seu agente. Não mexe em código existente.

Como validar meu DESIGN.md?

Rode npx @google/design.md lint DESIGN.md. Pega referências quebradas, falhas de contraste WCAG AA, tokens órfãos, ordem de seções errada e tipografia ausente.

Como atualizar quando o design muda?

Edite o arquivo direto — é Markdown. Rode npx @google/design.md diff antes.md depois.md pra ver mudanças token a token. Versione com Git pra manter histórico.

Funciona com React, Vue, Svelte?

DESIGN.md é agnóstico de framework. Define regras visuais, não detalhes de implementação. O agente aplica as regras independente da sua stack. Use export --format css-tailwind pra gerar tema Tailwind v4 se precisar.

O que são Token References?

Uma forma de referenciar valores entre si usando a sintaxe {path.to.token}. Em vez de repetir "#1A1C1E" num componente, você escreve {colors.primary}. Muda a cor uma vez, tudo atualiza. Mesma ideia de CSS variables, mas dentro do schema do DESIGN.md.

Próximos passos

Navegue pela biblioteca (461 arquivos, organizados por indústria e estilo) ou deixe a skill gerar um a partir do seu codebase existente.

Guias de configuração por agente

Artigos relacionados