Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
shiplightai avatar

Privacy Review

  • 1 installs
  • 2 repo stars
  • Updated April 19, 2026
  • shiplightai/claude-code-plugin

Evaluate PII handling, data flows, tracking inventory, consent, storage, and leakage risks with browser validation against GDPR and CCPA.

About

Evaluates how an application collects, stores, transmits, and potentially leaks personal data using browser-based validation against GDPR, CCPA, and privacy frameworks. A developer uses it before launching in regulated jurisdictions or after adding third-party analytics or tracking.

  • Catches runtime data flows, third-party trackers, and console/network leaks
  • Maps findings to GDPR articles with YAML regression tests

Privacy Review by the numbers

  • 1 all-time installs (skills.sh)
  • Ranked #1,834 of 2,203 Security skills by installs in the Skillselion catalog
  • Data as of Jul 27, 2026 (Skillselion catalog sync)
npx skills add https://github.com/shiplightai/claude-code-plugin --skill privacy-review

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs1
repo stars2
Last updatedApril 19, 2026
Repositoryshiplightai/claude-code-plugin

What it does

Evaluate PII handling, data flows, tracking inventory, consent, storage, and leakage risks with browser validation against GDPR and CCPA.

Files

SKILL.mdMarkdownGitHub ↗

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 /shiplight: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 IDCheckStandardMethod
CON-01Cookie consent banner shown before setting non-essential cookiesePrivacy / GDPR Art.7Load page, check if tracking cookies exist before consent
CON-02No tracking scripts fire before consentePrivacy / GDPRMonitor network requests on fresh page load (no consent given)
CON-03Consent is granular (not just "accept all")GDPR Art.7Check consent UI for category-level options
CON-04Rejecting consent actually prevents trackingGDPR Art.7Reject all, verify no tracking cookies/requests
CON-05Consent preference is persisted and respectedGDPR Art.7Set preference, reload page, verify it's remembered
CON-06Consent can be withdrawn (modify/revoke)GDPR Art.7(3)Find mechanism to change consent after initial choice
CON-07Privacy policy is accessible and linkedGDPR Art.12-14Check for privacy policy link in footer/consent banner
CON-08Data 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 IDCheckStandardMethod
LEAK-01No PII in URL parametersOWASP Privacy #1Check URLs after form submissions, navigation
LEAK-02No PII in browser console logsOWASP Privacy #4Check get_browser_console_logs for email, names, IDs
LEAK-03No PII in localStorage/sessionStorageData minimizationInspect client storage for personal data
LEAK-04No PII in page source/commentsInformation leakCheck HTML comments, hidden fields
LEAK-05No PII in error messagesOWASP Privacy #7Trigger errors, check for user data in messages
LEAK-06No PII in Referer headersOWASP PrivacyCheck Referrer-Policy, inspect outbound requests
LEAK-07No PII in meta tags or Open GraphInformation leakCheck <meta> for user-specific data on shared pages
LEAK-08No PII in cached responses (browser cache)Data minimizationCheck Cache-Control headers on pages with PII
LEAK-09No PII leaked to third-party scriptsGDPR Art.28Monitor data sent to analytics/tracking endpoints
LEAK-10Autocomplete appropriate on sensitive fieldsUsability/PrivacyCheck 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 IDCheckStandardMethod
TRACK-01Inventory all third-party scriptsGDPR Art.30List all external script sources and their domains
TRACK-02All third-party scripts are documentedTransparencyCross-reference with privacy policy
TRACK-03No unknown/unexpected tracking pixelsPrivacyCheck for 1x1 images, beacon requests
TRACK-04Third-party cookies inventoryePrivacyList all cookies by domain
TRACK-05No fingerprinting scriptsPrivacyCheck for canvas fingerprint, WebGL, AudioContext probing
TRACK-06Data sent to third parties is proportionateGDPR Art.5(1)(c)Inspect payloads to analytics endpoints
TRACK-07Tracking respects Do-Not-Track headerBest practiceSet 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 IDCheckStandardMethod
STOR-01Sensitive data encrypted in transit (HTTPS)GDPR Art.32Check all resource URLs use HTTPS
STOR-02Session data has appropriate expiryData minimizationCheck cookie/token expiration times
STOR-03No excessive data in cookiesData minimizationCheck cookie sizes and contents
STOR-04Client-side storage is minimalData minimizationAudit localStorage/sessionStorage contents
STOR-05Sensitive form data not persisted in historyPrivacyCheck if sensitive forms use POST, not GET
STOR-06Browser back button doesn't show sensitive data after logoutSession managementLogout, press back, check for cached sensitive content

Browser validation: Inspect all cookies (name, value, domain, expiry, flags). Check localStorage/sessionStorage. Test logout + back button behavior.

Category E: User Rights Implementation (RIGHTS)

Check IDCheckStandardMethod
RIGHTS-01Users can access their data (data export)GDPR Art.15 / CCPAFind and test data export feature
RIGHTS-02Users can delete their account/dataGDPR Art.17Find and verify account deletion flow
RIGHTS-03Users can update their personal informationGDPR Art.16Test profile edit functionality
RIGHTS-04Opt-out mechanism for data selling (CCPA)CCPA §1798.120Check for "Do Not Sell" link
RIGHTS-05Account deletion is complete (not just deactivation)GDPR Art.17Delete account, verify data is removed (check profile URL)

Browser validation: Navigate to account settings, test data export, profile editing, and account deletion flows. Verify each right is accessible and functional.

---

Phase 4: Report

Generate a structured report saved to shiplight/reports/privacy-review-{date}.md:

# Privacy Review Report
**Date:** {date}
**URL:** {url}
**PII types handled:** {list}
**Jurisdictions:** {GDPR, CCPA, etc.}
**Third parties detected:** {count and list}

## Overall Score: {X}/10 | Confidence: {X}%

## Score Breakdown
| Category | Score | Findings |
|----------|-------|----------|
| Consent (CON) | 5/10 | 1 critical, 2 high |
| PII Leakage (LEAK) | 7/10 | 1 high, 1 medium |
| Tracking Inventory (TRACK) | 4/10 | 2 high, 1 medium |
| Data Storage (STOR) | 8/10 | 1 medium |
| User Rights (RIGHTS) | 6/10 | 1 high, 1 medium |

## Data Flow Map
(visual representation of PII flows through the application)

## Third-Party Tracking Inventory
| Domain | Type | Cookies Set | Data Sent | Consent Required |
|--------|------|-------------|-----------|-----------------|
| google-analytics.com | Analytics | _ga, _gid | Page URL, user agent | Yes |
| ... | | | | |

## Findings
(structured findings with evidence, severity, confidence)

Confidence Scoring

  • 90-100%: Browser-validated — observed PII in console, URL, or network request
  • 70-89%: Strong evidence from storage/header inspection
  • 50-69%: Code-level pattern match, may not manifest at runtime
  • Below 50%: Don't report

---

Phase 5: Remediate

1. Fix guidance (example)

#### LEAK-01: Email address in URL parameter after form submit
**Risk:** PII in URL is logged by servers, proxies, browser history, and analytics
**File:** src/pages/search.tsx:34
**Current:** `router.push(`/results?email=${email}`)`
**Fix:** Use POST request or session state
- `router.push('/results')` with email in request body or session
- Add `Referrer-Policy: no-referrer` header as defense-in-depth

2. YAML regression test

- name: leak-01-no-pii-in-urls
  description: Verify email addresses are not exposed in URL parameters
  severity: high
  standard: OWASP-Privacy-1
  steps:
    - URL: /search
    - intent: Enter email in search form
      action: fill
      locator: "getByLabel('Email')"
      value: "test@example.com"
    - intent: Submit the search form
      action: click
      locator: "getByRole('button', { name: 'Search' })"
    - WAIT_UNTIL: Search results are displayed
      timeout_seconds: 15
    - CODE: |
        const url = page.url();
        if (/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/.test(url)) {
          throw new Error(`PII found in URL: ${url}`);
        }
    - VERIFY: No email addresses appear in the browser URL

Save all YAML tests to shiplight/tests/privacy-review.test.yaml.

---

Tips

  • Use a fresh browser session (no stored cookies) to test consent behavior accurately
  • PII patterns to search for: email (@), phone (\d{3}[-.]?\d{3}[-.]?\d{4}), SSN, credit card numbers, names from test accounts
  • Third-party scripts often load more scripts — check for cascade loading
  • get_browser_console_logs often reveals PII that developers left in debug logging
  • Test with consent rejected AND accepted — both paths matter
  • Close session with close_session and use generate_html_report for evidence

Related skills

Securitycomplianceaudit

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.