Communitygithub.com

SamuelChien/mega-skills-collection

Barrierefreie Webmuster für WCAG 2.2-Konformität inklusive ARIA, Tastaturnavigation, Screenreader und Tests

Was ist mega-skills-collection?

Diese Skill-Sammlung bietet eine umfassende Referenz für die Implementierung von Webzugänglichkeit gemäß WCAG 2.2. Sie umfasst semantisches HTML, ARIA-Muster, Tastaturnavigation, Formularzugänglichkeit sowie Farb- und Kontrastrichtlinien. Entwickler erhalten klare, sofort einsetzbare Codebeispiele in HTML, CSS und React/TypeScript, die typische Barrierefreiheitsmuster wie modale Dialoge, Tabs und Formulare mit Fehlerbehandlung abdecken. Die Sammlung unterstützt alle gängigen Webentwicklungsplattformen und ist sowohl für Anfänger als auch für erfahrene Entwickler geeignet, die ihre Anwendungen für Screenreader und Tastaturbenutzer optimieren möchten. Jedes Beispiel wird durch Anti-Patterns und eine Checkliste ergänzt, um häufige Fehler zu vermeiden und die Konformität mit den WCAG-Richtlinien sicherzustellen.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/SamuelChien/mega-skills-collection/tree/HEAD/accessibility-wcag

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Barrierefreiheit & WCAG

Semantisches HTML

<!-- Verwenden Sie semantische Elemente anstelle von generischen Divs -->
<header>
  <nav aria-label="Hauptnavigation">
    <ul>
      <li><a href="/" aria-current="page">Startseite</a></li>
      <li><a href="/produkte">Produkte</a></li>
      <li><a href="/ueber-uns">Über uns</a></li>
    </ul>
  </nav>
</header>

<main>
  <article>
    <h1>Produktdetails</h1>
    <section aria-labelledby="spezifikationen-ueberschrift">
      <h2 id="spezifikationen-ueberschrift">Spezifikationen</h2>
      <dl>
        <dt>Gewicht</dt>
        <dd>1,2 kg</dd>
        <dt>Abmessungen</dt>
        <dd>30 x 20 x 10 cm</dd>
      </dl>
    </section>
  </article>
</main>

<footer>
  <p>&copy; 2024 Firmenname</p>
</footer>

Verwenden Sie <nav>, <main>, <article>, <section>, <aside> anstelle von <div> für Orientierungspunkte. Screenreader nutzen diese, um auf der Seite zu navigieren.

ARIA-Muster

function Modal({ isOpen, onClose, title, children }) {
  if (!isOpen) return null;

  return (
    <div
      role="dialog"
      aria-modal="true"
      aria-labelledby="modal-title"
      onKeyDown={(e) => e.key === "Escape" && onClose()}
    >
      <h2 id="modal-title">{title}</h2>
      <div>{children}</div>
      <button onClick={onClose} aria-label="Dialog schließen">
        <XIcon aria-hidden="true" />
      </button>
    </div>
  );
}

function Tabs({ tabs, activeIndex, onChange }) {
  return (
    <div>
      <div role="tablist" aria-label="Einstellungsbereiche">
        {tabs.map((tab, i) => (
          <button
            key={tab.id}
            role="tab"
            id={`tab-${tab.id}`}
            aria-selected={i === activeIndex}
            aria-controls={`panel-${tab.id}`}
            tabIndex={i === activeIndex ? 0 : -1}
            onClick={() => onChange(i)}
            onKeyDown={(e) => handleArrowKeys(e, i, tabs.length, onChange)}
          >
            {tab.label}
          </button>
        ))}
      </div>
      {tabs.map((tab, i) => (
        <div
          key={tab.id}
          role="tabpanel"
          id={`panel-${tab.id}`}
          aria-labelledby={`tab-${tab.id}`}
          hidden={i !== activeIndex}
          tabIndex={0}
        >
          {tab.content}
        </div>
      ))}
    </div>
  );
}

Tastaturnavigation

function handleArrowKeys(
  event: React.KeyboardEvent,
  currentIndex: number,
  totalItems: number,
  onSelect: (index: number) => void
) {
  let newIndex = currentIndex;

  switch (event.key) {
    case "ArrowRight":
    case "ArrowDown":
      newIndex = (currentIndex + 1) % totalItems;
      break;
    case "ArrowLeft":
    case "ArrowUp":
      newIndex = (currentIndex - 1 + totalItems) % totalItems;
      break;
    case "Home":
      newIndex = 0;
      break;
    case "End":
      newIndex = totalItems - 1;
      break;
    default:
      return;
  }

  event.preventDefault();
  onSelect(newIndex);
}

Alle interaktiven Elemente müssen per Tastatur erreichbar sein. Tab für die Fokusnavigation, Enter/Leertaste zur Aktivierung, Pfeiltasten für die Navigation innerhalb von Komponenten.

Formularzugänglichkeit

function SignupForm() {
  return (
    <form aria-labelledby="form-title" noValidate>
      <h2 id="form-title">Konto erstellen</h2>

      <div>
        <label htmlFor="email">E-Mail-Adresse</label>
        <input
          id="email"
          type="email"
          required
          aria-required="true"
          aria-describedby="email-hinweis email-fehler"
          aria-invalid={hasError ? "true" : undefined}
        />
        <p id="email-hinweis">Wir geben Ihre E-Mail niemals weiter.</p>
        {hasError && (
          <p id="email-fehler" role="alert">
            Bitte geben Sie eine gültige E-Mail-Adresse ein.
          </p>
        )}
      </div>

      <button type="submit">Konto erstellen</button>
    </form>
  );
}

Farbe und Kontrast

:root {
  --text-primary: #1a1a1a;      /* 15,3:1 auf weiß */
  --text-secondary: #595959;    /* 7,0:1 auf weiß */
  --text-on-primary: #ffffff;   /* Stellen Sie 4,5:1 auf Markenfarbe sicher */
  --border-focus: #0066cc;      /* Sichtbarer Fokusring */
}

*:focus-visible {
  outline: 3px solid var(--border-focus);
  outline-offset: 2px;
}

.error-message {
  color: #d32f2f;
  /* Verlassen Sie sich nicht nur auf Farbe – fügen Sie ein Symbol oder Text-Präfix hinzu */
}
.error-message::before {
  content: "Fehler: ";
  font-weight: bold;
}

WCAG AA erfordert 4,5:1 Kontrast für normalen Text, 3:1 für großen Text (18px fett oder 24px normal).

Anti-Muster

  • Verwendung von div und span für klickbare Elemente anstelle von button oder a
  • Entfernen von Fokusumrandungen ohne alternative Anzeige
  • Sich allein auf Farbe verlassen, um Informationen zu vermitteln (rot für Fehler, grün für Erfolg)
  • Verwendung von aria-label, wenn sichtbarer Text das Element bereits beschriftet
  • Automatisch abspielende Medien ohne Pausenmechanismus
  • Fehlender Skip-Navigationslink für Tastaturbenutzer

Checkliste

  • Alle interaktiven Elemente sind per Tastatur erreichbar (Tab, Enter, Escape, Pfeiltasten)
  • Semantische HTML-Orientierungspunkte verwendet (nav, main, article, section)
  • Bilder haben beschreibenden alt-Text (oder alt="" für dekorative)
  • Farbkontrast erfüllt WCAG AA (4,5:1 normaler Text, 3:1 großer Text)
  • Fokusindikatoren sind auf allen interaktiven Elementen sichtbar
  • Formulareingaben haben zugehörige <label>-Elemente
  • Fehlermeldungen werden über role="alert"" an Screenreader weitergegeben
  • Seite mit Screenreader (VoiceOver, NVDA) und nur mit Tastatur getestet

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

Accessibility audit skill for scanning, fixing, and verifying WCAG 2.2 Level A and AA compliance across React, Next.js, Vue, Angular, Svelte, and plain HTML codebases. Use when auditing accessibility, fixing a11y violations, checking color contrast, generating compliance reports, or integrating accessibility checks into CI/CD pipelines.

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

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".

Verwandte Skills