CommunityRecherche & Datenanalysegithub.com

shannonmcgivney/consent-audit

Prüft eine Website oder eine mit Vibe-Coding erstellte App (Lovable, Bolt, v0, Replit, Next.js, React, einfaches HTML) auf Tracking, das geladen oder Daten sendet, BEVOR der Besucher im Cookie-Banner zugestimmt hat – Werbe-Pixel (Meta, Google, TikTok, LinkedIn), Google Tag Manager, Analytics, Session Replay, Chat-Widgets, Einbettungen, vom Hosting eingeschleuste Analytics sowie Kunden-E-Mails oder -IDs, die an Tracker gesendet werden. Nur lesend – ein Code-Scan plus eine Live-Netzwerkprüfung bei einem frischen Besuch – endend in einem Inventar und einer minimalen Fix-Liste. Verwenden, wenn jemand fragt: 'Ist das...'

Was ist consent-audit?

Dieses Skill führt ein Engineering-Audit durch, um zu ermitteln, ob Tracking-Code auf einer Website geladen wird oder Daten sendet, bevor der Besucher im Cookie-Banner zugestimmt hat. Es ist eine Reaktion auf die zunehmende rechtliche Durchsetzung – insbesondere nach dem kalifornischen Abhörgesetz (CIPA) –, bei der bereits das bloße Laden eines Pixels vor der Einwilligung als Abhörung mit erheblichen Strafen gewertet werden kann. Das Skill arbeitet ausschließlich lesend: Es wird zunächst der gesamte Quellcode mit einem Scanner auf Tracker, Pixel, Analysewerkzeuge und Code, der E-Mails oder Benutzer-IDs sendet, durchsucht. Anschließend wird die Live-Website in einem vollständig Cookie-freien privaten Tab besucht, um Netzwerkanfragen, Cookies und Speicher vor und nach der Interaktion mit dem Banner zu protokollieren. Es prüft auch Hosting-Einstellungen, die Tracker einschleusen können (z. B. Lovable Visitor Analytics, Vercel Web Analytics). Das Skill erstellt einen detaillierten Bericht, der jeden Fund klassifiziert (notwendig / funktionale Einbettung / optional), die minimale Behebung angibt und klare Hinweise für den nächsten Schritt gibt (z. B. Einsatz des Skills 'consent-gate' oder Entfernung von Trackern). Es ist ausdrücklich keine Rechtsberatung, sondern eine technische Grundlage für das Gespräch mit einem Anwalt. Das Skill ist für Entwickler, die mit Claude Code, Cursor, Codex oder ähnlichen KI-Assistenten arbeiten, konzipiert und wird durch einen lokalen Python-Scanner und eine Reihe von Prüfschritten implementiert.

Funktioniert mit✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/shannonmcgivney/consent-before-tracking/tree/HEAD/skills/consent-audit

Installed? Explore more Recherche & Datenanalyse skills: affaan-m/uspto-database, affaan-m/scholar-evaluation, affaan-m/literature-review · View all 6 →

In Ihrer bevorzugten KI fragen

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

Dokumentation

Consent-Audit: Was läuft, bevor jemand auf „Akzeptieren“ klickt?

Die Lektion hinter diesem Skill (Dr. Erin Toussaint Jacques, IG-Reel, Okt. 2026): Vibe-Coding-Apps sind ein einfacher Weg, um verklagt zu werden, weil niemand prüft, ob der Tracking-Pixel feuert, bevor der Besucher auf „Akzeptieren“ klickt. Ein Pixel ist ein kleines Code-Stück von Meta, Google und anderen, das verfolgt, was Leute auf Ihrer Website tun. Nach dem kalifornischen Abhörgesetz (CIPA) kann Tracking, das vor der Einwilligung beginnt, als Abhörung behandelt werden, mit gesetzlichen Schadensersatzforderungen von bis zu 5.000 $ pro Verstoß, und Pixel-Klagen gehen mittlerweile in die Tausende. Ein Banner zu haben und auf die Erlaubnis zu warten, sind zwei verschiedene Dinge. Viele verklagte Websites hatten ein Banner; das Tracking lud in dem Moment, als die Seite geöffnet wurde.

Dieses Audit beantwortet also eine Frage mit Beweisen: Was wird bei einem frischen Besuch, vor jedem Klick, geladen und was gesendet, und an wen?

Dies ist ein Engineering-Audit, keine Rechtsberatung. Sagen Sie niemandem, dass er „konform“ ist. Sagen Sie, was gefunden wurde, was behoben wurde, was nicht geprüft wurde und dass ein Anwalt prüfen sollte, wenn derjenige Werbung schaltet oder in die EU oder nach Kalifornien verkauft.

Standard: Nur lesen

Ändern Sie in diesem Skill nichts: keine Bearbeitungen, Veröffentlichungen, Datenbank- oder Authentifizierungsänderungen, neuen Dienste oder Annahme von AGB. Korrekturen sind Aufgabe von consent-gate, sobald der Eigentümer zustimmt.

Schritt 1: Inventur des Codes

Wenn der Code lokal ist (oder ein GitHub-Clone eines Lovable-Projekts), führen Sie den Scanner aus:

python3 ~/.claude/skills/consent-audit/scripts/scan_trackers.py /pfad/zu/app

Er listet jeden Tracker, Pixel, Analytics, Replay, Embed und Third-Party-Skript-Signatur auf, die er findet, nach Datei und Zeile, markiert Zeilen, die E-Mails oder Benutzer-IDs zu senden scheinen, und gibt an, ob eine Einwilligungsprüfung in der Nähe erscheint. Ein Hinweis „Einwilligungsprüfung in der Nähe“ ist ein Anhaltspunkt, kein Beweis. Lesen Sie den Code um jeden Treffer herum, um zu bestätigen:

  • Wo es beginnt. index.html <head>, main.tsx, App.tsx, _app/layout oder ein Provider bedeutet, dass es auf jeder Seite für jeden Besucher läuft.
  • Was es schützt (gated). Wird der Skript-Tag, import() oder init() erst nach einer gespeicherten, ausdrücklichen Zustimmung ausgeführt? Ein Banner, das sich selbst ausblendet, während gtag('config') bereits gelaufen ist, ist kein Schutz.
  • Was es sendet. identify(email), setUser({ email }), Meta Advanced Matching (em, ph), vollständige URLs mit ?-Query-Strings oder #-Fragmenten (Geschenk-Codes, Reset-Tokens, Suchtexte) und Formularfelder.
  • Serverseitige Weiterleitung. Conversions API, /api/track, Edge-Funktionen, die an Meta/Google/Segment posten. Diese müssen dieselbe Auswahl respektieren.

Wenn es keinen lokalen Code gibt (ein Lovable-Projekt, das Sie nur im Browser erreichen können), verwenden Sie den reine-Audit-Prompt in references/prompts.md im Chat dieses Projekts und überprüfen Sie dann seinen Bericht mit Schritt 2.

Schritt 2: Die Live-Website prüfen (der Teil, den ein Banner nicht vortäuschen kann)

Code kann durch Weglassen lügen (Tag-Manager, Hosting-Erweiterungen, CMS-Snippets). Überprüfen Sie immer die veröffentlichte URL in einem frischen, cookie-freien Browser-Tab:

  1. Öffnen Sie die Website in einem neuen privaten Kontext (im integrierten Browser von Claude: ein neuer Tab nach dem Löschen des Speichers oder eine dort noch nie besuchte Website). Klicken Sie auf nichts.
  2. Lesen Sie die Netzwerkanfragen (read_network_requests). Jede Anfrage an eine Werbe-, Analyse- oder Replay-Domain vor einem Klick ist ein Fund: Listen Sie die Domain, den URL-Pfad und ob sie Identifikatoren (fbp, _ga, cid, uid, em, ttp) enthält.
  3. Lesen Sie Cookies und Speicher via javascript_tool: document.cookie, Object.keys(localStorage). Notieren Sie alle _ga, _fbp, _gcl_au, _ttp, _hj*, ph_*, ajs_*, _clck oder _uetsid.
  4. Klicken Sie auf Ablehnen (oder schließen Sie das Banner, wenn es keine Ablehnoption gibt). Navigieren Sie zu zwei weiteren Seiten. Alles, was neu feuert, ist ein Fund.
  5. Klicken Sie in einem frischen Kontext auf Akzeptieren. Bestätigen Sie, dass die Tracker jetzt laden, der Schutz also nicht einfach defekt ist.
  6. Melden Sie sich mit einem Testkonto an, falls vorhanden (niemals mit einem echten Kundenkonto). Prüfen Sie, ob die E-Mail oder Benutzer-ID in einer Tracker-Anfrage abfließt.

Schritt 3: Hosting- und Plattform-Einstellungen prüfen

Vom Hosting eingeschleuste Tracker erscheinen nicht im Code der App:

  • Lovable: Projekt → Einstellungen → Visitor Analytics. Es ist standardmäßig aktiviert; schalten Sie es bei jedem Projekt (auch neuen) aus oder schützen Sie es.
  • Vercel (Web Analytics / Speed Insights), Netlify (Analytics), Cloudflare (Web Analytics, Zaraz), Framer/Webflow/Wix/Squarespace (Site-Einstellungen → benutzerdefinierter Code / Analytics / Pixel), EzyCourse / Systeme / Kajabi (Tracking-Code-Felder, Facebook-Pixel-Feld).
  • Tag-Manager: Öffnen Sie den GTM-Container und listen Sie jeden Tag und seinen Trigger auf. „Alle Seiten“ ohne eine Einwilligungsbedingung bedeutet, dass er vor der Einwilligung feuert.

Schritt 4: Sortieren und Berichten

Klassifizieren Sie jeden Eintrag:

KlasseBeispieleRegel
NotwendigLogin-Session, CSRF, Warenkorb, Stripe auf der Zahlungsseite, Betrugs-/Bot-Checks, gespeicherte UI-EinstellungenDarf ohne Einwilligung laufen. Kein Banner allein dafür nötig.
Funktionale EinbettungMapbox auf der Kartenseite, YouTube/Vimeo-Player, Calendly, Chat-WidgetsNur dort laden, wo sie verwendet werden. Bevorzugt Click-to-Load oder Privacy-Modi (youtube-nocookie).
OptionalWerbe-Pixel, GA/GTM, PostHog, Hotjar, Clarity, HeyCatch, Session Replay, RetargetingDarf erst laden, abrufen oder initialisieren, wenn der Besucher in diese Kategorie einwilligt.

Berichtsformat (kurz und evidenzbasiert halten):

CONSENT-AUDIT: <app> (<url>), <datum>
Vor jedem Klick: <N> optionale Tracker feuerten  ->  BESTANDEN / NICHT BESTANDEN

| Anbieter | Wo es beginnt (datei:zeile oder host-einstellung) | Feuert vor Einwilligung? | Sendet Identitäts-/URL-Daten? | Klasse | Minimale Behebung |

Notwendige Dienste (OK ohne Einwilligung): ...
Datenschutzhinweis: vorhanden/fehlend, aus Footer verlinkt? korrekte Anbieterliste?
Widerruf der Wahl: Gibt es einen dauerhaften Link „Datenschutzeinstellungen“?
Global Privacy Control beachtet? ja/nein/nicht getestet
Unveröffentlichte Änderungen, deren Veröffentlichung ebenfalls freigegeben würde: ...
Nicht geprüft: ...
Keine Rechtsberatung. Lassen Sie einen Anwalt prüfen, wenn Sie Werbung schalten, Besucher aus Kalifornien/EU bedienen oder Pixel auf Videoseiten setzen.

Bieten Sie dann consent-gate an, um die Korrekturen anzuwenden. Wenn ein Tracker sich nicht lohnt, empfehlen Sie, ihn zu entfernen, anstatt ihn zu schützen: Kein Tracker ist die billigste Compliance (in echten Audits war die Entfernung eines ungenutzten Analyse-Tools oft die gesamte Behebung).

Warnungen aus echten Audits

  • Analytics wurde aus der Einstiegsdatei der App gestartet (src/main.tsx) auf jeder Seite für jeden Besucher, ohne Einwilligungsprüfung, und der Login-Code sendete die E-Mails und Benutzer-IDs angemeldeter Kunden bei jedem Login an das Analyse-Tool. Das Tool konnte keine Query-Strings entfernen, daher wurde es vollständig entfernt.
  • Lovables Visitor Analytics ist standardmäßig aktiviert und wird vom Hosting eingeschleust. Es ist nicht im Code.
  • Das Veröffentlichen gibt alles Unveröffentlichte frei. Bevor Sie eine Datenschutz-Korrektur veröffentlichen, listen Sie die älteren unveröffentlichten Änderungen auf, die damit ebenfalls ausgeliefert werden (Login-Helfer, Abhängigkeits-Updates, Zahlungs-Korrekturen) und holen Sie die Zustimmung des Eigentümers ein.
  • Analytics auszuschalten ist nicht dasselbe wie die Datenerfassung auszuschalten. Die eigene Datenbank der App (Schülerarbeiten, Fortschritte, Nachrichten) ist First-Party und getrennt. Sagen Sie das explizit, weil Eigentümer sich sorgen.
  • Videoseiten + Meta-Pixel fügen ein weiteres Bundesrisiko hinzu (Video Privacy Protection Act). Kursseiten mit Lektionsvideos sollten jeden Pixel auf diesen Seiten als hohe Priorität behandeln.

Individual skills in this repo

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

Verwandte Skills