Claude-skill-registry acessibilidade
Garante que páginas HTML sigam práticas de acessibilidade WCAG 2.1 AA. Use quando criar ou modificar páginas HTML, adicionar componentes interativos, ou o usuário mencionar acessibilidade, ARIA, leitores de tela, ou contraste de cores.
git clone https://github.com/majiayu000/claude-skill-registry
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/acessibilidade" ~/.claude/skills/majiayu000-claude-skill-registry-acessibilidade && rm -rf "$T"
skills/data/acessibilidade/SKILL.mdSkill: Acessibilidade Web (WCAG 2.1 AA)
Esta skill garante que todas as páginas do projeto sigam as diretrizes de acessibilidade WCAG 2.1 nível AA, tornando o site acessível para todos os usuários, incluindo pessoas com deficiências.
Quando Usar
- Ao criar novas páginas HTML
- Ao adicionar componentes interativos (accordion, navbar, modals)
- Quando o usuário mencionar "acessibilidade", "ARIA", "alt text", "leitores de tela"
- Ao revisar código HTML existente
- Quando adicionar imagens, ícones ou conteúdo visual
- Ao criar formulários (se aplicável)
Princípios WCAG 2.1
1. Perceptível
Informação e componentes da interface devem ser apresentados de forma perceptível aos usuários.
2. Operável
Componentes da interface e navegação devem ser operáveis por todos os usuários.
3. Compreensível
Informação e operação da interface devem ser compreensíveis.
4. Robusto
Conteúdo deve ser robusto o suficiente para ser interpretado por diferentes tecnologias assistivas.
Diretrizes Principais
Estrutura Semântica
Hierarquia de Headings:
- Use h1, h2, h3... em ordem hierárquica
- Não pule níveis (h1 → h3 é incorreto)
- Apenas um h1 por página
Tags Semânticas HTML5:
<nav> <!-- Navegação --> <main> <!-- Conteúdo principal --> <section> <!-- Seções --> <article> <!-- Conteúdo independente --> <footer> <!-- Rodapé -->
ARIA (Accessible Rich Internet Applications)
Roles:
<div role="progressbar" aria-valuenow="85" aria-valuemin="0" aria-valuemax="100">
Labels:
<button aria-label="Fechar menu">✕</button>
Atributos ARIA Essenciais:
: Texto alternativo para leitores de telaaria-label
: Estado expandido/colapsadoaria-expanded
: Relacionamento entre elementosaria-controls
: Ocultar elementos decorativosaria-hidden
: Regiões que atualizam dinamicamentearia-live
Navegação por Teclado
Requisitos:
- Todos os elementos interativos devem ser acessíveis via Tab
- Ordem de tab lógica e sequencial
- Indicadores visuais de foco visíveis
- Não use
com valores positivostabindex
Elementos Focáveis:
- Links (
)<a> - Botões (
)<button> - Inputs (
,<input>
,<select>
)<textarea> - Elementos com
tabindex="0"
Contraste de Cores
Requisitos WCAG AA:
- Texto normal (< 18pt): mínimo 4.5:1
- Texto grande (≥ 18pt ou ≥ 14pt bold): mínimo 3:1
Combinações Bootstrap Seguras: ✅
bg-dark + text-white
✅ bg-primary + text-white
✅ bg-light + text-dark
✅ bg-warning + text-dark
⚠️ Evite: ❌
bg-warning sem text-dark
❌ Cores claras em fundos claros
❌ Texto cinza claro em fundo branco
Imagens e Conteúdo Visual
Atributo Alt:
<!-- Imagem informativa --> <img src="carta.jpg" alt="Carta Pikachu Base Set graduada nota 9"> <!-- Imagem decorativa --> <img src="decoracao.png" alt=""> <!-- ou --> <div aria-hidden="true">🔥</div>
Emojis: Como este projeto usa emojis decorativos:
<div class="display-1" aria-hidden="true">🔥</div> <h2>Charizard</h2>
Links e Botões
Texto Descritivo:
<!-- ✅ Bom --> <a href="charizard.html">Ver detalhes do Charizard</a> <!-- ❌ Ruim --> <a href="charizard.html">Clique aqui</a>
Área de Clique:
- Mínimo 44x44px (Bootstrap já garante com
).btn - Espaçamento adequado entre elementos clicáveis
Componentes Bootstrap com ARIA
Accordion:
<button class="accordion-button" aria-expanded="true" aria-controls="collapse1"> Título </button> <div id="collapse1" class="accordion-collapse collapse show"> Conteúdo </div>
Navbar Toggle:
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Alternar navegação"> <span class="navbar-toggler-icon"></span> </button>
Progress Bars:
<div class="progress" style="height: 30px;"> <div class="progress-bar bg-success" role="progressbar" style="width: 85%;" aria-valuenow="85" aria-valuemin="0" aria-valuemax="100"> <span class="fw-bold">85%</span> </div> </div>
Modals:
<div class="modal" id="modalFrente" tabindex="-1" aria-labelledby="modalFrenteLabel" aria-hidden="true"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title" id="modalFrenteLabel">Título</h5> <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Fechar"></button> </div> </div> </div> </div>
Responsividade e Zoom
Viewport:
<meta name="viewport" content="width=device-width, initial-scale=1.0">
Requisitos:
- Conteúdo deve ser legível até 200% de zoom
- Não bloqueie zoom (não use
)maximum-scale=1.0 - Layout deve adaptar sem scroll horizontal
Idioma
Tag HTML:
<html lang="pt-BR">
Mudanças de Idioma:
<p>Este é um <span lang="en">Base Set</span> Charizard</p>
Checklist de Acessibilidade
Ao criar ou modificar uma página, verifique:
Estrutura:
- ✅
definido<html lang="pt-BR"> - ✅ Hierarquia de headings correta (h1, h2, h3...)
- ✅ Tags semânticas HTML5 usadas apropriadamente
Conteúdo:
- ✅ Alt text em todas as imagens informativas
- ✅
em imagens/emojis decorativosaria-hidden="true" - ✅ Links com texto descritivo (não "clique aqui")
- ✅ Contraste de cores adequado (4.5:1 mínimo)
Interatividade:
- ✅ Navegação por teclado funcional
- ✅ Indicadores de foco visíveis
- ✅ ARIA labels em botões sem texto
- ✅ Navbar com atributos ARIA corretos
- ✅ Accordion com
earia-expandedaria-controls - ✅ Progress bars com
e atributosrolearia-value* - ✅ Modals com
earia-labelledbyaria-hidden
Responsividade:
- ✅ Viewport meta tag configurada
- ✅ Funciona em 200% de zoom
- ✅ Sem scroll horizontal em mobile
Testes de Acessibilidade
Testes Manuais
-
Navegação por Teclado:
- Use apenas Tab, Enter, Espaço, Setas
- Verifique se todos os elementos interativos são alcançáveis
- Confirme que a ordem de foco é lógica
-
Leitor de Tela:
- Windows: NVDA (gratuito)
- Mac: VoiceOver (nativo)
- Verifique se todo o conteúdo é lido corretamente
-
Zoom:
- Teste com 200% de zoom no navegador
- Verifique se não há quebra de layout
- Confirme que todo o conteúdo permanece legível
-
Desabilitar CSS:
- Veja se o conteúdo ainda faz sentido
- Verifique se a hierarquia está correta
Ferramentas Automatizadas
- axe DevTools: Extensão para Chrome/Firefox
- WAVE: Avaliador de acessibilidade web
- Lighthouse: Painel no Chrome DevTools (aba Accessibility)
- WebAIM Contrast Checker: https://webaim.org/resources/contrastchecker/
Correções Comuns
Problema: Imagem sem alt
<!-- ❌ Antes --> <img src="carta.jpg"> <!-- ✅ Depois --> <img src="carta.jpg" alt="Carta Charizard Base Set">
Problema: Link não descritivo
<!-- ❌ Antes --> <a href="detalhes.html">Clique aqui</a> <!-- ✅ Depois --> <a href="detalhes.html">Ver detalhes da carta Charizard</a>
Problema: Botão sem label
<!-- ❌ Antes --> <button class="btn-close" data-bs-dismiss="modal"></button> <!-- ✅ Depois --> <button class="btn-close" data-bs-dismiss="modal" aria-label="Fechar"></button>
Problema: Emoji sem aria-hidden
<!-- ❌ Antes --> <div class="display-1">🔥</div> <!-- ✅ Depois --> <div class="display-1" aria-hidden="true">🔥</div>
Problema: Contraste insuficiente
<!-- ❌ Antes --> <span class="badge bg-warning">Aviso</span> <!-- ✅ Depois --> <span class="badge bg-warning text-dark">Aviso</span>
Recursos
- WCAG 2.1 Quick Reference
- Bootstrap 5 Accessibility
- WebAIM Contrast Checker
- axe DevTools
- WAVE Extension
Integração com Outras Skills
Esta skill trabalha em conjunto com:
- bootstrap-guidelines: Para usar classes Bootstrap acessíveis
- codigo-html: Para estrutura HTML semântica
- estrutura-paginas: Para layout acessível de páginas
Ao criar ou modificar páginas, sempre considere acessibilidade como prioridade, não como complemento.