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 design | DESIGN.md + tokens | |
|---|---|---|
| Fornece | Julgamento — como decidir | Valores — o que foi decidido |
| Espaçamento | Usa uma escala | Define qual escala |
| Cor | Escolhe algo com bom contraste | Nomeia sua rampa exata |
| Sobrevive a uma nova sessão | Sim, como comportamento | Sim, como os mesmos valores |
| Duas telas combinam | Apenas por coincidência | Por construção |
Reproduza você mesmo
Não aceite isso cegamente — o teste é curto e o resultado é inequívoco.
- 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
Inicie uma sessão genuinamente nova
Não apenas uma nova mensagem — uma nova sessão, para que nada seja transferido.
claude - 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
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
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
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
Aplique o kit desejado
Kits gratuitos não exigem conta.
identityforge apply ambient-sage - 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
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.
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.md | O tema existe no Figma e na cabeça das pessoas | |
|---|---|---|
| O que a skill lê | Seus valores reais | Nada — não há fonte |
| O que ela produz | Componentes do seu sistema | Componentes plausíveis baseados em padrões de biblioteca |
| Entre sessões | Estável — relê a cada vez | Diverge e continua divergindo |
| O que corrigir primeiro | Nada | Os valores ausentes, não a 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
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
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
Referencie-os no AGENTS.md como uma proibição
Never hardcode theme colors, spacing or radii. Use the tokens in DESIGN.md. - 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 skill | Um diretório com um SKILL.md — uma descrição mais instruções | O modelo o carrega quando a descrição corresponde ao que você solicitou |
| Um plugin | Um pacote que pode agrupar skills, comandos, subagentes e hooks | Você o instala uma vez; tudo o que ele agrupa torna-se disponível |
| Uma listagem de marketplace | Uma entrada de índice apontando para um plugin que alguém publicou | Nada é carregado a partir de uma listagem — ela é apenas uma página de catálogo |
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:
- 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. - 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.
- 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.
- 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.