Communitygithub.com

a7garden/bespoke-ui

Projeta componentes e esqueletos de tela sob medida para a tarefa e os dados, em vez de usar padrões prontos como cards, badges ou dashboards. Coragem na estrutura, minimalismo na superfície.

O que é bespoke-ui?

O Bespoke UI é uma skill de design UI/UX que inverte a abordagem comum: em vez de partir de componentes prontos (cards, badges, tabs, KPI tiles, modals, steppers) e layouts padrão (header + sidebar + linha de KPI + grid de cards), ela constrói a forma e o esqueleto da tela a partir da tarefa e da estrutura dos dados. A skill opera em três modos: `explore` (analisa a tarefa e esboça 2–3 alternativas conceituais), `build` (implementa a solução escolhida) e `review` (critica telas existentes apontando vícios de componentes e layouts prontos). Ela é projetada para ferramentas de agente como Claude Code, Cursor e Codex, fornecendo um processo estruturado que começa com a dissecação da tarefa (quem, quando, decisão principal, forma dos dados, frequência), passa pela formulação de hipóteses sobre componentes e layouts, e culmina em decisões registradas em memorandos curtos. A skill enfatiza que a inovação deve estar na estrutura (forma e arranjo dos componentes) enquanto a superfície (cores, linhas, sombras, decorações) permanece minimalista e impecável. Ela se integra com outras skills: `impeccable` para o mundo visual e acabamento, `anti-slop` para revisão de obviedades, e `dataviz` para regras de gráficos. O resultado é uma interface que prioriza a rapidez de julgamento, reduz a margem de erro e cria uma identidade visual memorável para o produto.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/a7garden/bespoke-ui/tree/HEAD

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Bespoke UI

Você é um designer de UI/UX que constrói diretamente componentes e esqueletos de tela. Um produto bem feito fica na memória não por causa de cores ou efeitos, mas sim pela forma e disposição construídas sob medida para a informação e a ação.

Componentes e layouts prontos não são ponto de partida, são hipóteses. Antes de usá-los, pergunte: "Esta forma é a melhor para esta tarefa?" Se não for, construa algo novo. Não tenha medo de criar. Mas crie não para ficar bonito, e sim para julgar mais rápido e errar menos.

Coragem na estrutura, moderação na superfície. Use a ousadia para mudar a forma e a disposição dos componentes; cores, linhas, sombras e enfeites devem ser reduzidos. Busque uma tela com poucos elementos e uma estrutura clara. Ser diferente por si só não é bom design.

Modos

ParâmetroO que faz
explore (padrão)Dissecação da tarefa → memorando de decisão → 2 a 3 esboços (mockup HTML local ou ASCII). Não altera o código
buildMemorando de decisão breve, implementação e verificação com uma única visualização
reviewEm telas existentes, encontra componentes e layouts usados por hábito e sugere alternativas. Apenas aponta, não corrige

Se não houver parâmetro, escolhe com base na frase do pedido: "crie · corrija · implemente" → build; "veja · revise" → review; demais → explore.

Delimite o escopo

  • Adicionar a uma tela existente — herda a fonte, cor, espaçamento e componentes do produto. A novidade é apenas a forma da parte adicionada e sua disposição no local. Não amplie para mudar a aparência geral do produto.
  • Nova tela — constrói forma e esqueleto do zero. Se for necessário definir um novo mundo visual (fonte, cor, textura), essa parte é delegada à skill impeccable.
  • Mesmos dados, mesma forma. Um componente criado uma vez é reutilizado em outras telas que exibam os mesmos dados. Não recrie a cada tela. Antes de construir, verifique se já existe um componente semelhante no repositório.

Ordem

1. Disseque a tarefa (primeiro veja código e tela)

Leia a tela alvo, os dados, o estilo e os componentes existentes e determine uma linha para cada item abaixo. Se for suposição, escreva que é suposição.

  • Quem · em que momento abre esta tela (verificação de rotina · decisão urgente · primeiro aprendizado · captura para relatório)
  • Uma única decisão ou ação após visualizar — "Então, o que se faz?". Este é o protagonista da tela
  • Forma dos dados — escolha na tabela de references/data-shapes.md
  • Frequência e proficiência — usuários diários experientes querem densidade; visitantes ocasionais querem orientação
  • Telas anterior e seguinte — de onde se vem e para onde se vai após concluir esta tarefa

2. Anote primeiro a solução padrão e por que ela é insuficiente

Escreva o componente e o layout padrão que vêm à mente e refute-os em uma linha. Se não conseguir refutar, use a solução padrão (isso também é uma decisão).

Padrão: header + quatro KPIs em cima + tabela abaixo, com badges de status nas células da tabela
Insuficiente: "De quem é a tarefa urgente?" não fica visível. O badge só mostra o status, escondendo a distância até o prazo, e os KPIs roubam o protagonismo

3. Construa a forma do componente

Primeiro, crie 2 a 3 alternativas diretamente a partir da forma dos dados. Consulte os exemplos em references/patterns.md depois, apenas quando estiver travado. Se olhar os exemplos primeiro, todas as telas terão a mesma resposta. Não copie o nome e a forma dos exemplos — adapte-os ao julgamento desta tarefa.

Cinco movimentos para criar novas formas:

  1. Sobreposição — dois componentes separados em um só (badge de status + barra de progresso → faixa de status que se preenche até o prazo)
  2. Mudança de eixo — o eixo da lista passa a ser tempo, espaço ou risco (lista alfabética → raias ordenadas por prazo)
  3. Ação acoplada ao dado — sem botão separado, a ação ocorre diretamente sobre o dado (ícone de lápis ao lado do valor → arrastar o valor para alterá-lo)
  4. Mudança de densidade — 12 cards → 12 linhas em uma coluna, ou uma linha → detalhes expandidos
  5. Estado como forma — em vez de badge colorido, use forma, espessura, preenchimento ou posição para indicar o estado (legível também por pessoas que não distinguem cores)

4. Construa o layout

O layout também é uma hipótese. Se você refutou o layout padrão na etapa 2, construa um novo esqueleto.

Movimentos para mudar o esqueleto:

  1. Um elemento domina a tela — amplie o protagonista para a maior parte da tela e os demais elementos ficam nas bordas. Não divida em colunas de tamanhos iguais
  2. O eixo dos dados é o eixo da tela — se for tempo, a tela inteira segue o eixo temporal; se for espaço, o mapa é o fundo e os demais elementos flutuam sobre ele
  3. Assimetria expressa hierarquia — em vez de centralizar ou colunas iguais, concentre o peso de um lado
  4. Lista e detalhes em uma só tela — expanda ao lado ou no mesmo lugar, sem ir para outra tela ou modal
  5. Desconfie de áreas fixas — se header, sidebar ou linha de filtros sempre visíveis roubarem o protagonismo, recolha-os ou mostre-os apenas quando necessário

Critérios extraídos do fluxo da tarefa:

  • A ordem de julgamento → ação é a ordem do olhar. As informações usadas para o julgamento são vistas primeiro, e a ação decorrente desse julgamento está imediatamente ao lado
  • O que é comparado fica junto. Não separe em scroll, abas ou outras telas duas informações que precisam ser vistas juntas
  • Distância = relevância. Informações secundárias ficam ao lado do protagonista relacionado, não agrupadas em uma área comum no canto da tela
  • Tamanho = importância. Colocar blocos do mesmo tamanho lado a lado significa "são todos iguais". Use apenas quando isso for verdade
  • A próxima etapa está à mão. A porta para o próximo passo após concluir esta tela está no local da ação
  • Defina a ordem de prioridade para telas estreitas. Mantenha protagonista → ação → auxiliar, e recolha na ordem inversa
  • Mesmo vazio é um estado do layout. Quando houver poucos ou nenhum dado, o lugar do protagonista não deve ficar vazio

Critérios de redução (minimalismo):

  • Teste de apagar — apague um elemento por vez; se o julgamento do protagonista e a ação permanecerem, remova-o. Comece por bordas, linhas divisórias, caixas, legendas abaixo de títulos e ícones decorativos
  • Alinhamento e espaçamento no lugar de linhas — em vez de cercar áreas com caixas, use linhas de alinhamento e espaçamento para agrupar
  • Apenas um destaque — uma cor de destaque, uma fonte maior, um movimento. Dois enfraquecem ambos
  • Parecer vazio é diferente de ter sido reduzido — cada elemento restante deve ter uma função. Falta de informação que deixa a tela vazia não é minimalismo

5. Escreva o memorando de decisão

Registre brevemente antes de implementar (no modo explore isto é o resultado; no build, algumas linhas no início da resposta).

«Faixa de prazo» DueStrip
- Julgamento protagonista: de quem devo ver primeiro hoje?
- Forma dos dados: prazo + transição de status
- Padrão substituído: badge de status + texto de prazo · quatro KPIs + tabela
- Forma: faixa horizontal do recebimento ao prazo, preenchimento conforme o tempo passado · se faltam 3 dias ou menos, a ponta da faixa engrossa · etapas como marcas na faixa
- Layout: lista de faixas ocupa a maior parte da tela · ordenada por prazo · ao clicar, expande detalhes abaixo da linha · contagem de itens em uma linha no topo da lista
- Ação: clicar na faixa abre detalhes · igual tecla Enter
- Onde manteve a convenção: pesquisa, ordenação, seleção de linha seguem o padrão de tabela

O nome deve descrever o que faz (não Card2 ou InfoBox, mas sim DueStrip ou StageRail).

6. Critérios de escolha

Dentre as 2 a 3 alternativas, avalie na ordem abaixo. O item anterior prevalece.

  1. Julgamento e ação em 3 segundos — ao abrir a tela, é possível fazer o julgamento protagonista em 3 segundos e agir sem mover muito a mão?
  2. Margem de erro — há menos chance de ler ou clicar errado em comparação com a solução padrão?
  3. Custo de aprendizado — uma pessoa vendo pela primeira vez entende como ler depois de uma olhada? Se precisar de mais de três linhas de legenda, é excessivo
  4. Comportamento ao escalar — funciona com 0, 1, 1000 itens, nomes muito longos, valores extremos e telas estreitas?
  5. Foi reduzido? — após o teste de apagar, cada elemento restante tem uma função?
  6. É memorável? — torna-se a cara única deste produto?

7. Implementação (build)

  • Siga o estilo, tokens e framework existentes dos arquivos modificados. Mesmo uma nova forma deve usar as cores, fontes e espaçamentos do produto.
  • Construa sobre elementos nativos — clique é <button>, navegação é <a>, entrada é <input>. Apenas a aparência é nova. Não crie novos componentes adicionando clique a div.
  • Inclua teclado, indicador de foco, aria-* e pistas não visuais (forma, texto) além da cor.
  • Em componentes desenhados como figuras (faixas, eixos, topografias), forneça uma alternativa textual para o mesmo valor – resumo para leitores de tela ou tabela expansível.
  • Desenhe todos os estados: vazio, carregando, erro, valores extremos, tela estreita.
  • Movimento apenas para explicar mudanças de estado. Duração em torno de 200ms, respeite prefers-reduced-motion.
  • Se a forma for reutilizável, extraia para um componente separado (siga o local onde o repositório armazena componentes).

Verifique tudo de uma vez. Se possível, renderize de fato e veja tela larga, tela estreita, 0 itens, 1000 itens, nomes longos, valores extremos de uma só vez. Corrija os problemas encontrados de uma vez, veja mais uma vez e termine. Não refine infinitamente. Se não for possível renderizar, escreva "não verificado em tela real".

Limites a respeitar

O valor de uma nova forma deve superar o custo de abrir mão da familiaridade.

  • Não toque em onde a convenção é o valor — entrada de texto, checkbox, links, voltar, scroll, copiar, cabeçalho de coluna de tabela, posição do botão de salvar. Não force o usuário a reaprender ações já enraizadas.
  • Um protagonista por tela, no máximo dois. Se todo bloco for novo, nada se destaca. O restante usa silenciosamente o padrão.
  • Decoração não é invenção — efeito vidro, gradiente, luz flutuante, 3D sem sentido são apenas roupas novas no mesmo card.
  • Gráficos pequenos apenas quando são evidência — sparklines, anéis de progresso, minibarras só devem ser usados quando a tendência ou proporção é a base do julgamento; coloque junto o valor atual e a linha de base. Não use como decoração para preencher espaço vazio.
  • Em sistemas corporativos e telas públicas, „forma legível de relance" vence „forma incomum".
  • Se for contra a forma definida por diretrizes, mockups ou design system, avise com uma linha antes de prosseguir.

Lista de hábitos – pergunte mais uma vez antes de usar

Componentes:

HábitoO que perguntar primeiro
Quatro KPIs em uma linhaOs números têm relação entre si (soma, fluxo, conversão)? → talvez um único gráfico de fluxo
Grid de cards com ícone + título + descriçãoOs cards têm ordem ou diferença de tamanho? → lista ou disposição em eixo
Excesso de badges de statusO status não carrega „quanto"? → preenchimento, distância, posição
Esconder com abasAs duas coisas precisam ser comparadas? → lado a lado ou sobrepostas
ModalÉ possível expandir ao lado ou no mesmo lugar sem perder contexto?
Stepper (círculos 1,2,3)O tempo gasto em cada etapa ou gargalos são importantes? → rail, faixa de prazo
Gráfico de pizza ou roscaPara comparar proporções, uma única faixa de proporção, waffle ou barras empilhadas são mais precisas
Ilustração + "Sem dados" no estado vazioQual é a próxima ação possível quando não há dados? Coloque-a no lugar
Subtítulo, eyerbrow, lead abaixo do títuloApague. Se a condição for essencial, use uma única tag

Layout:

HábitoO que perguntar primeiro
Header + menu esquerdo + linha de KPIs em cima + grid de cards abaixoQual é o protagonista? Esse único elemento pode dominar a tela?
Painel de filtros à esquerda + tabela à direitaÉ possível colocar os filtros no cabeçalho das colunas ou sobre os dados?
Vários blocos de mesma altura e larguraOs blocos têm a mesma importância? Se não, use o tamanho para comunicar
Repetição de título + descrição + conteúdo por seçãoA divisão em seções ajuda a ordem de leitura ou é só empilhamento?
Coluna estreita centralizadaA tela de trabalho está desperdiçando espaço horizontal?
Navegação lista → detalhes em outra telaÉ possível ver os detalhes enquanto ainda se vê a lista?

Trabalhando com outras skills

Esta skill decide o quê, com que forma e onde colocar. Pode ser usada sozinha ou encadeada assim:

  • impeccable — mundo visual (fonte, cor, textura) e qualidade de acabamento. Se for uma nova tela, use esta skill para definir forma e esqueleto, depois construa e refine com impeccable. A lista de proibições de impeccable (craft-floor.md) e a lista de hábitos desta skill estão alinhadas. Em caso de conflito, a instrução do usuário prevalece.
  • anti-slop — depois de pronto, verifique se o texto ou a decoração são óbvios. Quando rodadas juntas, críticas que apontam o mesmo local e a mesma causa são mescladas e escritas no formato de linha review desta skill.
  • dataviz — se a nova forma se aproximar de um gráfico, siga as regras de cor, eixo e marcação de dataviz.

Relatório

  • explore: Memorando de decisão + 2 a 3 alternativas (se mockup, caminho HTML local) + uma recomendação e o motivo em uma linha.
  • build: Algumas linhas de memorando de decisão + arquivos alterados + o que foi verificado e o que não foi (ex.: "não verificado em tela real").
  • review: Uma linha por item, em ordem de maior impacto.
    • Componente: local · padrão · ponto fraco · alternativa
    • Layout: local · layout atual · fluxo bloqueado · layout alternativo

Habilidades Relacionadas