Barrierefreiheitsaudit
Name: a11y-audit
Tier: STANDARD
Kategorie: Engineering - Frontend-Qualität
Abhängigkeiten: Python 3.8+ (Nur Standardbibliothek)
Autor: Alireza Rezvani
Version: 2.1.2
Letzte Aktualisierung: 2026-03-18
Lizenz: MIT
Name
a11y-audit – WCAG 2.2 Barrierefreiheitsaudit und -sanierungs-Skill
Beschreibung
Der a11y-audit-Skill bietet eine vollständige Pipeline für Barrierefreiheitsaudits moderner Webanwendungen. Er implementiert einen dreistufigen Workflow – Scannen, Korrigieren, Verifizieren – der WCAG 2.2 Level A- und AA-Verstöße identifiziert, genauen Korrekturode pro Framework generiert und Stakeholder-fähige Compliance-Berichte erstellt.
Dieser Skill geht über die Erkennung hinaus. Für jeden gefundenen Verstoß liefert er die präzise Vorher/Nachher-Codekorrektur, die auf Ihr Framework zugeschnitten ist (React, Next.js, Vue, Angular, Svelte oder einfaches HTML). Er versteht, dass ein fehlendes alt-Attribut auf einem <img> in React JSX ein anderes Korrekturmuster erfordert als das gleiche Problem in einem Vue SFC oder einer Angular-Vorlage.
Was dieser Skill tut:
- Scannt Ihre Codebasis auf jeden WCAG 2.2 Level A- und AA-Verstoß, kategorisiert nach Schweregrad (Kritisch, Schwerwiegend, Geringfügig)
- Behebt jeden Verstoß mit frameworkspezifischen Vorher/Nachher-Codemustern
- Verifiziert, dass die Korrekturen die ursprünglichen Verstöße beheben und keine Regressionen einführen
- Berichtet Ergebnisse in einem strukturierten Format, das für Entwickler, Projektmanager und Compliance-Stakeholder geeignet ist
- Integriert sich in CI/CD-Pipelines, um Barrierefreiheitsregressionen zu verhindern
Wesentliche Unterscheidungsmerkmale:
- Framework-bewusste Korrekturmuster (keine allgemeinen HTML-Ratschläge)
- Farbkontrastanalyse mit Vorschlägen für zugängliche Alternativen
- WCAG 2.2-Abdeckung einschließlich der neuesten Erfolgskriterien (Fokus-Erscheinungsbild, Ziehbewegungen, Zielgröße)
- CI/CD-Pipeline-Integration mit GitHub Actions, GitLab CI und Azure DevOps
- Slash-Befehl-Unterstützung via
/a11y-audit
Funktionen
Kernfunktionen
| Funktion | Beschreibung |
|---|---|
| Vollständiger WCAG 2.2 Scan | Überprüft alle Level A- und AA-Erfolgskriterien in Ihrer Codebasis |
| Framework-Erkennung | Erkennt automatisch React, Next.js, Vue, Angular, Svelte oder einfaches HTML |
| Schweregradklassifizierung | Kategorisiert jeden Verstoß als Kritisch, Schwerwiegend oder Geringfügig |
| Korrekturcode-Generierung | Erzeugt Vorher/Nachher-Code-Diffs für jedes Problem |
| Farbkontrastprüfer | Validiert Vordergrund-/Hintergrundpaare gegen AA- und AAA-Kontrastverhältnisse |
| Zugängliche Alternativen | Schlägt Ersatzfarben vor, die die Kontrastanforderungen erfüllen |
| Compliance-Berichterstattung | Erstellt Stakeholder-Berichte mit Bestanden-/Nicht bestanden-Zusammenfassungen |
| CI/CD-Integration | GitHub Actions, GitLab CI, Azure DevOps Pipeline-Konfigurationen |
| Tastaturnavigationsaudit | Erkennt fehlendes Fokusmanagement und Tab-Reihenfolge-Probleme |
| ARIA-Validierung | Überprüft auf falsche, redundante oder fehlende ARIA-Attribute |
| Live-Region-Erkennung | Identifiziert dynamische Inhalte, denen aria-live-Ansagen fehlen |
| Formularzugänglichkeit | Validiert Label-Verknüpfungen, Fehlermeldungen und Eingabetypen |
WCAG 2.2 Abdeckungsmatrix
| Prinzip | Level A Kriterien | Level AA Kriterien |
|---|---|---|
| Wahrnehmbar | 1.1.1 Nicht-Text-Inhalt, 1.2.1-1.2.3 Zeitbasierte Medien, 1.3.1-1.3.3 Anpassbar, 1.4.1-1.4.2 Unterscheidbar | 1.3.4-1.3.5 Anpassbar, 1.4.3-1.4.5 Kontrast & Bilder von Text, 1.4.10-1.4.13 Umfließen & Inhalt |
| Bedienbar | 2.1.1-2.1.2 Tastatur, 2.2.1-2.2.2 Timing, 2.3.1 Anfälle, 2.4.1-2.4.4 Navigierbar, 2.5.1-2.5.4 Eingabe | 2.4.5-2.4.7 Navigierbar, 2.4.11 Fokus-Erscheinungsbild (NEU 2.2), 2.5.7 Ziehen (NEU 2.2), 2.5.8 Zielgröße (NEU 2.2) |
| Verständlich | 3.1.1 Sprache, 3.2.1-3.2.2 Vorhersehbar, 3.3.1-3.3.2 Eingabehilfe | 3.1.2 Sprache von Teilen, 3.2.3-3.2.4 Vorhersehbar, 3.3.3-3.3.4 Fehlerbehandlung, 3.3.7 Redundante Eingabe (NEU 2.2), 3.3.8 Barrierefreie Authentifizierung (NEU 2.2) |
| Robust | 4.1.2 Name/Rolle/Wert | 4.1.3 Statusmeldungen |
Schweregraddefinitionen
| Schweregrad | Definition | Beispiel | SLA |
|---|---|---|---|
| Kritisch | Blockiert den Zugriff für gesamte Benutzergruppen | Fehlender Alternativtext bei informativen Bildern, kein Tastaturzugriff auf die Hauptnavigation | Vor Veröffentlichung korrigieren |
| Schwerwiegend | Erhebliches Hindernis, das die Erfahrung beeinträchtigt | Unzureichender Farbkontrast bei Fließtext, fehlende Formularlabels | Innerhalb des aktuellen Sprints korrigieren |
| Geringfügig | Benutzerfreundlichkeitsproblem, das Reibung verursacht | Redundante ARIA-Rollen, suboptimale Überschriftenhierarchie | Innerhalb der nächsten 2 Sprints korrigieren |
Verwendung
Schnellstart
Aktivieren Sie den Skill und führen Sie ein Audit für Ihr Projekt durch:
# Gesamtes Projekt scannen
python scripts/a11y_scanner.py /pfad/zum/projekt
# Scannen mit JSON-Ausgabe für Tooling
python scripts/a11y_scanner.py /pfad/zum/projekt --json
# Farbkontrast für bestimmte Werte prüfen
python scripts/contrast_checker.py --fg "#777777" --bg "#ffffff"
# Kontrast über eine CSS/Tailwind-Datei prüfen
python scripts/contrast_checker.py --file /pfad/zu/styles.css
Slash-Befehl
Verwenden Sie den Slash-Befehl /a11y-audit für eine interaktive Auditsitzung:
/a11y-audit # Aktuelles Projekt auditieren
/a11y-audit --scope src/ # Bestimmtes Verzeichnis auditieren
/a11y-audit --fix # Auditieren und Korrekturen automatisch anwenden
/a11y-audit --report # Stakeholder-Bericht generieren
/a11y-audit --ci # CI-kompatible Ergebnisse ausgeben
Dreistufiger Workflow
Phase 1: Scannen
Der Scanner durchläuft Ihren Quellbaum, erkennt das verwendete Framework und wendet den entsprechenden Regelsatz an.
python scripts/a11y_scanner.py /pfad/zum/projekt --format table
Beispielausgabe:
A11Y-AUDIT-BERICHT - /pfad/zum/projekt
Erkanntes Framework: React (Next.js)
Gescannte Dateien: 127
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
KRITISCH (3 Probleme)
[1.1.1] src/components/Hero.tsx:14
Fehlender Alternativtext auf <img>-Element
[2.1.1] src/components/Modal.tsx:8
Fokus nicht innerhalb des modalen Dialogs gefangen
[1.4.3] src/styles/globals.css:42
Kontrastverhältnis 2,8:1 auf .subtitle (benötigt 4,5:1)
SCHWERWIEGEND (7 Probleme)
[2.4.11] src/components/Button.tsx:22
Fokusindikator nicht sichtbar (2px Umriss erforderlich)
[1.3.1] src/components/Form.tsx:31
Eingabe fehlt zugehöriges <label>
...
GERINGFÜGIG (4 Probleme)
[1.3.1] src/components/Nav.tsx:5
<nav> hat redundante role="navigation"
...
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ZUSAMMENFASSUNG: 14 Verstöße (3 Kritisch, 7 Schwerwiegend, 4 Geringfügig)
WCAG 2.2 Level A: 8 Probleme
WCAG 2.2 Level AA: 6 Probleme
Phase 2: Korrigieren
Wenden Sie für jeden Verstoß die frameworkspezifische Korrektur an. Der Skill liefert für jeden Problemtyp genauen Vorher/Nachher-Code.
Siehe den Abschnitt Korrekturmuster nach Framework unten für den vollständigen Korrekturkatalog.
Phase 3: Verifizieren
Führen Sie den Scanner erneut aus, um zu bestätigen, dass alle Korrekturen angewendet wurden und keine Regressionen eingeführt wurden:
# Erneuter Scan nach Korrekturen
python scripts/a11y_scanner.py /pfad/zum/projekt --format table
# Vergleich mit Basislinie
python scripts/a11y_scanner.py /pfad/zum/projekt --baseline audit-baseline.json
Verifizierungsausgabe:
VERIFIZIERUNGSERGEBNISSE
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Vorheriger Scan: 14 Verstöße (3 Kritisch, 7 Schwerwiegend, 4 Geringfügig)
Aktueller Scan: 2 Verstöße (0 Kritisch, 1 Schwerwiegend, 1 Geringfügig)
Behoben: 12 Verstöße
Neue Probleme: 0 Regressionen
STATUS: VERBESSERT (85,7 % Reduzierung)
Beispiele
Beispiel 1: React-Komponentenaudit
Gegeben eine React-Komponente mit mehreren Barrierefreiheitsproblemen:
// VORHER: 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>
);
}
Erkannte Verstöße:
| # | WCAG | Schweregrad | Problem |
|---|---|---|---|
| 1 | 1.1.1 | Kritisch | <img> fehlt alt-Attribut |
| 2 | 2.1.1 | Kritisch | <div onClick> nicht über Tastatur zugänglich |
| 3 | 1.4.3 | Schwerwiegend | Farbe #aaa auf Weiß besteht Kontrast nicht (2,32:1, benötigt 4,5:1) |
| 4 | 1.4.3 | Schwerwiegend | Farbe #999 auf Weiß besteht Kontrast nicht (2,85:1, benötigt 4,5:1) |
| 5 | 4.1.2 | Schwerwiegend | Interaktives Element fehlt Rolle und zugänglicher Name |
// NACHHER: src/components/ProductCard.tsx
function ProductCard({ product }) {
return (
<a
href={`/product/${product.id}`}
className="product-card"
aria-label={`View ${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>
);
}
Was sich geändert hat:
<div onClick>durch<a href>für native Tastatur- und Screenreader-Unterstützung ersetztalt-Attribut zu<img>mit sinnvollem Fallback hinzugefügtaria-labelbietet vollständigen Kontext für unterstützende Technologie- Farbe
#aaadurch#595959ersetzt (7,01:1 Kontrastverhältnis – besteht AA und AAA) - Farbe
#999durch#767676ersetzt (4,54:1 Kontrastverhältnis – besteht AA)
Beispiel 2: Vue SFC-Formularaudit
<!-- VORHER: src/components/LoginForm.vue -->
<template>
<form @submit="handleLogin">
<input type="text" placeholder="E-Mail" v-model="email" />
<input type="password" placeholder="Passwort" v-model="password" />
<div v-if="error" style="color: red">{{ error }}</div>
<div @click="handleLogin">Anmelden</div>
</form>
</template>
Erkannte Verstöße:
| # | WCAG | Schweregrad | Problem |
|---|---|---|---|
| 1 | 1.3.1 | Kritisch | Eingaben fehlen zugehörige <label>-Elemente |
| 2 | 3.3.2 | Schwerwiegend | Platzhaltertext wird als einziges Label verwendet (verschwindet bei Eingabe) |
| 3 | 2.1.1 | Kritisch | <div @click> nicht über Tastatur zugänglich |
| 4 | 4.1.3 | Schwerwiegend | Fehlermeldung wird Screenreadern nicht mitgeteilt |
| 5 | 3.3.1 | Schwerwiegend | Fehler nicht programmatisch mit Eingabe verknüpft |
<!-- NACHHER: src/components/LoginForm.vue -->
<template>
<form @submit.prevent="handleLogin" aria-label="Melden Sie sich bei Ihrem Konto an">
<div class="field">
<label for="login-email">E-Mail</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">Passwort</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">Anmelden</button>
</form>
</template>
Beispiel 3: Angular-Vorlagenaudit
<!-- VORHER: 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>
Erkannte Verstöße:
| # | WCAG | Schweregrad | Problem |
|---|---|---|---|
| 1 | 4.1.2 | Kritisch | Tab-Widget fehlen ARIA-Rollen (tablist, tab, tabpanel) |
| 2 | 2.1.1 | Kritisch | Tabs nicht über Tastatur navigierbar (Pfeiltasten, Pos1, Ende) |
| 3 | 2.4.11 | Schwerwiegend | Kein sichtbarer Fokusindikator auf aktivem Tab |
<!-- NACHHER: src/app/dashboard/dashboard.component.html -->
<div class="tabs" role="tablist" aria-label="Dashboard-Abschnitte">
<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>
Unterstützender TypeScript-Code für Tastaturnavigation:
// 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]);
// Fokus auf den neuen Tab-Button verschieben
const tabElement = document.getElementById(`tab-${this.tabs[newIndex].id}`);
tabElement?.focus();
}
Beispiel 4: Next.js-Seitenaudit
// VORHER: src/app/page.tsx
export default function Home() {
return (
<main>
<div className="text-4xl font-bold">Willkommen bei Acme</div>
<div className="mt-4">
Bauen Sie bessere Produkte mit unserer Plattform.
</div>
<div className="mt-8 bg-blue-600 text-white px-6 py-3 rounded cursor-pointer"
onClick={() => router.push('/signup')}>
Loslegen
</div>
</main>
);
}
Erkannte Verstöße:
| # | WCAG | Schweregrad | Problem |
|---|---|---|---|
| 1 | 2.1.1 | Kritisch | <div onClick> nicht über Tastatur zugänglich |
| 2 | 4.1.2 | Schwerwiegend | Interaktives Element fehlt Rolle und zugänglicher Name |
| 3 | 1.4.1 | Geringfügig | Farbe wird als einziges visuelles Mittel zur Vermittlung von Interaktivität verwendet |
// NACHHER: src/app/page.tsx
export default function Home() {
return (
<main>
<h1 className="text-4xl font-bold">Willkommen bei Acme</h1>
<p className="mt-4">
Bauen Sie bessere Produkte mit unserer Plattform.
</p>
<a
href="/signup"
className="mt-8 inline-block bg-blue-600 text-white px-6 py-3 rounded no-underline hover:bg-blue-700 focus:outline-2 focus:outline-blue-800"
>
Loslegen
</a>
</main>
);
}
Was sich geändert hat:
<div onClick>durch<a href>ersetzt für native Tastaturunterstützung<div>-Überschrift in<h1>für korrekte Überschriftenstruktur geändert<div>-Absatz in<p>geändert- Call-to-Action erhält jetzt einen Fokusindikator beim Fokussieren über die Tastatur
role="button"nicht erforderlich, da<a>natives Link-Verhalten bietet
Korrekturmuster nach Framework
HTML (Einfach)
| Problem | Vorher | Nachher |
|---|---|---|
| Fehlender Alternativtext | <img src="photo.jpg"> | <img src="photo.jpg" alt="Beschreibung des Fotos"> |
| Button ohne Typ | <div onclick="...">Senden</div> | <button type="button">Senden</button> |
| Tabelle ohne Header | <table><tr><td>Daten</td></tr></table> | <table><thead><tr><th scope="col">Spalte</th></tr></thead><tbody><tr><td>Daten</td></tr></tbody></table> |
React / JSX
| Problem | Vorher | Nachher |
|---|---|---|
| Fehlender Alternativtext | <img src={src} /> | <img src={src} alt={altText} /> |
| Klickbares | <div onClick={handleClick}> | <button onClick={handleClick}> oder <a href={url}> |
| Fehlendes Label | <input value={val} onChange={...} /> | <label htmlFor="id">Label</label><input id="id" ... /> |
| Falsche ARIA | <div role="button"> | <button> (natives Element) |
Vue (Options-API / Composition-API)
| Problem | Vorher | Nachher |
|---|---|---|
| Fehlender Alternativtext | <img :src="src"> | <img :src="src" :alt="altText"> |
| Klickbares | <div @click="handleClick"> | <button @click="handleClick"> |
| Fehlendes Label | <input v-model="val"> | <label for="id">Label</label><input id="id" v-model="val"> |
| Fokusmanagement | Keines | ref + $nextTick zum Fokussieren nach Zustandsänderung |
Angular
| Problem | Vorher | Nachher |
|---|---|---|
| Fehlender Alternativtext | <img [src]="src"> | <img [src]="src" [alt]="altText"> |
| Klickbares | <div (click)="handleClick()"> | <button (click)="handleClick()"> |
| Fehlendes Label | <input [(ngModel)]="val"> | <label for="id">Label</label><input id="id" [(ngModel)]="val"> |
| ARIA-Lebendregion | Fehlt bei dynamischen Inhalten | role="alert" oder aria-live="polite" auf Container |
Svelte
| Problem | Vorher | Nachher |
|---|---|---|
| Fehlender Alternativtext | <img src={src}> | <img src={src} alt={altText}> |
| Klickbares | <div on:click={handleClick}> | <button on:click={handleClick}> |
| Fehlendes Label | <input bind:value={val}> | <label for="id">Label</label><input id="id" bind:value={val}> |
| Eingabebindung | bind:this={el} für Fokusmanagement | Zusätzlich use:focus-Aktion für automatischen Fokus |
Integration
GitHub Actions
name: Barrierefreiheitsaudit
on: [push, pull_request]
jobs:
a11y-audit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: A11y-Audit ausführen
run: |
python scripts/a11y_scanner.py . --json --output audit-report.json
- name: Audit-Ergebnisse hochladen
uses: actions/upload-artifact@v4
with:
name: a11y-report
path: audit-report.json
GitLab CI
stages:
- accessibility
a11y-audit:
stage: accessibility
image: python:3.11
script:
- pip install -r requirements.txt
- python scripts/a11y_scanner.py . --json --output audit-report.json
artifacts:
paths:
- audit-report.json
Azure DevOps
trigger:
- main
pool:
vmImage: 'ubuntu-latest'
steps:
- task: UsePythonVersion@0
inputs:
versionSpec: '3.11'
- script: |
python scripts/a11y_scanner.py . --json --output $(Build.ArtifactStagingDirectory)/audit-report.json
displayName: 'A11y-Audit ausführen'
- task: PublishBuildArtifacts@1
inputs:
pathToPublish: '$(Build.ArtifactStagingDirectory)'
artifactName: 'a11y-report'
Fehlerbehebung
Problem: "Python 3.8+ nicht gefunden"
Lösung: Installieren Sie Python 3.8 oder höher von python.org. Überprüfen Sie mit:
python --version
Problem: Scanner findet keine Dateien
Lösung: Stellen Sie sicher, dass Sie den richtigen Pfad als Argument angeben:
python scripts/a11y_scanner.py /absoluter/pfad/zu/ihrem/projekt
Problem: Falsches Framework erkannt
Lösung: Das Framework wird automatisch erkannt. Wenn es falsch ist, geben Sie es explizit an:
python scripts/a11y_scanner.py /pfad/zum/projekt --framework vue
Kommandozeilenreferenz
a11y_scanner.py
Verwendung: a11y_scanner.py [OPTIONEN] PROJEKT_PFAD
Führen Sie ein WCAG 2.2 Barrierefreiheitsaudit für eine Codebasis durch.
Positionale Argumente:
PROJEKT_PFAD Pfad zum Projektverzeichnis
Optionen:
--json Ausgabe im JSON-Format (Standard: Tabelle)
--format FORMAT Ausgabeformat (table, json, html, markdown)
--output DATEI Ausgabedatei schreiben (Standard: stdout)
--framework FW Framework erzwingen (react, vue, angular, svelte, html)
--baseline DATEI Basislinienbericht für Regressionserkennung
--severity STUFE Minimalen Schweregrad festlegen (critical, major, minor)
--fix Korrekturvorschläge automatisch anwenden
--ci CI-kompatible Ausgabe
--scope VERZ Nur bestimmtes Verzeichnis scannen (Standard: gesamte Codebasis)
--verbose Ausführliche Ausgabe aktivieren
--help Diese Hilfemeldung anzeigen
contrast_checker.py
Verwendung: contrast_checker.py [OPTIONEN]
Überprüfen Sie Farbkontrastverhältnisse auf WCAG 2.1 AA/AAA-Konformität.
Optionen:
--fg FARBE Vordergrundfarbe (Hex, RGB, benannt)
--bg FARBE Hintergrundfarbe (Hex, RGB, benannt)
--file DATEI CSS-Datei zum Parsen und Analysieren
--size TEXT_GRÖßE Textgröße (small=unter 18px, large=18px+, Standard: small)
--json Ausgabe im JSON-Format
--suggestions Zugängliche Farbalternativen vorschlagen
--help Diese Hilfemeldung anzeigen
Versionsverlauf
| Version | Datum | Änderungen |
|---|---|---|
| 2.1.2 | 2026-03-18 | Aktualisierte Korrekturmuster für WCAG 2.2; Fehlerbehandlung in der Framework-Erkennung verbessert |
| 2.1.1 | 2026-02-10 | Fehlerbehebung für leere Verzeichnisse; verbesserte Fehlermeldungen |
| 2.1.0 | 2026-01-15 | WCAG 2.2-Unterstützung hinzugefügt (Fokus-Erscheinungsbild, Ziehbewegungen, Zielgröße) |
| 2.0.0 | 2025-11-20 | Große Überarbeitung mit frameworkspezifischen Korrekturmustern |
| 1.0.0 | 2025-08-01 | Erste Veröffentlichung |
