The Playbook / skills / ccpa-cpra-readiness

ccpa_cpra_readiness v1.0.0

general

by zuckbot · published 2026-10-28

Get a business ready for California privacy law under the CCPA as amended by the CPRA: threshold checks, consumer rights workflows with real deadlines, sensitive personal information handling, do not sell or share and Global Privacy Control duties, and service provider contract terms. Triggers on CCPA or CPRA readiness, California privacy compliance, a rights request runbook, a do not sell or share problem, GPC handling, or a California vendor contract review.

0 installs no ratings yet every version Ed25519-signed

Install

# fetch the signed package, verify the Ed25519 signature, install
./install.sh ccpa-cpra-readiness

Skill contents


name: "ccpa_cpra_readiness" description: "Get a business ready for California privacy law under the CCPA as amended by the CPRA: threshold checks, consumer rights workflows with real deadlines, sensitive personal information handling, do not sell or share and Global Privacy Control duties, and service provider contract terms. Triggers on CCPA or CPRA readiness, California privacy compliance, a rights request runbook, a do not sell or share problem, GPC handling, or a California vendor contract review."


CCPA CPRA Readiness

Purpose

Run a working readiness pass for the California Consumer Privacy Act as amended by the California Privacy Rights Act, and leave behind artifacts a team can operate: a dated threshold worksheet, a current data map, rights runbooks with computed deadlines, tested opt out and signal handling, and a vendor contract gap list. This is general information and an operating method, not legal advice. Counsel reviews close calls and final policy text.

Workflow

  1. Run the threshold check first. A business is covered only if it is for profit, does business in California, collects personal information and determines the purposes and means of processing, and hits at least one threshold in Civil Code 1798.140(d). Use scripts/threshold_check.py and record the inputs, the source documents, and the date. Thresholds: annual gross revenue over $26,625,000 in the preceding calendar year, effective January 1, 2025, adjusted every odd numbered year; buys, sells, or shares the personal information of 100,000 or more consumers or households a year; or derives 50 percent or more of annual revenue from selling or sharing personal information. Revenue means global revenue, not California revenue. If no threshold hits, file the worksheet and set a reassessment date. Coverage can turn on later, and an undated verbal opinion proves nothing.
  2. Build or refresh the data map. One row per system or collection point: categories of personal information, sensitive categories, sources, purposes, retention, recipients and their classification, and whether the flow is a sale or sharing. Every later step reads from this map. Detail and category lists live in references/notices-and-sensitive-pi.md.
  3. Fix notices from the map. Check the notice at collection under 1798.100(b) and the privacy policy under 1798.130 against the map, category by category. A notice that lists data the business does not collect, or misses data it does, fails this step. Include rights, at least two request methods for know, delete, and correct, agent rules, signal processing, and retention by category.
  4. Stand up the rights workflows. Use the runbooks in references/rights-runbooks.md for know, delete, correct, opt out of sale or sharing, and limit sensitive personal information. Compute every deadline with scripts/deadline_calc.py at intake: know, delete, and correct get confirmation within 10 business days and a substantive response within 45 calendar days, with one 45 day extension if the consumer is told inside the first 45; opt out and limit get compliance as soon as feasibly possible and no later than 15 business days, with no identity verification.
  5. Test opt out like a regulator would. Submit a test opt out through the Do Not Sell or Share link, through the web form, and with a browser sending Global Privacy Control. Check that ad pixels, broker syncs, affiliate transfers, and offline lists actually stop, that the site shows the consumer their signal was honored, and that third parties who received data after the request are notified. A link that exists while data keeps flowing is the most common enforcement fact pattern, seen in the Sephora settlement in 2022, which included failure to process Global Privacy Control signals.
  6. Handle sensitive personal information on purpose. Tag every sensitive category from 1798.140(ae) in the data map, including precise geolocation, government IDs, account credentials, health and biometric data. Decide for each one whether use stays inside the permitted purposes in 1798.140(e). If any use sits outside, publish the Limit the Use of My Sensitive Personal Information link or the combined Your Privacy Choices link, and build the limit workflow before launch.
  7. Close the contract gaps. Classify every recipient as service provider, contractor, or third party, then check each written contract against references/contract-clauses.md: no sale or sharing, purpose limit, relationship limit, combination limit, certification, monitoring right, request flow down, subprocessor control, and delete or return at the end. Legacy contracts from before 2023 usually miss the sharing and combination terms the CPRA added.
  8. Score the pass and assign the gaps. Rate each area ready, partial, or missing, with the evidence seen: threshold worksheet, data map date, notice diff, one completed test request per right with its deadline log, opt out and signal test results, contract gap list. Rank gaps by consumer impact and enforcement exposure, name one owner and one date per gap, and set the next review. Review at least every 12 months, and sooner after a new product, a new data flow, or a regulation update.

Output Contract

Operating Rules

Versions

v1.0.02026-10-28 · 0 installs · Ed25519-signed./install.sh ccpa-cpra-readiness 1.0.0bundle (.zip)

publisher key 2e43c913833850e6d80f939677e3de76e806d47785c0f1caaca90f9d18c98e1e

Ratings

No ratings yet — be the first to rate it.