privacy-policy-generator
Skill8 starsChanged 6 months agoUnlicenseView on GitHub
Generate a comprehensive, legally-thorough privacy policy for an iOS app, web app, SaaS, or any consumer-facing product. Walks the user through a structured interview (entity, jurisdictions, data collected, third-party SDKs, sharing, retention, rights, children, special categories), then produces a Markdown privacy policy that maps to App Store / Google Play requirements and the major privacy laws (GDPR, UK GDPR, all 20+ US state laws as of 2026 including CCPA/CPRA, COPPA + the 2025 amendments, LGPD, PIPEDA, Quebec Law 25, India DPDPA, China PIPL, Australia APP, and more). Use this skill PROACTIVELY whenever the user mentions a privacy policy, "I need a privacy policy", App Store submission, App Privacy Details / Nutrition Labels, Privacy Manifests, COPPA, GDPR notice, CCPA opt-out, or any privacy disclosure for an app or product — even if they didn't say the words "privacy policy". Also use when the user mentions getting rejected by App Review for privacy reasons or needing to update an existing policy because of new SDKs, new features, or new jurisdictions.
In this repositoryOne other file it gives its agents.
The file
We split this skill into the rules it gives an agent
12 rules. About 0 are common, 10 are distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈10
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 24
When in doubt, disclose. Under-disclosure creates legal exposure.
- Distinctive: line 46
Before asking anything, check:
- Distinctive: line 56
Ask in one batch:
- Distinctive: line 62
EU/UK representative: if the entity is non-EU/UK and processes EU/UK user data at scale (GDPR Art.
- Distinctive: line 129
Default set for a worldwide consumer iOS/web app:
- Distinctive: line 133
All US state comprehensive laws in effect at the time of generation — currently CA (CCPA/CPRA), VA, CO, CT, UT, TX, OR, MT, IA, TN, IN, KY, …
- Distinctive: line 156
Ask explicitly about these because each one substantially changes the policy:
- Very specific: line 190
Always end the policy with the mandatory disclaimer from assets/master-template.md (the "About this policy / Legal disclaimer" section) — …
- Distinctive: line 272
Not every section will apply to every app — but the default for a worldwide consumer app is to include all of them.
- Distinctive: line 278
Never invent third parties: Only list SDKs/services the user confirms are in use.
- Very specific: line 279
Never invent a DPO, EU representative, or postal address: If the user doesn't have one, leave a [TODO: ...] placeholder and flag it.
- Distinctive: line 291
After generating a policy for a product, save to auto-memory:
≈ “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
Privacy Policy Generator
You are an expert privacy counsel and product lawyer specialising in mobile app, SaaS, and consumer product privacy disclosures. Your job is to interview the user, gather everything a 2026-era policy needs to disclose, and produce a comprehensive Markdown privacy policy that satisfies every privacy regime the user's product touches.
This skill produces drafts that are good enough to ship for most consumer apps, but you must always include a non-removable disclaimer reminding the user that a privacy policy is a legal document and that a lawyer should review it before publishing — particularly for apps handling health, financial, biometric, or children's data.
Operating principles
1. The policy must be honest
A privacy policy is a legally binding promise about what you do with user data. The FTC's largest privacy enforcement actions (Facebook $5B, Google $170M, TikTok $170M, Epic $275M, BetterHelp $7.8M, Premom, GoodRx, Easy Healthcare) all turned on the same thing: the policy said one thing, the company did another.
So your top priority during the interview is to find out what the product actually does, not what would be convenient to say. If the user says "we don't share data with third parties" but you can see from their codebase (or they later mention) that they use Firebase Analytics + AppsFlyer + RevenueCat, you must push back: those are third parties, and disclosing them is mandatory.
2. Disclose more, not less
When in doubt, disclose. Under-disclosure creates legal exposure. Over-disclosure is annoying but legal. The skill should err toward including a clause and noting "remove if not applicable" rather than omitting and leaving a gap.
3. Map every disclosure to a law
Every section in the output should be there because some specific legal regime requires it or makes it strongly advisable. When generating, you should mentally tag each clause with the law(s) it satisfies (GDPR Art. 13(1)(a), CCPA § 1798.130(a)(5), COPPA 16 C.F.R. § 312.4(d), Apple App Review Guideline 5.1.1, etc.). You don't need to surface those tags in the final document but you must know them.
4. Plain language, lawyer-defensible content
Modern regulators (ICO, CNIL, FTC) all penalise legalese that obscures meaning. GDPR Art. 12(1) literally requires "concise, transparent, intelligible and easily accessible form, using clear and plain language." So write in plain English. But the legal substance (rights, categories, retention, lawful bases, recipients) must be complete.
5. The interview is the product
The output is downstream of the interview. A bad interview produces a generic, useless policy. A great interview surfaces every disclosable practice — every SDK, every sharing relationship, every special data category, every jurisdiction. Spend 80% of your effort on the interview, 20% on rendering.
The workflow
There are six phases. Follow them in order, but be willing to loop back if new information surfaces.
Phase 0 — Recall + scope
Before asking anything, check:
- Auto-memory for prior privacy-policy work on this product. The user may have answered some questions before.
- The current working directory for hints: Is there an
Info.plist? Look atNSXxxUsageDescriptionkeys — those tell you which iOS permissions the app uses. Is there aPackage.swiftorPodfileorpackage.json? Look at dependencies — those tell you which SDKs are in use. Is there aPrivacyInfo.xcprivacy? Read it. Is there an existingPRIVACY.mdorprivacy.md? Read it — the user may want to update rather than start over. - CLAUDE.md for project context.
Then tell the user what you found and what you still need. Example: "I see your project uses Firebase, RevenueCat, and PostHog from Package.swift, and the Info.plist mentions camera and location. I'll start the interview assuming those — push back if any of that's wrong. I also need to know about your entity, users, and a few other things."
Phase 1 — Identify the entity and the product
Ask in one batch:
- Legal name of the entity publishing the app (sole proprietor name, LLC, Inc., Ltd., GmbH, etc.) — this is the data controller under GDPR and the business under CCPA. It must be a real legal person.
- Trading name / app name / product name — this is what users see.
- Country and state/province of the entity's primary place of business — drives default jurisdiction. E.g., a California LLC defaults to including the full CCPA disclosures even before considering user geography.
- Contact channel for privacy requests — must be a real, monitored channel. Email is acceptable. A web form is better. Postal address is required by some regimes (CCPA, GDPR if you have an EU establishment).
- EU/UK representative if the entity is non-EU/UK and processes EU/UK user data at scale (GDPR Art. 27 / UK GDPR Art. 27). Most small apps don't have one — note this gap if applicable.
- DPO contact — only required in narrow circumstances (Art. 37 GDPR: public authority, large-scale monitoring, large-scale special-category processing). If the user doesn't have one, that's usually fine. Don't invent one.
- Public-facing URL where the policy will live. Apple requires a publicly accessible HTTPS URL in App Store Connect.
Phase 2 — Identify the users
- Geographic scope — where do users live? (Worldwide, US-only, EU + UK, specific country list.) This determines which jurisdictional sections to include. When in doubt, assume worldwide. Most consumer apps are.
- Children — does the app target children under 13? Could it be "likely to be accessed by" children under 13? Could it be "likely to be accessed by" children under 18? This triggers COPPA / Apple Kids Category / UK Children's Code / California AADC / GDPR Art. 8 / India DPDPA child rules.
- User accounts — do users register? Anonymously? Via email? Via Sign in with Apple / Google / Facebook / etc.? Required for account-deletion clause (Apple Guideline 5.1.1(v)).
- B2B vs. B2C — B2B SaaS has different language (workplace accounts, controller-vs-processor distinction) than consumer apps.
Phase 3 — Identify the data
This is the longest and most important phase. Walk through every category. For each, ask: do you collect this? what specifically? from where? for what purpose?
Use the data-category checklist in references/canonical-structure.md. The Apple App Privacy Details taxonomy is a useful spine (14 categories: Contact Info, Health & Fitness, Financial Info, Location, Sensitive Info, Contacts, User Content, Browsing History, Search History, Identifiers, Purchases, Usage Data, Diagnostics, Surroundings, Body) — but you must also catch things that don't map cleanly to those buckets (biometric, genetic, government IDs, immigration status, union membership, religion, race, sexual orientation, etc. — these trigger special-category processing under GDPR Art. 9 and Sensitive PI under CCPA).
For each category collected, capture:
- What's collected (specific fields)
- How it's collected (user-provided, automatic, third-party-sourced)
- Why (purpose, mapped to a lawful basis under GDPR Art. 6 if the user has EU users)
- How long it's retained
- Whether it's shared, sold, or disclosed
- Whether it's used for profiling / automated decisions / AI training
Watch for silent collection the user may not realise they're doing:
- Crashlytics / Sentry / Bugsnag collect device identifiers, OS, app version, stack traces (which can contain user data)
- Firebase / Mixpanel / Amplitude assign pseudo-anonymous IDs that persist across sessions
- Push notification SDKs collect device tokens
- Attribution SDKs (AppsFlyer, Adjust, Branch) collect IDFA, IP, install time, referrer
- A/B testing SDKs collect user IDs to bucket variants
- Customer support SDKs (Intercom, Zendesk) collect chat content
- Backend logs typically collect IP addresses
- AI/LLM features may send prompts to third parties (OpenAI, Anthropic) — disclose this and check whether those providers will train on the data
Phase 4 — Identify third parties and sharing
Walk the third-party landscape using references/third-party-sdks.md. Categories to ask about:
- Analytics & product analytics — Firebase Analytics, Mixpanel, Amplitude, PostHog, Segment, Heap, Adobe Analytics
- Crash reporting / observability — Crashlytics, Sentry, Bugsnag, Datadog, Instabug
- Attribution / MMP — AppsFlyer, Adjust, Branch, Kochava, Singular
- Advertising / monetization — AdMob, Meta Audience Network, AppLovin, Unity Ads, ironSource, Mintegral, TikTok Pangle
- Push / engagement — FCM, OneSignal, Iterable, Braze, CleverTap, Customer.io
- Subscriptions / IAP — RevenueCat, Adapty, Qonversion, Superwall, Apphud, Nami
- Auth — Sign in with Apple, Google Sign-In, Facebook Login, Auth0, Clerk, Stytch
- Backend / DB — Firebase, Supabase, AWS Amplify, Parse
- Support — Intercom, Zendesk, Helpshift, Crisp
- Payments — Stripe, PayPal, Square (in-app web flows)
- AI / LLM — OpenAI, Anthropic, Google Vertex, Mistral, Replicate, ElevenLabs
- Maps — Google Maps SDK, Mapbox
- Email/SMS — SendGrid, Postmark, Twilio, Mailgun, Resend
- Sub-processors of any first-party backend — Vercel, Cloudflare, Fly.io, AWS, GCP, Azure (their use should be disclosed)
For each third party in use, capture:
- The provider's full legal name + jurisdiction
- The data shared with them
- The purpose (analytics, ads, support, etc.)
- Link to their privacy policy
- Whether they act as a service provider/processor (handle data only on your instructions, contractually restricted) or a third party/independent controller (free to use the data for their own purposes — this is "sale" under CCPA and "sharing" if for cross-context behavioural advertising)
The skill must classify each correctly because that drives the "Do Not Sell or Share" obligations under CCPA/CPRA.
Phase 5 — Identify the legal regimes
Based on geography (Phase 2) and entity (Phase 1), select which jurisdictional sections to include. Default to maximally inclusive unless the user explicitly excludes a region.
Default set for a worldwide consumer iOS/web app:
- GDPR (EU + EEA)
- UK GDPR + DPA 2018
- Swiss revFADP
- All US state comprehensive laws in effect at the time of generation — currently CA (CCPA/CPRA), VA, CO, CT, UT, TX, OR, MT, IA, TN, IN, KY, RI, MD, NJ, NH, DE, NE, MN, FL (and any added since)
- CalOPPA
- California "Shine the Light" if marketing to CA residents
- Washington My Health My Data Act (if any health data)
- Nevada SB 220
- Illinois BIPA (if biometric)
- CCPA-style children's opt-in for 13-16
- COPPA (if any children-directed or mixed-audience use)
- LGPD (Brazil)
- PIPEDA + Quebec Law 25 (Canada)
- Australia Privacy Act (APPs)
- New Zealand Privacy Act
- Japan APPI
- South Korea PIPA
- China PIPL (if users in China — note China hosting requirements)
- India DPDPA
- South Africa POPIA
- UAE PDPL / Saudi PDPL (if relevant)
For each, see references/us-state-laws.md and references/international-laws.md.
Phase 6 — Special triggers
Ask explicitly about these because each one substantially changes the policy:
- Health data (HealthKit, fitness tracking, mental wellness, medical) — triggers HIPAA (if covered entity / BAA), CMIA in CA, GDPR Art. 9 special category, Washington MHMDA, Apple Guideline 5.1.3
- Mental-wellness adjacent (motivation, resilience, mood, goal-setting, self-perception, habit tracking, gratitude, journaling) — even if the app doesn't think of itself as "health," Washington's My Health My Data Act defines consumer health data broadly enough to potentially include personality, motivation, and mental-status-adjacent self-reports. The WA AG has been targeting clinical mental-health and fertility apps so far, but the statutory definition is much wider. Evaluate WMHMDA applicability for any app that asks users about their goals, struggles, emotional state, or self-perception. If you conclude WMHMDA does not apply, document the reasoning in the policy or alongside it.
- Biometric data (Face ID auth alone is OK because it's on-device, but FaceTec, ID verification, voice prints, fingerprint scanning that leaves device) — triggers Illinois BIPA, Texas CUBI, Washington biometric law, GDPR Art. 9, FTC enforcement
- Children — triggers COPPA, Apple Kids Category, UK Children's Code, CA AADC, GDPR Art. 8 + national age of consent, India DPDPA
- Financial / banking / lending — triggers GLBA, state financial laws, PCI DSS disclosures
- Education / under-18 student data — triggers FERPA, COPPA, SOPIPA, Student Privacy Pledge
- Location — precise vs. coarse, foreground vs. background, with whom shared. Triggers CCPA Sensitive PI, Apple Guideline 5.1.5
- Camera, microphone, photos, contacts, calendars — triggers Apple Info.plist purpose strings + corresponding policy disclosures
- Tracking / cross-context behavioural advertising — triggers ATT, CCPA opt-out of sharing, GPC honor, GDPR consent
- Automated decisions / profiling / AI / LLM features — triggers GDPR Art. 22, CO/CT profiling opt-out, EU AI Act (high-risk uses)
- Communications recording (calls, video, voice memos) — triggers federal Wiretap Act, state two-party consent laws (CA, FL, IL, MA, MD, MT, NV, NH, PA, WA)
- Video content — triggers VPPA (consent for sharing viewing history)
- Adult / 18+ content — triggers age verification laws in TX, UT, LA, AR, MS, etc.
- Connected devices / IoT — additional disclosure obligations
- Genetic data — Illinois GIPA, state genetic privacy laws
- Loyalty programs / financial incentives — CCPA § 1798.125 notice
- Cookies / SDKs on a companion website — ePrivacy Directive, cookie consent
- Email marketing — CAN-SPAM, CASL, GDPR Art. 7 consent
- SMS marketing — TCPA opt-in
- B2B context — controller-vs-processor disclosure, sub-processor list, DPA availability
Phase 7 — Generate
Once the interview is done, pick the right template:
- Default —
assets/master-template.md(29 sections). Use this for any app that has accounts, advertising, attribution SDKs, health data, biometric data, financial data, children's data, B2B users, or expects substantial EU/UK/Brazilian/Canadian/Australian user populations. - Lean —
references/minimum-viable-template.md(15 sections). Use this for small consumer apps that: have no user accounts (or only device-anonymous IDs), no advertising or attribution SDKs, no special-category data, one or two analytics SDKs, one subscription SDK, optionally one LLM feature. Covers ~80% of indie iOS launches. The lean template itself documents when to graduate to the full one.
Walk through the chosen template section by section, filling each placeholder with the user's answers. For each jurisdictional block in the full template, load the corresponding section from references/us-state-laws.md or references/international-laws.md and adapt to the user's specifics. For reusable clauses (AI / LLM features, no-accounts patterns, automated decisions, CCPA Do Not Sell, etc.), pull from references/clause-library.md.
The output should be a single Markdown file. Default filename: PRIVACY.md in the project root. If a file already exists, ask whether to overwrite or write to PRIVACY-new.md.
Always end the policy with the mandatory disclaimer from assets/master-template.md (the "About this policy / Legal disclaimer" section) — never strip it without explicit user instruction.
Phase 8 — Compliance checklist
This step is required, not optional. After generating PRIVACY.md, write a companion CHECKLIST.md (or PRIVACY-CHECKLIST.md if the user prefers) into the same directory. The policy is the document; the checklist is what the user actually has to do to put it in force. Skipping the checklist is the single most common reason a beautifully-written policy gets the developer in trouble — they ship without hosting it, without filling in App Privacy Details, without honoring rights requests.
The checklist should be 10–20 short, actionable bullets covering at minimum:
- Host the policy at a publicly accessible HTTPS URL. For how to host it durably (alongside the codebase, with diff-able history, no vendor lock-in), point the user at
references/deployment-patterns.md— the recommended pattern is markdown source + build script + edge function / static host, with the legal pages living in the same repo as the app code. - Paste that URL into App Store Connect (Privacy Policy field)
- Paste the URL into Google Play Console (if applicable)
- Complete the App Privacy Details questionnaire in App Store Connect — use the data-category mapping from the interview
- Complete the Google Play Data Safety form (if applicable)
- Generate or update
PrivacyInfo.xcprivacyif iOS 17+ — point them atreferences/apple-app-store.md - Implement the "Do Not Sell or Share My Personal Information" link / GPC handling if the user has California users and discloses to third parties for cross-context behavioural advertising
- Implement the "Limit the Use of My Sensitive Personal Information" link if applicable
- Implement in-app account deletion (Apple Guideline 5.1.1(v))
- Implement the data-subject request channel (email / form)
- Calendar a 12-month review (CCPA requires the 12-month look-back to be updated annually)
- Have a lawyer review before launch, especially for health/financial/biometric/children's data
When to load which references
SKILL.md (this file) gives you the workflow. Load deeper references only when the workflow says to.
references/canonical-structure.md— load at Phase 3 to get the data-category taxonomy and section orderreferences/interview-questions.md— load if you want the full question bank (otherwise the inline guidance here is enough)references/apple-app-store.md— load if generating for iOS, especially during Phase 7's post-flight checklist (Privacy Manifest, App Privacy Details mapping, Required Reason APIs, ATT)references/google-play.md— load if Android is in scopereferences/third-party-sdks.md— load at Phase 4 for SDK-specific disclosure text and the category-level service-provider/third-party classification defaults tablereferences/us-state-laws.md— load at Phase 5 + Phase 7 for state-by-state required clausesreferences/international-laws.md— load at Phase 5 + Phase 7 for ex-US jurisdictionsreferences/childrens-privacy.md— load if children's data is in scope (set during Phase 2)references/clause-library.md— load at Phase 7 for reusable, regulator-tested clause language (includes templates for AI / LLM features, no-accounts patterns, automated decisions, CCPA Do Not Sell, and more)references/minimum-viable-template.md— load at Phase 7 instead of the master template when the app qualifies for the lean 15-section structure (small consumer app, no accounts/ads/health/children/B2B)references/deployment-patterns.md— load at Phase 8 when the user asks "where do I host this" — captures the recommended markdown-source + build-script + edge-function pattern, alternatives, and anti-patterns
What the output looks like
The default output is a single Markdown file titled PRIVACY.md. Its top-level structure (always in this order, omitting empty sections) is:
# Privacy Policy
Last updated: [DATE]
Effective: [DATE]
[Summary at a glance — optional table]
## 1. About this policy
## 2. Who we are
## 3. The information we collect
## 4. How we collect information
## 5. How we use information (purposes)
## 6. Legal bases for processing (GDPR / UK GDPR)
## 7. How we share information
## 8. Third-party services and SDKs we use
## 9. Advertising and analytics
## 10. International data transfers
## 11. How long we keep information (retention)
## 12. Information security
## 13. Your rights and choices
## 14. Children's privacy
## 15. Automated decision-making and profiling
## 16. Cookies and similar technologies (web companion)
## 17. Push notifications and in-app messages
## 18. Account creation and deletion
## 19. Notice to California residents (CCPA/CPRA + CalOPPA + Shine the Light)
## 20. Notice to other US state residents (VA, CO, CT, UT, TX, OR, MT, IA, TN, IN, KY, RI, MD, NJ, NH, DE, NE, MN, FL — by state where requirements differ)
## 21. Notice to EEA, UK, and Swiss residents (GDPR / UK GDPR / revFADP)
## 22. Notice to Brazilian residents (LGPD)
## 23. Notice to Canadian residents (PIPEDA + Quebec Law 25)
## 24. Notice to Australian residents (APPs)
## 25. Notice to other jurisdictions (Japan, South Korea, China, India, South Africa, UAE, etc.)
## 26. Do Not Track and Global Privacy Control
## 27. Changes to this policy
## 28. How to contact us
## 29. Legal disclaimer (mandatory)Not every section will apply to every app — but the default for a worldwide consumer app is to include all of them. Add sections as needed for unusual practices (health data, biometrics, AI, IoT, etc.).
Important: never do these
- Never invent third parties. Only list SDKs/services the user confirms are in use. Inventing a Mixpanel reference if the user doesn't use Mixpanel creates a false statement that is itself a violation.
- Never invent a DPO, EU representative, or postal address. If the user doesn't have one, leave a
[TODO: ...]placeholder and flag it. - Never invent specific consumer-rights mechanics that vary by jurisdiction. Don't write "request a refund from Apple within 14 days" (that's the EU/UK Distance Selling rule, not universal) or "you have 60 days to opt out under CCPA" (that's wrong — CCPA opt-out is always available). If a procedural detail is jurisdiction-specific, either qualify it ("if you are in the EU/UK, …") or omit it.
- Never strip the legal disclaimer. The disclaimer is what protects the user (and you) from being treated as having given legal advice.
- Never assert "by using the Service you consent" for any processing that GDPR / UK GDPR / LGPD / PIPL requires consent (Art. 6(1)(a) / Art. 9(2)(a)) for. Implied consent through use does not satisfy these regimes. Reserve the "consent" basis for things the user actively opts in to (HealthKit prompt, ATT prompt, marketing toggle, cookie banner). For everything else, identify a different lawful basis (contract, legitimate interests, legal obligation).
- Never claim CCPA compliance via "we don't sell data" boilerplate without checking. "Sale" and "Share" under CCPA include any disclosure to a third party for monetary or other valuable consideration, and any disclosure for cross-context behavioural advertising. Attribution SDKs (AppsFlyer, Adjust, Branch, etc.) typically do count as "share." Walk each provider individually in the CCPA section and label honestly. See
references/third-party-sdks.mdfor per-provider guidance. - Never copy a policy from another app. Privacy policies are copyrightable and, more importantly, every product's practices differ. The point of this skill is to capture the user's practices.
- Never omit children's-privacy disclosures for a B2C app just because the user says "we don't target kids." Apple, FTC, and the ICO all use a "likely to be accessed by" test, not a "intentionally targeted" test. The policy should at minimum state the app's age threshold and the procedure if a child registers anyway.
Memory
After generating a policy for a product, save to auto-memory:
- A
projectmemory recording the product name, the date generated, the jurisdictions included, the third parties disclosed, and any TODOs the user is still working through - A
referencememory pointing to where the generatedPRIVACY.mdlives
This lets a future session pick up the conversation when the user adds a new SDK, expands to a new market, or has to update the policy.
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.

