make_compliant
Scan your project, generate privacy policy, terms, cookie & AI disclosures, install a cookie banner, and classify EU AI Act risk to achieve legal compliance in one step.
Instructions
One-step legal compliance: scan the project, generate privacy policy / terms / cookie & AI disclosures (written as Markdown to /legal), install the cookie-banner snippet before (web only; skipped for native apps, and JSX layouts get manual instructions instead of being modified), and classify EU AI Act risk. Use this first when the user asks to make their app legally compliant, GDPR-ready, or to add a privacy policy or cookie banner; use check_compliance instead for a read-only report. Returns {done, filesWritten, documents, source, snippet, aiAct, missingFacts, agentPrompt, nextSteps} — if source is 'template' or missingFacts is non-empty, answer the agentPrompt and re-run with appName/entity/contactEmail/markets for complete documents. Aborts without writing anything if dir does not exist or is not a project root.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| dir | Yes | Path of the project root to analyze (absolute paths are safest). | |
| lang | No | Force the banner's language as an ISO 639-1 code, e.g. 'en' or 'es' (one of the 12 LexVibe locales). Defaults to the page's own language. | |
| appId | No | LexVibe app id (defaults to the LEXVIBE_APP_ID env var). Without a real id the snippet uses the YOUR_APP_ID placeholder and the result tells you to call claim_app. | |
| accent | No | Banner accent color as a CSS hex value, e.g. #4f46e5. Defaults to the LexVibe accent. | |
| entity | No | Data controller / legal entity, if already known (overrides the derived one). | |
| appName | No | App / business name. If omitted, it's derived from the repo (package.json / LICENSE). | |
| markets | No | Regions where the app has users; they decide which frameworks the documents cover (eu → GDPR, uk → UK GDPR, us → CCPA/CPRA…). Defaults to ["eu"] — confirm with the user before accepting that default. | |
| position | No | Where the banner sits on screen: bottom (full-width bar), bottom-left or bottom-right (floating card in that corner). Defaults to bottom. | |
| contactEmail | No | Privacy contact email, if already known (overrides the derived one). |