Como AI Coding Agents Leem Seu Design System (E Por Que a Maioria Erra)
Você tira screenshot do Figma. Cola no Claude Code. Digita “faz igual a isso.” Não fica igual.
O card vem com border-radius errado. Spacing 4px fora em tudo. O azul é #3B82F6 quando seu sistema usa #2563EB. Parecido o suficiente pra parecer proposital. Errado o suficiente pra incomodar.
Pergunta como eu sei.
Faz mais de um ano que eu shipo UI de produção com ai coding agents todo dia — Claude Code, Cursor, Kiro, Copilot. Todos têm o mesmo problema fundamental: eles não veem seu design system a menos que você entregue num formato que eles consigam parsear.
Não é burrice do modelo. É como context windows funcionam. E quando você entende isso, o fix leva sessenta segundos.
Como AI Coding Agents Processam Contexto
Quando você aperta Enter, o agent carrega tudo numa context window de tamanho fixo — sua mensagem, o arquivo aberto, arquivos referenciados, system prompts, definições de tools. Tudo compete pelo mesmo token budget.
Claude Code tem ~200K tokens. Cursor varia. Kiro tem budget próprio. Parece muito. Não é.
Um componente React médio consome 200-400 tokens. Seu tailwind.config.ts inteiro, 800-1200. O system prompt do agent sozinho come 3-5K. Adiciona uns arquivos de contexto e já queimou 15-20K antes do agent escrever uma linha sequer.
Prioridade importa. Agents leem arquivos mais ou menos nessa ordem:
- System instructions e config do agent (CLAUDE.md, .cursorrules, .kiro/)
- Arquivo aberto ou referenciado diretamente
- Arquivos mencionados no prompt
- Arquivos descobertos via imports ou estrutura do projeto
Se suas decisões de design moram num Figma, numa page do Notion, ou na sua cabeça — o agent nunca vê. Ponto.
Três Formas de Comunicar Design (Duas Falham)
Vi esse padrão se repetir em dezenas de projetos. Devs tentam três abordagens. Só uma sobrevive.
1. Screenshots e Imagens
Você cola um screenshot. O agent vê pixels por um vision model. Identifica “tem um card com shadow e um botão azul.” Não consegue extrair box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1). Não diferencia font-weight 600 de 700. Chuta.
Vision models aproximam. Não medem. Cada componente gerado vira uma interpretação livre em vez de implementação fiel.
Resultado: parece “similar” no primeiro olhar, reprova em toda revisão visual.
2. Colar CSS Cru ou Tailwind Config
Ideia melhor, execução pior. Você despeja o globals.css inteiro (3K tokens), o tailwind.config.ts (1.2K tokens), talvez um arquivo de componente como referência (600 tokens). São 5K tokens de contexto só pra design — e nenhum tem significado semântico.
O agent vê --color-primary: #2563EB mas não sabe quando usar em vez de --color-accent. Vê que rounded-lg existe mas não conhece sua regra: “cards usam rounded-xl, buttons rounded-lg, inputs rounded-md.”
CSS cru é dado sem intenção.
3. DESIGN.md — Estruturado, Leve, Semântico, Persistente
Um único arquivo Markdown na raiz do repo. Blocos YAML com valores exatos de tokens. Seções em prosa com regras e racional. 2-5K tokens no total. O agent lê automaticamente porque está onde agents olham primeiro.
Isso funciona. Não por ser sofisticado — por casar com a forma que agents consomem informação.
Por Que DESIGN.md Funciona Especificamente pra AI Coding Agents
Quatro propriedades. Todas importam.
YAML é parseável. Quando o agent lê primary: "#2563EB" num bloco YAML, ambiguidade zero. Não tá interpretando screenshot. Não tá chutando a partir de um nome de variável CSS. Tem o hex exato, o valor exato, o nome do token exato. Agents são modelos de linguagem — texto estruturado é o input nativo deles.
Prosa em Markdown fornece raciocínio. Entre os blocos YAML, você escreve regras: “Nunca use preto puro pra texto. Use gray-900 pra headings, gray-700 pra body.” O agent raciocina sobre essas regras do mesmo jeito que raciocina sobre comentários de código. Sabe por que escolher um valor em vez de outro.
~2-5K tokens é leve. Seu design system inteiro cabe em 2% da context window. Tá sempre ali. Nunca é truncado. Nunca compete com o código que o agent precisa escrever. Compara com colar um export do Figma ou design doc — 20K+ tokens que empurram o contexto de código pra fora.
Raiz do repo significa auto-discovery. Claude Code lê CLAUDE.md e qualquer arquivo referenciado. Cursor lê .cursorrules. Kiro lê config em .kiro/. Todos podem apontar pro DESIGN.md com uma única linha. Sem colar manual. Sem workflow de copy-paste. O agent encontra em toda sessão, em todo prompt, automaticamente.
Mesmo Prompt, Resultados Diferentes
O prompt: “Cria um componente de pricing card com três tiers — Free, Pro, Enterprise.”
Sem DESIGN.md: O agent improvisa. Escolhe um azul que parece “bonito” — provavelmente o blue-500 default do Tailwind. Cards ganham qualquer border-radius que pareça ok. Spacing segue os dados de treino do modelo, que é uma mistura de milhares de design systems diferentes. O resultado parece um template genérico de SaaS. Profissional o suficiente. Completamente irreconhecível como seu produto.
Com DESIGN.md: O agent lê seus tokens primeiro. Sabe que seu primary é #2563EB, cards usam rounded-2xl com shadow-sm, escala de spacing começa em incrementos de 4px, headings usam Inter weight 700, body usa 16px/24px. O pricing card sai parecendo que pertence ao seu app. Porque o agent tinha o mesmo documento de referência que seu time humano usa.
A diferença não é sutil. É a distância entre “quase, vou ajustar na mão” e “manda pro PR.”
Setup em 60 Segundos
Não é força de expressão. Literalmente um minuto.
-
Vai na biblioteca de DESIGN.md. Pega um template que bata com seu stack (Tailwind, vanilla CSS, shadcn, tanto faz).
-
Copia pra raiz do projeto. Edita os valores dos tokens pra bater com seu design system real. Cores, fontes, spacing, border-radius — o que você já sabe.
-
Aponta o config do agent:
- Claude Code: adiciona
Read DESIGN.md before generating any UI componentno seuCLAUDE.md - Cursor: referencia no
.cursorrules - Kiro: adiciona no config
.kiro/
- Claude Code: adiciona
Pronto. Próxima vez que pedir pro agent montar UI, ele lê seu design system antes. Toda vez. Automaticamente.
O Padrão Daqui Pra Frente
AI coding agents melhoram na geração de código todo mês. Não melhoram em adivinhar suas decisões de design. Isso não é problema de capacidade do modelo — é problema de contexto. E problemas de contexto têm soluções de contexto.
Entrega pro agent um arquivo estruturado que ele consiga parsear. Coloca onde o agent já olha. Mantém pequeno o suficiente pra nunca competir com contexto de código.
Isso é o que DESIGN.md é. Um formato de design system leve e agent-native.
Navega pela biblioteca pra templates prontos. Lê os guias de setup pro Claude Code, Cursor, ou Kiro. Você vai gastar mais tempo discutindo sua cor primária do que configurando isso.