Audit Compliance
Check that your legal compliance is still in good shape. Pick what to check: your privacy policy, your privacy vendor list, or your contract templates. I surface what's drifted or out of date and what to fix. I never change anything on my own.
Audit Compliance
One skill for all standing-state compliance checks. scope param picks inventory to walk. "Diffs not fixes" + "every finding cite authority" discipline shared.
Parameter: scope
privacy-posture- scrape landing + product via Firecrawl, cross-check deployed Privacy Policy, flag drift (new analytics tool undisclosed, subprocessor added no policy update, new cookie, purpose drift) with severity + recommended update. Writesprivacy-audits/{YYYY-MM-DD}.md.subprocessors- walk connected integrations + inferred vendors from landing-page scrape, capture role + data categories + transfer mechanism + DPA status + public DPA URL. Read-merge-writesubprocessor-inventory.jsonat agent root + one-page delta report atsubprocessor-reviews/{YYYY-MM-DD}.md.template-library- readdomains.contracts.templateLibrary, flag templates > 12 months old, check each vs current law refs (AI-training disclosure, SCC versions, 2026 DPA standards, CA/EU rights expansions). Writes refresh plantemplate-reviews/{YYYY-MM-DD}.md. Never auto-rewrites - founder approves each, kicksdraft-a-legal-documentfor rewrite.
User name scope plain English ("audit my privacy", "refresh templates", "update subprocessor list") → infer. Ambiguous → ask ONE question naming 3 options.
When to use
- Explicit: "audit my privacy posture", "update my subprocessor list", "refresh my template library", "what's drifted", "what's stale".
- Plain-English asks map to a
scope: "is my privacy policy still current" / "does my privacy policy match what we actually do" →privacy-posture; "refresh my privacy vendor list" / "have we added new tools that touch customer data" →subprocessors; "are my contract templates still current" / "any template older than a year I should refresh" →template-library. - Implicit: scheduled monthly cadence (privacy-posture, subprocessors); new vendor added (subprocessors); new landing-page surface ships (privacy-posture); template library referenced older than 12 months in any other skill (template-library).
Ledger fields I read
Read config/context-ledger.json first.
universal.legalContext+context/legal-context.md- required. Provides entity snapshot, risk posture, existing template stack (anchor for template-library scope). Missing → runset-up-my-legal-infoskill first (or ask ONE targeted question to skip ahead).universal.company.website- required forprivacy-posture+subprocessors(landing-page URL for Firecrawl).domains.compliance.landingPageUrl- more specific thanuniversal.company.websiteif differ; falls back to website.domains.compliance.deployedPolicies.privacyPolicyUrl- required forprivacy-posture(doc to diff against).domains.compliance.dataGeography- gates whether EU-specific subprocessor controls (SCCs, transfer mechanism) apply.domains.contracts.templateLibrary- required fortemplate-library.subprocessor-inventory.json- required forsubprocessors(prior inventory = baseline for delta).
Required field missing → ask ONE targeted question with modality hint (connect Google Drive / paste landing URL / connect Firecrawl), write, continue.
Steps
- Read ledger + legal context. Gather missing required fields. Write atomically.
- Discover tools via Composio. Run
composio search web-scrape(privacy-posture, subprocessors) orcomposio search document-storage(template-library) per scope. No tool connected → name category to link, stop. - Branch on
scope.privacy-posture:- Execute web-scrape slug against landing-page URL + key product routes. Capture analytics tags, cookies dropped, forms + fields, third-party embeds, subprocessor-revealing scripts (Stripe, Intercom, Segment, HotJar, etc.).
- Fetch deployed Privacy Policy (via URL from ledger or same scrape).
- Diff: tools observed on site not in policy, data categories collected not disclosed, new cookie categories, purpose drift (product description changed meaningfully since last policy update).
- Tag each finding severity (
critical- regulatory exposure;high- customer trust risk;medium- housekeeping;low- FYI). Cite authority for everycriticalfinding (GDPR Art. 13/14, CCPA §1798.100, 16 CFR Part 314 where applicable). - Write
privacy-audits/{YYYY-MM-DD}.md: Executive summary → Diffs by severity → Recommended next step per finding (most often: chain todraft-a-legal-documenttype=privacy-policy).
subprocessors:- Read current
subprocessor-inventory.json. - Walk connected integrations (via user's installed Composio connections) - each connected tool touching customer data = candidate subprocessor.
- Scrape landing page for extra clues (Stripe, Intercom, Calendly, etc. via public scripts).
- Per candidate capture:
role(payment / email / analytics / support / hosting / AI / CRM / other),dataCategories(identifiers / usage / content / payment / sensitive),transferMechanism(SCCs / UK IDTA / DPF / intra-EU / intra-US-only / unknown),dpaStatus(signed standard / signed negotiated / public-posted / missing / unknown),publicDpaUrl. - Read-merge-write
subprocessor-inventory.json. Delta vs prior = added / removed / changed / unchanged. - Write
subprocessor-reviews/{YYYY-MM-DD}.md- one-page delta, "new vendors needing policy update" at top + link toaudit-compliancescope=privacy-posture as follow-up.
- Read current
template-library:- Read
domains.contracts.templateLibrary. Per template, checklastUpdatedAt(or file metadata); flag anything > 12 months. - Per stale template, enumerate current-law changes to consider (AI-training disclosure for consulting / MSA / customer paper; SCC 2021 / 2025 version check for DPAs; 2026 DPA standards; CCPA cure-period language; EU AI Act disclosures for AI-touching features).
- Rank by exposure (customer paper > vendor paper > internal).
- Write
template-reviews/{YYYY-MM-DD}.md- refresh plan: (a) templates to refresh now, (b) review next quarter, (c) still current. Never auto-rewrites; recommends chainingdraft-a-legal-documentper template.
- Read
- Append to
outputs.json- read-merge-write atomically:{ id, type: "privacy-audit" | "subprocessor-review" | "template-review", title, summary, path, status: "ready", domain: "compliance", createdAt, updatedAt, attorneyReviewRequired? }. SetattorneyReviewRequired: truewhencriticalfinding implicates regulatory exposure. - Summarize to user. One short paragraph in plain language: top 2 findings and the single most useful next move (e.g. "Want me to draft an updated privacy policy that closes these gaps?"). Never name files, paths, or underlying procedures.
What I never do
- Auto-fix anything. Skill surfaces diffs + recommends follow-ups; founder decides.
- Invent subprocessor, data flow, or cookie not observed in scrape or connected integration. Missing data → UNKNOWN.
- Claim policy GDPR-compliant. Can say "policy discloses X, does not disclose Y" - never "you're covered."
- Hardcode tool names - Composio discovery at runtime only.
- Overwrite
subprocessor-inventory.json- read-merge-write. - Skip authority citation on any
criticalprivacy-posture finding.
Outputs
privacy-audits/{YYYY-MM-DD}.md(scope=privacy-posture).subprocessor-reviews/{YYYY-MM-DD}.md+ updatessubprocessor-inventory.json(scope=subprocessors).template-reviews/{YYYY-MM-DD}.md(scope=template-library).- Appends to
outputs.json.
No additional documents ship with this skill.
Related Skills
Data Subject Rights for AI Systems
Implements data subject rights mechanisms for AI systems including right to explanation of AI decisions, contestation procedures, human review, model…
Lawful Basis for AI Training Data
Assesses lawful basis for AI training data processing per EDPB April 2025 report on LLMs and general-purpose AI. Covers legitimate interest balancing…
Managing Consent for Analytics Cookies
Managing consent for analytics cookies and implementing privacy-preserving measurement. Covers GA4 privacy configuration, consent mode fallback behav…
Applying Privacy Design Patterns
Systematic application of the eight privacy design patterns per Hoepman: minimize, hide, separate, abstract, inform, control, enforce, and demonstrat…
User Input
[COMMUNITY] Assess EU Data Act (Regulation 2023/2854) compliance for connected products, data holders, and data processing service providers