Communitygithub.com

ShortArrow/interface-design

Decide como uma tela parece e se comporta, com base em medições e padrões publicados, não em preferências ou gosto. Substitua perguntas subjetivas sobre layout, cor, tamanho e posicionamento por verificações objetivas usando WCAG, design systems, axe-core e Lighthouse.

O que é interface-design?

Esta skill capacita agentes de IA a tomar decisões de design de interface com base em medições objetivas e padrões publicados, eliminando a falsa dicotomia de "gosto pessoal" ou preferência do usuário. Ela substitui perguntas subjetivas como "qual cor você prefere" ou "qual layout fica melhor" por verificações concretas: contraste de cor (WCAG 2.2), tamanho de alvo (24×24 CSS px mínimo), reflow (320 px de largura), foco visível, ordem de informação derivada da tarefa do usuário, e muito mais. A skill suporta plataformas como Claude Code (via MCP `claude-in-chrome`), Cursor e Codex, e funciona integrando-se com ferramentas de automação de navegador (`navigate`, `read_page`, `computer`, `resize_window`). Ela também utiliza `axe-core` e Lighthouse para auditoria automatizada, mas reconhece que essas ferramentas cobrem apenas cerca de 57% dos critérios WCAG, deixando o restante (ordem de foco, significado sem cor, ordem de informação) para inspeção humana — que pode ser o próprio agente. O que realmente sobrevive à medição e deve ser perguntado ao usuário são apenas três coisas: qual público/mercado a interface atende (quando não fixo), uma restrição de marca (cor, tipografia) que falha no contraste — reportada com a taxa e a variante mais próxima — e um trade-off já medido de ambos os lados (densidade vs. escaneabilidade, uma tela vs. duas). Todo o resto é decidido e relatado com evidência anexada. A skill se conecta com `own-the-call` (para moldar a pergunta que sobrevive), `reader-map` (para ordem de tarefas), `measured-claims` (para todas as medições), `document-structure` e `cognitive-rhythm` (para prosa na página), e `web-perf` (para desempenho e Core Web Vitals).

Funciona com✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/ShortArrow/skills/tree/HEAD/skills/interface-design

Perguntar na sua IA favorita

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

Documentação

Design de interface

Uma pergunta sobre uma tela não é uma pergunta sobre gosto. Contraste tem uma proporção, um alvo tem um tamanho, um reflow tem uma largura na qual ainda deve funcionar, e um layout tem uma ordem de informação que decorre do que o leitor faz primeiro. Isso é decidido por medição e por padrões publicados, portanto entregá-los ao usuário como "qual você prefere" gasta a atenção deles em trabalho que era do agente.

O que resta após medir é uma pergunta real, e esta skill existe para tornar esse resto pequeno e anexar a evidência a ele. own-the-call rege como ela é então feita.

Os momentos que isso substitui

Prestes a…Em vez disso
perguntar qual cor, tamanho, espaçamento ou posicionamento o usuário preferemedir contra o padrão abaixo; perguntar apenas o que nenhum limite resolve
chamar uma escolha visual de subjetivanomear o critério que ela falha ou passa — contraste, tamanho do alvo, largura de reflow, visibilidade do foco, ordem de informação
dizer "parece bom"abrir, capturar a tela e dizer o que foi medido em qual viewport
dimensionar um controle a olho24×24 CSS px é o piso WCAG AA; um design system pode definir um mais restritivo (Material: 48dp)
escolher cores de uma paleta pela aparênciacalcular a proporção: 4,5:1 texto do corpo, 3:1 texto grande e não texto
enviar um layout verificado em um tamanho de janelaverificar com 320 CSS px de largura e 256 CSS px de altura, onde o reflow ainda deve funcionar
ler uma execução verde do axe como acessívelaxe encontra cerca de 57%; o resto é teclado, ordem de foco e significado
projetar um componente que um design system já definepegar o deles e dizer qual
perguntar como desenhar um diagramadecidir a partir do que o leitor traça primeiro, depois mostrar uma renderização

Decidir a partir do padrão antes de perguntar

Quatro corpos respondem a maior parte disso, e eles não concordam totalmente — onde diferem, o número mais restritivo é o que deve ser cumprido, porque cumpri-lo satisfaz ambos.

WCAG 2.2 é o piso, e é normativo: uma Recomendação W3C, e ISO/IEC 40500. Alvo Nível AA; AAA não é alcançável para todo conteúdo e o W3C diz isso.

CritérioNívelLimite
1.4.3 Contraste (Mínimo)AA4,5:1 texto; 3:1 para texto grande (≥18 pt, ou 14 pt negrito)
1.4.11 Contraste Não TextoAA3:1 contra cores adjacentes
1.4.4 Redimensionar TextoAAutilizável em 200%
1.4.10 ReflowAAsem rolagem em dois eixos a 320 px de largura ou 256 px de altura
1.4.12 Espaçamento de TextoAAaltura da linha ≥1,5×, parágrafo ≥2×, letra ≥0,12×, palavra ≥0,16× tamanho da fonte
2.4.7 Foco VisívelAAum modo onde o indicador de foco é visível
2.4.11 Foco Não ObstruídoAAo controle focado não está totalmente oculto
2.5.8 Tamanho do Alvo (Mínimo)AA24×24 CSS px, ou espaçamento de 24 px
2.4.13 Aparência do FocoAAA≥2 px de perímetro, 3:1 entre focado e não focado
2.5.5 Tamanho do Alvo (Aprimorado)AAA44×44 CSS px

Um design system resolve o que o WCAG deixa em aberto: escala de espaçamento, escala tipográfica, anatomia de componentes, papéis de cor. Pegar seu componente não é um atalho, é a decisão — e carrega o trabalho de acessibilidade já feito. Material Design 3 define alvos de toque de 48×48 dp, mais restritivo que os 24 px do WCAG, e pede que a cor seja escolhida como papéis (primary, on-primary, surface) em vez de hex fixo, para que temas e modo escuro sigam sem uma segunda decisão. Para trabalho público japonês, o design system da Agência Digital (design.digital.go.jp, β版 como padrão vivo) carrega componentes, orientação e tokens, com os tokens e componentes de exemplo no GitHub sob MIT.

axe-core mede o que pode ser medido e afirma seu próprio limite: cerca de 57% dos problemas WCAG em média. Uma execução verde é, portanto, evidência sobre 57% da pergunta, e dizer "axe passou" sem esse número o exagera — measured-claims aplica-se a este número como qualquer outro.

npx @axe-core/cli http://localhost:5173 --tags wcag2a,wcag2aa,wcag22aa
npx lighthouse http://localhost:5173 --only-categories=accessibility --quiet

A pontuação de acessibilidade do Lighthouse é o mesmo mecanismo usando um número. Suas auditorias são regras do axe-core — cada uma linka para a página de regra da Deque — então os 57% são herdados, e a pontuação adiciona duas maneiras de ser mal interpretada. É uma média ponderada, pesos de 3 a 10 pela avaliação de impacto do usuário do axe, e auditorias manuais e de melhores práticas são completamente excluídas dela, então a aritmética não pode alcançar a parte que uma pessoa precisa verificar. Cada auditoria também é binária: um botão não rotulado falha "Botões têm um nome acessível" diretamente, sem crédito parcial. Portanto, 100 significa "o subconjunto automático ponderado passou", e o relatório honesto de uma pontuação perfeita diz isso, não "acessível". Use-o para a lista classificada do que corrigir; use o JSON do axe quando a descoberta importar mais que a classificação. As categorias de desempenho do Lighthouse são do web-perf, não desta skill.

O que nenhum dos dois pode ver: se a ordem do foco segue a ordem de leitura, se um rótulo nomeia a coisa que rotula, se o significado de um ícone sobrevive sem cor, se a ordem de informação do layout corresponde à tarefa. Isso é lido por uma pessoa, e a pessoa pode ser o agente.

Olhe para isso, então diga o que foi visto

Uma alegação de interface sem observação por trás é o boato do measured-claims em outro meio. O host tem um navegador, então a observação está disponível:

mcp__claude-in-chrome__navigate      → a página
mcp__claude-in-chrome__read_page     → estrutura, cabeçalhos, rótulos
mcp__claude-in-chrome__computer      → captura de tela em um viewport declarado
mcp__claude-in-chrome__resize_window → 320 px, para testar reflow

Relate o viewport com a descoberta. "Parece certo" não nomeia largura nem medição; "a 320 px a segunda coluna quebra sob a primeira e nada rola para os lados" é uma leitura que alguém pode verificar. A ordem do teclado é percorrida com Tab e relatada como a sequência observada, porque essa é a metade que o axe não cobre.

A ordem de informação é derivada, não escolhida

Onde algo vai decorre do que o leitor faz com isso, que é a pergunta do reader-map aplicada a uma tela: quem chega, o que veio fazer, do que precisa primeiro. Um controle usado uma vez na configuração e um controle usado a cada minuto não competem pelo mesmo lugar.

Portanto, "onde isso deve ir" é respondido nomeando a tarefa, não listando três posições. Quando duas tarefas genuinamente competem e nenhuma domina, esse é o resto que vale a pena perguntar — e é perguntado com as tarefas concorrentes nomeadas, não como uma escolha de cantos.

O mesmo vale para um diagrama. O que o leitor traça primeiro decide a direção do fluxo; a forma segue o traço, e uma renderização é mostrada em vez de três descritas.

O que é genuinamente do usuário

Três coisas sobrevivem à medição:

  • Qual público ou mercado a interface atende, quando isso ainda não está fixo — decide qual padrão se aplica (regulated-claims para um mercado regulado).
  • Uma restrição de marca — uma cor, tipografia ou marca obrigatória. A restrição é deles; se atende a 4,5:1 ainda é medido, e uma cor de marca que falha é relatada com a proporção e a variante aprovada mais próxima.
  • Um trade-off já medido de ambos os lados, onde a evidência não decide: densidade contra escaneabilidade, uma tela contra duas. Perguntado com ambas as medições anexadas, é uma pergunta que own-the-call admite.

Todo o resto — contraste, espaçamento, tamanho do alvo, foco, reflow, escolha de componente, forma do diagrama, posicionamento que segue uma tarefa — é decidido e relatado.

Checklist

  • Contraste calculado, não estimado a olho: 4,5:1 texto, 3:1 grande e não texto
  • Alvos interativos ≥24×24 CSS px, ou o valor mais restritivo do design system
  • Verificado a 320 px de largura e 256 px de altura sem rolagem em dois eixos
  • Foco visível em cada elemento interativo, e não obstruído
  • Ordem de tabulação percorrida e relatada como observada
  • Componentes retirados do design system onde ele define um, e nomeados
  • axe ou Lighthouse executado, e o limite de 57% declarado em vez de implícito
  • Uma pontuação de acessibilidade do Lighthouse relatada como o subconjunto automático ponderado, nunca como "acessível"
  • Toda alegação de aparência carrega o viewport em que foi observada
  • Perguntas deixadas para o usuário são os três tipos acima, com evidência anexada

Como isso se conecta

own-the-call molda a pergunta que sobrevive a esta skill; a maioria das perguntas sobre uma tela não deve alcançá-la. reader-map fornece a ordem de tarefas à qual esta skill aplica o posicionamento. measured-claims rege toda proporção e porcentagem aqui, os 57% incluídos. document-structure e cognitive-rhythm são donos da prosa em uma página; esta skill é dona do quadro ao redor dela. any-screenshot é como uma tela é capturada fora de um navegador. Velocidade de carregamento e interação, Core Web Vitals e pontuação de desempenho do Lighthouse pertencem ao web-perf no plugin cloudflare; esta skill pega apenas a categoria de acessibilidade do Lighthouse.

Fontes

  • W3C, "Web Content Accessibility Guidelines (WCAG) 2.2", Recomendação W3C datada de 12 de dezembro de 2024 (www.w3.org/TR/WCAG22/): os quatro princípios, os níveis A/AA/AAA, e a remoção de 4.1.1 Analisando como obsoleto.
  • W3C, "How to Meet WCAG 2.2 (Quick Reference)" (www.w3.org/WAI/WCAG22/quickref/): todo limite na tabela acima, lido no Nível AAA para incluir 2.4.13 e 2.5.5.
  • Deque Labs, README do axe-core (github.com/dequelabs/axe-core): MPL-2.0; regras mapeadas para WCAG 2.0, 2.1 e 2.2 em A, AA e AAA; "você pode encontrar em média 57% dos problemas WCAG automaticamente".
  • Chrome para Desenvolvedores, "Pontuação de acessibilidade no Lighthouse" (developer.chrome.com/docs/lighthouse/accessibility/scoring): a pontuação é uma média ponderada, pesos de 3 a 10, "com base nas avaliações de impacto do usuário do axe", com cada auditoria linkando para uma página de regra do axe-core 4.11 da Deque University; cada auditoria é binária; auditorias manuais e de baixo impacto são excluídas da pontuação. A página não diz que uma pontuação perfeita significa que a página é acessível — nem diz o contrário, então o aviso acima é desta skill.
  • デジタル庁デザインシステム (design.digital.go.jp): v2.18.2, rotulado β版 no sentido de um padrão vivo. O site não declara nenhum nível WCAG nem alvo JIS X 8341-3. digital-go-jp/design-tokens, design-system-example-components-react e -html no GitHub são MIT.
  • O alvo de toque de 48×48 dp do Material Design 3 e sua orientação de papéis de cor são retirados de fontes secundárias que citam m3.material.io, não desse site: suas páginas renderizam por script e não puderam ser lidas aqui. O valor de 48 dp é uma recomendação de design, não um mínimo imposto pela plataforma.

A alegação de que essas fontes discordam, e que o valor mais restritivo é o que deve ser cumprido, é a leitura deste proprietário do catálogo, não qualquer uma de suas posições publicadas.

Nenhum dos comandos acima foi executado enquanto esta skill era escrita: ambos buscam um pacote no primeiro uso, e o sandbox aqui se recusa a executar código baixado recentemente. As flags vêm da documentação de cada ferramenta, não de uma execução, portanto o primeiro uso em um projeto é também o primeiro teste da invocação.

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

ShortArrow/library-design

Designing a library — a published package, or an in-app module from the moment it has a second consumer. The implementation stays editable forever, while the public API, the dependency set, the performance characteristics and every observable behaviour freeze at first external use (Hyrum's law). Five duties to the caller: take no control, add no hidden cost (zero-cost abstraction as the bar), hold no hidden state, hide no failure, block no escape. Use when designing or reviewing a public API, when extracting shared code into a module, when asked to "make this reusable", when a signature-compatible change alters an observable behaviour, and when an application is being shaped around a framework's types and lifecycle.

ShortArrow/test-design

Deriving test cases, triggered by the moments that produce weak ones: about to write a test list that is the happy path restated, about to derive tests by reading the implementation they check, about to test the bound the specification names and not the other one, about to enumerate the roles the specification lists and skip the caller it forgot, about to vary one condition at a time from the happy path, about to draw a state or decision table without tying each row to a test, about to write an expected result with "or" in it, about to skip the error paths as unlikely, about to leave a path unimplemented and untested, or about to grade a suite as adequate by reading it. A test derived from the implementation passes by construction; coverage counts classes, not tests. Use when writing a test plan or list, when a use case is the specification in hand, when adding tests to existing code, when reviewing a suite for gaps, and when a suite is all green and proves little.

Habilidades Relacionadas