A habilidade de design de frontend do Claude Code: o que ela faz e onde ela falha

A habilidade de design de frontend da Anthropic é genuinamente boa, e a maioria dos textos sobre ela são apenas resumos feitos por pessoas que nunca a instalaram. Veja o que ela altera, o que comprovadamente não altera e a única coisa que você precisa adicionar por conta própria.

Atualizado 2026-07-27

O que a habilidade realmente altera

Uma habilidade é um conjunto de instruções que é carregado quando é relevante, em vez de em cada requisição — a metade sob demanda da stack de arquivos do agente. A habilidade de design de frontend é carregada quando você solicita trabalho de UI e direciona o modelo para padrões (defaults) mais robustos.

Na prática, as diferenças que aparecem com mais consistência são estas, e são reais, não apenas cosméticas:

  • O espaçamento ganha ritmo. Os valores passam a vir de uma escala em vez de serem escolhidos por elemento, fazendo com que o ritmo vertical se mantenha em toda a página.
  • A hierarquia torna-se deliberada. Tamanho, peso e cor são usados em conjunto para separar níveis, em vez de usar apenas o tamanho.
  • Menos layouts com aparência genérica. A grade reflexiva de três cards iguais aparece com menos frequência quando o conteúdo não sugere, de fato, três elementos equivalentes.
  • Estados são tratados. Hover, focus, disabled e erro aparecem sem que sejam solicitados, que é onde a maioria dos componentes gerados é deficitária.

Esse é um salto significativo e é a razão pela qual a habilidade vale a pena ser instalada. É também todo o escopo dela.

A lacuna: bom gosto não é o mesmo que valores

Uma habilidade carrega o *como decidir*. Ela não carrega *o que foi decidido*. Essa distinção parece acadêmica até que você observe duas sessões lado a lado.

A habilidade dirá consistentemente ao modelo que uma ação primária precisa de contraste suficiente em relação à sua superfície e não deve competir com uma secundária. Ela não tem como saber que a sua cor primária é oklch(0.55 0.19 45) — porque você nunca disse a ela, e não há lugar em uma habilidade para que isso resida. Então, ela escolhe algo justificável. Na próxima sessão, ela escolhe outra coisa justificável.

Duas sessões, dois botões bons, dois azuis diferentes. Nenhum deles é um erro. Juntos, eles são um problema de marca.
Habilidade de designDESIGN.md + tokens
ForneceJulgamento — como decidirValores — o que foi decidido
EspaçamentoUsa uma escalaDefine qual escala
CorEscolhe algo com bom contrasteNomeia sua rampa exata
Sobrevive a uma nova sessãoSim, como comportamentoSim, como os mesmos valores
Duas telas combinamApenas por coincidênciaPor construção
Pelo que cada camada é realmente responsável.

Reproduza você mesmo

Não aceite isso cegamente — o teste é curto e o resultado é inequívoco.

  1. 1

    Peça um card de preços em uma sessão nova

    Com a skill ativa e sem um design system presente. Guarde o resultado.

  2. 2

    Inicie uma sessão genuinamente nova

    Não apenas uma nova mensagem — uma nova sessão, para que nada seja transferido.

    claude
  3. 3

    Peça um painel de configurações para o mesmo produto

    Use a mesma descrição sobre o produto, sem referenciar o primeiro componente.

  4. 4

    Compare a diferença entre os dois

    Compare a cor primária, o border radius, o tamanho da fonte base e o espaçamento vertical entre o label e o controle.

  5. 5

    Analise o resultado honestamente

    Ambos parecerão competentes. Em nossos testes, três ou quatro desses quatro valores divergem — e cada um, individualmente, é uma escolha razoável.

Se os seus dois resultados forem muito semelhantes, verifique se algo mais está fornecendo constantes — um arquivo de tema existente, uma biblioteca de componentes já no repo ou uma sessão longa. Esse é o ponto: resultados idênticos significam que os valores vieram de algum lugar durável, não da skill.

Fechando a lacuna

Mantenha a skill. Ela faz um trabalho que nada mais faz. Adicione a camada que ela não consegue conter: um conjunto de tokens mais um DESIGN.md no repo, que o agente lê no início de cada sessão.

A divisão de trabalho fica clara quando ambos estão implementados. O arquivo responde *qual* azul, *qual* radius, *qual* escala tipográfica. A skill responde como compô-los em uma tela que tenha boa leitura. Um não substitui o outro, e o erro comum é assumir que a skill tornou o arquivo desnecessário.

  1. 1

    Instale um kit no repo

    Isso escreve o DESIGN.md e os arquivos de tokens que seu agente irá ler.

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

    Aplique o kit desejado

    Kits gratuitos não exigem conta.

    identityforge apply ambient-sage
  3. 3

    Point AGENTS.md at it

    Uma única linha, para que o contrato de design seja descoberto deliberadamente, e não por acaso.

    Never hardcode theme colors. Use the semantic tokens in DESIGN.md.
  4. 4

    Execute novamente o teste de duas sessões

    Mesmo procedimento de cima. Os valores agora devem coincidir exatamente, pois são lidos em vez de serem decididos novamente.

Preview unavailable here. Browse complete kits in the kit gallery.

Dê à skill algo para manter a consistência

Um kit instala os tokens e o DESIGN.md que a skill de design não consegue carregar. A skill fornece a execução técnica; o arquivo fornece a sua marca.

Ela respeitará a base de código e o tema existentes ou fará as coisas do seu próprio jeito?

Esta é a pergunta que as pessoas realmente fazem sobre skills de design, e quase nada do que foi escrito sobre elas a responde. A resposta honesta: uma skill respeita seu tema apenas na medida em que seu tema existe como valores que ela possa ler. Uma skill consiste em instruções sobre como trabalhar. Ela não é a fonte dos seus valores.

Essa distinção define o resultado em uma base de código existente:

O tema existe como tokens + DESIGN.mdO tema existe no Figma e na cabeça das pessoas
O que a skill lêSeus valores reaisNada — não há fonte
O que ela produzComponentes do seu sistemaComponentes plausíveis baseados em padrões de biblioteca
Entre sessõesEstável — relê a cada vezDiverge e continua divergindo
O que corrigir primeiroNadaOs valores ausentes, não a skill
A mesma skill, em duas bases de código. A diferença não está na skill.

Uma skill não pode fornecer valores que nunca recebeu

Se uma skill produz resultados fora da marca em uma base de código com tema, a causa usual é que o tema não é legível a partir do repositório. Adicionar uma skill melhor não resolve isso. Adicionar os valores, sim.

Existe uma versão mensurável disso. Analisamos 299 arquivos DESIGN.md públicos e descobrimos que, dos 72 que descreviam um sistema visual, 86% não usavam nomes de funções de cores semânticas — eles listavam hexes ou nomeavam cores por matiz. Uma skill que recebe --primary pode aplicar seu sistema a um componente que ninguém descreveu. Uma skill que recebe uma tabela de hexes consegue apenas copiar, e é na cópia que ela começa a adivinhar.

  1. 1

    Verifique se o seu tema é legível

    Procure por um DESIGN.md ou um arquivo de tokens na raiz do repositório. Se a única fonte for o Figma, a skill não terá base para trabalhar.

  2. 2

    Torne os valores semânticos

    Use funções em vez de matizes, para que a skill possa posicioná-los corretamente em casos que você nunca documentou.

  3. 3

    Referencie-os no AGENTS.md como uma proibição

    Never hardcode theme colors, spacing or radii. Use the tokens in DESIGN.md.
  4. 4

    Execute a mesma build em uma nova sessão

    O mesmo primary e o mesmo raio significam que ela está lendo. Aproximações significam que ela está lembrando, e a memória degrada.

Skill, plugin ou um item de marketplace?

A maior parte do conteúdo sobre isso são listas, e essas listas usam os três termos indistintamente. Eles não são a mesma coisa, e a diferença define se o que você instalou consegue sequer ser carregado.

O que éComo chega ao modelo
Uma skillUm diretório com um SKILL.md — uma descrição mais instruçõesO modelo o carrega quando a descrição corresponde ao que você solicitou
Um pluginUm pacote que pode agrupar skills, comandos, subagentes e hooksVocê o instala uma vez; tudo o que ele agrupa torna-se disponível
Uma listagem de marketplaceUma entrada de índice apontando para um plugin que alguém publicouNada é carregado a partir de uma listagem — ela é apenas uma página de catálogo
Três termos usados para a mesma coisa na maioria das listas, e o que cada um realmente é.

A consequência prática é a condição de carregamento. Uma skill é selecionada pelo modelo com base em sua descrição, portanto, ela só atua quando sua solicitação parece um trabalho de design. Peça "uma página de configurações" e ela será acionada. Peça para "corrigir o padding na linha 40" e ela pode não ser, pois isso parece uma edição e não uma tarefa de design — e você receberá uma edição comum, sem o refinamento técnico pelo qual instalou a skill.

Forma simples de saber se ela foi acionada

Execute a mesma solicitação duas vezes em sessões novas: uma redigida como tarefa de design e outra como edição mecânica. Se os resultados diferirem no ritmo do espaçamento e na cobertura de estados, e não apenas na redação, você está vendo a skill ligar e desligar. Essa é a falha que as pessoas relatam como "funciona às vezes".

Quando a skill e o seu DESIGN.md divergem

Esta é a pergunta que as análises comparativas ignoram completamente, e é a que importa quando você tem ambos. Eles conflitam porque são escritos por pessoas diferentes para propósitos diferentes. Seu arquivo diz que a cor primária é oklch(0.55 0.19 45). O julgamento da skill diz que uma cor primária precisa superar um limite de contraste em relação à superfície onde está. Em um card claro, eles concordam. Em sua superfície escura elevada, podem não concordar.

Nenhuma das camadas está errada e não há um árbitro nativo — o modelo resolve a questão e, por padrão, prioriza a instrução que for mais específica e lida mais recentemente. É por isso que a resolução deve ser documentada em vez de presumida:

  1. Valores não são negociáveis; a composição sim. Declare isso no AGENTS.md. O hex, o radius e a escala tipográfica vêm do arquivo. Como eles são organizados na tela é decisão da skill.
  2. Dê ao arquivo a saída de emergência que a skill precisa. O conflito acima só existe porque o sistema tem apenas uma cor primária. Forneça uma primária que seja legível também em suas superfícies escuras, ou um par documentado, e a divergência desaparece em vez de ser julgada a cada sessão.
  3. Escreva proibições, não preferências. "Prefira tokens semânticos" perde para um argumento específico de contraste. "Nunca use cores de tema hardcoded" não perde, pois não deixa margem para ponderação.
  4. Espere silêncio em caso de conflito. O modelo não avisará que sobrescreveu seu token. A única detecção confiável é fazer um grep no diff em busca de valores literais de cor e espaçamento.
# the only conflict detector that actually fires: literals in the diff
git diff | grep -nE '#[0-9a-fA-F]{3,8}|oklch\(|rgb\(|[0-9]+px'

Execute isso em cada diff gerado por um agente. Um resultado limpo significa que os valores foram lidos. Qualquer retorno é um ponto onde o julgamento substituiu silenciosamente uma decisão que você já havia tomado — que é a mesma deriva do teste de duas sessões, apenas chegando por outra porta.

Vale a pena instalar a skill?

Sim. Ela melhora mensuravelmente o refinamento de telas individuais e não custa nada testar. O argumento aqui é contra tratá-la como uma solução completa, não contra a skill em si.

Um design system torna a skill redundante?

Não, e este é o erro simétrico. Tokens dizem ao agente quais valores usar; eles não dizem nada sobre compor uma tela que tenha boa leitura. Projetos com um sistema forte, mas sem orientação de design, produzem layouts alinhados à marca, porém com hierarquia fraca.

Um prompt mais longo resolve a inconsistência entre sessões?

Apenas dentro de uma única sessão, e cada vez menos conforme a sessão cresce. Uma nova sessão começa do zero, portanto, tudo o que você deseja que persista deve estar em um arquivo.

Se eu puder ter apenas um, a skill de design ou um DESIGN.md?

O arquivo, e a diferença é enorme. Sem ele, cada sessão redefine sua marca e o resultado diverge permanentemente. Sem a skill, você obtém telas alinhadas à marca com hierarquia mais fraca, o que é um teto de qualidade e não um problema cumulativo. Resolva o problema cumulativo primeiro.

Isso se aplica ao Cursor e a outros agentes também?

A skill específica é do Claude Code, mas a natureza da lacuna não é. Qualquer mecanismo que aplique julgamento de design sem valores de design produz a mesma inconsistência entre sessões.