O que é o DESIGN.md no OpenDesign e como esse arquivo vira o contrato de marca do seu projeto?

DESIGN.md é o arquivo que descreve a marca do seu projeto num formato que o agente consegue ler antes de gerar qualquer coisa. O formato tem spec aberta publicada pelo Google Labs em 21/04/2026, saída do Stitch, sob licença Apache-2.0, e é feito de duas partes: um frontmatter YAML opcional com os design tokens legíveis por máquina e um corpo markdown com o racional para humanos. Dentro do OpenDesign (open source, Apache-2.0, local-first, BYOK), toda skill lê o DESIGN.md do pacote ativo antes de renderizar, então a marca é aplicada sem re-briefing a cada geração
Fala aí, beleza? Todo mundo que gera interface com agente já viveu isso: você pede uma tela, vem um azul, pede a próxima, vem outro azul, o botão muda de raio, a fonte troca sozinha e no fim você tem cinco telas de cinco produtos diferentes
O agente não tem memória de marca, ele tem prompt
É exatamente aí que entra o DESIGN.md: um arquivo único, versionado junto do projeto, que descreve a marca em formato que máquina lê. E é assim que ele funciona dentro do OpenDesign, projeto open source distribuído sob licença Apache-2.0, com execução local (local-first) e modelo BYOK, ou seja, você pluga a sua própria chave de agente
Bora entender o arquivo por dentro?
De onde vem o DESIGN.md: a spec aberta do Google Labs
O formato não nasceu no OpenDesign
A especificação aberta do DESIGN.md foi publicada pelo Google Labs em 21 de abril de 2026, como uma saída do Stitch, sob licença Apache-2.0, com o objetivo declarado de virar padrão entre agentes
Formação Claude Code
Domine Claude Code do absoluto zero até o avançado
- 120 aulas
- 4 projetos
- 9h 45min
Ou seja: a ideia desde o dia zero é interoperabilidade, não formato proprietário
A spec oficial mora no repositório google-labs-code/design.md, com o documento em docs/spec.md. Vale a leitura antes de sair escrevendo o seu
E o contexto ao redor ajuda a entender o timing. Poucos dias antes, em 17 de abril de 2026, a Anthropic lançou o Claude Design, produto do Anthropic Labs para gerar protótipos, slides, mockups e one-pagers a partir de prompts, documentos e código
Tem também um sinal interessante do lado da Anthropic: existe no repositório anthropics/skills a issue #1008 propondo que a skill frontend-design consuma e produza DESIGN.md conforme a spec aberta do Google Labs
Um formato de arquivo virando assunto no repositório de skills de outra empresa? Isso é o cheiro de padrão se formando 🙂
Por que o agente precisa de um contrato de marca
Para antes do como: por que isso existe?
O problema é bem chato de descrever mas todo mundo reconhece na hora. Sem uma fonte canônica de verdade visual, cada geração recomeça do zero
Você descreve a paleta no prompt
O agente acerta
Na próxima sessão, contexto novo, prompt novo, e você descreve tudo de novo
Isso é re-briefing, e re-briefing é o imposto invisível de quem gera interface com IA
A lógica do contrato resolve por inversão: em vez de instrução solta que vive no prompt e morre com a sessão, você tem um artefato único que o agente lê antes de produzir. A marca deixa de ser algo que você lembra de falar e vira algo que está no repositório
É a mesma ideia de qualquer arquivo de convenção que o agente consome no seu projeto: se está escrito, não precisa ser repetido. Por sinal, se você já se preocupa com o que o agente lê no seu repositório, o raciocínio aqui é o irmão gêmeo desse cuidado, só que pelo lado positivo: o que você QUER que ele leia sempre
E tem um detalhe que muda o jogo: sendo arquivo, ele entra no git. Mudança de marca vira diff, vira review, vira histórico
Anatomia do arquivo: frontmatter YAML e corpo markdown
Agora a parte concreta
Um arquivo DESIGN.md tem duas partes, e cada uma tem um público diferente:
| Parte | Formato | Para quem é | O que carrega |
|---|---|---|---|
| Frontmatter | YAML (opcional) | máquina | os design tokens |
| Corpo | markdown | humano | racional e diretrizes |
O frontmatter YAML é opcional e é onde ficam os design tokens legíveis por máquina
Os campos previstos na spec são: version, name, description, seções omitidas, colors, typography, rounded, spacing e components
E todos esses campos são opcionais, você inclui os que fizerem sentido pro seu projeto
Porém (e presta atenção nisso) as seções que estiverem presentes devem seguir uma ordem específica, e o linter sinaliza seção fora de ordem
Então não é um YAML solto onde você joga chave em qualquer lugar. Tem gramática
O esqueleto do frontmatter, grosso modo, fica assim:
---
version: ...
name: ...
description: ...
colors: ...
typography: ...
rounded: ...
spacing: ...
components: ...
---
Já o corpo em markdown é a parte legível por humanos: o racional e as diretrizes. É onde você explica POR QUE a marca é do jeito que é, não só quais são os valores
E isso não é enfeite. O corpo é o que dá contexto pro agente decidir os casos que o token não cobre
O que cada seção governa nas saídas
No corpo, as seções usam títulos de nível ##
Duas delas dão bem a ideia do que o arquivo governa
A seção Overview descreve o look and feel do produto: personalidade de marca, público e a resposta emocional pretendida
Repara que nada disso é um valor hexadecimal. É briefing mesmo, escrito uma vez
A seção Colors define as paletas, e a spec exige ao menos a paleta primária. Faz sentido: sem primária não existe marca, existe rascunho
E os tokens, como se conectam?
O sistema de tokens do DESIGN.md é inspirado na spec Design Token JSON
Na prática, isso significa dois comportamentos que quem já mexeu com design system reconhece na hora:
- grupos tipados de tokens, como
colors,typographyespacing - sintaxe de referência
{path.to.token}para cruzar valores
A referência é o que evita duplicação
Em vez de repetir o mesmo valor de cor em cinco lugares e rezar pra ninguém esquecer de atualizar um deles, você aponta pro token. Se você já usou variável em CSS ou alias em tema de biblioteca de componentes, é a mesma cabeça, só que num arquivo que o agente lê
Tome cuidado com um ponto aqui: token resolve consistência de VALOR, não de gosto. O que segura o gosto é o corpo em markdown
Como o OpenDesign usa o DESIGN.md na prática
Até aqui falamos do formato. Agora, o papel dele dentro do produto
No OpenDesign, o DESIGN.md funciona como contrato de marca: toda skill lê o DESIGN.md do pacote ativo antes de renderizar
Essa frase é curtinha mas é o coração da coisa toda. Não é "o agente pode consultar se quiser", é leitura como etapa do render. A marca é aplicada ao que o agente produz sem re-briefing a cada geração
No repositório, os design systems ficam na pasta design-systems/, organizados por slug, e cada pasta contém três arquivos:
design-systems/
<slug>/
manifest.json
DESIGN.md
tokens.css
E o DESIGN.md ali é descrito como a prosa canônica destinada aos agentes
Prosa canônica. Ou seja: o tokens.css é pro navegador, o manifest.json é pra máquina catalogar, e o DESIGN.md é o texto que o modelo lê pra entender a marca
Tem ainda um caminho de entrada que evita a página em branco: o OpenDesign traz a skill brand-extract, cujo arquivo fica em skills/brand-extract/SKILL.md, feita pra extrair um Brand Kit completo de um site ao vivo dirigindo o navegador embutido no app
Sacou a jogada? Em vez de você descrever sua marca de memória, ele vai lá no site e tira dela mesma
E se você não quer partir do seu site, a página de catálogo de design systems do OpenDesign anuncia 152 design systems open source disponíveis em /plugins/systems/
O que isso muda para quem já usa Claude Code, Codex ou Cursor
Agora a leitura prática, que é onde a maioria decide se liga ou não
O OpenDesign se posiciona como alternativa open source e local ao Claude Design, dirigida por agentes de CLI via BYOK. A proposta é transformar o agente de código que você JÁ usa (Claude Code, Codex, Cursor, Gemini CLI, OpenCode, entre outros) em motor de design
Ou seja: não é mais uma ferramenta pra abrir numa aba, é o mesmo terminal de sempre com um contrato visual em cima
O ganho real, pra mim, está numa mudança de categoria: a marca sai do campo "instrução que eu repito" e entra no campo "arquivo que o projeto tem"
Instrução repetida degrada, esquece, muda de sessão pra sessão
Arquivo versionado não
E o sinal de padronização está lá na issue #1008 do anthropics/skills, propondo que a skill frontend-design consuma e produza DESIGN.md conforme a spec aberta. Se isso pegar, o mesmo arquivo serve mais de um agente, e aí o DESIGN.md deixa de ser detalhe de uma ferramenta pra virar interface entre elas
Será que pega? Ainda é cedo pra cravar. Mas formato aberto sob Apache-2.0, com spec pública e outro fornecedor discutindo adoção, é bem mais promissor que schema fechado
Conclusão
O DESIGN.md é, no fim, um contrato entre a sua marca e o agente
De um lado, o frontmatter YAML com tokens tipados e referência {path.to.token} pra máquina não errar valor
Do outro, o corpo em markdown com Overview, Colors e o racional, pra máquina não errar intenção
E dentro do OpenDesign esse contrato é lido por toda skill antes de renderizar, que é o que corta o improviso visual a cada geração
Próximo passo, se você quer sair da teoria: leia a spec em docs/spec.md no repositório google-labs-code/design.md pra entender a gramática do formato, e depois abra a estrutura design-systems/<slug>/ no repositório nexu-io/open-design pra ver o formato aplicado de verdade, com manifest.json, DESIGN.md e tokens.css lado a lado
Ler a spec e depois um exemplo real vale mais que qualquer explicação minha aqui 😀
até o próximo post!
Perguntas frequentes
O DESIGN.md é uma criação do OpenDesign ou funciona em outros agentes também?
É uma especificação aberta, publicada pelo Google Labs em 21 de abril de 2026 como saída do Stitch, sob licença Apache-2.0. O objetivo declarado é virar padrão entre agentes, não ficar preso a uma ferramenta só. Tanto que existe a issue #1008 no repositório anthropics/skills propondo que a skill frontend-design também consuma e produza DESIGN.md conforme essa spec.
Onde fica o arquivo DESIGN.md dentro de um projeto no OpenDesign?
Os design systems moram na pasta design-systems/, organizados por slug. Cada pasta traz três arquivos: manifest.json, DESIGN.md e tokens.css. O DESIGN.md é a prosa canônica, feita para o agente ler.
É obrigatório preencher todos os campos do frontmatter do DESIGN.md?
Não. O frontmatter inteiro é opcional, e as seções previstas (version, name, description, colors, typography, rounded, spacing, components, entre outras) também são. Mas as que você incluir precisam seguir a ordem prevista na spec, e o linter sinaliza quando alguma seção está fora de ordem.
Qual a diferença entre o DESIGN.md do OpenDesign e o Claude Design?
Claude Design é um produto da Anthropic, lançado em 17 de abril de 2026 pelo Anthropic Labs, para gerar protótipos, slides, mockups e one-pagers a partir de prompts, documentos e código. O OpenDesign se posiciona como alternativa open source e local a ele, usando o DESIGN.md como contrato de marca para os agentes de CLI que você já usa, via BYOK.
Dá para gerar um DESIGN.md a partir de um site que já existe?
Sim, o OpenDesign traz a skill brand-extract, que fica em skills/brand-extract/SKILL.md. Ela extrai um Brand Kit completo de um site ao vivo dirigindo o navegador embutido no próprio app.
Quantos design systems prontos o OpenDesign já disponibiliza?
A página de catálogo do OpenDesign anuncia 152 design systems open source disponíveis em /plugins/systems/. Cada um segue a mesma estrutura de pasta, com manifest.json, DESIGN.md e tokens.css.
Formações
Formação Vibe Coding
Do Prompt ao Produto: Crie Software Real com IA
- 474 aulas
- 20 projetos
- 39h 27min
Blog | Mais populares
O que é o OpenDesign? O app open source que transforma seu agente de código em ferramenta de design
O OpenDesign é um app desktop open source que transforma seu agente de código em ferramenta de design: protótipos, slides, imagens e vídeos exportáveis.
Quais CLIs o OpenDesign aceita? Claude Code, Codex, Cursor, OpenCode e o caminho BYOK
OpenDesign CLI: veja quais executáveis o projeto aceita, como Claude Code, Codex, Cursor e OpenCode, além do caminho BYOK para outros modelos.
HyperFrames no OpenDesign: como gerar imagem, motion graphics e vídeo a partir da conversa do projeto
HyperFrames OpenDesign transforma a conversa do projeto em imagem, motion graphics e vídeo com seek determinístico, renderizado local via CLI, sem nuvem.
