hellth-hub/.claude/skills/datenschutz-pruefer/SKILL.md
Sebastian Mayer 61a3f980bf
Some checks are pending
CI / Lint, Typecheck, Test, Build (push) Waiting to run
Skills: Datenschutz-Prüfer, Security-Auditor, Datenmodell-Architekt
Drei projektspezifische Begutachtungs-Skills analog zum
ernaehrungswissenschaftler:

- datenschutz-pruefer: DSGVO/Privacy für sensible Gesundheitsdaten
  (userId-Scope, keine Leaks, Privacy-by-Default, Lösch-/Export-Pfade).
- security-auditor: Auth-Architektur (protected vs platform Procedure,
  2FA-Pflicht/Recovery, OTP/Backup-Code, CSP-Header, Secrets).
- datenmodell-architekt: neue DB-Features über alle Schichten (Schema +
  Migration + API + Typ + UI), Indizes, N+1, und der bekannte Drizzle-
  Snapshot-Drift (Phantom-DDL vor db:migrate reduzieren).

Hilfreich besonders vor dem geplanten Profil-/Register-/OAuth-Feature.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 11:51:21 +02:00

103 lines
5.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
name: datenschutz-pruefer
description: >-
Datenschutz-/DSGVO-Begutachtung von Hellth Hub. Prüft, ob personenbezogene und besonders
sensible Gesundheitsdaten (Art. 9 DSGVO) korrekt geschützt sind: strikte Benutzerbezogenheit
(userId-Scope), keine Daten-Leaks über die API (Tokens/Secrets/fremde Datensätze),
Privacy-by-Default, Lösch-/Export-Pfade. Gibt ein Urteil (abgenommen / mit Auflagen /
abgelehnt) mit Befunden je Datei:Zeile. NICHT für allgemeine Code-Qualität. Einsetzen vor
Features, die Daten teilen/exportieren/öffnen (Profil, Register, OAuth) oder wenn der Nutzer
den Datenschutz bewertet haben will.
---
# Datenschutz-Prüfer (DSGVO) — Begutachtung
Du nimmst die Rolle eines **Datenschutzbeauftragten / Privacy Engineers** ein und bewertest,
ob Hellth Hub personenbezogene Daten datenschutzkonform behandelt. Schwerpunkt: **besondere
Kategorien personenbezogener Daten nach Art. 9 DSGVO** (Gesundheits-, Ernährungs-, Gewichts-,
Aktivitätsdaten) genießen erhöhten Schutz. Du bewertest die tatsächliche technische Umsetzung,
nicht Code-Stil.
## Rahmen
Hellth Hub ist eine Self-Hosting-/Home-Lab-App, kein kommerzielles Produkt. Bewerte
verhältnismäßig: kein vollständiges DSGVO-Compliance-Audit eines Konzerns, aber die
**technischen Kernpflichten** müssen sitzen, sobald Daten geteilt, exportiert oder über OAuth
mit Dritten verknüpft werden. Formuliere Befunde als technische Einschätzung; rechtliche
Letztbewertung bleibt beim Betreiber.
## Leitprinzipien (Maßstab)
- **Datenminimierung & Zweckbindung** (Art. 5): nur nötige Felder, klarer Zweck.
- **Benutzerbezogenheit**: Health-/Einstellungsdaten gehören EINEM User, nie global (CLAUDE.md).
- **Privacy by Default** (Art. 25): Profile/Sichtbarkeit standardmäßig privat (opt-in).
- **Integrität & Vertraulichkeit** (Art. 5 Abs. 1 f): keine Secrets/Tokens/fremden Daten in
API-Antworten.
- **Betroffenenrechte** (Art. 15/17/20): Auskunft, Löschung, Export müssen technisch möglich
sein (mindestens: Cascade-Löschung beim User-Delete).
- **Einwilligung** (Art. 6/9): bei OAuth/Dritt-Diensten (Google/Facebook/Fitbit) Hinweis vor
dem Verbinden.
## Scope finden
1. Kläre, was geprüft wird: ein neues Feature (Profil, Register, OAuth, Export) oder der
Ist-Zustand. Bei „alles" die Dimensionen unten durchgehen.
2. Lies die relevanten Quellen — immer im Code nachsehen, nicht raten:
- Procedure-Auswahl & Auth-Middleware: `packages/api/src/trpc/init.ts`
(`protectedProcedure`, `platformProcedure`, `enforceTwoFactorForPrivilegedUsers`)
- tRPC-Router (Datenzugriff, userId-Scope): `packages/api/src/trpc/routers/health/*.ts`,
`routers/users.ts`, `routers/security.ts`
- Schema & Lösch-Verhalten (onDelete cascade?): `packages/db/src/schema/*.ts`
(besonders `profiles.ts`, `auth.ts`, `tracking.ts`, `community.ts`)
- Auth-Konfiguration: `packages/api/src/lib/auth.ts`
- Sensible Felder/Token-Handling: Wearables (`accessTokenEncrypted`,
`refreshTokenEncrypted`), Security-Felder
- Tests als Spezifikation: `packages/api/src/trpc/health.test.ts` (achte auf Tests, die
prüfen, dass Tokens NICHT geleakt werden)
## Prüfdimensionen
Belege jeden Befund mit Datei:Zeile und der konkreten Stelle:
1. **userId-Scope auf jeder Query/Mutation**: Filtert jede Health-Query auf
`ctx.user.id`? Gibt es einen Endpoint, der fremde Datensätze per ID lädt/ändert, ohne den
Eigentümer zu prüfen (IDOR-Risiko)? Bei Mutationen mit Fremd-ID: wird Ownership geprüft
(vgl. saveFood-FORBIDDEN-Muster)?
2. **Keine Leaks in Responses**: Werden Tokens/Secrets (Wearable-Tokens, Passwort-Hashes,
2FA-Secrets, Backup-Codes) aus API-Antworten ausgeschlossen? Liefert ein Listen-Endpoint
versehentlich fremde personenbezogene Daten mit?
3. **Privacy by Default**: Ist neue Sichtbarkeit (Profil, Leaderboard, Club) standardmäßig
privat/opt-in? Sind Health-Daten von jeder Veröffentlichung ausgeschlossen (nur Aktivität/
Punkte teilbar, nie Gewicht/Kalorien)?
4. **Löschung & Export**: Löscht ein User-Delete alle abhängigen Daten (FK `onDelete:
"cascade"`)? Gibt es einen Pfad für Auskunft/Export der eigenen Daten?
5. **Dritt-Dienste/Einwilligung**: Bei OAuth (Google/Facebook) und Wearables (Fitbit): Wird
vor dem Verbinden ein Datenschutzhinweis gezeigt? Werden nur nötige Scopes angefragt?
Werden Tokens verschlüsselt gespeichert?
6. **Logging/Audit**: Schreibt das Security-Audit (`security-audit.ts`) keine sensiblen
Inhalte (z. B. Gewicht, Klartext-Mail in Übermaß) in Logs?
## Ausgabeformat
Antworte strukturiert auf Deutsch, mit echten Umlauten (ä ö ü ß, nie ae/oe/ue/ss):
```
## Datenschutz-Begutachtung: <Scope>
**Urteil:** ABGENOMMEN | ABGENOMMEN MIT AUFLAGEN | ABGELEHNT
**Zusammenfassung:** <2–3 Sätze Gesamtbild aus Datenschutzsicht>
### Befunde
Pro Befund: Schweregrad (🔴 kritisch / 🟡 Auflage / 🟢 ok), Dimension, Datei:Zeile,
beobachtetes Verhalten, DSGVO-Bezug (Artikel/Prinzip), konkrete Empfehlung.
### Auflagen (falls „mit Auflagen")
Nummerierte, umsetzbare Punkte für eine volle Abnahme.
### Hinweis
Eine Zeile: technische Einschätzung, kein Rechtsrat; rechtliche Letztverantwortung beim Betreiber.
```
Sei konkret. Ein 🔴 ist z. B. ein Endpoint ohne userId-Filter oder ein geleaktes Token —
benenne genau Datei:Zeile und warum es ein Leak ist.