Communitygithub.com

Auditoria de Acessibilidade

Habilidade de auditoria de acessibilidade para escanear, corrigir e verificar conformidade com WCAG 2.2 Níveis A e AA em bases de código React, Next.js, Vue, Angular, Svelte e HTML puro. Use ao auditar acessibilidade, corrigir violações de a11y, verificar contraste de cores, gerar relatórios de conformidade ou integrar verificações de acessibilidade em pipelines CI/CD.

O que é Auditoria de Acessibilidade?

Esta habilidade é uma ferramenta completa de auditoria de acessibilidade para aplicações web modernas, implementando um fluxo de trabalho em três fases (Escaneamento, Correção, Verificação) que identifica violações WCAG 2.2 Níveis A e AA, gera correções de código exatas por framework e produz relatórios de conformidade prontos para stakeholders. Ela vai além da detecção, fornecendo para cada violação o código antes/depois adaptado ao framework específico (React, Next.js, Vue, Angular, Svelte ou HTML puro). Suporta análise de contraste de cores com sugestões de alternativas acessíveis, cobertura dos novos critérios de sucesso do WCAG 2.2 (Aparência do Foco, Movimentos de Arrasto, Tamanho do Alvo) e integração com pipelines CI/CD via GitHub Actions, GitLab CI e Azure DevOps. Pode ser ativada via linha de comando ou comando slash `/a11y-audit` para uma sessão interativa, sendo ideal para desenvolvedores e equipes de qualidade que desejam garantir conformidade com acessibilidade de forma automatizada e contínua.

Funciona com~Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/SamuelChien/mega-skills-collection/tree/HEAD/a11y-audit

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

O que Auditoria de Acessibilidade faz?


Nome: a11y-audit Nível: PADRÃO Categoria: Engenharia - Qualidade Frontend Dependências: Python 3.8+ (Apenas Biblioteca Padrão) Autor: Alireza Rezvani Versão: 2.1.2 Última Atualização: 2026-03-18 Licença: MIT


Nome

a11y-audit -- Habilidade de Auditoria e Remediação de Acessibilidade WCAG 2.2

Descrição

A habilidade a11y-audit fornece um pipeline completo de auditoria de acessibilidade para aplicações web modernas. Ela implementa um fluxo de trabalho em três fases -- Escanear, Corrigir, Verificar -- que identifica violações WCAG 2.2 Níveis A e AA, gera correções de código exatas por framework e produz relatórios de conformidade prontos para stakeholders.

Esta habilidade vai além da detecção. Para cada violação encontrada, ela fornece a correção de código antes/depois precisa, adaptada ao seu framework (React, Next.js, Vue, Angular, Svelte ou HTML puro). Ela entende que um atributo alt ausente em um <img> no JSX do React requer um padrão de correção diferente do mesmo problema em um SFC Vue ou um template Angular.

O que esta habilidade faz:

  1. Escaneia sua base de código em busca de todas as violações WCAG 2.2 Níveis A e AA, categorizadas por severidade (Crítica, Grave, Leve)
  2. Corrige cada violação com padrões de código antes/depois específicos do framework
  3. Verifica se as correções resolvem as violações originais e não introduzem regressões
  4. Relata as descobertas em um formato estruturado adequado para desenvolvedores, gerentes de produto e stakeholders de conformidade
  5. Integra pipelines CI/CD para prevenir regressões de acessibilidade

Principais diferenciais:

  • Padrões de correção com consciência de framework (não conselhos HTML genéricos)
  • Análise de contraste de cores com sugestões de alternativas acessíveis
  • Cobertura WCAG 2.2 incluindo os critérios de sucesso mais recentes (Aparência do Foco, Movimentos de Arrasto, Tamanho do Alvo)
  • Integração com pipelines CI/CD via GitHub Actions, GitLab CI e Azure DevOps
  • Suporte a comando slash via /a11y-audit

Funcionalidades

Capacidades Principais

FuncionalidadeDescrição
Escaneamento Completo WCAG 2.2Verifica todos os critérios de sucesso Nível A e AA em sua base de código
Detecção de FrameworkDetecta automaticamente React, Next.js, Vue, Angular, Svelte ou HTML puro
Classificação de SeveridadeCategoriza cada violação como Crítica, Grave ou Leve
Geração de Código de CorreçãoProduz diffs de código antes/depois para cada problema
Verificador de Contraste de CoresValida pares de primeiro plano/fundo contra taxas AA e AAA
Alternativas AcessíveisSugere cores de substituição que atendem aos requisitos de contraste
Relatório de ConformidadeGera relatórios para stakeholders com resumos de aprovação/reprovação
Integração CI/CDConfigurações de pipeline para GitHub Actions, GitLab CI, Azure DevOps
Auditoria de Navegação por TecladoDetecta problemas de gerenciamento de foco e ordem de tabulação ausentes
Validação ARIAVerifica atributos ARIA incorretos, redundantes ou ausentes
Detecção de Regiões VivasIdentifica conteúdo dinâmico sem anúncios aria-live
Acessibilidade de FormuláriosValida associações de rótulos, mensagens de erro e tipos de entrada

Matriz de Cobertura WCAG 2.2

PrincípioCritérios Nível ACritérios Nível AA
Perceptível1.1.1 Conteúdo Não Textual, 1.2.1-1.2.3 Mídia Baseada em Tempo, 1.3.1-1.3.3 Adaptável, 1.4.1-1.4.2 Discernível1.3.4-1.3.5 Adaptável, 1.4.3-1.4.5 Contraste e Imagens de Texto, 1.4.10-1.4.13 Refluxo e Conteúdo
Operável2.1.1-2.1.2 Teclado, 2.2.1-2.2.2 Tempo, 2.3.1 Apreensões, 2.4.1-2.4.4 Navegável, 2.5.1-2.5.4 Entrada2.4.5-2.4.7 Navegável, 2.4.11 Aparência do Foco (NOVO 2.2), 2.5.7 Arrasto (NOVO 2.2), 2.5.8 Tamanho do Alvo (NOVO 2.2)
Compreensível3.1.1 Idioma, 3.2.1-3.2.2 Previsível, 3.3.1-3.3.2 Assistência de Entrada3.1.2 Idioma de Partes, 3.2.3-3.2.4 Previsível, 3.3.3-3.3.4 Tratamento de Erros, 3.3.7 Entrada Redundante (NOVO 2.2), 3.3.8 Autenticação Acessível (NOVO 2.2)
Robusto4.1.2 Nome/Função/Valor4.1.3 Mensagens de Status

Definições de Severidade

SeveridadeDefiniçãoExemploSLA
CríticaBloqueia o acesso para grupos inteiros de usuáriosTexto alternativo ausente em imagens informativas, sem acesso por teclado à navegação principalCorrigir antes do lançamento
GraveBarreira significativa que degrada a experiênciaContraste de cor insuficiente no texto do corpo, rótulos de formulário ausentesCorrigir na sprint atual
LeveProblema de usabilidade que causa atritoPapéis ARIA redundantes, hierarquia de cabeçalhos abaixo do idealCorrigir nas próximas 2 sprints

Uso

Início Rápido

Ative a habilidade e execute uma auditoria em seu projeto:

# Escanear projeto inteiro
python scripts/a11y_scanner.py /caminho/para/projeto

# Escanear com saída JSON para ferramentas
python scripts/a11y_scanner.py /caminho/para/projeto --json

# Verificar contraste de cores para valores específicos
python scripts/contrast_checker.py --fg "#777777" --bg "#ffffff"

# Verificar contraste em um arquivo CSS/Tailwind
python scripts/contrast_checker.py --file /caminho/para/styles.css

Comando Slash

Use o comando slash /a11y-audit para uma sessão de auditoria interativa:

/a11y-audit                    # Auditar projeto atual
/a11y-audit --scope src/       # Auditar diretório específico
/a11y-audit --fix              # Auditar e aplicar correções automaticamente
/a11y-audit --report           # Gerar relatório para stakeholders
/a11y-audit --ci               # Saída de resultados compatível com CI

Fluxo de Trabalho em Três Fases

Fase 1: Escaneamento

O scanner percorre sua árvore de origem, detecta o framework em uso e aplica o conjunto de regras apropriado.

python scripts/a11y_scanner.py /caminho/para/projeto --format table

Exemplo de saída:

RELATÓRIO DE AUDITORIA A11Y - /caminho/para/projeto
Framework Detectado: React (Next.js)
Arquivos Escaneados: 127
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

CRÍTICAS (3 problemas)
  [1.1.1] src/components/Hero.tsx:14
    Texto alternativo ausente no elemento <img>
  [2.1.1] src/components/Modal.tsx:8
    Foco não preso dentro do diálogo modal
  [1.4.3] src/styles/globals.css:42
    Taxa de contraste 2.8:1 em .subtitle (requer 4.5:1)

GRAVES (7 problemas)
  [2.4.11] src/components/Button.tsx:22
    Indicador de foco não visível (contorno de 2px necessário)
  [1.3.1] src/components/Form.tsx:31
    Entrada sem <label> associado
  ...

LEVES (4 problemas)
  [1.3.1] src/components/Nav.tsx:5
    <nav> tem papel role="navigation" redundante
  ...

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
RESUMO: 14 violações (3 Críticas, 7 Graves, 4 Leves)
WCAG 2.2 Nível A:  8 problemas
WCAG 2.2 Nível AA: 6 problemas

Fase 2: Correção

Para cada violação, aplique a correção específica do framework. A habilidade fornece código antes/depois exato para cada tipo de problema.

Consulte a seção Padrões de Correção por Framework abaixo para o catálogo completo de correções.

Fase 3: Verificação

Reexecute o scanner para confirmar que todas as correções foram aplicadas e nenhuma regressão foi introduzida:

# Re-escanear após correções
python scripts/a11y_scanner.py /caminho/para/projeto --format table

# Comparar com a linha de base
python scripts/a11y_scanner.py /caminho/para/projeto --baseline audit-baseline.json

Saída de verificação:

RESULTADOS DA VERIFICAÇÃO
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Escaneamento Anterior:  14 violações (3 Críticas, 7 Graves, 4 Leves)
Escaneamento Atual:     2 violações (0 Críticas, 1 Grave, 1 Leve)
Resolvidas:            12 violações
Novos Problemas:        0 regressões

STATUS: MELHOROU (85,7% de redução)

Exemplos

Exemplo 1: Auditoria de Componente React

Dado um componente React com múltiplos problemas de acessibilidade:

// ANTES: src/components/ProductCard.tsx
function ProductCard({ product }) {
  return (
    <div onClick={() => navigate(`/product/${product.id}`)}>
      <img src={product.image} />
      <div style={{ color: '#aaa', fontSize: '12px' }}>
        {product.name}
      </div>
      <span style={{ color: '#999' }}>${product.price}</span>
    </div>
  );
}

Violações detectadas:

#WCAGSeveridadeProblema
11.1.1Crítica<img> sem atributo alt
22.1.1Crítica<div onClick> não acessível por teclado
31.4.3GraveCor #aaa em branco falha no contraste (2.32:1, necessário 4.5:1)
41.4.3GraveCor #999 em branco falha no contraste (2.85:1, necessário 4.5:1)
54.1.2GraveElemento interativo sem papel e nome acessível
// DEPOIS: src/components/ProductCard.tsx
function ProductCard({ product }) {
  return (
    <a
      href={`/product/${product.id}`}
      className="product-card"
      aria-label={`Ver ${product.name} - $${product.price}`}
    >
      <img src={product.image} alt={product.imageAlt || product.name} />
      <div style={{ color: '#595959', fontSize: '12px' }}>
        {product.name}
      </div>
      <span style={{ color: '#767676' }}>${product.price}</span>
    </a>
  );
}

O que mudou:

  • <div onClick> substituído por <a href> para suporte nativo a teclado e leitores de tela
  • Atributo alt adicionado ao <img> com fallback significativo
  • aria-label fornece contexto completo para tecnologia assistiva
  • Cor #aaa substituída por #595959 (taxa de contraste 7.01:1 -- passa AA e AAA)
  • Cor #999 substituída por #767676 (taxa de contraste 4.54:1 -- passa AA)

Exemplo 2: Auditoria de Formulário Vue SFC

<!-- ANTES: src/components/LoginForm.vue -->
<template>
  <form @submit="handleLogin">
    <input type="text" placeholder="Email" v-model="email" />
    <input type="password" placeholder="Senha" v-model="password" />
    <div v-if="error" style="color: red">{{ error }}</div>
    <div @click="handleLogin">Entrar</div>
  </form>
</template>

Violações detectadas:

#WCAGSeveridadeProblema
11.3.1CríticaEntradas sem elementos <label> associados
23.3.2GraveTexto do placeholder usado como único rótulo (desaparece ao digitar)
32.1.1Crítica<div @click> não acessível por teclado
44.1.3GraveMensagem de erro não anunciada para leitores de tela
53.3.1GraveErro não associado programaticamente à entrada
<!-- DEPOIS: src/components/LoginForm.vue -->
<template>
  <form @submit.prevent="handleLogin" aria-label="Acesse sua conta">
    <div class="field">
      <label for="login-email">Email</label>
      <input
        id="login-email"
        type="email"
        v-model="email"
        autocomplete="email"
        required
        :aria-describedby="emailError ? 'email-error' : undefined"
        :aria-invalid="!!emailError"
      />
      <span v-if="emailError" id="email-error" role="alert">
        {{ emailError }}
      </span>
    </div>
    <div class="field">
      <label for="login-password">Senha</label>
      <input
        id="login-password"
        type="password"
        v-model="password"
        autocomplete="current-password"
        required
        :aria-describedby="passwordError ? 'password-error' : undefined"
        :aria-invalid="!!passwordError"
      />
      <span v-if="passwordError" id="password-error" role="alert">
        {{ passwordError }}
      </span>
    </div>
    <div v-if="error" role="alert" aria-live="assertive" class="form-error">
      {{ error }}
    </div>
    <button type="submit">Entrar</button>
  </form>
</template>

Exemplo 3: Auditoria de Template Angular

<!-- ANTES: src/app/dashboard/dashboard.component.html -->
<div class="tabs">
  <div *ngFor="let tab of tabs"
       (click)="selectTab(tab)"
       [class.active]="tab.active">
    {{ tab.label }}
  </div>
</div>
<div class="tab-content">
  <div *ngIf="selectedTab">{{ selectedTab.content }}</div>
</div>

Violações detectadas:

#WCAGSeveridadeProblema
14.1.2CríticaWidget de abas sem papéis ARIA (tablist, tab, tabpanel)
22.1.1CríticaAbas não navegáveis por teclado (setas, Home, End)
32.4.11GraveNenhum indicador de foco visível na aba ativa
<!-- DEPOIS: src/app/dashboard/dashboard.component.html -->
<div class="tabs" role="tablist" aria-label="Seções do painel">
  <button
    *ngFor="let tab of tabs; let i = index"
    role="tab"
    [id]="'tab-' + tab.id"
    [attr.aria-selected]="tab.active"
    [attr.aria-controls]="'panel-' + tab.id"
    [attr.tabindex]="tab.active ? 0 : -1"
    (click)="selectTab(tab)"
    (keydown)="handleTabKeydown($event, i)"
    class="tab-button"
    [class.active]="tab.active">
    {{ tab.label }}
  </button>
</div>
<div
  *ngIf="selectedTab"
  role="tabpanel"
  [id]="'panel-' + selectedTab.id"
  [attr.aria-labelledby]="'tab-' + selectedTab.id"
  tabindex="0"
  class="tab-content">
  {{ selectedTab.content }}
</div>

TypeScript de suporte para navegação por teclado:

// dashboard.component.ts
handleTabKeydown(event: KeyboardEvent, index: number): void {
  const tabCount = this.tabs.length;
  let newIndex = index;

  switch (event.key) {
    case 'ArrowRight':
      newIndex = (index + 1) % tabCount;
      break;
    case 'ArrowLeft':
      newIndex = (index - 1 + tabCount) % tabCount;
      break;
    case 'Home':
      newIndex = 0;
      break;
    case 'End':
      newIndex = tabCount - 1;
      break;
    default:
      return;
  }

  event.preventDefault();
  this.selectTab(this.tabs[newIndex]);
  // Mover foco para o botão da nova aba
  const tabElement = document.getElementById(`tab-${this.tabs[newIndex].id}`);
  tabElement?.focus();
}

Exemplo 4: Auditoria de Página Next.js

// ANTES: src/app/page.tsx
export default function Home() {
  return (
    <main>
      <div className="text-4xl font-bold">Bem-vindo à Acme</div>
      <div className="mt-4">
        Construa produtos melhores com nossa plataforma.
      </div>
      <div className="mt-8 bg-blue-600 text-white px-6 py-3 rounded cursor-pointer"
           onClick={() => router.push('/signup')}>
        Começar
      </div>
    </main>
  );
}

Violações detectadas:

| # | WCAG |

...

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

SamuelChien/mega-skills-collection

Security audit, hardening, threat modeling (STRIDE/PASTA), Red/Blue Team, OWASP checks, code review, incident response, and infrastructure security for any project.

SamuelChien/mega-skills-collection

Arquitecto de Soluciones Principal y Consultor Tecnológico de Andru.ia. Diagnostica y traza la hoja de ruta óptima para proyectos de IA en español.

SamuelChien/mega-skills-collection

Ingeniero de Sistemas de Andru.ia. Diseña, redacta y despliega nuevas habilidades (skills) dentro del repositorio siguiendo el Estándar de Diamante.

SamuelChien/mega-skills-collection

Estratega de Inteligencia de Dominio de Andru.ia. Analiza el nicho específico de un proyecto para inyectar conocimientos, regulaciones y estándares únicos del sector. Actívalo tras definir el nicho.

SamuelChien/mega-skills-collection

2D game development principles. Sprites, tilemaps, physics, camera.

SamuelChien/mega-skills-collection

3D game development principles. Rendering, shaders, physics, cameras.

SamuelChien/mega-skills-collection

Expert in building 3D experiences for the web - Three.js, React Three Fiber, Spline, WebGL, and interactive 3D scenes. Covers product configurators, 3D portfolios, immersive websites, and bringing depth to web experiences.

SamuelChien/mega-skills-collection

Ab Test Analyzer - Auto-activating skill for Data Analytics. Triggers on: ab test analyzer, ab test analyzer Part of the Data Analytics skill category.

SamuelChien/mega-skills-collection

A B Test Config Creator - Auto-activating skill for ML Deployment. Triggers on: a b test config creator, a b test config creator Part of the ML Deployment skill category.

SamuelChien/mega-skills-collection

When the user wants to plan, design, or implement an A/B test or experiment. Also use when the user mentions "A/B test," "split test," "experiment," "test this change," "variant copy," "multivariate test," "hypothesis," "conversion experiment," "statistical significance," or "test this." For tracking implementation, see analytics-tracking.

SamuelChien/mega-skills-collection

Acceptance Criteria Creator - Auto-activating skill for Enterprise Workflows. Triggers on: acceptance criteria creator, acceptance criteria creator Part of the Enterprise Workflows skill category.

SamuelChien/mega-skills-collection

Use when a coding task should be driven end-to-end from issue intake through implementation, review, deployment, and acceptance verification with minimal human re-intervention.

SamuelChien/mega-skills-collection

Accessibility Audit Runner - Auto-activating skill for Frontend Development. Triggers on: accessibility audit runner, accessibility audit runner Part of the Frontend Development skill category.

SamuelChien/mega-skills-collection

You are an accessibility expert specializing in WCAG compliance, inclusive design, and assistive technology compatibility. Conduct audits, identify barriers, and provide remediation guidance.

SamuelChien/mega-skills-collection

Web accessibility patterns for WCAG 2.2 compliance including ARIA, keyboard navigation, screen readers, and testing

SamuelChien/mega-skills-collection

Manage Discord channel access — approve pairings, edit allowlists, set DM/group policy. Use when the user asks to pair, approve someone, check who's allowed, or change policy for the Discord channel.

SamuelChien/mega-skills-collection

Create unified specification packages across Business, Development, and Design teams. Staged elaboration (L0 Vision → L1 Requirements → L2 Team Detail → L3 Acceptance Criteria) to build shared understanding. Does not write code.

SamuelChien/mega-skills-collection

Research a company or person and get actionable sales intel. Works standalone with web search, supercharged when you connect enrichment tools or your CRM. Trigger with "research [company]", "look up [person]", "intel on [prospect]", "who is [name] at [company]", or "tell me about [company]".

SamuelChien/mega-skills-collection

Create forensically sound bit-for-bit disk images using dd and dcfldd while preserving evidence integrity through hash verification.

SamuelChien/mega-skills-collection

Validate messaging consistency across website, GitHub repos, and local documentation generating read-only discrepancy reports. Use when checking content alignment or finding mixed messaging. Trigger with phrases like "check consistency", "validate documentation", or "audit messaging".

Habilidades Relacionadas