Was macht eu-web-compliance?
Diese Fertigkeit veranlasst einen Agenten, Website-Code gegen fünf Gruppen europäischer Verpflichtungen zu schreiben und zu prüfen: Barrierefreiheit, Datenschutz und Tracker, die KI-Verordnung, Websicherheit sowie Verbraucher- und Informationsrecht. Sie ermittelt, welche Verpflichtungen das Projekt betreffen, lässt von Anfang an danach entwickeln, führt automatisierte Prüfungen durch und listet auf, was ein Mensch noch überprüfen muss. Sie macht eine Website nicht rechtskonform und ersetzt kein Barrierefreiheits-Audit, keinen Datenschutzbeauftragten und keinen Rechtsanwalt: Manche Kriterien erfordern menschliches Urteilsvermögen, manche Fragen sind rechtliche Qualifikationen. Anwendungsdaten, geltende Fassungen, Schwellenwerte und Sanktionen sind nur an einer Stelle hinterlegt, references/regulatory-status.md; lesen Sie sie dort nach.
Pfade. Alle Pfade in dieser Fertigkeit beziehen sich auf den Ordner, der diese SKILL.md enthält, in Befehlen als <skill> geschrieben. Führen Sie die Befehle vom Wurzelverzeichnis des Benutzerprojekts aus, sodass compliance/ dort erstellt wird: z. B. python <skill>/scripts/applicability.py compliance/profile.json. Die Skripte finden ihre eigenen Daten neben sich. Python 3.8+ reicht für die .py-Skripte; die Browser-Prüfungen (.mjs) benötigen Node 20+ und npm install einmal ausgeführt in <skill> (falls kein Browser gefunden wird, zusätzlich npx playwright install chromium dort).
Absolute Regeln
Die Nutzer dieser Fertigkeit sind selten Juristen und werden dem Geschriebenen vertrauen. Ein falsches Datum oder ein vorschnell gegebenes „konform“ kann sie einer Sanktion aussetzen oder einen behinderten Menschen vor einen Dienst stellen, den er nicht nutzen kann. Daher:
- Keine regulatorische Tatsache aus dem Gedächtnis. Daten, Artikelnummern, Schwellenwerte, Normversionen, kryptografische Werte, Kriterientitel und Rechtsbegriffe stammen aus den Dateien dieser Fertigkeit. Ihre Erinnerung an diese Texte ist älter und unzuverlässiger als diese Dateien: Mehrere Daten änderten sich 2026. Wenn eine Tatsache nicht in der Fertigkeit steht, sagen Sie, dass sie nicht überprüft wurde; geben Sie sie nicht an.
- Zweifel ergibt „nicht getestet“ (NT), niemals „konform“. Eine Prüfung, die nicht lief, eine Seite, die nicht geladen werden konnte, ein Kriterium, das eine Person benötigt: NT.
- Schreiben Sie niemals, dass eine Website, ein Unternehmen oder ein Dienst „konform ist“. Ein Befund bezieht sich auf ein Kriterium. Jedes für den Endnutzer bestimmte Ergebnis (Bericht, Erklärung, Richtlinie, Hinweis) enthält den Hinweis, dass es mit Hilfe einer KI erstellt wurde und weder ein Audit noch eine Rechtsberatung ist.
- Halten Sie rechtliche Verpflichtung, Empfehlung und Best Practice auseinander. Eine mit
[best practice]gekennzeichnete Regel wird nie als Pflicht dargestellt, eine Empfehlung einer Aufsichtsbehörde ist kein Gesetz und eine Matrixzeileto-confirmist nicht „nicht anwendbar“. Verlassen Sie sich nie auf eine Ausnahme (Kleinstunternehmen, nicht-beruflich, keine Online-Plattform) aufgrund einer angenommenen oder fehlenden Antwort. - Jede angewandte Regel trägt ihre Quelle, wenn Sie eine Änderung erklären, berichten oder rechtfertigen, mit dem Tag, wie er in der Referenzdatei steht:
[WCAG 2.4.7],[RGAA 11.1],[DSGVO Art. 7 Abs. 3],[CNIL-Leitlinien § 27](was die CNIL als erforderlich ansieht) oder[CNIL-Empfehlung § 2.3](eine Empfehlung),[KI-Verordnung Art. 50 Abs. 1],[ANSSI WEB R14],[OWASP A03],[CRD 11a]. Ein Tag, das auf(to confirm)endet, zitiert einen Artikel, der noch nicht inregulatory-status.mderfasst ist: Stellen Sie diese Regel nicht als nachgewiesene Verpflichtung dar. Code selbst benötigt keine Tags. - Halten Sie an und verweisen Sie an einen Fachmann in den Fällen von references/scoping/out-of-scope.md: bei Verdacht auf verbotene KI-Praxis, KI, die über Menschen entscheidet (möglicherweise Hochrisiko), Gesundheits- oder andere besondere Datenkategorien, Minderjährige, regulierte Branche, nicht abgedecktes Zielland. Bauen Sie die betreffende Funktion nicht; arbeiten Sie am Rest weiter und erwähnen Sie dies am Anfang Ihrer Antwort.
- Erfinden Sie niemals Betreiberdaten: Firmennamen, Handelsregisternummern und Umsatzsteuer-IDs, Adressen, Hosting-Details, Datenschutzbeauftragter, Mediator, Rechtsgrundlagen, Aufbewahrungsfristen, Auftragsverarbeiter, Übermittlungssicherungsmaßnahmen. Lassen Sie den
[Platzhalter]der Vorlage sichtbar und listen Sie ihn für den Benutzer auf. Ein plausibler erfundener Wert ist schlimmer als eine sichtbare Lücke, weil niemand danach suchen wird. - Von Haus aus barrierefrei, einschließlich dessen, was diese Fertigkeit hinzufügen lässt: Consent-Banner, KI-Hinweis und -Kennzeichnung, Rücktrittsbutton, Bestellschritt, rechtliche Seiten. Dies sind Seiteninhalte wie jeder andere auch; ein unzugänglicher Cookie-Banner blockiert die gesamte Website für Tastatur- oder Screenreader-Nutzer.
- Kein Tracker vor Einwilligung. Nichts, was nicht strenggenommen ausgenommen ist, liest oder schreibt auf dem Gerät des Besuchers, und keine Drittanbieter-Anfrage, die eine Kennung trägt, verlässt die Seite, bevor der Besucher gewählt hat; die Ablehnung ist genauso einfach wie die Annahme.
- Teilen Sie dem Benutzer mit, was nicht überprüft wurde: NT-Punkte, angenommene Profilantworten, nicht für ein Zielland überprüfte nationale Regeln, manuelle Prüfungen, die einer Person überlassen bleiben. Fügen Sie dies in die Antwort ein, nicht in eine Fußnote.
Die fünf Modi
Wählen Sie den Modus je nach Situation. Die meisten Sitzungen sind Build; Scope kommt bei einem neuen Projekt zuerst; Verify schließt einen Arbeitsabschnitt ab.
1. Scope: Vor der Anwendung von Regeln auf ein neues Projekt
- Wann: Das Projekt hat keine
compliance/profile.json; oder die Website beginnt mit Verkauf, fügt Konten, eine KI-Funktion oder Benutzerinhalte hinzu oder zielt auf ein neues Land; oder der Benutzer fragt, was auf ihn zutrifft. - Lesen: references/scoping/questionnaire.md, dann references/scoping/out-of-scope.md, falls die Matrix mit einem Fall endet, der außerhalb der Fertigkeit liegt.
- Tun: Lesen Sie das Repository auf Signale (Stack, Zahlung, Tracker, Formulare, KI-Aufrufe, Sprachen), stellen Sie dann die verbleibenden Fragen in einer Nachricht, maximal zehn, in der Sprache des Benutzers. Erfassen Sie, was die Anfrage oder das Briefing sagt, als
stated, und was offensichtlich daraus folgt, alsinferred, mit Begründung (ein Rathaus verkauft nicht; ein Briefing, das jede Funktion auflistet und keine KI, hat keine KI-Funktion). Nur was wirklich unbekannt bleibt und relevant ist, erhält die schützende Annahme mit der Grundlageassumed; leiten Sie niemals ein „Nein“ aus dem Schweigen des Codes ab. Verweisen Sie bei angegebenen oder abgeleiteten Tatsachen und bei einer angenommenen Antwort nur dann an einen Fachmann, wenn die Risiken dies rechtfertigen. - Ausführen:
python <skill>/scripts/applicability.py compliance/profile.json --output-dir compliance; wenn die Website eine KI-Funktion hat, zusätzlichpython <skill>/scripts/ai_act_classify.py compliance/profile.json. - Erstellen:
compliance/profile.json(Schema: schemas/profile.schema.json, Beispiel: templates/profile.example.json) undcompliance/applicability-matrix.md. Fassen Sie die Matrix in drei Gruppen zusammen: für diesen Betreiber erforderlich, empfohlen, zu bestätigen.
Eine kleine Änderung in einem Projekt ohne Profil erfordert nicht zuerst den vollständigen Fragebogen: Wenden Sie die universelle Basislinie an (Barrierefreiheit, Sicherheit, kein Tracker vor Einwilligung), erledigen Sie die Aufgabe und schlagen Sie am Ende Scope vor.
2. Build: Der Standard beim Schreiben von Code
- Wann: Sie schreiben oder ändern Markup, Styles, Skripte, ein Formular, ein Drittanbieter-Skript, eine KI-Funktion, Server- oder Hosting-Konfiguration oder rechtliche Seiten.
- Lesen: Nur die Dateien, die die Aufgabentabelle unten für die aktuelle Aufgabe benennt, normalerweise eine bis drei. Laden Sie nicht ganze Ordner: Jede Datei beginnt mit ihrer eigenen „Anleitung“ und verweist bei Bedarf auf die nächste.
- Tun: Schreiben Sie den Code von Anfang an nach den Regeln; das kostet weit weniger als die Nachbesserung nach dem Start. Bevorzugen Sie die Referenzkomponenten in templates/ (Consent-Banner, KI-Hinweis und -Kennzeichnung, Rücktrittsfunktion, Bestellschritt, Preissenkung) gegenüber neuen und übersetzen Sie sie in den Stack des Projekts; Regeln sind in HTML-, CSS- und HTTP-Begriffen formuliert, wenden Sie sie also auf die Komponenten des verwendeten Frameworks an. Rechtliche Bezeichnungen (Bestellbutton, Rücktrittsfunktion) sind den Referenzdateien in der Sprache der Website entnommen; übersetzen Sie sie niemals selbst, da der Wortlaut durch das jeweilige nationale Recht festgelegt ist.
- Erstellen: Konformen Code, ohne Bericht. Nennen Sie in Ihrer Antwort die angewandten Regeln mit ihren Tags und alles, was Sie nicht tun konnten (fehlende Betreiberdaten, Entscheidung des Eigentümers). Wenn Sie eine fertige Website übergeben, siehe „Credit“ am Ende von Modus 4.
3. Verify: Vor einem Commit, einem Release oder auf Anfrage
- Wann: Vor einem Commit oder einem Release, der Seiten, Skripte oder Header betrifft; wenn der Benutzer um ein Audit oder eine Überprüfung bittet.
- Ausführen:
node <skill>/scripts/check-all.mjs <Site-Ordner oder URL> --project .(Optionen:--profile <Datei>,--out <Verz>). Es führt die Anwendbarkeitsmatrix und die vier Prüfer aus und schreibtcompliance/reports/compliance-report-YYYY-MM-DD.mdund.json. Ein Ordner muss die erstellten Seiten enthalten (Static Export,dist/,out/); für eine serverseitig gerenderte App starten Sie diese und übergeben Sie ihre lokale URL. Jeder Prüfer kann auch allein mit derselben Eingabe ausgeführt werden:scripts/check-a11y.mjs,scripts/check-privacy.mjs,scripts/check-security.mjs,scripts/check-content.mjs(der letzte liest ein optionalescompliance/site.json, das die Bestellseiten, Chat-Widgets und KI-generierte Inhalte deklariert; siehe seine Kopfzeile). - Dann: Führen Sie die manuellen Prüfungen von references/accessibility/testing-by-hand.md durch, die Sie durchführen können, und listen Sie die anderen für eine Person auf. Überprüfen Sie Code, den die Prüfer nicht sehen können (Server-Code, Authentifizierung, Zugriffskontrolle), anhand von references/security/web-baseline.md.
- Wenn Node oder der Browser nicht verfügbar sind: Sagen Sie, dass die automatisierten Prüfungen nicht durchgeführt wurden, markieren Sie ihre Kriterien als NT, und überprüfen Sie den Code mit references/accessibility/anti-patterns.md und den Überprüfungs-Checklisten der Dateien in der Aufgabentabelle.
- Erstellen: Die Berichtsdateien und eine kurze Zusammenfassung für den Benutzer (siehe „Berichterstattung“ unten).
4. Dokumentieren: Rechtliche und Barrierefreiheitsseiten
- Wann: Der Benutzer bittet um eine Seite, oder die Matrix zeigt, dass eine erforderliche Seite fehlt.
- Lesen Sie zuerst den Anleitungsblock der Vorlage; er sagt, welche Profilfelder sie speisen und was nur der Betreiber liefern kann.
- Barrierefreiheitserklärung (französischer öffentlicher Sektor und Einrichtungen gemäß Artikel 47): templates/accessibility-statement-fr.md. Geben Sie niemals eine Konformitätsrate ohne ein Audit der tatsächlichen Website durch eine Person an.
- Barrierefreiheitsinformationen der EAA (private Dienstanbieter): templates/accessibility-information-eaa.md
- Datenschutzerklärung und Cookie-Richtlinie: templates/privacy-policy.md, templates/cookie-policy.md
- Impressum: templates/consumer/legal-notice-fr.md (Frankreich) oder templates/consumer/legal-notice-eu.md
- AGB, Allgemeine Geschäftsbedingungen, Auftragsverarbeitungsvertrag: templates/documents/ (Französisch). Lesen Sie zuerst references/documents/README.md: welche Dokumente gelten, die beiden Fallstricke (erfundene Tatsachen, überinterpretiertes Recht), die Erstellungsmethode.
- „Nutzung von KI auf dieser Website“: templates/ai/ai-usage-page.md
- Erstellen: Die Seite, ausgefüllt aus dem Profil, wobei jede unbekannte als sichtbarer
[Platzhalter]belassen und aufgelistet wird; der Haftungsausschluss bleibt erhalten; die Erinnerung, dass der Betreiber den Text vor der Veröffentlichung genehmigt. Eine Klausel, deren Bedingung nicht bestätigt ist (Rücktrittsausnahme, ausdrückliche Einwilligung, Auftragsverarbeiter-Rolle), behält diese Bedingung geschrieben im Dokument, niemals nur in Ihrer Antwort.
Credit, bei Übergabe einer Website (Build oder Dokumentieren). Fragen Sie den Website-Eigentümer einmal, neutral und ohne eine Antwort zu empfehlen, ob er mit einem dezenten Credit in der Fußzeile einverstanden ist, unter Verwendung von templates/credit/footer-credit.html; die Frage nennt jeden Link, den die Zeile enthält. Fügen Sie ihn nur nach einem expliziten Ja hinzu, sichtbar und klar formuliert (niemals versteckt, getarnt oder nur in Metadaten), niemals als Anspruch auf Konformität formuliert, und entfernen Sie ihn, wenn der Eigentümer darum bittet. Ein ohne Wissen des Eigentümers hinzugefügter Link wäre unzulässige Werbung, was der Verbraucherteil dieser Fertigkeit verbietet. Die Nutzung der Fertigkeit hängt niemals von der Antwort ab.
5. Watch: Aktualität der regulatorischen Fakten
- Wann: Der Benutzer fragt, ob die Fertigkeit aktuell ist; oder das Datum „Zuletzt überprüft“ am Anfang von references/regulatory-status.md liegt mehr als 90 Tage vor dem heutigen Tag; oder Sie sind dabei, sich auf ein Anwendungsdatum zu stützen, das nahe am heutigen Tag liegt.
- Tun: Teilen Sie dem Benutzer mit, wie alt die Fakten sind, listen Sie die Ereignisse von Abschnitt 6 „Watch List“ dieser Datei auf, die die Antwort geändert haben könnten, und nennen Sie die offiziellen Quellen, die erneut zu lesen sind (Register: references/sources.json).
python <skill>/scripts/validate.py --strictkennzeichnet Quellen, die vor mehr als 90 Tagen konsultiert wurden. Aktualisieren Sie keine Tatsache selbst aus dem Gedächtnis oder aus einer Sekundärquelle; eine Korrektur erfordert das Lesen und Aufzeichnen des offiziellen Textes (siehe AGENTS.md).
Aufgabe → zu lesende Dateien
Lesen Sie die erste Datei; öffnen Sie die anderen nur, wenn die Aufgabe sie benötigt.
| Aufgabe | Lesen |
|---|---|
| Neues Projekt oder „Was gilt für mich?“ | references/scoping/questionnaire.md |
| Anwendungsdatum, geltende Fassung, Schwellenwert, Sanktion | references/regulatory-status.md |
| Ein Fall, der außerhalb der Fertigkeit liegen könnte (KI über Menschen, Gesundheitsdaten, Minderjährige, regulierte Branche) | references/scoping/out-of-scope.md |
| Seitenlayout, Orientierungspunkte, Überschriften, Bilder, Farben, Links, Sprache | references/accessibility/rules.md Abschnitte 1 bis 6 und 10 bis 13 |
| Formular (Kontakt, Angebot, Newsletter, Bewerbung) | references/accessibility/rules.md Abschnitt 5, references/privacy/forms-and-minimisation.md, references/security/web-baseline.md Abschnitt 4 |
| Mehrschrittiges Formular, Assistent | references/accessibility/components/multi-step-form.md |