privacy-review
Privacy review and testing: evaluate PII handling, data flows, tracking inventory, consent mechanisms, storage practices, and data leakage risks with browser-based validation against GDPR, CCPA, and industry best practices.
What this skill does
# Privacy Review Evaluate how your application handles personal data — where it's collected, processed, stored, transmitted, and potentially leaked. This review catches privacy issues that code review alone misses: runtime data flows, third-party tracking, console/network leaks, and consent implementation gaps. ## When to use Use `/privacy-review` when: - Your app collects any personal information (names, emails, addresses, etc.) - Before launching in GDPR/CCPA jurisdictions - Adding third-party analytics, tracking, or marketing tools - After a data incident or privacy complaint - Building features that handle sensitive data (health, financial, biometric) - Integrating with third-party APIs that receive user data ## Standards Referenced - **GDPR** — EU General Data Protection Regulation (Articles 5, 6, 7, 12-22, 25, 32) - **CCPA/CPRA** — California Consumer Privacy Act - **OWASP Privacy Risks Top 10** - **NIST Privacy Framework** - **ISO 27701** — Privacy Information Management - **ePrivacy Directive** — Cookie consent requirements ## Phase Overview ``` Phase 1: EDUCATE → Privacy principles and what we check Phase 2: SCOPE → Map data flows, PII types, third parties Phase 3: ANALYZE → Browser-based validation of privacy practices Phase 4: REPORT → Findings with evidence and confidence scores Phase 5: REMEDIATE → Fix guidance + YAML regression tests ``` --- ## Phase 1: Educate > **Why this matters:** GDPR fines reached €2.1B in 2023. CCPA gives consumers the right to sue for data breaches ($100-$750 per consumer per incident). Beyond compliance, privacy violations erode user trust — 79% of consumers say they'd stop engaging with a brand after a privacy breach. Many privacy issues are invisible in code review but obvious in runtime behavior. This review focuses on observable runtime privacy behavior — what actually happens in the browser when users interact with your app. --- ## Phase 2: Scope ### Gather context 1. **Auto-detect from codebase:** - Forms that collect user input (registration, profile, payment, contact) - Analytics/tracking scripts (Google Analytics, Mixpanel, Segment, Hotjar, etc.) - Cookie-setting code and cookie consent mechanisms - Logging statements that might include PII - API calls that transmit user data - Third-party SDKs and their data sharing behavior - Privacy policy and terms of service pages 2. **Ask the user** (one at a time): - **Target URL**: Where is the app running? - **Data types**: What personal data does your app collect? (auto-detected, confirm) - **Jurisdictions**: Where are your users? (determines GDPR/CCPA/other applicability) - **Third parties**: What analytics/tracking/marketing tools do you use? (auto-detected, confirm) - **Known concerns**: Any specific privacy areas you're worried about? (optional) 3. **Build data flow map:** - PII entry points (forms, URL params, imports) - PII processing (client-side or server-side) - PII storage (cookies, localStorage, server DB) - PII transmission (API calls, third-party scripts) - PII display (profile pages, admin panels, logs) --- ## Phase 3: Analyze Open a browser session with `new_session` using `record_evidence: true`. Run all applicable check categories. ### Category A: Data Collection & Consent (CON) | Check ID | Check | Standard | Method | |----------|-------|----------|--------| | CON-01 | Cookie consent banner shown before setting non-essential cookies | ePrivacy / GDPR Art.7 | Load page, check if tracking cookies exist before consent | | CON-02 | No tracking scripts fire before consent | ePrivacy / GDPR | Monitor network requests on fresh page load (no consent given) | | CON-03 | Consent is granular (not just "accept all") | GDPR Art.7 | Check consent UI for category-level options | | CON-04 | Rejecting consent actually prevents tracking | GDPR Art.7 | Reject all, verify no tracking cookies/requests | | CON-05 | Consent preference is persisted and respected | GDPR Art.7 | Set preference, reload page, verify it's remembered | | CON-06 | Consent can be withdrawn (modify/revoke) | GDPR Art.7(3) | Find mechanism to change consent after initial choice | | CON-07 | Privacy policy is accessible and linked | GDPR Art.12-14 | Check for privacy policy link in footer/consent banner | | CON-08 | Data collection is proportionate (no unnecessary fields) | GDPR Art.5(1)(c) | Review forms for fields not needed for stated purpose | **Browser validation:** Load page in fresh session (no cookies). Use `get_browser_console_logs` and monitor network via JavaScript. Check cookies before and after consent interaction. Use `act` to interact with consent banner. ### Category B: PII Leakage Detection (LEAK) | Check ID | Check | Standard | Method | |----------|-------|----------|--------| | LEAK-01 | No PII in URL parameters | OWASP Privacy #1 | Check URLs after form submissions, navigation | | LEAK-02 | No PII in browser console logs | OWASP Privacy #4 | Check `get_browser_console_logs` for email, names, IDs | | LEAK-03 | No PII in localStorage/sessionStorage | Data minimization | Inspect client storage for personal data | | LEAK-04 | No PII in page source/comments | Information leak | Check HTML comments, hidden fields | | LEAK-05 | No PII in error messages | OWASP Privacy #7 | Trigger errors, check for user data in messages | | LEAK-06 | No PII in Referer headers | OWASP Privacy | Check Referrer-Policy, inspect outbound requests | | LEAK-07 | No PII in meta tags or Open Graph | Information leak | Check `<meta>` for user-specific data on shared pages | | LEAK-08 | No PII in cached responses (browser cache) | Data minimization | Check Cache-Control headers on pages with PII | | LEAK-09 | No PII leaked to third-party scripts | GDPR Art.28 | Monitor data sent to analytics/tracking endpoints | | LEAK-10 | Autocomplete appropriate on sensitive fields | Usability/Privacy | Check `autocomplete` attribute on password, CC fields | **Browser validation:** Navigate through user flows. After each action, check URLs, console logs, storage, and network requests for PII patterns (email regex, phone patterns, SSN patterns, etc.). Use JavaScript to inspect `performance.getEntries()` for request URLs. ### Category C: Third-Party Tracking Inventory (TRACK) | Check ID | Check | Standard | Method | |----------|-------|----------|--------| | TRACK-01 | Inventory all third-party scripts | GDPR Art.30 | List all external script sources and their domains | | TRACK-02 | All third-party scripts are documented | Transparency | Cross-reference with privacy policy | | TRACK-03 | No unknown/unexpected tracking pixels | Privacy | Check for 1x1 images, beacon requests | | TRACK-04 | Third-party cookies inventory | ePrivacy | List all cookies by domain | | TRACK-05 | No fingerprinting scripts | Privacy | Check for canvas fingerprint, WebGL, AudioContext probing | | TRACK-06 | Data sent to third parties is proportionate | GDPR Art.5(1)(c) | Inspect payloads to analytics endpoints | | TRACK-07 | Tracking respects Do-Not-Track header | Best practice | Set DNT header, check if tracking still fires | **Browser validation:** Load page with fresh session. Use JavaScript to enumerate all `<script>` sources, all cookie domains, all network requests to external domains. Check for fingerprinting API usage (Canvas, WebGL, AudioContext). ### Category D: Data Storage & Retention (STOR) | Check ID | Check | Standard | Method | |----------|-------|----------|--------| | STOR-01 | Sensitive data encrypted in transit (HTTPS) | GDPR Art.32 | Check all resource URLs use HTTPS | | STOR-02 | Session data has appropriate expiry | Data minimization | Check cookie/token expiration times | | STOR-03 | No excessive data in cookies | Data minimization | Check cookie sizes and contents | | STOR-04 | Client-side storage is minimal | Data minimization | Audit localStorage/sessionStorage contents | | STOR-05 | Sensitive form data not persisted in history
Related in Data & Analytics
clawarr-suite
IncludedComprehensive management for self-hosted media stacks (Sonarr, Radarr, Lidarr, Readarr, Prowlarr, Bazarr, Overseerr, Plex, Tautulli, SABnzbd, Recyclarr, Unpackerr, Notifiarr, Maintainerr, Kometa, FlareSolverr). Deep library exploration, analytics, dashboard generation, content management, request handling, subtitle management, indexer control, download monitoring, quality profile sync, library cleanup automation, notification routing, collection/overlay management, and media tracker integration (Trakt, Letterboxd, Simkl).
querying-soql
IncludedSOQL query generation, optimization, and analysis with 100-point scoring. Use this skill when the user needs SOQL/SOSL authoring or optimization: natural-language-to-query generation, relationship queries, aggregates, query-plan analysis, and performance or safety improvements for Salesforce queries. TRIGGER when: user writes, optimizes, or debugs SOQL/SOSL queries, touches .soql files, or asks about relationship queries, aggregates, or query performance. DO NOT TRIGGER when: bulk data operations (use handling-sf-data), Apex DML logic (use generating-apex), or report/dashboard queries.
app-store-optimization
IncludedApp Store Optimization (ASO) toolkit for researching keywords, analyzing competitor rankings, generating metadata suggestions, and improving app visibility on Apple App Store and Google Play Store. Use when the user asks about ASO, app store rankings, app metadata, app titles and descriptions, app store listings, app visibility, or mobile app marketing on iOS or Android. Supports keyword research and scoring, competitor keyword analysis, metadata optimization, A/B test planning, launch checklists, and tracking ranking changes.
habit-flow
IncludedAI-powered atomic habit tracker with natural language logging, streak tracking, smart reminders, and coaching. Use for creating habits, logging completions naturally ("I meditated today"), viewing progress, and getting personalized coaching.
app-store-optimization
IncludedApp Store Optimization (ASO) toolkit for researching keywords, analyzing competitor rankings, generating metadata suggestions, and improving app visibility on Apple App Store and Google Play Store. Use when the user asks about ASO, app store rankings, app metadata, app titles and descriptions, app store listings, app visibility, or mobile app marketing on iOS or Android. Supports keyword research and scoring, competitor keyword analysis, metadata optimization, A/B test planning, launch checklists, and tracking ranking changes.
visualizing-data
IncludedBuilds dashboards, reports, and data-driven interfaces requiring charts, graphs, or visual analytics. Provides systematic framework for selecting appropriate visualizations based on data characteristics and analytical purpose. Includes 24+ visualization types organized by purpose (trends, comparisons, distributions, relationships, flows, hierarchies, geospatial), accessibility patterns (WCAG 2.1 AA compliance), colorblind-safe palettes, and performance optimization strategies. Use when creating visualizations, choosing chart types, displaying data graphically, or designing data interfaces.