Frontends com Vibecoding · Capítulo 28 de 33 · 41 min
Aplicar direção de arte, UX writing e padrões de código
Direção de arte, regra de texto e padrão de componente passam a viver em skills do projeto, travadas por uma guarda que barra o código que as ignora.
Este capítulo faz parte do curso gratuito Frontends com Vibecoding.
A skill frontend-design existe para impedir que a tela saia com a cara de qualquer outra tela gerada. Ela consegue isso em duas passadas: primeiro o plano, depois o código. O padrão mais denunciador é o fundo creme com acento terracota, que é a cor da interface do próprio Claude.
Ela ancora cada tela no assunto do negócio e corta o texto de preenchimento. No fim, devolve o processo inteiro documentado, do plano de cores à autocrítica. Isso deixa a decisão visível antes de virar código.
O primeiro movimento da skill é ancorar a tela no assunto. Quando o briefing não diz o que o produto é, o agente propõe um assunto concreto, o público e o trabalho principal da tela. Depois confirma com você antes de desenhar.
As escolhas visuais nascem da indústria, dos materiais e do vocabulário do negócio, porque é isso que separa uma tela da outra. Um brinquedo para meninas de oito a onze anos e um painel para analistas financeiros não podem sair parecidos. Todo o conteúdo usa o material real do briefing, em vez de texto de preenchimento.
- Etapa 1 de 4: 1. Plano compacto de tokens
cor em quatro a seis hex nomeados; tipografia e papéis; layout em uma frase, com wireframe em texto e alinhamento; princípios
- Etapa 2 de 4: 2. Revisão contra o briefing
um briefing parecido daria o mesmo resultado? o que mudou e por quê
- Etapa 3 de 4: 3. Código
segue o plano revisado; seletores que não se cancelam
- Etapa 4 de 4: 4. Autocrítica
ousadia num lugar só, piso de qualidade, print, tirar um acessório, notas do que tentou
O hero, a primeira parte da página, vista antes de qualquer rolagem, abre com a coisa mais característica do assunto: manchete, imagem ou demonstração ao vivo. O número gigante com rótulo pequeno e um acento em gradiente é o tratamento automático, e só entra se for mesmo a melhor opção.
A tipografia carrega a personalidade da página. Use uma família de letras, ou duas claramente distintas; defina a escala de tamanhos de propósito e mantenha a linha abaixo de 80 caracteres. A serifa aceita linha um pouco mais longa e pede mais espaço entre as linhas.
Três tiques denunciam página gerada por máquina. Uma só palavra da manchete em itálico, negrito ou outra cor. Rótulos inteiros em caixa alta. E etiquetas colocadas acima de um conteúdo que dispensava etiqueta.
Se a figura ultrapassar a área visível, deslize para os lados. Pelo teclado, foque a figura e use as setas.
Estrutura visual carrega informação, então cada traço precisa dizer algo. Borda, numeração, etiqueta pequena acima do título, divisória e rótulo entram para codificar alguma coisa sobre o conteúdo. A numeração 01, 02, 03 só cabe quando o conteúdo é mesmo uma sequência, como um processo em etapas.
Movimento que ninguém pediu entra num único momento combinado, como a abertura da página. Entrada com desvanecimento em toda seção é o comportamento automático, e se lê como gerado. Movimento que responde a uma ação da pessoa é bem-vindo, porque mostra o que mudou. O texto da tela também é material de design, e é o assunto da aula seguinte.
A skill lista cinco padrões em que a tela gerada se agrupa hoje, e reconhecê-los de longe salva a sua. O primeiro é o creme com serifa de exibição e acento terracota, a cor da interface do Claude, que num projeto seu denuncia a origem. O segundo é o quase-preto com um único acento verde-ácido ou vermelhão.
O terceiro imita jornal de folha larga, com fios finos, cantos retos e colunas densas. O quarto é o kit de cartões de software: tudo vira cartão igual, com o mesmo arredondamento e a mesma sombra cinza. O gradiente entra como pura decoração.
Fecha a lista o quinto, o acabamento de template, que aparece seja qual for o assunto. Ele reúne a etiqueta em caixa alta e espaçada, os metadados unidos por ponto médio e o rótulo em palavra seguida de fragmento. Completam o kit a monoespaçada em rótulo de dado e a seta no fim do botão.
Se a figura ultrapassar a área visível, deslize para os lados. Pelo teclado, foque a figura e use as setas.
Todos os cinco são legítimos para algum briefing. A regra da skill é que o briefing vence: quando ele fixa uma direção, o agente segue ao pé da letra, mesmo que peça um desses cinco. Quando o briefing deixa um eixo livre, essa liberdade não pode ser gasta num padrão automático.
O trabalho vem em duas passadas. Na primeira, o agente escreve um plano curto de tokens, os valores de design guardados com nome, como a etiqueta na lata de tinta. O plano traz a cor em quatro a seis valores nomeados, a tipografia com o papel de cada família e o layout em uma frase.
A segunda passada revisa esse plano contra o briefing. O agente pergunta se um briefing parecido daria o mesmo resultado, corrige o que parecer automático e diz o que mudou e por quê. Só então escreve o código, cuidando para que uma regra de estilo não cancele a outra.
Laboratório ao vivo: o default e a escolha
1. O default que qualquer gerador produz
Cenário ilustrativo: Ateliê Tarumã, cerâmica utilitária
Curso · Ateliê
Turma de torno para iniciantes
8
vagas por turma
Suporte: HTML e CSS de qualquer navegador. O que denuncia: eyebrow em caixa alta espaçada, metadados por ponto médio em monoespaçada, número gigante com rótulo pequeno e faixa em gradiente, o mesmo raio em tudo, sombra cinza uniforme e a seta no fim do botão.
2. A escolha derivada do briefing
Cenário ilustrativo: o mesmo conteúdo, nas duas passadas da skill
- Cor
- papel, tinta, vidrado e cinza de forno: quatro valores nomeados, com o hex fixado no projeto
- Tipo
- uma serifa de baixo contraste para tudo, porque o ateliê imprime as etiquetas em tipografia de chumbo; escala 26, 18 e 14
- Layout
- uma coluna alinhada à esquerda, com o dado separado por um fio só
[ título em duas linhas ] [ apoio ] ------------------------- [ o dado, como frase ] [ botão ]
- Princípios
- o dado é frase, o botão diz o que acontece, estrutura só onde informa
- Revisão
- um briefing parecido daria o mesmo resultado? o número gigante saiu, a etiqueta em caixa alta saiu
Aprenda a centrar o barro em quatro sábados
Turma de torno para quem nunca sentou numa roda, com no máximo oito pessoas por vez.
Sobram três das oito vagas da turma de outubro.
Suporte: o alternador roda na pseudo-classe :has() do navegador atual, sem JavaScript. Sem :has(), plano e tela aparecem juntos, um abaixo do outro.
3. Os cinco defaults que a skill lista, para reconhecer de longe
- Creme perto de #F4F1EA, serifa de display e terracota perto de #D97757, o acento da própria interface do Claude.
- Quase-preto com um único acento verde-ácido ou vermelhão.
- Broadsheet: fios capilares, raio zero e colunas densas de jornal.
- Kit de cartões SaaS: um raio para tudo, a mesma sombra rgba(0,0,0,.1) sob cada cartão e lavagens de gradiente.
- Template chrome: eyebrow em caixa alta, metadados por ponto médio, rótulo PALAVRA seguida de travessão e fragmento, quase-preto tingido #0B0B0B ou #111, monoespaçada em rótulo de dado e a seta no fim do botão.
Suporte: texto puro. Nenhuma dessas cores está pintada nesta página; os hex aparecem só como texto.
Se a figura ultrapassar a área visível, deslize para os lados. Pelo teclado, foque a figura e use as setas.
A autocrítica fecha o processo. A ousadia vai num lugar só, e o resto fica quieto e disciplinado. O piso de qualidade entra sem anúncio: a tela funciona no celular, o foco fica visível para quem navega pelo teclado. O movimento reduzido é respeitado e o contraste permite ler o texto.
O agente tira um print da tela, revisa a própria entrega e retira um elemento antes de fechar. E anota o que já tentou, para a passada seguinte começar de outro lugar.
Se a figura ultrapassar a área visível, deslize para os lados. Pelo teclado, foque a figura e use as setas.
Nos dois caminhos o custo da geração é o mesmo, então a diferença está só no pedido. Num ateliê de cerâmica que vende turmas de torno, o pedido sem a skill devolve o cartão genérico. Com o plano revisado, a manchete vira aprender a centrar o barro e o botão diz o que acontece ao clicar.
Peça a primeira passada só com o plano: a cor em valores nomeados, a tipografia com o papel de cada família e o layout em uma frase. Revise esse plano contra o briefing antes de pedir qualquer código.
Só aprove a tela depois de conferir os cinco padrões contra o resultado pronto. Qualquer um que apareça volta para o agente citado pelo nome, porque nome vago devolve correção vaga.
Escrever a regra da marca uma vez e travar quem a ignora
A direção estética já vem revisada em duas passadas, e o texto da interface e a regra de marca ainda dependem de uma skill do projeto com guarda automática.
A regra de marca só passa a valer quando uma guarda automática a verifica antes de a alteração ser registrada. Escrita apenas no arquivo de memória do projeto, ela convive com o botão Submeter e o aviso Erro 500 na tela entregue ao cliente.
Escrita uma vez numa skill do projeto, a pasta de instruções que o agente relê, e travada por essa guarda, a regra vale para toda tela seguinte. Ninguém precisa lembrar dela.
Se a figura ultrapassar a área visível, deslize para os lados. Pelo teclado, foque a figura e use as setas.
A memória do projeto é um arquivo de texto na raiz da pasta, que o agente relê antes de começar qualquer pedido. Nele entram a stack do site, que é o conjunto de tecnologias em uso, os comandos que já existem e as regras que você não quer repetir.
Cada regra precisa descrever um estado conferível no arquivo pronto. Escreva bom código não muda nada na saída. Texto secundário usa o tom seiscentos, nunca o quatrocentos muda cada geração seguinte, porque descreve algo que você confere olhando o resultado.
A política de uso de CSS entra na mesma memória, em três níveis. O agente aprendeu com código de dois anos atrás e não sugere recurso novo por conta própria.
O recurso amplamente disponível entra livre: a consulta de contêiner por tamanho, desde agosto de 2025, e a caixa de diálogo nativa, desde setembro de 2024. O seletor :has() entrou nesse grupo em junho de 2026.
Já o recém-disponível entra atrás de uma verificação de suporte, com plano B que continue servindo. O que fica fora do Baseline, o rótulo público que diz o quanto um recurso já é suportado pelos navegadores, só entra quando você pede pelo nome. Ele entra como melhoria que some em silêncio onde não existe.
Se a figura ultrapassar a área visível, deslize para os lados. Pelo teclado, foque a figura e use as setas.
As palavras da tela existem por um motivo só: tornar a tela mais fácil de entender e usar. Elas recebem o mesmo cuidado que o espaçamento e a cor. A skill frontend-design manda escrever do ponto de vista de quem usa: a pessoa gerencia notificações, e configurar webhook é linguagem do sistema.
Descreva o que a coisa é ou faz, em vez de vender, e use voz ativa por padrão. O botão diz exatamente o que acontece ao ser tocado, Salvar alterações em vez de Enviar. A ação mantém o mesmo nome no fluxo inteiro, então Publicar gera o aviso Publicado.
Erro e tela vazia são momentos de direção. O erro explica o que houve e como resolver, sem pedir desculpa e sem vagueza; a tela vazia convida a agir. O tom é conversado, só com a primeira letra da frase em maiúscula, e cada elemento escrito faz um trabalho só.
O texto da interface: como o sistema fala e como a pessoa entende
Como o sistema fala
evitar
- Configurar webhook
- Enviar
- Publicar, e o aviso diz Sucesso!
- Erro 500. Desculpe, algo deu errado.
- Nenhum registro encontrado.
- GERENCIE SUAS PREFERÊNCIAS AGORA
Como a pessoa entende
usar
- Gerenciar notificações
- Salvar alterações
- Publicar, e o aviso diz Publicado
- Não conseguimos salvar o processo. Confira a conexão e tente de novo.
- Cadastre o primeiro cliente para ver a lista aqui.
- Gerenciar preferências
A forma durável dessa regra é uma skill do projeto, guardada numa pasta própria dentro do repositório. O cabeçalho traz o nome e uma descrição insistente, para ela disparar em toda tela, componente ou texto do negócio. O corpo traz as cores, a tipografia, as proibições e as regras de texto, tudo conferível.
Escrever resolve metade, porque o agente esquece no meio de uma sessão longa. A outra metade é a guarda automática, o gancho que amarra uma verificação a um evento fixo. Ela formata ao salvar e, antes de registrar a alteração, roda a checagem de tipo, o estilo e a montagem do site, mais o script da marca.
A skill-creator do mesmo catálogo ensina a testar a skill com pedidos reais e a reescrever a descrição quando ela deixa de disparar.
---
name: marca-lauda-advocacia
description: Use SEMPRE que criar ou alterar tela, componente, e-mail ou texto de interface do escritório Lauda Advocacia, mesmo que o pedido não cite marca, cor ou tom.
---
# Marca Lauda Advocacia: regras conferíveis
## Tokens (src/styles/tokens.css)
- Cor: papel #FFFFFF, tinta #14213D, lacre #8A1C1C (só na ação principal), grafite #5C5C5C
- Tipo: Source Serif 4 em tudo, uma família só; escala 14, 16, 20, 28 e 40 px
- Linha de texto até 72 caracteres; entrelinha 1,6 no corpo
## Proibições
- Eyebrow em caixa alta, metadados por ponto médio, seta no fim do botão
- Sombra em cartão, um raio único em tudo, gradiente como decoração
- Numeração 01/02/03 fora de sequência real
## Copy
- Nomear pelo que o cliente entende: "acompanhar meu processo" em vez de "consultar andamentos"
- Botão diz o que acontece: "Enviar documentos" em vez de "Submeter"
- Mesmo nome no fluxo inteiro: "Agendar" gera "Agendado"
- Erro diz o que houve e como resolver, sem pedir desculpa; tela vazia convida a agir
## Guarda
- Antes de registrar alteração: npm run verify e node scripts/check-marca.mjsSe a figura ultrapassar a área visível, deslize para os lados. Pelo teclado, foque a figura e use as setas.
Peça ao agente o retrato real do projeto, sem regra que ele não segue. Escreva a skill de marca numa pasta do repositório, com cores, proibições e regras de texto conferíveis.
Ligue a guarda que roda o verificador e o script da marca antes de cada registro. Depois force um erro de propósito, como um botão com seta no fim; se a guarda deixar passar, ela ainda não está amarrada ao evento certo.
Reconhecer o componente que o agente devolve e onde cada dado mora
Com marca e texto travados por guarda, sobra reconhecer os cinco padrões de componente que voltam do agente e decidir onde cada dado mora na tela.
Um componente cheio de useMemo e useCallback é sinal de código de dois anos atrás, porque o React Compiler faz essa otimização sozinho desde 2025. React é a biblioteca que monta a tela em peças reaproveitáveis, e o compilador é o passo que reescreve o código antes de ele rodar.
Toda versão do React de 19.0.0 a 19.2.2 carrega a falha de segurança CVE-2025-55182, e conferir a versão instalada é a primeira linha de qualquer revisão. A estável no fechamento desta aula é a 19.2.8.
Se a figura ultrapassar a área visível, deslize para os lados. Pelo teclado, foque a figura e use as setas.
Quase todo componente que o agente devolve segue um de cinco padrões, e quase todo dado da tela mora em um de cinco lugares. Reconhecer os dois encurta a revisão, porque você passa a aprovar ou devolver com motivo escrito.
Um componente é a peça reutilizável da tela, como um cartão ou um campo de formulário. O primeiro padrão é o componente com props, as entradas que ele recebe e a partir das quais decide a aparência. O segundo é a composição, em que o invólucro cuida da borda e do espaçamento e o conteúdo entra de fora.
O terceiro é o estado local, o valor que a peça guarda enquanto a pessoa mexe nela, atualizado sempre a partir do valor anterior. O quarto é a lista, cuja chave vem do identificador do item, nunca da posição, e que trata o caso vazio. O quinto é o campo controlado, que valida enquanto a pessoa digita.
Os cinco padrões, e o que reprovar na revisão de cada um
| Padrão | Quando usar | Reprove quando |
|---|---|---|
| Componente com props | A peça tem poucas variações declaradas | A lista de props passou de meia dúzia e cresce a cada tela |
| Composição por children | O invólucro cuida do enquadramento | O invólucro recebe props do que ele carrega |
| Estado local (useState) | O valor muda com a interação | O DOM é alterado na mão em vez de reconciliado |
| Lista com map e key | A coleção é renderizada item a item | A key é o índice do array, ou a lista vazia não tem tratamento |
| Campo controlado | A entrada precisa validar enquanto a pessoa digita | O erro aparece só em cor, ou só depois do envio |
Fonte: Régua de revisão do autor, aplicada a componente gerado por agente.
O compilador muda o que reprovar na revisão, porque a otimização escrita à mão virou ruído. Ele entrou na versão 19.2 junto com outros recursos novos.
Ligue o eslint-plugin-react-compiler no projeto. Ele acusa a violação de regra na hora, antes de o compilador desistir daquele componente em silêncio e você perder o ganho sem saber.
Todo dado novo pertence a um de cinco lugares, e errar o lugar é a causa comum de tela que mostra número desatualizado. O local mora dentro do componente. O derivado se calcula na hora de desenhar e nunca se guarda, porque guardar cria duas versões do mesmo número.
O compartilhado atravessa telas sem vir do servidor. O de servidor vive no sistema, e a tela guarda só uma cópia temporária. Filtro, aba, ordenação e página têm o quinto lugar, o endereço da tela, o que deixa o link reproduzir exatamente o que a pessoa está vendo.
Onde cada dado mora, e a ferramenta que atende cada lugar
| Onde o dado mora | Ferramenta | Escolha quando | Evite quando |
|---|---|---|---|
| Local | useState | Só um componente lê e escreve o valor | Outra tela precisa do mesmo valor |
| Derivado | Cálculo na renderização | Sai de outro dado, como total ou lista filtrada | Sempre que a tentação for guardar: a segunda versão atrasa |
| Compartilhado leve | Zustand ou Jotai | Tema, sessão, carrinho, com pouco boilerplate | Cada mudança precisa de trilha auditável |
| Compartilhado auditável | Redux Toolkit | Fluxo regulado que exige histórico de cada ação | Projeto pequeno, em que o cerimonial custa mais que rende |
| Reativo fino | @preact/signals-react | Painel que atualiza dezenas de valores por segundo sem redesenhar a tela | Time que ainda não domina o modelo de renderização do React |
| Fluxo de eventos | RxJS | Vários fluxos combinados, como cotação ao vivo com filtro e retentativa | Um único fetch ou um formulário: o operador custa mais que a tela |
| De servidor | TanStack Query ou SWR | Lista de produtos, perfil, qualquer dado de que o sistema é dono | Guardado em useState com useEffect de fetch |
| De endereço | nuqs | Filtro, aba, ordenação e página, para o link reproduzir a tela | Dado sensível, que não pode aparecer na URL |
Fonte: Manual de referência Recursos de frontend moderno, edição setembro de 2026, seções 21 e 27.
Três peças do manual de setembro de 2026 completam a bancada. React Aria Components entra como opção direta de componente acessível sem estilo, e vale quando teclado e leitor de tela precisam vir prontos.
A resposta de um modelo de linguagem chega em pedaços. A tela mostra o texto conforme ele chega, mantém o aviso de que está gerando e oferece o botão de parar. O MSW, o interceptador que devolve respostas falsas no lugar da API durante o teste, permite testar esse componente sem depender do sistema real.
Tela com IA precisa de cinco componentes, pelos cinco padrões de Agent UX do manual. São o plano visível antes da execução, o uso de ferramentas exposto, a memória exibida, o acompanhamento de cada etapa e a rota clara de recuperação de erro.
Para um protótipo que precisa viajar num arquivo só, a skill web-artifacts-builder empacota React, Vite, Tailwind e shadcn/ui num único HTML. O Tailwind, a biblioteca que aplica estilo por nomes de classe curtos, escreve esse estilo dentro da própria marcação. A stack dessa skill é datada frente ao React 19 e ao Tailwind 4 deste curso.
Se a figura ultrapassar a área visível, deslize para os lados. Pelo teclado, foque a figura e use as setas.
Numa loja de bicicletas com painel de ordens de serviço, o cartão que troca de cor pelo status é o padrão de props. A lista vem do servidor, e o filtro por mecânico mora no endereço da tela. Se o agente devolver seis estados locais sincronizados na mão, devolva citando a linha da tabela.
Trocar o modelo de IA não conserta a segurança do que ele escreve. Na comparação de dois anos da Veracode, modelos mais novos melhoraram a sintaxe sem melhorar a segurança. A pior classe foi o cross-site scripting, a injeção de código estranho na página, que é justamente o risco de toda tela que mostra conteúdo vindo de fora.
Confira a versão do React no arquivo de dependências e aplique a correção da falha CVE-2025-55182 antes de revisar qualquer componente. Ligue o eslint-plugin-react-compiler no mesmo passo.
Classifique cada pedaço de estado pela tabela: o derivado vai para o cálculo e o filtro vai para o endereço da tela. Teste todo componente assíncrono com o MSW, simulando resposta lenta, erro e lista vazia, e revise à mão o trecho que mostra conteúdo vindo de fora.
Guia prático: um vocabulário de comandos para dirigir o desenho
Pedir ao agente que deixe a tela mais bonita devolve qualquer coisa. A skill Impeccable troca o adjetivo por um verbo com escopo: cada um dos seus 24 comandos nomeia um tipo de trabalho, carrega um roteiro próprio e mexe só no que aquele trabalho pede. Você digita /impeccable, o comando e o alvo.
Dois arquivos sustentam os comandos. PRODUCT.md guarda o que não muda de tela para tela: quem usa, para fazer o quê, com quais restrições e provas. DESIGN.md guarda o sistema visual que já existe no código, com os tokens, valores nomeados de cor, fonte e espaçamento, em formato que a máquina lê e até oito seções de regras de uso. Sem o primeiro, o agente desenha para um público genérico; sem o segundo, inventa uma identidade nova a cada pedido.
A skill também pede que você diga o que é sucesso naquela tela, em quatro modos. Persuadir vale para página de campanha e de preço, onde a pessoa decide e age. Operar vale para painel, formulário e configuração, onde ela conclui uma tarefa. Ler vale para artigo, guia e documentação. Vivenciar vale para portfólio e galeria. A página de vendas de uma ferramenta é do modo persuadir, mesmo que a ferramenta seja do modo operar.
ANTES DE DESENHAR
/impeccable init entrevista curta e grava PRODUCT.md
/impeccable document lê o código e grava DESIGN.md
/impeccable shape checkout planeja a tela e devolve um briefing, sem código
AVALIAR O QUE EXISTE
/impeccable critique landing revisão de UX: hierarquia, clareza, carga de leitura
/impeccable audit blog conferência técnica com nota de 0 a 20
AJUSTAR UM EIXO POR VEZ
/impeccable typeset artigo fontes, hierarquia, tamanho e largura da linha
/impeccable layout painel espaçamento, agrupamento e ritmo
/impeccable colorize relatorio cor com função em tela monocromática
/impeccable clarify cadastro rótulos, mensagens de erro e textos de botão
/impeccable adapt tabela a mesma tela em outros tamanhos
/impeccable animate onboarding movimento com propósito
CALIBRAR A INTENSIDADE
/impeccable bolder hero tela tímida ganha presença
/impeccable quieter hero tela gritando baixa o tom
/impeccable distill formulario tira o que não é essencial
PREPARAR PARA O MUNDO REAL
/impeccable harden checkout erros, texto longo, lista vazia, rede lenta
/impeccable onboard painel primeira visita e telas vazias
/impeccable optimize home desempenho de carga e de interação
/impeccable polish settings passe final antes de publicarDono de uma loja virtual de cafés especiais, que mantém o site com um agente de código e sem designer na equipe
Comércio eletrônico, assinatura mensal
Dor
Cada pedido de ajuste na página de assinatura voltava com outra cara: fonte nova, botão de outra cor, cartões onde antes havia lista. O site parecia feito por cinco pessoas.
Solução
Ele rodou init e document uma vez, revisou os dois arquivos e passou a pedir por comando: critique para saber o que estava fraco, typeset e layout para corrigir, polish antes de publicar.
Resultado
Os pedidos seguintes preservaram fonte, cor e componentes, porque o agente lia DESIGN.md antes de editar. A revisão de cada entrega caiu para a leitura do que o comando disse que mudaria.
Cenário construído para fins didáticos. Números não correspondem a cliente específico.
Da instalação ao primeiro passe final
Sete passos, na ordem em que a skill foi pensada: contexto, plano, construção, avaliação e acabamento.
Passo 1: Instale na raiz do projeto
npx impeccable install detecta o agente em uso e pergunta se a instalação vale só para o projeto ou para a máquina. No Claude Code também existe o caminho /plugin marketplace add pbakaus/impeccable.
Deu certo quando: Depois de reabrir o agente, /impeccable aparece na lista de comandos.
Erro comum: Instalar na máquina inteira e esquecer que colegas do repositório não têm a skill.
Passo 2: Rode init e responda o que só você sabe
O comando lê o repositório primeiro e pergunta apenas o que falta: quem é o usuário principal, o que o produto torna possível e quais restrições são fixas. Ele não pergunta cor nem fonte.
Deu certo quando: PRODUCT.md existe na raiz, com público, tarefa, restrições e termos do negócio em frases que você reconhece.
Erro comum: Aceitar o arquivo sem ler e deixar uma suposição do agente virar verdade do produto.
Passo 3: Rode document se já existe tela publicada
Ele extrai cores, tipografia, raios, espaçamento e componentes do código e grava DESIGN.md. Se o arquivo já existir, o comando mostra o atual e pergunta antes de substituir.
Deu certo quando: Os tokens do arquivo batem com os valores do CSS e nenhuma seção descreve algo que o site não tem.
Erro comum: Gerar DESIGN.md num projeto vazio e documentar uma identidade que ninguém escolheu.
Passo 4: Planeje a tela nova com shape
São duas ou três perguntas por rodada sobre propósito, pessoas, conteúdo real e estados. A saída é um briefing de sete itens, do público às restrições, para você confirmar. Nenhum código é escrito.
Deu certo quando: O briefing nomeia a ação principal da tela e o que deve ficar intocado.
Erro comum: Pular o plano e descobrir no terceiro ajuste que a tela não tinha estado de erro.
Passo 5: Peça a construção com o briefing aprovado
Escreva o pedido em linguagem comum depois de /impeccable. A skill confere contraste, largura de linha, estados e texto real em rodadas fechadas: constrói, inspeciona computador e celular juntos, corrige em lote e para.
Deu certo quando: A entrega vem com os estados de vazio, carregando e erro, e com os dois tamanhos conferidos.
Erro comum: Pedir revisões sem fim da mesma tela; a própria skill limita o ciclo para não gastar crédito à toa.
Passo 6: Avalie com critique antes de ajustar
O comando faz duas avaliações separadas, a de design e a do detector, e só depois junta as duas, para a contagem mecânica não contaminar o julgamento. O resultado fica salvo e vira a fila de trabalho do polish.
Deu certo quando: Você recebe poucos problemas prioritários, cada um com o comando sugerido para resolver.
Erro comum: Aplicar todos os comandos sugeridos de uma vez e não saber qual deles melhorou a tela.
Passo 7: Feche com polish
O passe final corrige na ordem do que mais prejudica: tarefa quebrada, estados ausentes, desvio do sistema, inconsistência visual e, por último, limpeza de código. Ele refina e não redesenha.
Deu certo quando: O diff mostra ajustes pequenos e coerentes, sem identidade nova nem texto factual trocado.
Erro comum: Usar polish para mudar o conceito da tela; para isso existem bolder e o pedido de redesenho.
No fim você tem: Um projeto com PRODUCT.md e DESIGN.md revisados por você, uma tela planejada antes do código e um passe final que preserva a identidade.
Três recursos ficam para quando o básico estiver rodando. O modo live abre variantes de um elemento no navegador e troca uma pela outra na hora; exige o projeto rodando na sua máquina e não funciona sobre o site publicado. O comando hooks liga o detector a cada arquivo de interface que o agente edita, por projeto, e vale combinar com a equipe antes, porque passa a valer para toda sessão naquele repositório. E /impeccable pin audit cria o atalho /audit para o comando que você mais usa.
A skill tem uma lista de recusas que ajuda a ler qualquer tela gerada: cartões iguais de ícone, título e texto como estrutura da página, número gigante com rótulo pequeno no topo, texto em gradiente, vidro fosco como enfeite, fonte monoespaçada para parecer técnico e emoji no lugar de ícone. Um briefing pode pedir qualquer um deles de propósito. O defeito é usá-los sem ter decidido.
Guia prático: do estilo aprovado à receita que vira skill
Um estilo aprovado numa conversa some na conversa seguinte. O curso estudado em 07/10/2026 guarda cada estilo de edição numa receita reutilizável, e a forma dela serve igual para tela. São 11 receitas, de 212 a 302 linhas cada, todas com o mesmo esqueleto: um cabeçalho com para que serve, o formato e o que precisa; uma frase que resume o estilo; quando usar e quando não usar; de 10 a 14 regras numeradas, imperativas e com medida; tipografia com peso e tamanho; componentes com tempo e curva de entrada; as armadilhas já pagas; e o código de partida, para o próximo trabalho começar do mais parecido e não do zero.
A receita guarda a gramática e deixa o conteúdo mudar. No lugar do texto de exemplo, ela diz que tipo de mensagem entra em cada bloco. É isso que a transforma em skill: a pasta com o SKILL.md, a receita e o código de partida, que o agente lê toda vez que o pedido combina com a descrição.
Para personas e skills prontas, o estudo mediu um catálogo de 2.092 assistentes de texto, de 708 autores. Formatos: 637 personas, 446 tarefas, 358 de imagem, 353 skills, 154 estruturados e 144 de sistema. A nota de qualidade vai de 0 a 3, e só 211 (10%) têm nota 3; 1.819 ficam em 1 ou 2. Só 158 são marcados para desenvolvedores. Em marketing são 62, com 3 de nota máxima; em design, 302, com 47. Catálogo grande é ponto de partida para curadoria, não prateleira de uso direto.
Transforme a tela aprovada [ENDEREÇO OU ARQUIVO] numa receita reutilizável.
Não copie o texto da tela; diga que tipo de mensagem entra em cada bloco.
Estrutura da receita:
1. Cabeçalho: nome, para que serve, formato, o que precisa.
2. Em uma frase: o estilo.
3. Quando usar e quando NÃO usar, com critério que dê para conferir.
4. Regras numeradas R01 a R12, imperativas e com medida (px, ms, proporção).
5. Tipografia: família, peso e tamanho por papel.
6. Componentes: quando entra, o que mostra, duração e curva de entrada.
7. Armadilhas: o que já deu errado e como evitar.
8. Código de partida: os arquivos mínimos para começar a próxima tela.
Depois proponha a pasta .claude/skills/[NOME]/ com o SKILL.md
e uma descrição que dispare quando eu pedir tela deste tipo.Da tela aprovada à skill do projeto, com curadoria de fora
Cinco passos. A receita sai do que você aprovou; o catálogo externo entra só depois de filtrado.
Passo 1: Escolha uma tela aprovada e já publicada
A receita nasce de algo que passou pela revisão e pelo cliente, e não de um rascunho. Junte o endereço, o DESIGN.md e as notas de ajuste que a tela recebeu.
Deu certo quando: Você tem a tela, o DESIGN.md e a lista de ajustes num lugar só.
Erro comum: Fazer receita de um estilo que ainda está em discussão.
Passo 2: Peça a receita com medidas
Use o pedido do bloco acima. Toda regra precisa de número: espaço em px, duração em ms, proporção entre seções. Regra sem medida volta para reescrita.
Deu certo quando: As regras numeradas podem ser conferidas por alguém que não fez a tela.
Erro comum: Aceitar regras como "visual limpo e moderno", que o agente interpreta do jeito que quiser.
Passo 3: Escreva o quando não usar
Diga em que tipo de página o estilo atrapalha: muito texto, tom sóbrio, público que precisa de leitura lenta. É o que impede o agente de aplicar a receita só porque ela existe.
Deu certo quando: A receita tem pelo menos três situações de não uso, com critério verificável.
Erro comum: Deixar a seção vazia e ver o estilo de campanha aplicado na página de política de privacidade.
Passo 4: Salve como skill e teste com um pedido curto
Ponha a receita e o código de partida na pasta da skill do projeto. Abra uma tela nova com um pedido de três linhas e veja se a skill dispara e as regras aparecem.
Deu certo quando: A tela nova sai com as medidas da receita sem você repeti-las no pedido.
Erro comum: Escrever uma descrição vaga no cabeçalho e a skill nunca disparar.
Passo 5: Filtre o catálogo externo antes de adotar
Ao buscar persona ou skill pronta num catálogo, filtre por formato e pela nota mais alta, leia o texto inteiro e reescreva com a sua marca e as suas regras. Guarde de onde veio.
Deu certo quando: Cada assistente adotado foi lido, adaptado e tem origem anotada.
Erro comum: Instalar dez personas de nota baixa e deixar o agente com instruções que brigam entre si.
No fim você tem: Um estilo aprovado guardado como skill com medidas, quando não usar e código de partida, mais um critério para trazer assistentes de fora.
Diretora de criação de uma agência pequena em Florianópolis que atende redes de clínicas odontológicas
Agência de marketing digital, páginas de campanha
Dor
Cada campanha nova repetia a discussão sobre espaço, tipografia e animação do topo. O estilo aprovado no cliente anterior existia só na memória de quem tinha feito.
Solução
Ela pediu a receita da última página aprovada, com 12 regras medidas e quatro situações de não uso, e salvou como skill do repositório da agência com o código de partida. Do catálogo de assistentes, adotou só uma persona de revisão de texto de nota máxima, reescrita com o tom da agência.
Resultado
As páginas seguintes começaram do código de partida, e a revisão passou a discutir conteúdo em vez de reabrir o estilo.
Cenário construído para fins didáticos. Números não correspondem a cliente específico.
Aplicar os recursos ao projeto
Se a figura ultrapassar a área visível, deslize para os lados. Pelo teclado, foque a figura e use as setas.
JavaScript dá comportamento à página e precisa deixar o texto legível mesmo quando a interação falha. Módulos ES dividem o código em arquivos que se importam, mas o navegador aplica regras de origem a eles. Arquivo de módulo aberto por duplo clique, pelo endereço file://, costuma ser barrado.
Imagine o manual da sua assistência técnica num arquivo só. Deixe o índice em HTML e ponha um script clássico no fim do body. Registre addEventListener('input', filtrar) no campo de busca; a função lê a lista embutida e esconde o que não casa, escrevendo por textContent, sem montar HTML.
Abra o arquivo com duplo clique, desligue a internet e busque um termo que existe e outro que não existe. Veja o console, que registra erros, e teste o botão de limpar. Se você organizou o código em módulos, gere um pacote clássico antes da entrega.
TypeScript confere se os valores batem com o formato declarado enquanto você escreve. Um tipo descreve o que um dado deve ser, e o erro aparece antes de o site subir. Essas anotações somem do JavaScript final; dado que chega de fora ainda precisa ser validado.
Declare type Produto = { id: string; preco: number } e a função total(produto: Produto, quantidade: number). Passe um produto de teste e depois tente mandar preco como texto. Rode tsc --noEmit com strict ligado no tsconfig.json; o comando só confere o projeto, sem gerar nenhum arquivo de execução.
A chamada errada tem de acusar erro de tipo. Resista a calar o erro com any ou com uma conversão forçada só para o build passar. Resposta lida com JSON.parse pode vir torta mesmo com tipo declarado; confira a estrutura antes de calcular valores ou mostrar preços.
Se a figura ultrapassar a área visível, deslize para os lados. Pelo teclado, foque a figura e use as setas.
Zustand guarda estado compartilhado fora dos componentes React e deixa cada área pegar só a fatia que usa. Uma store é esse pote comum de valores e ações. Use quando telas distantes precisam da mesma escolha; um campo que vive numa tela só pode ficar onde já está.
Monte useCarrinho com create de zustand. A função recebe set e devolve quantidade: 0 e adicionar: () => set(estado => ({ quantidade: estado.quantidade + 1 })). No cabeçalho, leia useCarrinho(estado => estado.quantidade); no botão, pegue só adicionar. Assim cada componente declara de qual informação depende.
Clique no botão e veja o número do cabeçalho mudar junto. Recarregar a página apaga esse estado por padrão; guardar exige uma decisão a mais. Nunca deixe senha ou dado privado no armazenamento do navegador. Dado vindo de serviço tem validade própria, diferente do estado de um menu.
Pinia organiza estado compartilhado em aplicações Vue. Cada store reúne valores, cálculos e ações de um assunto, como orçamento ou preferências. Essa separação impede que telas distantes guardem cópias diferentes da mesma escolha e deixa claro quem muda o dado e quando.
Registre createPinia() na aplicação e declare useOrcamentoStore com defineStore('budget', { state: () => ({ quantidade: 1 }), actions: { aumentar() { this.quantidade++ } } }). No componente, pegue a store e chame aumentar pelo botão. Se quiser separar propriedades em variáveis, use storeToRefs para não cortar o fio que liga à origem.
Abra dois componentes que mostram a quantidade e mude o valor por um deles. Os dois têm de acompanhar. Desmontar o objeto direto em variáveis corta a reatividade e congela a tela. Em renderização no servidor, use uma instância por requisição para não misturar visitantes.
Se a figura ultrapassar a área visível, deslize para os lados. Pelo teclado, foque a figura e use as setas.
Redux Toolkit padroniza como você descreve mudanças no estado compartilhado. A ação diz o que aconteceu; o reducer calcula o próximo estado, como um caixa que anota cada lançamento. Ajuda quando muitas operações pedem a mesma convenção. Para uma interação pequena, cobra mais organização do que a tarefa pede.
Defina um createSlice chamado pedido, com initialState de quantidade: 0 e um reducer adicionar que soma um. Registre esse reducer em configureStore e entregue a store aos componentes pelo Provider. O botão despacha pedido.actions.adicionar(); o resumo lê a quantidade com useSelector. Dentro de createSlice a escrita parece mudar o objeto; o Immer cuida disso.
Siga uma ação no depurador e leia o estado antes e depois dela. Não guarde conexões, funções ou pedaços de HTML no estado. Chamada de rede pede tratamento próprio; um reducer precisa continuar previsível e não sair buscando dados enquanto calcula o próximo valor da tela.
TanStack Query cuida dos dados que vêm de um serviço: carregamento, falha, cópia guardada e atualização. Essa cópia é o cache, um estoque para não repetir a viagem. O problema aqui é outro: a informação pertence ao serviço e pode envelhecer ou mudar longe da sua tela.
Entregue um QueryClient à aplicação e use useQuery com queryKey: ['produtos', categoria]. Em queryFn, faça a chamada, cheque response.ok e devolva response.json(). Depois de uma mutation, a operação que altera dados no serviço, rode queryClient.invalidateQueries({ queryKey: ['produtos'] }). A chave precisa conter tudo o que muda o conjunto devolvido pelo serviço.
Troque a categoria, force uma falha e volte à tela. Confira o carregando, os dados antigos e a mensagem de erro. O fetch não reclama sozinho de resposta de erro do servidor, por isso a checagem. Cache em memória não é funcionar offline nem libera dado privado.
Laboratório visual: aplicar direção de arte, UX writing e padrões de código
Referências, tokens, componentes, estados e crítica visual
Escolha seu próximo encontro.
Oficina de cerâmica. Sábado, às 14h. Veja os horários antes de reservar.
Consultar horáriosA versão revisada oferece assunto, horário e uma ação específica. Compare a ordem de leitura e o espaço disponível.
Seu caderno neste capítulo
Abrir o caderno completoSelecione um trecho do capítulo para destacar ou anotar. Nos vídeos e áudios, use Anotar este momento. No teclado, selecione com Shift e as setas e use Alt+Shift+D para destacar ou Alt+Shift+N para anotar.
Salvo neste navegador. Entre na sua conta para levar o caderno a outros aparelhos.
Entre na sua conta para compartilhar o que aprendeu e convidar alguém para estudar com você.
Conexões deste capítulo
Veja o que estudar antes e para onde seguir depois, explore os conceitos e compare abordagens em outros cursos. Sugestões marcadas como “sugerido pelo grafo” vêm dos assuntos em comum, não do índice do curso.
Estude antes
- CursoClaude Code CLI: Programação com IA
- Anatomia de uma Skill: Divulgação Progressiva em Três Níveissugerido pelo grafoApresenta o conceito “Skill (Agent Skill)”, usado em “Aplicar direção de arte, UX writing e padrões de código”.
- Montar vídeo em React com Remotion e renderizar na sua máquina ou na AWSsugerido pelo grafoApresenta o conceito “React”, usado em “Aplicar direção de arte, UX writing e padrões de código”.
- Frontend vs Backendsugerido pelo grafoApresenta o conceito “Frontend”, usado em “Aplicar direção de arte, UX writing e padrões de código”.
Depois, siga para
- CursoPrompt Engineering para Executivossugerido pelo grafo7 capítulos de “Prompt Engineering para Executivos” usam conceitos apresentados em “Frontends com Vibecoding”.
- CursoLLM FinOps: o custo da IA para quem assina o orçamentosugerido pelo grafo3 capítulos de “LLM FinOps: o custo da IA para quem assina o orçamento” usam conceitos apresentados em “Frontends com Vibecoding”.
Conceitos deste capítulo
O mesmo assunto em outros cursos
- Astra profundoConstruir uma amostra de tipografia e corExaminar conexões de Construir uma amostra de tipografia e cor
- Prompt Engineering para ExecutivosProduzir peças de campanha com oito prompts revisáveisExaminar conexões de Produzir peças de campanha com oito prompts revisáveis
- Vídeo com IA: Claude Code, Codex e ElevenLabsMontar vídeo em HTML com HyperFrames e escolher entre ele e o RemotionExaminar conexões de Montar vídeo em HTML com HyperFrames e escolher entre ele e o Remotion
- Skills de IA com Vibecoding e TerminalProjeto 1: Sua Primeira Skill FuncionalExaminar conexões de Projeto 1: Sua Primeira Skill Funcional
Voltar ao capítulo anterior: Configurar ambiente, skills e o contêiner de contexto
Leve uma ideia para a prática
Escolha uma atividade no painel e volte a este curso quando quiser.
Atividades e evolução ficam reunidas no painel da sua conta.
Laboratórios ao vivo deste curso
Cada laboratório monta a biblioteca real dentro da aula, com controles para você mexer e o código do exemplo para copiar. O texto de reserva descreve a demonstração para quem lê sem JavaScript. O link abre o capítulo já no ponto do laboratório.
Base UI
Prenda o foco num diálogo sem escrever o comportamento
Abra a janela Agendar visita, percorra os campos com Tab, feche com Esc e acompanhe no painel onde o foco está e para onde ele volta.
Pacote
Abrir no capítuloConstruir componentes, usar o registro e publicar o catálogo@base-ui/reactLucide e Iconify
Mantenha uma família de ícones coerente e nomeie cada botão
Mude tamanho, traço e cor da barra, veja o símbolo do Iconify acompanhar o Lucide e rode a auditoria de nomes acessíveis.
Pacote
Abrir no capítuloProjetar uma linguagem de ícones e ilustraçãolucide-react, @iconify/reactMotion
Testar os três sinais que autorizam o terceiro degrau
Reproduza a entrada em sequência, aperte o botão com mola e arraste o cartão; ajuste rigidez e amortecimento e veja o que muda.
Pacote
Abrir no capítuloProjetar movimento, assinatura e narrativas por rolagemmotionVidstack
Ver o que separa um player de um vídeo cru
Dê o play, troque a velocidade e ligue a legenda; o painel ao lado mostra o estado que o player publica e que a etiqueta crua esconde.
Pacote
Abrir no capítuloProjetar movimento, assinatura e narrativas por rolagem@vidstack/reactcmdk
Achar um destino entre quarenta digitando três letras
Abra a paleta, digite fat e escolha um item só pelo teclado; o painel embaixo conta o que o filtro deixou passar e quanto tempo levou.
Pacote
Abrir no capítuloConstruir formulários e estados de interaçãocmdknumber-flow
Animar indicadores que mudam ao vivo com formato pt-BR
Veja três indicadores fictícios rolarem a cada troca e compare com o número em texto puro. Pause, reinicie e observe o separador de milhar.
Pacote
Abrir no capítuloProjetar gráficos e painéis pela decisão@number-flow/reactApache ECharts
Medir o custo de desenhar 200 mil pontos com o ECharts
Troque o tipo de gráfico e o volume de pontos, leia o tempo de desenho e alterne o eixo em zero. Mude o tema do site e veja as cores refazerem.
Pacote
Abrir no capítuloProjetar gráficos e painéis pela decisãoechartssharp e svgo
Escolher a variante certa da imagem e conferir o teto de 150 KB
Arraste a largura da tela simulada, troque a densidade entre 1x e 2x e veja qual arquivo o navegador escolhe, quanto ele pesa e se cabe no orçamento.
Pacote
Abrir no capítuloValidar desempenho, autenticação e segurançasharp, svgoReact Flow (xyflow)
Disparar um pedido e ver o orquestrador distribuir, conferir e responder
Alterne paralelo e sequencial, ligue e desligue a verificação e use a medição real; observe o tempo de parede em cada combinação.
Pacote
Abrir no capítuloConstruir as cenas do orquestrador, do paralelismo e do robô@xyflow/reactGSAP, Web Workers e number-flow
Dividir mil tarefas entre trabalhadores reais e correr três ritmos de geração
Execute com um trabalhador, depois com quatro e oito, e compare o tempo; em seguida percorra a corrida e separe a espera inicial do ritmo.
Pacote
Abrir no capítuloConstruir as cenas do orquestrador, do paralelismo e do robôgsap, @number-flow/reactThree.js com React Three Fiber, drei, Rapier e XR
Carregar o braço robótico, ver a física trabalhar e entrar na cena com o visor
Carregue a cena pelo botão, inicie o ciclo, mostre os ângulos das juntas, troque a câmera e a velocidade; com visor, entre em realidade virtual.
Pacote
Abrir no capítuloConstruir as cenas do orquestrador, do paralelismo e do robôthree, @react-three/fiber, @react-three/drei, @react-three/rapier, @react-three/xrMotion
Ver quatro agentes em raias trocando mensagens e a revisão devolvendo um trecho
Reproduza os 60 s de modelo, percorra o tempo pelo controle e esconda as mensagens para comparar a leitura; repare no tempo de parede contra a soma.
Pacote
Abrir no capítuloEspecificar, medir e produzir as cenas da máquinamotionMediaRecorder, Canvas 2D e Long Animation Frames (plataforma)
Medir o quadro da cena e gravar seis segundos dela em vídeo
Suba as partículas, force um bloqueio de 300 ms e leia o medidor; depois grave seis segundos, veja o codec escolhido e baixe o arquivo.
Pacote
Abrir no capítuloEspecificar, medir e produzir as cenas da máquinasem pacotesigma.js, graphology com ForceAtlas2 e cosmos.gl
Ver o grafo real do curso e um grafo de milhares de nós se organizarem em aglomerados
Rode o layout no grafo real, passe o mouse pelos nós e busque uma entidade; troque para 20 mil nós e leia o medidor; depois carregue o modo massivo na placa de vídeo.
Pacote
Abrir no capítuloAnimar um grafo de conhecimento amplo em movimentosigma, graphology, graphology-layout-forceatlas2, graphology-generators, @cosmos.gl/graph
Capítulos vizinhos em Frontends com Vibecoding
- 26Supervisionar o modelo que opera o computador
- 27Configurar ambiente, skills e o contêiner de contexto
- 28Aplicar direção de arte, UX writing e padrões de código
- 29Construir um aplicativo instalável e resiliente
- 30Produzir apresentações e PDF com critérios de entrega