Install
$ agentstack add skill-felvieira-claude-skills-fv-22-accessibility-specialist ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Accessibility Specialist
Acessibilidade nao e um check cosmetico de ultima hora — e um conjunto de requisitos verificaveis (WCAG 2.2 AA) que decidem se 15-20% dos usuarios conseguem usar o produto. Esta skill traz rigor dedicado sem depender de UI/UX, Frontend ou SEO improvisarem.
Governanca Global
Esta skill segue GLOBAL.md, policies/execution.md, policies/handoffs.md, policies/quality-gates.md, policies/token-efficiency.md, policies/verification-before-completion.md (toda claim de "acessivel" precisa de evidencia: axe limpo, teste de teclado, ou screen reader) e policies/stack-flexibility.md.
Gate contra constituicao
Quando memory/constitution.md define eixo UX/acessibilidade:
- nenhum componente interativo novo passa sem navegacao por teclado completa
- contraste minimo AA (4.5:1 texto normal, 3:1 texto grande/UI) e gate, nao sugestao
- se o eixo marca WCAG AA como CRITICAL, violacao de nivel A/AA bloqueia o merge
Quando Usar
- revisar acessibilidade de um fluxo, tela ou componente antes de merge
- auditar um app existente contra WCAG 2.2 AA e priorizar gaps
- validar teclado, screen reader, contraste e semantica de um formulario complexo
- definir requisitos a11y para uma feature nova (antes da implementacao, nao depois)
Quando Nao Usar
- substituir UI/UX ou Frontend na implementacao base (esta skill revisa e especifica, nao reescreve tudo)
- tratar a11y como verniz final — chamada tarde, vira retrabalho caro
- conformidade legal formal (VPAT/ACR) — isso exige auditor certificado humano; esta skill prepara o terreno
Entradas Esperadas
- fluxo/componente alvo + estados de UI (loading, error, empty, disabled, expanded)
- stack e biblioteca de componentes (Radix, MUI, shadcn, headless, custom)
- nivel alvo (WCAG 2.2 A, AA — default AA; AAA so se exigido)
Saidas Esperadas
- findings priorizados por impacto x esforco, cada um com criterio WCAG citado (ex: "1.4.3 Contrast")
- correcoes concretas (snippet de codigo / atributo ARIA), nao "melhorar acessibilidade"
- handoff claro para Frontend (implementar), QA (regredir) ou UI/UX (repensar design)
As 4 categorias de teste (faca as 4, nao so a automatica)
Ferramentas automaticas pegam ~30-40% das violacoes WCAG. As outras exigem mao e ouvido.
| Metodo | Cobre | Como | |---|---|---| | Automatico | contraste, alt faltando, label faltando, ARIA invalido, ordem de heading | axe-core (via @axe-core/playwright, jest-axe, ou extensao Axe DevTools); Lighthouse a11y | | Teclado | foco, ordem, traps, ativacao, skip links | Desconecte o mouse. Tab/Shift+Tab/Enter/Space/Esc/setas pelo fluxo inteiro | | Screen reader | nome/role/estado anunciados, live regions, contexto | NVDA (Win, gratis) ou VoiceOver (Mac, Cmd+F5); navegue por landmarks e headings | | Zoom / reflow | 200%-400% zoom sem perda de conteudo, reflow a 320px | Browser zoom + viewport estreito; sem scroll horizontal em texto |
Checklist WCAG 2.2 AA — os criterios que mais quebram
Perceivable
- [ ] 1.1.1 Todo `
comalt(decorativa →alt=""`); icone-botao com label acessivel - [ ] 1.4.3 Contraste texto ≥ 4.5:1 (≥ 3:1 para ≥ 24px ou ≥ 19px bold)
- [ ] 1.4.11 Contraste de UI nao-texto (borda de input, icone, foco) ≥ 3:1
- [ ] 1.4.4 / 1.4.10 Texto escala a 200% e faz reflow a 320px sem scroll horizontal
- [ ] 1.3.1 Estrutura semantica: headings hierarquicos (sem pular de h1 → h4), listas reais, `
com`
Operable
- [ ] 2.1.1 Tudo operavel por teclado; 2.1.2 sem keyboard trap
- [ ] 2.4.3 Ordem de foco logica (segue a leitura visual)
- [ ] 2.4.7 Foco visivel sempre (nunca
outline: nonesem substituto) - [ ] 2.4.11 (2.2 novo) Elemento focado nao fica escondido atras de sticky header/footer
- [ ] 2.5.8 (2.2 novo) Alvo de toque ≥ 24x24 CSS px (ou espacamento equivalente)
- [ ] 2.4.1 Skip link para o conteudo principal
Understandable
- [ ] 3.3.2 Todo campo de form com `
associado (htmlFor/id`), nao so placeholder - [ ] 3.3.1 Erro de validacao identificado em texto (nao so cor) e ligado ao campo (
aria-describedby) - [ ] 3.2.3 Navegacao consistente entre paginas
Robust
- [ ] 4.1.2 Componente custom expoe name/role/value corretos (use HTML nativo antes de ARIA)
- [ ] 4.1.3 Mudancas dinamicas anunciadas via
aria-live(toast, erro, contador)
Motion
- [ ] 2.3.3
prefers-reduced-motionrespeitado em toda animacao nao-essencial
Exemplos concretos
Icone-botao sem nome acessivel (1.1.1 / 4.1.2)
...
...
Erro de form so por cor (1.4.1 / 3.3.1)
Email invalido: falta o @
prefers-reduced-motion (2.3.3)
@media (prefers-reduced-motion: reduce) {
*, *::before, *::after { animation-duration: 0.01ms !important; transition-duration: 0.01ms !important; }
}
Regra de ouro ARIA: HTML nativo > ARIA. ` ja e focavel, clicavel por teclado e tem role. Um exige reimplementar Enter/Space` na mao — e quase sempre faz errado.
Anti-padroes frequentes
outline: nonesem:focus-visiblesubstituto → teclado fica invisivel- placeholder usado como label → some ao digitar, contraste baixo, screen reader inconsistente
aria-labelem elemento nao-interativo (ignorado) ou duplicando texto visiveltabindexpositivo (tabindex="3") → quebra a ordem natural, vira pesadelo de manutencao- modal sem focus trap nem retorno de foco ao trigger no fechamento
- carrossel/autoplay sem pause e sem respeitar reduced-motion
Evidencia de Conclusao
- axe-core rodado sem violacoes serias/criticas (anexar contagem)
- fluxo principal percorrido 100% por teclado, com foco visivel — descrever o caminho
- screen reader interpreta nome/role/estado dos controles-chave
- gaps restantes priorizados (impacto x esforco) com criterio WCAG citado
Handoff
- Frontend (04) implementa as correcoes de codigo/ARIA
- QA (05) adiciona teste
jest-axe/@axe-core/playwrightpara regredir - UI/UX (02) repensa o design quando o problema e estrutural (contraste de paleta, alvo pequeno)
- Seguir
policies/handoffs.mde, quando util,templates/accessibility-check.md
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: felvieira
- Source: felvieira/claude-skills-fv
- License: Apache-2.0
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.