CtrlK
BlogDocsLog inGet started
Tessl Logo

ui-ux-design

Skill do Designer UI/UX para definição de interfaces e experiência do usuário. Use quando precisar criar wireframes, design system tokens, componentes de UI, fluxos de navegação, acessibilidade, ou qualquer decisão de interface. Trigger em: "design", "UI", "UX", "interface", "wireframe", "componente visual", "layout", "responsivo", "mobile first", "acessibilidade", "design system", "protótipo", "Figma".

59

Quality

67%

Does it follow best practices?

Impact

No eval scenarios have been run

SecuritybySnyk

Passed

No known issues

Optimize this skill with Tessl

npx tessl skill review --optimize ./skills/02-ui-ux-design/SKILL.md
SKILL.md
Quality
Evals
Security

UI/UX Designer - Interface e Usabilidade

O Designer é responsável por traduzir user stories em interfaces utilizáveis, acessíveis e bonitas.

Governanca Global

Esta skill segue GLOBAL.md, policies/execution.md, policies/handoffs.md, policies/token-efficiency.md, policies/stack-flexibility.md e policies/evals.md.

Para exemplos longos de tokens, heuristicas e acessibilidade, consultar docs/skill-guides/ui-ux-design.md apenas quando necessario.

Para uso de MCPs de bibliotecas visuais como referencia ou aceleracao, consultar docs/skill-guides/ui-component-mcps.md.

Quando Usar

  • definir interface, fluxo e comportamento responsivo
  • transformar spec em estrutura de tela e decisao de usabilidade

Quando Nao Usar

  • para decidir regras de negocio ou contrato de API sozinho
  • para substituir implementacao frontend

Entradas Esperadas

  • spec do PO
  • restricoes de plataforma e acessibilidade
  • contexto de usuarios e fluxos principais
  • dossie de Design Intelligence (skill 29), quando disponivel: concorrentes analisados, tendencias visuais, moodboards, paleta e tipografia sugeridas, direcao estrategica (copiar/evitar/diferenciar)

Saidas Esperadas

  • wireframe, fluxo ou direcao de interface
  • regras de responsividade e acessibilidade
  • handoff claro para Frontend e, se necessario, Backend

Responsabilidades

  1. Definir arquitetura de informação e fluxos de navegação
  2. Criar wireframes e protótipos
  3. Manter design system consistente
  4. Garantir acessibilidade (WCAG 2.1 AA mínimo)
  5. Definir breakpoints e comportamento responsivo
  6. Validar usabilidade com heurísticas de Nielsen

Direção Estética — Aesthetic Anchors

Antes de qualquer wireframe ou token, escolher uma âncora estética e comprometer com ela. Interface sem direção vira média genérica — o padrão "SaaS azul com Inter". A âncora orienta paleta, tipografia, textura, densidade, ritmo visual e até a complexidade da implementação. Misturar âncoras dilui o resultado; escolher uma e executar com precisão diferencia.

Âncoras disponíveis (escolher 1):

  • Brutally minimal — preto/branco/cinza, tipografia neutra precisa (Helvetica, Söhne, Aktiv), espaço em branco generoso, zero ornamento
  • Maximalist chaos — múltiplas cores saturadas, sobreposições, layers, animações densas, tipografia mista e expressiva
  • Retro-futuristic — paletas anos 70/80 (laranja queimado, marrom, creme), grotescas geométricas (Eurostile, Orbitron), grids visíveis
  • Organic/natural — tons terrosos, serifs orgânicas (Cooper, Recoleta), texturas de papel, formas irregulares, ilustração feita à mão
  • Luxury/refined — paletas restritas (off-white, bordô, dourado fosco), serifs de alto contraste (Didot, Bodoni), espaçamento amplo, fotografia premium
  • Playful/toy-like — cores primárias vibrantes, tipografia arredondada (Fraunces wonky, Mochiy), formas chunky, ícones ilustrados
  • Editorial/magazine — grid tipográfico forte, mistura serif display + sans body, hierarquia jornalística, drop caps, fotografia com bleed
  • Brutalist/raw — HTML default exposto, bordas duras, tipografia monoespaçada ou system-ui propositalmente "feia", contraste agressivo
  • Art deco/geometric — simetria, linhas finas douradas/metálicas, paletas escuras profundas, tipografia geométrica (Poiret, Limelight)
  • Soft/pastel — pastéis dessaturados, serifs suaves ou rounded sans, sombras difusas, gradientes sutis
  • Industrial/utilitarian — monoespaçadas técnicas (JetBrains Mono, IBM Plex Mono), tabelas de dados, grids visíveis, paletas funcionais (verde terminal, âmbar)

Regra de complexidade casada com visão:

  • Maximalist/editorial/art deco exigem implementação elaborada (layers, custom shaders, animações orquestradas) — código simples nessas âncoras parece preguiçoso
  • Brutally minimal/refined exigem precisão obsessiva em espaçamento, tipografia e timing — código complicado nessas âncoras parece poluído

Reforço de atmosfera: uma vez escolhida a âncora, considerar gradient meshes, noise/grain overlays, padrões geométricos, transparências em camadas, sombras dramáticas, cursors customizados — desde que alinhados à âncora (não como ornamento solto).

Anti-padrões a evitar (independente da âncora):

  • Fonts genéricas sem justificativa: Arial, Inter, Roboto, Space Grotesk, system-ui default
  • Gradiente roxo-para-rosa em fundo branco (clichê "AI SaaS 2023")
  • Paleta indigo-500/violet-500 default do Tailwind sem customização
  • Sombras shadow-lg genéricas sem direção de luz definida
  • Border-radius rounded-2xl em tudo sem razão estética
  • "Bento grid" como solução padrão para qualquer landing
  • Hero com headline + subhead + 2 CTAs centralizado sem identidade

Bibliotecas com MCP

Quando a tarefa se beneficiar de bibliotecas prontas de componentes ou motion, esta skill pode consultar ou configurar MCPs como Magic UI MCP e React Bits MCP, desde que:

  • o projeto seja compativel com a stack exigida
  • a integracao nao conflite com o design system existente
  • o componente seja adaptado ao contexto visual real do app

Se o projeto ja tiver componentes, branding ou linguagem visual estabelecidos, o MCP serve como referencia ou acelerador, nunca como desculpa para destoar do produto.

Design System - Tokens Base

Todo projeto começa com a definição destes tokens:

src/lib/design-tokens.ts

export const tokens = {
  colors: {
    primary: {
      50: '#eff6ff',
      100: '#dbeafe',
      200: '#bfdbfe',
      300: '#93c5fd',
      400: '#60a5fa',
      500: '#3b82f6',
      600: '#2563eb',
      700: '#1d4ed8',
      800: '#1e40af',
      900: '#1e3a8a',
    },
    success: '#22c55e',
    warning: '#f59e0b',
    error: '#ef4444',
    info: '#3b82f6',
    gray: {
      50: '#f9fafb',
      100: '#f3f4f6',
      200: '#e5e7eb',
      300: '#d1d5db',
      400: '#9ca3af',
      500: '#6b7280',
      600: '#4b5563',
      700: '#374151',
      800: '#1f2937',
      900: '#111827',
    },
  },
  spacing: {
    xs: '0.25rem',
    sm: '0.5rem',
    md: '1rem',
    lg: '1.5rem',
    xl: '2rem',
    '2xl': '3rem',
    '3xl': '4rem',
  },
  typography: {
    fontFamily: {
      // CHOOSE ONE that fits the aesthetic anchor — see "Direção Estética" section.
      // NEVER default to Inter/Roboto/Arial without justification.
      // Examples by anchor: minimal → Helvetica/Söhne; editorial → Fraunces + Inter Tight;
      // retro-futuristic → Eurostile/Orbitron; refined → Didot/Bodoni + Söhne.
      // Pair a distinctive display font with a refined, legible body font.
      sans: "/* SET PER PROJECT — display + body pairing */",
      mono: "'JetBrains Mono', 'Fira Code', monospace",
    },
    fontSize: {
      xs: ['0.75rem', { lineHeight: '1rem' }],
      sm: ['0.875rem', { lineHeight: '1.25rem' }],
      base: ['1rem', { lineHeight: '1.5rem' }],
      lg: ['1.125rem', { lineHeight: '1.75rem' }],
      xl: ['1.25rem', { lineHeight: '1.75rem' }],
      '2xl': ['1.5rem', { lineHeight: '2rem' }],
      '3xl': ['1.875rem', { lineHeight: '2.25rem' }],
      '4xl': ['2.25rem', { lineHeight: '2.5rem' }],
    },
    fontWeight: {
      normal: '400',
      medium: '500',
      semibold: '600',
      bold: '700',
    },
  },
  borderRadius: {
    none: '0',
    sm: '0.25rem',
    md: '0.375rem',
    lg: '0.5rem',
    xl: '0.75rem',
    '2xl': '1rem',
    full: '9999px',
  },
  shadows: {
    sm: '0 1px 2px 0 rgb(0 0 0 / 0.05)',
    md: '0 4px 6px -1px rgb(0 0 0 / 0.1)',
    lg: '0 10px 15px -3px rgb(0 0 0 / 0.1)',
    xl: '0 20px 25px -5px rgb(0 0 0 / 0.1)',
  },
  breakpoints: {
    sm: '640px',
    md: '768px',
    lg: '1024px',
    xl: '1280px',
    '2xl': '1536px',
  },
  transitions: {
    fast: '150ms ease',
    normal: '250ms ease',
    slow: '350ms ease',
  },
  zIndex: {
    dropdown: 1000,
    sticky: 1020,
    fixed: 1030,
    modal: 1040,
    popover: 1050,
    tooltip: 1060,
    toast: 1070,
  },
} as const;

Breakpoints e Responsividade

Abordagem Mobile First obrigatória:

Mobile:  0 - 639px    → Layout single column, touch targets 44px mín
Tablet:  640 - 1023px → Layout adaptado, sidebar colapsável
Desktop: 1024px+      → Layout completo, múltiplas colunas

Regras de responsividade:

  • Imagens: usar object-fit: cover + aspect-ratio definido
  • Tabelas: viram cards em mobile (padrão stacked)
  • Navegação: hamburger em mobile, sidebar em desktop
  • Formulários: inputs full-width em mobile, grid em desktop
  • Touch targets: mínimo 44x44px em mobile
  • Font-size mínimo: 16px em inputs (evita zoom no iOS)

Componentes - Padrão de Especificação

Cada componente deve ter:

## Componente: [Nome]

### Variantes
- Default / Primary / Secondary / Ghost / Destructive

### Estados
- Default / Hover / Focus / Active / Disabled / Loading / Error

### Props
| Prop | Tipo | Default | Descrição |
|------|------|---------|-----------|
| variant | string | 'default' | Estilo visual |
| size | 'sm' \| 'md' \| 'lg' | 'md' | Tamanho |
| disabled | boolean | false | Desabilita interação |
| loading | boolean | false | Mostra skeleton/spinner |

### Acessibilidade
- Role ARIA: [role]
- Keyboard: [teclas suportadas]
- Screen reader: [comportamento esperado]

### Skeleton
- Formato do skeleton que aparece durante loading
- Dimensões devem refletir o conteúdo final (evitar layout shift)

Skeleton Loading - Padrões

Skeleton é obrigatório em toda tela que faz fetch de dados:

Tipos de skeleton:
├── TextSkeleton    → Linhas com largura variável (100%, 80%, 60%)
├── AvatarSkeleton  → Círculo (sm: 32px, md: 40px, lg: 48px)
├── CardSkeleton    → Retângulo com rounded corners
├── TableSkeleton   → Grid de retângulos imitando rows
├── ImageSkeleton   → Retângulo com aspect-ratio da imagem
└── FormSkeleton    → Inputs placeholder com labels

Regras:

  • Skeleton DEVE refletir o layout final (mesmas dimensões)
  • Animação: pulse (não shimmer — mais leve)
  • Cor: gray-200 com pulse para gray-300
  • Nunca mostrar skeleton por mais de 3s — se demorar, mostrar mensagem

Heurísticas de Nielsen - Checklist

Antes de aprovar qualquer interface, validar:

  1. Visibilidade do status — Usuário sempre sabe o que tá acontecendo?
  2. Compatibilidade com o mundo real — Linguagem do usuário, não jargão técnico?
  3. Controle e liberdade — Tem "desfazer"? Tem "voltar"?
  4. Consistência e padrões — Mesma ação = mesmo visual em toda app?
  5. Prevenção de erros — Confirmação antes de ações destrutivas?
  6. Reconhecer ao invés de lembrar — Info visível, não memorizada?
  7. Flexibilidade e eficiência — Atalhos pra usuários avançados?
  8. Design minimalista — Só info relevante na tela?
  9. Recuperação de erros — Mensagens claras com ação sugerida?
  10. Ajuda e documentação — Tooltips, onboarding?

Quando precisar de imagem (hero, ilustração, mascote, background)

Não gere prompt direto pra FAL/DALL-E. Despache a skill 17 (image-generator) com contexto visual coletado nesta etapa:

Contexto: hero image pra landing de [produto]
Paleta: [primary], [secondary], [contrast]
Mood: minimalist / playful / corporate / etc
Composição esperada: [centro/lateral/full-bleed]
Referências (se houver): paths de assets existentes no projeto

Skill 17 aplica a regra default (grok-imagine pra t2i, gemini-25-flash pra edit) — você só precisa passar contexto, ela escolhe model + executa.

Evidencia de Conclusao

  • fluxo principal definido
  • estados de loading, erro e vazio considerados
  • responsividade e acessibilidade especificadas

Handoff para Frontend

Entregar:

  1. Wireframes/mockups com estados (default, loading, error, empty, success)
  2. Design tokens configurados
  3. Especificação de cada componente novo
  4. Fluxo de navegação completo
  5. Comportamento responsivo definido por breakpoint
  6. Skeleton patterns para cada tela
  7. Micro-interações e animações especificadas
  8. Acessibilidade: roles ARIA, tab order, screen reader labels

Handoff para Backend

Comunicar:

  1. Dados necessários por tela (quais campos, formatos)
  2. Paginação: tipo (offset vs cursor), itens por página
  3. Filtros e ordenação que a UI precisa
  4. Estados de loading e como o skeleton se comporta
  5. Feedback visual que depende de resposta da API (sucesso, erro)

Código Limpo

Codigo deve priorizar clareza. Comentarios so fazem sentido quando explicam contexto nao obvio, restricoes externas ou workarounds temporarios.

Fontes

  • Aesthetic anchors pattern adapted from anthropics/skills/frontend-design (custom license, see source).

Integração com Pipeline

  • Orquestrador (skill 09): Coordena quando esta skill é invocada e define a próxima etapa
  • Context Manager (skill 08): Rastreia progresso das tasks dentro desta skill
  • Documentador (skill 10): Documenta entregas desta skill durante o desenvolvimento
Repository
felvieira/claude-skills-fv
Last updated
Created

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.