Cross-jurisdictional analysis engine for the US state consumer privacy law patchwork (CCPA/CPRA, VCDPA, CPA, CTDPA, UCPA, TDPSA, OCPA, FDBR, MCDPA, ICDPA, INCDPA, TIPA, DPDPA, NJDPA, NHDPA, NDPA, KCDP…
Library skill — the default version is maintained in GitHub; edits you make live in your own clone.
Cross-jurisdictional applicability, gap analysis, and deliverable generation for the US state consumer privacy patchwork. Authored for legal practitioners and privacy professionals who need defensible, citation-ready output rather than vendor-style checklists.
This SKILL.md is the orchestrator. The depth lives in references/. Read references on demand — never preload all of them.
| If the user is asking about... | Read |
|---|---|
| Whether a law applies to their business | references/applicability-matrix.md, then the relevant states/<xx>.md |
| What rights consumers have / how to fulfill | references/rights-comparison.md + relevant state file |
| What the controller must do (notices, contracts, assessments) | references/controller-duties.md + relevant state file |
| Sensitive data, special categories, opt-in vs opt-out | references/sensitive-data.md |
| Global Privacy Control / universal opt-out | references/universal-opt-out.md |
| Kids/teens, schools, COPPA interaction | references/kids-and-teens.md |
| Entity is HIPAA-covered, GLBA-regulated, COPPA-subject, FERPA-related, or FCRA-touching — entity-level vs. data-level exemption diagnostic per state | references/federal-overlays.md |
| Penalties, AG enforcement, private right of action, cure periods | references/enforcement.md |
| What an AG is actually likely to enforce, by state | references/ag-priorities.md |
| Analogous prior enforcement actions for a given gap | scripts/precedent_match.py against references/enforcement_actions.json |
| The binding constraint across multi-state operations | scripts/conflict_resolver.py (compliance-ceiling synthesis) |
| Litigation-defense framing — what controllers can argue | references/defense-arguments.md |
| Controller / processor / third-party status (per data flow) | references/workflows/status-determination.md |
| Single state deep-dive | references/states/<xx>.md |
| Running a structured intake before answering | references/workflows/intake-questionnaire.md |
| Scoring gaps and prioritizing remediation | references/workflows/gap-analysis-method.md |
| Routing a specific consumer request | references/workflows/dsar-routing.md |
| Drafting model clauses for notices | assets/notice-clauses/*.md |
| Pre-publication QA on memo citation discipline | scripts/citation_audit.py |
These are not suggestions. They preserve the defensibility of any analysis this skill produces.
(Cal. Civ. Code § 1798.140(d)), (Va. Code § 59.1-575), etc. If the citation isn't in the references, mark the assertion [citation needed — verify before reliance].This is the logical sequence, not a rigid script. Skip steps when the user has already supplied the input. Slow down or speed up to match the user's sophistication.
Intake → Applicability triage → Status determination → Conflict-of-laws synthesis →
Gap analysis (with precedent matching + AG-priority weighting) →
Remediation prioritization → Deliverables (memo + DOCX) →
Citation audit → Optional: clauses, DSAR routing
If the user opens with a specific narrow question ("does Colorado apply if I make $20M and have 80,000 CO customers?"), answer it directly using the relevant references.
If the user opens with an open-ended request ("help me get compliant" / "I'm hiring a privacy counsel and need a baseline"), run a structured intake. Read references/workflows/intake-questionnaire.md and ask the questions in batches of no more than 5 at a time. Do not ask one question at a time — that wastes the user's clock.
Critical intake categories: entity & corporate structure; revenue and consumer-volume thresholds; data categories processed (and whether any are sensitive); whether the entity sells data, shares for cross-context behavioral advertising, profiles individuals, or processes minors' data; channels (website, mobile, offline, hardware); B2B vs B2C; existing notices and contracts; sectoral overlay (HIPAA/GLBA/FCRA/COPPA).
For each state, run the state's threshold test. The thresholds are not all the same — California uses revenue or consumer count or data-sale share; Texas has no numerical threshold but excludes SBA-defined small businesses with sensitive-data carve-outs; Florida has a $1B narrow trigger. See references/applicability-matrix.md for the master matrix.
Output a table with columns: State | Statute | Applies? | Reasoning | Effective Date / Enforcement Status. Mark "Insufficient info" rather than guessing — and list the specific input you'd need.
For each applicable state, determine whether the entity is a controller, processor, third party, service provider/contractor (CA-specific), or some combination by data flow. For anything more nuanced than a clearly-controller posture, read references/workflows/status-determination.md and run the decision tree per data flow. A SaaS vendor processing customer data is typically a processor for that data and a controller for its own business contacts and marketing data. Many entities are dual-status. State this explicitly per data flow, with a per-flow status table per the workflow file.
Where two or more states are applicable, do not stop at parallel state analyses. Run scripts/conflict_resolver.py --states CA,VA,CO,... to synthesize the binding constraint across applicable states (the "compliance ceiling"). For each of ~13 compliance dimensions (notice content, sensitive-data treatment, sale of sensitive data, minor treatment, response time, appeal right, UOOM recognition, opt-out persistence, processor contract terms, DPA requirements, etc.), the script returns the strictest applicable rule, the controlling state, the citation, and other states' positions for context. Use the output to drive a unified-implementation recommendation rather than a state-by-state checklist that the controller cannot operationalize.
For each applicable state, walk through references/controller-duties.md and the relevant states/<xx>.md, comparing each statutory duty against current practice. Score each gap using the methodology in references/workflows/gap-analysis-method.md:
Adjust the score by AG posture. Read references/ag-priorities.md and apply the heuristic adjustments from the "Risk weighting in gap analysis" section: a gap implicating a stated Tier 1 AG priority (CA, TX, CO) gets +1 severity; a gap in an industry currently under sweep (connected vehicles, healthcare-pixel, child-directed apps, etc.) gets +1 likelihood; a gap subject to an active cure period gets -1 severity.
Match each material gap to analogous enforcement actions. Use scripts/precedent_match.py with violation-theory tags from the corpus (e.g., --tag gpc_not_honored --tag no_donotsell_link --state CA) to pull the 3-5 most analogous prior actions from references/enforcement_actions.json. Cite the most directly analogous matter with the operational lesson and headline figure in the gap-log entry. This shifts the work product from "here's the rule" to "here's what happened to companies in your shoes."
For the highest-severity gaps, also pull defense-side framing from references/defense-arguments.md so the deliverable shows both the exposure and the recovery posture.
Surface cross-cutting gaps — e.g., a single missing disclosure that creates exposure under 8 statutes is a higher-priority fix than a CA-only edge case.
Sort gaps by Score, then bucket into 0–30 day, 31–90 day, and >90 day / strategic lanes. Note dependencies — e.g., updating the privacy notice often depends first on completing a data inventory; flag that.
Generate two artifacts:
assets/memo-template.md as the skeleton. Substantive content fills in. Save to the working directory.docx skill (which is generally available alongside this one) before generating. Then run scripts/generate_docx_memo.js with a JSON payload built from the analysis. The script is idempotent and produces a US Letter document with covers, TOC, the applicability matrix, gap log table, and remediation roadmap.Both artifacts must include the no-legal-advice disclaimer and a "Limitations and assumptions" section that lists what the analysis depends on (e.g., revenue figures provided by user, data flows as described, no anomalous facts not yet known).
Before finalizing the markdown memo, run scripts/citation_audit.py --input <memo>.md --strict. The auditor enforces the citation discipline mandated in the operating principles:
Cal. Civ. Code § 1798.140(d), Va. Code § 59.1-575, 4 CCR § 904-3).Cal. Civ. Code § 1798.X must fall in the CCPA codified range).[citation needed] markers should remain in the final memo.Do not deliver a memo with audit errors. Warnings are reviewable; surface them to the user when flagged.
If the user asks for model clauses (notice-at-collection, opt-out disclosures, sensitive data notice, financial incentive notice), pull the matching template from assets/notice-clauses/ and adapt it to the entity's specific facts. Never paste a template verbatim — it must be tuned to the data categories, purposes, retention periods, and recipients actually in play.
If the user asks how to handle a specific consumer request, follow references/workflows/dsar-routing.md.
These are the failure modes that show up repeatedly in privacy work product. The skill exists in part to prevent them.
references/enforcement.md rather than memory.references/kids-and-teens.md), CT/CO teen-specific provisions, and federal COPPA all overlay state laws when minors are present. State-only analysis without this overlay produces incorrect output.This skill is a state privacy patchwork navigator. It is deliberately narrow, and that narrowness is what makes it useful. Several adjacent regimes intentionally fall outside the scope. If the user's question is purely within one of the regimes below — without a state privacy overlay — this skill is the wrong tool, and continuing to answer with it produces low-quality work product. Recommend a sectoral resource and stop.
Federal sectoral regimes (out of scope standalone; in scope as overlay).
When any of the above intersect with state privacy law (e.g., a HIPAA covered entity asking about CCPA obligations for non-PHI marketing data; a GLBA-regulated bank asking about CPA's coverage of B2B data; a COPPA-subject service asking how MD's flat ban on minor targeted advertising layers on top), references/federal-overlays.md is the right place to start. The overlays file is a bridge, not a standalone navigator.
Other adjacent regimes (out of scope entirely; recommend dedicated skills).
The skill is most useful when the user provides structured inputs. If they don't, drive the intake. Examples of well-formed prompts:
If a user prompt is vague, run intake. If a user prompt is sharp, answer sharply.