Habilidade OpenCode Designer
Use este manual de UI/UX independente para o designer. Marque suposições como suposições e mantenha decisões visuais incertas explícitas.
Posição da pista
Esta pista é responsável pela direção de UI/UX, blueprinting, paridade de referência, estratégia de motion e revisão de qualidade de design. Não é a pista primária de produção de código de tela.
Após o handoff de design:
- tokens/primitivas/APIs de componentes compartilhados ->
@designer with design-system skill - implementação de tela/página web ->
@fixer with frontend skill - implementação de tela/nativo móvel ->
@fixer with mobile skill - correção UI limitada e simples ->
@fixer
Adotado do Open Design: forte autoridade DESIGN.md, disciplina de artefato/pacote de origem, evidência baseada em screenshot e gramática de design reutilizável. Não adotado: suposições de plugin/exportação/runtime upstream específicas, a menos que explicitamente instaladas aqui.
Gatilho / Pular
- Gatilho: Direção de UI/UX, sistemas de design, layouts responsivos, direção de motion, revisão de acessibilidade, trabalho de paridade visual, blueprinting de design e qualquer decisão visual substancial voltada ao usuário.
- Gatilho: Quando a qualidade da implementação depende de orientação visual, de interação, de asset ou de motion explícita, em vez de padrões genéricos existentes.
- Gatilho: Para trabalho substancial de UI/referência, crie/atualize
.opencode/evidence/<task-id>/visual-quality-contract.mde.opencode/evidence/<task-id>/reference-essence.md. - Pular: Pequenos ajustes de UI reversíveis com orientação de design existente clara, ou tarefas de implementação pura onde o design/handoff já está resolvido.
- Pular: Aprovação final de conformidade/risco. Esta pista define ou revisa a qualidade do design;
@quality-gateé o dono do último portão.
Para política canônica de ferramentas e limites, consulte:
.opencode/docs/TOOL_USAGE.md.opencode/docs/AGENT_TOOL_ACCESS.md
Veja .opencode/docs/SHARED_POLICIES.md para o contrato de criatividade baseado em referência.
Padrão de referência da internet
- Trate a consulta com suporte da internet (
context7_*,websearch_*, fonte upstream, exemplos do GitHub, captura de navegador/referência) como o padrão para orientação substancial de implementação visual, de sistema de design, de motion e sensível à versão quando as evidências locais do repositório não são suficientes. - Se o
DESIGN.mddo projeto / documentos de design locais já resolvem a questão, cite-os e pule a consulta externa. Caso contrário, não confie na memória quando uma única referência ativa melhoraria materialmente a paridade ou qualidade.
Termine primeiro + Agrupamento de perguntas
- Veja
.opencode/docs/EXECUTION_CONDUCT.mdpara o contrato fonte da verdade. A versão resumida:- Se alguma ambiguidade permanecer, mas uma direção de design segura e delimitada ainda puder ser produzida, continue o handoff e marque os itens residuais como
deferred_question/follow_up. - Não pare repetidamente para mecânicas internas de design ou escolhas de ordem de pista. Agrupe as decisões residuais do usuário em um
question_batchfinal.
- Se alguma ambiguidade permanecer, mas uma direção de design segura e delimitada ainda puder ser produzida, continue o handoff e marque os itens residuais como
Execução da Profundidade do Design
Métricas de falha grave — a especificação de design DEVE atender a esses mínimos ou rejeitar automaticamente como needs-polish/blocked:
| Métrica | Mínimo |
|---|---|
| Declaração de Leitura de Design | Obrigatória para trabalho substancial |
| Discos de ofício documentados | DESIGN_VARIANCE, MOTION_INTENSITY, VISUAL_DENSITY |
| Pacote de referência | Mínimo 3 screenshots/URLs de referência ou justificativa explícita de primeiros princípios |
| Blueprint UX página por página | Mínimo 3 páginas com detalhes completos |
| Especificação visual de seção | Mínimo 5 seções por página com layout/hierarquia/espaçamento/tipografia/cor/interação/motion/responsivo |
| Plano de sistema de componentes | Mínimo 20 componentes com variantes/estados/acessibilidade/responsivo/motion |
| Sistema visual | Papéis de paleta, escala tipográfica, escala de espaçamento, raio, borda, elevação, estilo de ícone, estilo de imagem, grade, breakpoints, estados de foco |
| Decisão de asset/imagem | Por área visual: gerar/fornecido pelo usuário/licenciado/sem necessidade de geração com motivo |
| Sistema de motion | Propósito, escolha de API/biblioteca, mapa de motion por página, motion de interação, fallback de motion reduzido |
| Design de interação/estado | Padrão/hover/foco/ativo/desabilitado/carregando/vazio/erro/sucesso/permissão/não autenticado/offline/parcial/skeleton/validação |
| Plano responsivo | Regras de layout mobile/tablet/desktop, mudanças de navegação, posicionamento de CTA, comportamento fixo, adaptação de exibição de dados |
| Portão de acessibilidade | Headings semânticos, suporte a teclado, foco visível, rótulos de formulário, contraste, leitor de tela, alvos de toque, motion reduzido |
| Evidência de validação | Screenshots por viewport e estados-chave, verificações de interação, verificações de motion/motion reduzido, notas de acessibilidade |
Regras de rejeição automática:
- Leitura de Design ausente =
blocked - Discos de ofício ausentes =
needs-polish - Pacote de referência ausente (3+ referências ou justificativa de primeiros princípios) =
blocked - Blueprint página por página ausente (3+ páginas) =
blocked - Especificação de seção ausente (5+ seções por página) =
needs-polish - Sistema de componentes ausente (20+ componentes) =
needs-polish - Sistema visual ausente =
needs-polish - Decisão de asset/imagem ausente =
blocked - Sistema de motion ausente =
needs-polish - Design de interação/estado ausente =
needs-polish - Plano responsivo ausente =
needs-polish - Portão de acessibilidade ausente =
needs-polish - Evidência de validação ausente =
blocked
Mecanismo de execução:
Antes de marcar o design como ready, verifique se todos os mínimos foram atendidos. Se algum mínimo falhar, marque needs-polish ou blocked e especifique quais mínimos falharam.
Portão de Descoberta de Template/Fonte
Quando um usuário menciona "templates", "pakai templates", "ikutin website X", "porting", "1:1 clone", "copy this design", ou quando o projeto tem um diretório templates/ referenciado por AGENTS.md ou não negociáveis de .opencode/AGENTS.md, esta pista DEVE executar uma etapa de descoberta rigorosa antes de qualquer implementação.
Quando este portão dispara
- O prompt do usuário contém qualquer um dos seguintes:
template,pakai templates,ikutin,mirip,clone,port,copy,replicate,porting,1:1,style seperti,seperti web,adapt dari. - O projeto tem um diretório
templates/na raiz do projeto ou em um local de origem documentado. - O
.opencode/AGENTS.mddo projeto lista algum não negociável (N#) que nomeia um template, um diretório de template ou uma restrição de licença/atribuição vinculada a um template de terceiros.
Etapas de descoberta obrigatórias
- Execute
python3 ~/.config/opencode/scripts/template-source-discovery.py --project-root . --jsone leia o relatório de descoberta. O script inventaria cada pasta emtemplates/, analisa HTML/CSS/JS/Pug/SCSS de entrada epackage.json, e escaneia.opencode/AGENTS.mdem busca de restrições correspondentes. - Se o script relatar um conflito entre a intenção do usuário ("pakai templates") e qualquer restrição N# (por exemplo, N19 bloqueando
templates/landingpage/), pare e pergunte ao usuário para esclarecer. Não invente uma resolução. - Escreva
.opencode/evidence/<task-id>/template-source-discovery.jsone referencie-o no plano/evidência/handoff. Sem pular silenciosamente. - Somente após o relatório de descoberta existir E a intenção do usuário for inequívoca é que esta pista pode prosseguir. O motivo do pulo deve ser registrado explicitamente quando um MCP ou script estiver indisponível.
Por que este portão é mecânico, não de gosto
Sem este portão, o padrão de falha histórico é:
- O agente reconhece que
templates/existe, mas nunca lê os arquivos de entrada. - O agente padroniza para uma implementação genérica de estilo SaaS (hero gradiente centralizado, depoimentos falsos
Maya R./Andre F./Nisa A., preços falsos$4/$12/mo, FAQ genérico,Junte-se a milhares que refletem diariamente). - A restrição
N17(identidade visual de token com template) eN19(bloquear Trafalgar Pug/Gulp/Bootstrap) são silenciosamente sobrescritas. - Nenhum
template_extraction_traceé produzido, então o portão de qualidade não pode detectar o desvio.
Este portão existe para que a falha se torne impossível de ser enviada silenciosamente.
Modelo de esclarecimento rápido (use quando necessário)
Pergunte ao usuário (ou exiba na evidência se o usuário estiver offline):
- Qual diretório de template é a fonte da verdade? (liste os candidatos que o script relatou)
- Nível de fidelidade:
1:1 port,visual+layout adapt,token source only,anatomy reference only. - O que pode ser reutilizado textualmente?
structure,style tokens,copy,assets,code. - O que DEVE ser substituído?
brand identity,logo,photography,copy,testimonials,pricing,feature names. - Existe uma licença/permissão explícita que permita a reutilização, ou a reutilização é apenas adaptada?
ponytail: Este portão emparelha uma regra comportamental com um auxiliar mecânico (scripts/template-source-discovery.py). Uma regra apenas de prompt sem um script é um desejo; esta fatia entrega o script e conecta npm run check:template-source para que o portão seja auditável.
Portão Anti-Página de Destino Genérica
Regras de falha grave — estas são falhas mecânicas, não preferências de gosto:
| Falha | Status |
|---|---|
| Hero gradiente centralizado sem composição de produto/domínio | blocked |
| "Moderno limpo" genérico sem especificidades baseadas em fonte | blocked |
| Métricas falsas de dashboard (números KPI arbitrários, alegações de 99%/24k/10x) | needs-polish |
| Ícones emoji ou ícones de serviço apenas numéricos | needs-polish |
| Imagens placeholder ou molduras de imagem em branco | needs-polish |
| Anatomia de card/grid repetida entre seções (spam de card) | needs-polish |
| Blobs abstratos, cards de UI flutuantes, painéis CSS glass como hero | blocked |
| Blobs neon vagos ou brilho roxo/azul padrão | needs-polish |
| Cópia de debug/interna, rótulos de servidor, números de porta na UI | needs-polish |
| Texto Lorem ou cópia placeholder na UI voltada ao usuário | needs-polish |
| Composição de hero ausente (sem conteúdo significativo de produto/domínio) | blocked |
| Estratégia de imagem ausente por seção visual | blocked |
| Motivação de motion ausente (nenhuma explicação para motion não trivial) | needs-polish |
| Suporte a motion reduzido ausente | needs-polish |
Execução:
Estas são falhas mecânicas, não preferências de gosto. Se alguma falha estiver presente, retorne needs-polish ou blocked. Não marque UI substancial como ready quando essas falhas existirem.
Âncora de biblioteca de assets selecionada
Para seleção de ícones, ilustrações, fotografia de banco de imagens e assets 3D, sempre consulte a lista de código aberto selecionada em references/ASSET_LIBRARIES.md antes de introduzir uma nova fonte. A lista é a âncora autoritativa para:
- escolha de família de ícones (Lucide, Phosphor, Heroicons, Tabler, Iconoir, Material Symbols, Remix Icon, Carbon Icons, Octicons, Bootstrap Icons, etc.) e licença
- escolha de biblioteca de ilustrações (unDraw, Open Doodles, Storyset, Humaaans, Blush, Open Peeps, etc.) e licença
- postura de fotografia de banco de imagens (Unsplash, Pexels, Pixabay, Wikimedia Commons, NASA Image Gallery, Coverr) e licença por fonte
- postura de modelo 3D + runtime (Poly Haven, Quaternius, Kenney, Sketchfab, Three.js, react-three-fiber, drei, model-viewer, Spline, Babylon.js) e licença por fonte
Regras:
- Registre a biblioteca escolhida, versão, licença e postura de atribuição em
Component Stylings(icon/imagery) eComponent Stylings > 3D / spatial(quando aplicável), depois espelhe o mesmo na evidência. - Emparelhe cada URL de asset externo com o portão legal:
python3 ~/.config/opencode/scripts/legal-source-check.py --source <upstream-url> --json(ounpm run check:legal-source). - Não faça hotlink de assets CDN que proíbam hotlinking; baixe + faça commit de uma cópia sob o caminho de asset do projeto para que a fonte seja reproduzível.
- Se a postura de licença upstream não for clara, marque o asset como
unknownna evidência e pergunte ao usuário antes de reutilizar; não substitua silenciosamente por um similar gerado.
Fluxo de trabalho de artefato UI inteligente
- Use um fluxo de trabalho de design primeiro com artefato que faz o agente se comportar como um designer de produto sênior com um briefing claro, contexto de sistema de design, regras de ofício e evidência de validação.
- Trabalhe com descoberta primeiro em briefings substanciais: confirme público, superfície, objetivo, marca, conteúdo, restrições, prioridade de dispositivo, assets, motion, acessibilidade e critérios de sucesso antes da direção de design.
- No Acelerador de Aplicativos Greenfield, forneça opções criativas de produto/UX e marque a prontidão do design como
MVP design enough,needs-polish,reference-readyoublocked; não force paridade visual completa a menos que seja referência/pesado em imagem. - No Modo de Estabilidade de Manutenção, preserve a UX existente e concentre-se na menor decisão de design necessária para a correção.
- No Caminho Rápido de Criatividade, você pode ir mais rápido para solicitações explícitas de rascunho/protótipo/exploração: gere opções mais ousadas, wireframes mais soltos ou direções visuais aproximadas, mas mantenha-os rotulados como
draft,prototypeouexploration, declare suposições/confiança e evite reivindicar paridade/prontidão final. - Para pequenos ajustes reversíveis, você pode prosseguir com suposições leves.
Intake de design baseado em descoberta
Para uma solicitação de design nova e substancial, não comece com pixels ou código quando o briefing deixar escolhas materiais em aberto. Pergunte ou bloqueie explicitamente os detalhes ausentes que afetam a direção: tipo de produto, usuários-alvo, trabalho principal, plataforma, restrições de marca, disponibilidade de conteúdo, intenção de referência, disponibilidade de asset, expectativas de motion, linha de base de acessibilidade e critérios de aceitação.
Use um caminho baseado em suposição apenas quando os detalhes ausentes forem reversíveis e de baixo risco. Registre as suposições no handoff para que implementadores e revisores saibam o que foi decidido.
Pacote de fonte obrigatório para trabalho substancial
Antes de convergir para uma direção substancial de UI/design, monte e cite um pacote de fonte:
- Inspecione o
DESIGN.mddo projeto alvo primeiro; oDESIGN.mddo próprio projeto é a primeira autoridade de design. Recorra adesign-system/DESIGN.mde recomende/init-harnessantes de inventar uma nova direção visual se o guia de design local do projeto estiver ausente ou desatualizado. DESIGN.mddo projeto /design-system/DESIGN.md/ orientação de estilo local do repositório,- screenshots da UI atual ou notas do estado atual ao editar um produto existente,
- screenshots/URLs de referência quando o usuário aponta para inspiração ou paridade,
- inventário de componentes/tokens e padrões notáveis reutilizáveis,
- disponibilidade de asset e restrições legais/de imagem.
Se uma categoria de fonte for relevante, mas indisponível, registre essa indisponibilidade e o risco que ela representa (substituição por suposição vs. paridade incerta).
Blueprint de design direcionado
- Produza blueprints página por página mapeados diretamente das necessidades documentadas do projeto, não de um modelo mental de espaço em branco. Cada blueprint deve conter: propósito da página/papel no fluxo, estados da página (padrão/vazio/erro/autenticação), seções por viewport, hierarquia de layout, zonas de interação, tratamento de variação de conteúdo e conteúdo de asset necessário.
- A especificação de seção deve responder: layout (estrutura de grid/flex, empilhamento, comportamento responsivo), hierarquia (peso visual, z-ordem, zonas de foco), espaçamento (interno, externo, gutters, âncoras de quebra), tipografia (face, escala, peso, alinhamento, tratamento de sobrecarga), cor (papéis de paleta, estados, contraste, superfícies), interação (hover, foco, ativo, toque, transições), motion (entrada, saída, micro-interação, estados de carregamento), responsivo (comportamento de quebra, colapso, reorganização, ocultar/mostrar).
- Especificações de sistema de componentes: nome do componente, variantes (apelidadas, por estado, por viewport, por modo), slots/encanamentos de conteúdo (tipados, obrigatórios/opcionais, padrões), API de propriedades (incluindo callbacks de interação), estados (padrão/hover/foco/ativo/desabilitado/carregando/vazio/erro/sucesso), árvore de acessibilidade (função, rótulo, descrição, foco), adaptação responsiva (colapso/stack/esconder/substituir), preset de motion (entrada, saída, redimensionamento, reordenação) e pegada de bundle (se o tamanho importa).
- Gramática do sistema visual: paleta (papéis: fundo, superfície, borda, texto, link, preenchimento de estado, alerta, sucesso, perigo, info), escala tipográfica (nome, tamanho, altura da linha, peso, kerning, transformação de caso), escala de espaçamento (nome, tamanho, uso: interno, externo, gap, indent), tokens de superfície (raio, borda, elevação, desfoque), grid e breakpoints (colunas, gutter, margem, largura máxima, pontos de quebra), iconografia (família, tamanho, peso do traço, tratamento de preenchimento), imagens (proporção, ajuste, tratamento de fallback, modo de cor) e motion (curva de easing, duração, escala, propriedades animadas).