gdpr
Skill0 starsChanged 57 days agoMITView on GitHub
Use when building, shipping, or auditing one of my B2C apps for GDPR/privacy — classify the data posture (offline / Supabase-backed / ships-to-AI-processor), run the decision gates (personal data? lawful basis? processor DPA? transfer? minimization? DSR/erasure?), add a privacy notice, and add privacy-first cookieless analytics without triggering consent. EU GDPR; references security-bar for the controls.
2 other projects use a version of this.
Adopted by
Most recently taken up by
- viasrijan/crazy-skillstheir own version, first seen Oct 20, 2026
- garethmdowns/gdpr-skilltheir own version, first seen May 26, 2026
Other versions2 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 2
- garethmdowns/gdpr-skill★ 0same name
- viasrijan/crazy-skills★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository14 other files it gives its agents.
- arch-barSkill
- commsSkill
- context-budgetSkill
- exploit-huntSkill
- gen-umlSkill
- perf-barSkill
- postmortemSkill
- security-barSkill
- spec-intakeSkill
- stack-gotchasSkill
- stacksSkill
- standardsSkill
- task-flowSkill
- ux-barSkill
The file
We split this skill into the rules it gives an agent
5 rules. About 0 are common, 4 are distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈4
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 40
Run these on the data path (adapted from ECC's HIPAA gates):
- Distinctive: line 46
Does this processor / model provider need a DPA: before touching the data? (Supabase, any analytics tool, any AI API.) International …
- Distinctive: line 51
Auditable?: Only where proportionate — see the non-goal below.
- Very specific: line 81
Never put personal data in: logs, analytics events, crash/error reports, LLM prompts, URLs/query strings, localStorage/sessionStorage, or …
- Distinctive: line 102
Non-goal (arch-bar): no HIPAA-grade _audit-everything_, session-timeout, or facility-RLS machinery — disproportionate for no-login B2C PWAs …
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
gdpr
Overview
Practical GDPR/privacy for my B2C PWAs — not legal advice, an engineering checklist.
First classify the app's data posture, then run the decision gates, then apply the
guidance for the gaps. Security controls (RLS, secrets, open-write) live in security-bar —
referenced, not restated. This skill owns privacy/compliance: lawful basis, minimization,
retention, data-subject rights, processors, transfers, the privacy notice, and analytics.
When to use
- Building or shipping a feature that collects/stores/transmits personal data.
- Auditing an existing app for GDPR gaps, or writing its privacy notice.
- Choosing/adding analytics (read the analytics section first — it's coupled to consent).
Step 1 — classify the data posture
My fleet splits three ways; the posture decides how much applies:
- Offline / on-device (e.g. kartaak, converthub) — no server, no egress of user data. Privacy by architecture. GDPR surface ≈ minimal; the win is stating it (a "runs on your device, we collect nothing" notice = trust + the easy compliance win).
- Server-backed (e.g. EventSplit, Monete — Supabase) — I'm a controller. Personal data of users and third parties (e.g. friends added to an event who never interacted with me). This is the real surface: lawful basis, minimization, retention, DSR, RLS.
- Client-side but ships to third-party processors (e.g. mintza → OpenAI/Anthropic/ Google/Azure) — heaviest: multiple processors, international transfer (US), and possibly special-category content. Controller/processor split depends on BYO-key vs hosted — decide it explicitly.
Step 2 — decision gates
Run these on the data path (adapted from ECC's HIPAA gates):
- Is this personal data? (identifies a person directly or combined — name, email, expense tied to a named person, voice). If no → stop, nothing here applies.
- Lawful basis? Name it: consent, contract, or legitimate interest (third-party names in a shared event = legitimate interest; document it).
- Does this processor / model provider need a DPA before touching the data? (Supabase, any analytics tool, any AI API.) International transfer covered (SCCs / adequacy / DPF)?
- Minimum necessary? Store the least that works (a display label, not full identity).
- DSR / erasure handled? Can a person get their data deleted? For no-login apps, "delete the event" is the erasure path — make it real and reachable.
- Auditable? Only where proportionate — see the non-goal below.
Step 3 — guidance for the gaps
- Privacy notice — every app gets one (even offline: "we collect nothing"). Use
references/privacy-notice.md. Disclose every processor (Supabase, analytics, AI APIs) and any transfer. - Retention — cap growing personal data; EventSplit's history/trash caps already act as de-facto retention — document them as the policy.
- Tag PII at the schema level (Supabase posture):
COMMENT ON COLUMN events.participant_name IS 'PII: name';— makes personal-data columns explicit for audits and future migrations. - Security controls (RLS, open-write, secrets, egress) →
eskills:security-bar. Note: EventSplit's open-write RLS means anyone can read/delete personal data → that's a privacy exposure, fix per security-bar.
Analytics — privacy-first, no consent banner
No tracking ⇒ no cookie banner. Don't add one you don't need. To get metrics and keep that win:
- Use cookieless, no-PII, EU-hosted analytics — Plausible / Umami / PostHog-EU
(cookieless). No cookie/
localStorageidentifier, no cross-site → no consent required. - Do NOT use GA4 / Meta Pixel / anything cookie- or fingerprint-based → that requires consent + a banner (the bloat we avoid).
- Per posture: offline apps can still ship cookieless pageviews; Supabase apps must disclose the analytics tool as a processor; mintza already ships to AI, so cookieless analytics adds negligible marginal exposure.
Never expose PII in… (guardrail list)
Never put personal data in: logs, analytics events, crash/error reports, LLM prompts,
URLs/query strings, localStorage/sessionStorage, or screenshots. Prefer opaque IDs
over names/email. Never ship the service_role key client-side (→ security-bar).
// BAD — leaks PII into the error (and the error tracker)
throw new Error(
`No member ${member.name} <${member.email}> in event ${event.title}`,
);
// GOOD — generic message; details logged server-side with opaque IDs only
logger.error("member lookup failed", { memberId: member.id, eventId });
throw new Error("Member not found");For the AI-processor posture (mintza): send the model the minimum content needed, never attach identifiers you don't have to, and disclose the provider + transfer in the notice.
Not in scope here
- Security controls (RLS, secrets, authz, egress) →
security-bar. - Concrete failure recipes (open-RLS exposure, undisclosed transfer) →
stack-gotchas. - Non-goal (arch-bar): no HIPAA-grade audit-everything, session-timeout, or facility-RLS machinery — disproportionate for no-login B2C PWAs and fights minimization + the egress limit. Audit only where proportionate.
- Scope is EU GDPR; UK-GDPR is near-identical; CCPA is out of scope.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

