stamatios
← Voltar ao feed
Espelho refletindo fileira de blocos de componentes de interface em sincronia, espelho de design system para o Claude Design
Dev & Engenharia

Comando /design-sync cria espelho renderizado do design system para o Claude

resumo de ~3 min

O problema: ferramentas de design reinventam os componentes

Ferramentas de design com IA como o Claude Design, da Anthropic, transformam um prompt em tela completa em segundos, mas não conhecem o design system do usuário. Sem isso, elas criam botões e outros elementos com classes escolhidas à mão que apenas imitam os componentes reais - o resultado parece suficiente para aprovar, mas exige que um desenvolvedor reconstrua cada peça depois.

O espelho: como funciona o design sync

O comando /design-sync, executado no Claude Code dentro do repositório, cria um "espelho" do design system dentro do Claude Design: uma cópia compilada e autorrenderizável da biblioteca, com um bundle de componentes, a folha de estilo, fontes e uma cópia do React para os componentes funcionarem sozinhos. Cada componente recebe uma pasta de tipos (props e variantes), uma página de pré-visualização e um guia de uso gerado. O espelho não inclui os arquivos-fonte e é uma fotografia unidirecional: mudanças no código só aparecem após nova execução do /design-sync, e componentes removidos podem permanecer no espelho mesmo após re-sincronização.

A qualidade do espelho depende da renderização: um componente sem folha de estilo chega sem estilização e todo design construído sobre ele herda o erro. A pergunta central do artigo é se cada componente aparece no Claude Design exatamente como aparece no produto.

Verificação automática e papel do Storybook

Antes de enviar, o sync abre cada pré-visualização em navegador real, tira screenshots e avalia o resultado. Sem referência, cada card é julgado isoladamente contra um rubric. Com um Storybook no repositório, as stories viram as pré-visualizações e servem de referência: o Claude compara lado a lado cada preview com a story correspondente, atribui nota (match, close ou mismatch) e corrige o que consegue antes do upload. Um "close" não é aprovação, e o autor alerta que algumas falhas são de enquadramento, não de estilo - por isso o humano precisa revisar as notas.

Tutorial com shadcn/ui, Tailwind v4 e Storybook

O artigo constrói um design system mínimo com três componentes shadcn (Button, Card e Input), Tailwind v4 e Storybook. Pontos-chave do processo:

  • Arquivo de entrada e tipos: o sync empacota um único entry file; componente não exportado ali simplesmente não chega ao Claude Design, sem aviso. As definições de tipo são obrigatórias - sem elas, o sync não encontra componentes e descarta as stories.
  • Folha de estilo compilada: o Storybook com o plugin Vite não gera CSS real, então o sync usa a Tailwind CLI para produzir um ds.css. É essencial importar os tokens como string (@import './tokens.css') e não com url(), pois só o import inline carrega os tokens após o upload.
  • Safelisting de utilitários de layout: o CSS compilado só contém classes presentes nos fontes. A diretiva @source inline(...) do Tailwind v4.1 gera utilitários de layout (grid, gap, espaçamentos, cores) que o Claude escreverá ao compor telas - sem isso, os layouts silenciosamente perdem a estrutura.
  • Fontes: fontes importadas do CSS apontam para node_modules e não sobrevivem ao upload; listá-las em extraFonts faz o sync copiar os arquivos woff2 e reescrever as regras @font-face.
  • Arquivo de convenções: o README com regras de uso (não estilizar manualmente, usar variant e size, compor o Card com subcomponentes, mesclar classes com cn()) evita que o Claude escreva

No exemplo do autor, as nove stories vieram como match. Um pedido de tela de login resultou em composição com Card, CardHeader e Button variant="outline", sem divs feitas à mão - tudo alinhado ao produto.

Repositórios maiores e observações finais

Em monorepos, o entry precisa do caminho completo a partir da raiz, enquanto o cssEntry fica relativo ao diretório do pacote. Com múltiplas fontes, uma entrada extraFonts por folha Fontsource. O artigo recomenda versionar a configuração, as convenções e o NOTES.md, e ignorar no git os artefatos gerados.

A conclusão é que enviar o design system é a parte fácil - garantir que cada componente pareça correto do outro lado é onde está o trabalho real.