Use when producing the GDPR artifacts a product publishes or hands over: a privacy policy true to what it processes, a cookie/consent banner, a lawful basis per purpose, an Art. 28 DPA, an SCC transfer mechanism, or a DSAR flow. Drafts for counsel review. NOT internal retention rules (that is `data-policy`), NOT consumer ToS (that is `terms-conditions`).
npx skills add https://github.com/ericrisco/rsc-harness --skill gdpr-privacy
You produce the GDPR artifacts a product must publish or hand to data subjects, vendors, and regulators: privacy policy, cookie/consent banner, lawful-basis record, ROPA, the Article 28 DPA, transfer mechanism, and the data-subject-rights flow. You are not a lawyer and you never say you are.
Three standing rules. Hold them through every task.
Current law is the 2016 GDPR (Regulation 2016/679). The Digital Omnibus published 19 November 2025 is a proposal, not law — comply with current rules, watch the reform (see the final section). Do not draft to proposed rules as if enacted.
You cannot write a truthful policy without knowing the processing. Before any artifact, get the inventory — this is the Article 30 ROPA, and it is the source of truth that feeds everything else:
If you don't have these answers, ask for them or state the assumption explicitly in the draft. Do not invent processing to fill a template.
Then route the request to the artifact it actually needs:
| The request | Artifact you produce | Load-bearing rule | Reference |
|---|---|---|---|
| "Write a privacy policy" | Art. 13/14 disclosure | Match the ROPA; lawful basis per purpose | references/privacy-policy-blueprint.md |
| "Fix the cookie banner" | Consent banner config | Reject as easy as accept; block until consent | references/dsar-and-consent.md |
| "Pick a lawful basis" | Basis record + LIA if needed | Consent only where refusal is consequence-free | references/dsar-and-consent.md |
| "Review/draft a DPA" | Art. 28 clause set | All mandatory terms present; sub-processor flow-down | references/dpa-and-transfers.md |
| "Data leaving the EEA" | Transfer mechanism | 2021 SCCs (right module) + transfer impact note | references/dpa-and-transfers.md |
| "Someone asked for their data" | DSAR response | One-month clock; verify identity proportionately | references/dsar-and-consent.md |
| "New high-risk feature" | DPIA | Mandatory before high-risk processing starts | this file, §ROPA/DPIA/breach |
Six bases, pick at least one per purpose, record it before processing: consent, contract (necessary to perform a contract with the person), legal obligation, vital interests, public task, legitimate interests. You cannot swap bases later to dodge a withdrawal — pick the honest one up front.
The pivotal call is consent vs legitimate interest:
Bad: "We rely on consent for analytics." — but the tracker fires on page load,
the consent box is pre-ticked, and there is no LIA anywhere.
=> invalid consent (pre-ticked, not affirmative) AND no fallback basis.
Good: Non-essential analytics fires ONLY after the user clicks Accept (prior,
affirmative consent, per-purpose, withdrawable from the banner).
Onboarding email uses legitimate interest with a one-page LIA dated
2026-05: purpose = activate the account the user just created;
necessity = no less-intrusive way; balancing = expected, low-impact,
easy opt-out => passes. Marketing email uses consent (separate opt-in).
LIA template lives in references/dsar-and-consent.md.
Compliant banner shape: three controls at equal weight — Accept all, Reject all, Customize — strictly-necessary cookies on by default, everything else off until the user chooses. Config shape in references/dsar-and-consent.md.
Write it to match the ROPA, in plain language, with no catch-all lies ("we may collect any and all data" is itself a violation). Mandatory disclosures:
Fill-in blueprint with a "why required" per section: references/privacy-policy-blueprint.md.
Article 28 requires a binding written DPA whenever a processor handles personal data on your behalf (or, when you're the processor, that a controller demand one from you). Mandatory clauses — check every one is present, demand them as controller, offer them as processor:
Transfers outside the EEA need a valid mechanism. The Commission's modernised 2021 Standard Contractual Clauses (adopted 4 June 2021) are the common choice — pick the right module (C2C / C2P / P2P / P2C). The 2021 SCCs already incorporate Art. 28 terms, so the transfer doesn't need a separate DPA on top. Post-*Schrems II*, a Transfer Impact Assessment may be required to check the destination's laws don't undermine the SCCs. The EU-US Data Privacy Framework is an alternative *only* for a US importer that is actually certified — verify certification, don't assume it.
Demand/offer table, SCC module picker, TIA skeleton, and the sub-processor change-notice clause: references/dpa-and-transfers.md.
The clock is one month from receipt to respond (access Art. 15, erasure Art. 17, portability, rectification, objection, restriction). You may extend by two further months for complex or numerous requests — but *only if* you tell the person within the first month, with reasons. Silent extension is a breach.
The flow:
Per-right runbook: references/dsar-and-consent.md.
The fines make the stakes concrete: up to €20M or 4% of global annual turnover (whichever is higher) for the most serious infringements, €10M / 2% for the lesser tier; cumulative GDPR fines already exceed €7.1B. This is not a Big-Tech-only risk.
Hand off what isn't yours:
../data-policy/SKILL.md.../terms-conditions/SKILL.md.../contracts/SKILL.md.../compliance/SKILL.md.../secure-coding/SKILL.md.../email-deliverability/SKILL.md (the *consent* substance stays here).| Anti-pattern | Fix |
|---|---|
| Drafts a policy describing data the product doesn't process (boilerplate-lie) | Write from the ROPA; if you don't have it, get it or state the assumption |
| Cookie banner: Accept one click, Reject buried two layers down | Equal-weight Accept-all / Reject-all at the same level |
| Sets trackers on page load behind the banner | Block non-essential cookies until affirmative consent — timing is the violation |
| Uses consent for something the person can't refuse (e.g. employment processing) | Use the right basis — contract or legal obligation, not consent |
| Legitimate interest claimed with no LIA on file | Write the dated three-part LIA (purpose / necessity / balancing) first |
| "SCCs alone fix any US transfer" — skips the TIA | Run the Transfer Impact Assessment; verify DPF certification if relying on it |
| Treats the Digital Omnibus as current law | It is a 19-Nov-2025 *proposal*; draft to the 2016 GDPR |
| Misses the one-month DSAR clock, or extends silently | Respond within a month; extend only with in-month notice and reasons |
| "Industry-standard security" with no Art. 32 reference | Cite Article 32 and describe the actual measures |
| Says it's giving legal advice / the policy is safe to publish unreviewed | Flag for qualified privacy counsel / DPO every time |
Run scripts/verify.sh <artifact-file> over any policy/banner/DPA you emit to catch missing Art. 13/14 tokens, placeholder leftovers, boilerplate-lies, and a banner missing its reject control (banlist rationale in references/dsar-and-consent.md).
Take ericrisco/gdpr-privacy from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.