一键导入
ui-review-checklist
Checklist completo para revisão de UI — hierarquia visual, acessibilidade, responsividade, estados interativos. Use antes de PR de frontend.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Checklist completo para revisão de UI — hierarquia visual, acessibilidade, responsividade, estados interativos. Use antes de PR de frontend.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Config central do fluxo Jira+Slack (fanti-flow). Project keys, canais, templates e padrões de comunicação. Editar com dados do seu workspace antes do primeiro uso.
Templates para gestão de projetos — user stories, ADRs, sprint planning, retrospectivas e roadmaps. Use quando precisar criar artifacts de PM.
Template padronizado para Pull Requests — título, descrição, checklist de review e labels. Use quando criar ou revisar PRs.
Templates prontos para PRD, RICE scoring, product brief e go-to-market. Use quando precisar documentar decisões de produto.
Patterns e boilerplates Python prontos — Repository Pattern, Settings, FastAPI estruturado, pytest fixtures. Use quando iniciar módulos ou precisar de referência.
Checklist de segurança pré-deploy — OWASP Top 10, headers, auth, secrets, dependências. Use antes de deploy ou review de segurança.
| name | ui-review-checklist |
| description | Checklist completo para revisão de UI — hierarquia visual, acessibilidade, responsividade, estados interativos. Use antes de PR de frontend. |
| allowed-tools | Read, Grep, Glob, Bash, Edit |
| model | sonnet |
Checklist estruturado para revisão de interfaces antes de PR/merge/deploy. Inclui comandos de teste automatizado (axe, Lighthouse, Playwright) pra validação objetiva.
outline: none sem substitutodisabled ou aria-disabledpointer em clicáveis, not-allowed em disabled<button> pra ações, <a> pra navegação<main>, <nav>, <header>, <footer>, <aside>alt em imagens: descritivo pra conteúdo, alt="" pra decorativasaria-label em botões só-íconearia-invalid + aria-describedby em inputs com erroaria-live="polite" em regiões com conteúdo dinâmico (toast, erro)Escape fecha modals e drawersprefers-reduced-motion: reduce respeitado em animaçõesprefers-color-scheme respeitado pra dark/light<label for="x"> explicitamente associado ao inputautocomplete attributes corretos: email, tel, street-address, postal-codetype correto: email, tel, number, urlinputmode pra teclados mobile: numeric, decimal, tel, emailautocomplete="current-password"noValidate no form + validação custom (mais consistente que nativa)loading="lazy"font-display: swap (evita FOIT)<link rel="preload" as="font">)transform/opacity, evita top/leftIntl.DateTimeFormat, Intl.NumberFormat)items(s))dir="rtl", CSS logical properties)var(--color-bg) em vez de #fff)color-scheme: light dark no CSS pra ajuste de scrollbars/forms nativosprefers-color-scheme como default)# Lighthouse CI (perf, a11y, best practices, SEO)
npx lighthouse https://localhost:3000 --only-categories=accessibility,performance --output=html --output-path=./lh.html
# axe-core (a11y profunda, mais severa que Lighthouse)
npx @axe-core/cli https://localhost:3000 --tags wcag2a,wcag2aa
# Playwright com axe (integrado)
# npx playwright test --grep "a11y"
# (scripts devem usar @axe-core/playwright)
# pa11y (alternativa a axe)
npx pa11y https://localhost:3000
# Storybook a11y addon (componente por componente)
# npm run storybook
# aba "Accessibility" em cada story
# Chrome DevTools — Coverage, Rendering, Performance tabs
# Rendering > paint flashing: ver re-renders visuais
# Rendering > layout shift regions: ver CLS
# Responsive manual:
# - DevTools > Toggle device toolbar
# - Testar: iPhone SE (375px), iPhone 14 (390px), iPad (768px), Desktop (1440px)
role="dialog" ou role="alertdialog"aria-labelledby apontando pro títuloEscape fecharole="combobox" + aria-expanded<table> semântico com <thead>, <tbody>scope="col" em th<caption> com título da tabelaaria-selectedrole="status" (não bloqueante) ou role="alert" (crítico)| Anti-pattern | Problema | Fix |
|---|---|---|
<div onClick> em vez de <button> | Sem keyboard, sem ARIA | <button> sempre |
outline: none sem substituto | Keyboard user fica perdido | Custom focus ring |
| Placeholder como label | Some ao digitar, ruim pra screen reader | Label visível acima |
font-size em px | Não respeita settings do user | rem ou em |
Animação longa sem prefers-reduced-motion | Gatilho pra vestibular users | @media (prefers-reduced-motion: reduce) |
color: red pra erro | Daltônico não distingue | Ícone + texto + cor |
| Hover-only disclosure | Não funciona em touch | Click/tap também revela |
| Botão "OK" / "Cancelar" sem contexto | Screen reader perde semântica | "Excluir usuário" / "Manter usuário" |
tabindex="1" e outros positivos | Quebra ordem natural | Use só 0 (focável) e -1 (programático) |
| Modal fullscreen em mobile que não dá pra fechar | Usuário fica trancado | Botão fechar grande + swipe down |