/legal
Generate privacy policy and terms of service tailored to the project's stack, features, and data handling. Aligned with manifesto privacy-first principles (templates/principles/manifest.md): on-device processing, local storage, no accounts when possible, user owns their data.
Disclaimer: Generated documents are templates, not legal advice. Review with a lawyer before publishing, especially for regulated industries (health, finance, children).
Steps
-
Parse project from
$ARGUMENTS.- Read
docs/prd.md— features, ICP, data handling - Read
CLAUDE.md— stack, services used - Read stack YAML from
templates/stacks/{stack}.yamlif available - If empty: ask via AskUserQuestion
- Read
-
Data audit — determine what data the product collects:
Scan PRD and codebase config for:
| Data Type | Collected? | Stored Where | Purpose | |-----------|-----------|-------------|---------| | Email/name | — | Local / Supabase | Account | | Usage analytics | — | PostHog (EU) | Product improvement | | Payment info | — | Stripe (not stored locally) | Billing | | User content | — | On-device / local DB | Core feature | | Location | — | — | — | | Device info | — | — | — | | Cookies | — | — | — | | Third-party SDKs | — | — | — |
For each "yes": note the legal basis (consent, legitimate interest, contract).
Manifest alignment check:
- Data stored locally? (offline-first principle)
- Can user export all their data?
- Can user delete all their data?
- Any data sent to third parties without explicit consent?
- Does the app work without an account?
-
Detect applicable regulations:
| Regulation | Applies When | Key Requirements | |-----------|-------------|-----------------| | GDPR | EU users or EU-based business | Consent, right to access/delete/port, DPA with processors | | CCPA/CPRA | California users, >$25M revenue or >100K consumers | Right to know/delete/opt-out, "Do Not Sell" | | App Store | iOS app | Privacy nutrition labels, ATT framework | | Play Store | Android app | Data safety section, deletion policy | | COPPA | Users under 13 | Parental consent (flag if ICP includes children) |
Most solo projects: GDPR + App Store/Play Store is sufficient.
-
Generate Privacy Policy:
Structure (adapt to product):
# Privacy Policy **Last updated:** {YYYY-MM-DD} **Effective date:** {YYYY-MM-DD} ## What we collect {table from step 2 — only "yes" rows, in plain language} ## How we use it {purpose for each data type — be specific, not "to improve our services"} ## Where data is stored {local device / specific cloud service + region} {for offline-first apps: "Your data stays on your device. We cannot access it."} ## Third-party services {list each service: PostHog (EU), Stripe, Supabase — with links to their privacy policies} ## Your rights - **Access:** request a copy of your data - **Delete:** delete your account and all associated data - **Export:** download your data in {format} - **Opt-out:** disable analytics in app settings ## Data retention {how long data is kept, what triggers deletion} ## Children {if product is not for children under 13: "This product is not intended for children under 13."} ## Changes We may update this policy. Changes will be posted here with an updated date. ## Contact {email address for privacy questions}Rules:
- Plain language, no legalese — users should understand what they're agreeing to
- Be honest about what you collect — don't hide tracking behind vague language
- Offline-first products get a simpler policy (less data = less to explain)
- If the app collects nothing: say so explicitly ("We collect no personal data")
-
Generate Terms of Service:
Structure:
# Terms of Service **Last updated:** {YYYY-MM-DD} ## What this is {product name} is {one-line description}. By using it, you agree to these terms. ## Your account {if accounts exist: account rules. If no accounts: "No account is required."} ## Your data You own your data. We do not claim any rights to content you create. {for offline-first: "Your data is stored on your device. We have no access to it."} ## Acceptable use Do not use {product} to: {short list of prohibited uses relevant to the product} ## Payments {if paid: pricing, refund policy, billing terms} {manifest alignment: "No hidden fees. What you see is what you pay."} {if one-time purchase: "One-time purchase. No recurring charges."} {if subscription: explain what justifies the recurring cost} ## Availability We aim to keep {product} available but cannot guarantee 100% uptime. {for offline-first: "Core features work without internet connection."} ## Limitation of liability {standard limitation clause — product provided "as is"} ## Changes We may update these terms. Continued use after changes means acceptance. ## Contact {email} -
Generate App Store privacy labels (if iOS or Android):
iOS (App Store Connect):
- Privacy nutrition label categories based on data audit
- Tracking: yes/no (ATT required if yes)
- Data linked to identity: list
- Data not linked to identity: list
Android (Play Store):
- Data safety form responses based on data audit
- Data shared with third parties: list
- Data collection purposes: list
- Security practices: encryption, deletion available
-
Write legal documents:
legal/privacy-policy.md— privacy policylegal/terms-of-service.md— terms of servicelegal/app-store-privacy.md— app store labels (if mobile)- Create
legal/directory in project root if needed
-
Output summary:
- Data types collected (count)
- Regulations applicable
- Manifest alignment (all principles met or violations flagged)
- Files generated
- Reminder: "Review with a lawyer before publishing"
Notes
- Documents are templates — always review before publishing
- Offline-first apps need simpler policies (this is a feature, not a limitation)
- Update legal docs when adding new data collection, third-party services, or features
- For EU-based products using PostHog: confirm EU hosting (eu.posthog.com)
- Stripe handles PCI compliance — never store card data yourself
Common Issues
Product collects more data than expected
Cause: Third-party SDKs (analytics, crash reporting) collect data automatically. Fix: Audit all SDKs in package.json/Podfile/build.gradle. List each one in the privacy policy.
Offline-first but still needs some cloud
Cause: Sync, backup, or auth requires cloud. Fix: Be explicit: "Core features work offline. Optional sync requires {service}." List exactly what syncs.
App Store rejection for missing privacy policy
Cause: No privacy policy URL in app metadata. Fix: Host privacy-policy.md as a web page (GitHub Pages, project website, or static hosting). Add URL to App Store Connect / Play Console.
微信扫一扫