App Legal Pages
name: app-legal-pages
by chentuan7963-afk · published 2026-03-22
$ claw add gh:chentuan7963-afk/chentuan7963-afk-app-legal-pages---
name: app-legal-pages
description: Generate and deploy app Privacy Policy and Terms of Service static websites from an app feature document. Use when a user provides app requirements/feature docs and wants production-ready legal pages published via GitHub + Cloudflare Pages, including draft generation, consistency checks, and deployment-ready output URLs.
---
# App Legal Pages
Generate a complete legal mini-site for an app:
Workflow
1. Collect required legal/product inputs.
2. Generate draft legal pages from feature documentation.
3. Run strict consistency checker.
4. Present generated pages for user review/approval.
5. Check Cloudflare deployment auth readiness.
6. Ask user to complete auth if missing.
7. Auto-deploy to Cloudflare Pages after explicit confirmation.
8. Return final public URLs.
1) Collect Inputs
Collect or confirm:
- Analytics events
- Crash/error logs
- Identifiers (device/user IDs)
- Third-party SDKs/services
- Permissions used (camera/location/photos/mic/contacts/tracking/notifications)
If facts are unknown, pause and ask for missing inputs before generation. Do not output placeholder markers (no TODO/TEMP strings in final pages).
Never assume jurisdiction, region, analytics/tracking, sharing, or permission usage unless explicitly stated in the input document or user prompt.
Generate policy clauses from explicit product claims first (e.g., offline-only, no cloud, no tracking, no analytics), and avoid introducing contradictory generic legal boilerplate.
2) Generate Draft Site
Run:
python3 scripts/generate_legal_site.py \
--input /path/to/app-feature.md \
--out ./out/legal-site \
--app-name "Your App" \
--company "Your Company" \
--base-email "chentuan7963@gmail.com" \
--email-tag "quillnest" \
--effective-date "2026-03-03" \
--jurisdiction "California, United States"Email rule:
Language rule:
The script auto-detects likely data categories/permissions from the feature text. Manually review and adjust output if app behavior is more specific than heuristic detection.
3) Run Strict Consistency Checker
Run before publishing:
python3 scripts/check_consistency.py \
--feature /path/to/app-feature.md \
--privacy ./out/legal-site/privacy.html \
--terms ./out/legal-site/terms.htmlThe checker fails on:
4) Validate Draft Quality
Check before publishing:
If the app uses sensitive permissions or SDKs, verify these are explicitly disclosed in Privacy Policy.
5) Review Gate (Mandatory)
Before deployment, share generated files with the user and ask for explicit approval to deploy.
Do not deploy automatically without user confirmation.
6) Check Deployment Auth
Run auth readiness check:
python3 scripts/deploy_cloudflare_pages.py --check-auth --site-dir ./out/legal-site --project-name your-project-name --production-branch mainAuth is valid when either:
If auth is missing, ask the user to authenticate:
wrangler login7) Auto-Deploy to Cloudflare Pages
After explicit approval + auth ready:
python3 scripts/deploy_cloudflare_pages.py \
--site-dir ./out/legal-site \
--project-name your-project-name \
--production-branch mainOr use one-shot pipeline:
python3 scripts/run_pipeline.py \
--feature /path/to/app-feature.md \
--out ./out/legal-site \
--app-name "Your App" \
--company "Your Company" \
--base-email "you@gmail.com" \
--email-tag "yourapp" \
--effective-date "2026-03-05" \
--project-name your-project-name \
--production-branch main \
--confirm-deploy8) Returnables
Return:
Guardrails
More tools from the same signal band
Order food/drinks (点餐) on an Android device paired as an OpenClaw node. Uses in-app menu and cart; add goods, view cart, submit order (demo, no real payment).
Sign plugins, rotate agent credentials without losing identity, and publicly attest to plugin behavior with verifiable claims and authenticated transfers.
The philosophical layer for AI agents. Maps behavior to Spinoza's 48 affects, calculates persistence scores, and generates geometric self-reports. Give your...