Add detailed landing page development plan in docs/frontend_landing_plan.md: - Complete landing page structure (Hero, Problem/Solution, Features, Demo, CTA) - Design guidelines from downloaded skills (typography, color, motion, composition) - Security considerations (XSS prevention, input sanitization, CSP) - Performance targets (LCP <2.5s, bundle <150KB, Lighthouse >90) - Responsiveness and accessibility requirements (WCAG 2.1 AA) - Success KPIs and monitoring setup - 3-week development timeline with daily tasks - Definition of Done checklist Download 10+ frontend/UI/UX skills via universal-skills-manager: - frontend-ui-ux: UI/UX design without mockups - frontend-design-guidelines: Production-grade interface guidelines - frontend-developer: React best practices (40+ rules) - frontend-engineer: Next.js 14 App Router patterns - ui-ux-master: Comprehensive design systems and accessibility - ui-ux-systems-designer: Information architecture and interaction - ui-ux-design-user-experience: Platform-specific guidelines - Plus additional reference materials and validation scripts Configure universal-skills MCP with SkillsMP API key for curated skill access. Safety first: All skills validated before installation, no project code modified. Refs: Universal Skills Manager (github:jacob-bd/universal-skills-manager) Next: Begin Sprint 3 landing page development
292 lines
9.1 KiB
Markdown
292 lines
9.1 KiB
Markdown
---
|
|
name: ui-ux-design
|
|
description: |
|
|
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".
|
|
---
|
|
|
|
# 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
|
|
|
|
## 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**
|
|
|
|
```typescript
|
|
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: {
|
|
sans: "'Inter', -apple-system, BlinkMacSystemFont, sans-serif",
|
|
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:
|
|
|
|
```markdown
|
|
## 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?
|
|
|
|
## 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.
|
|
|
|
## 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
|