[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-anthropic-policy-monitor":3,"mdc--kyi2z9-key":37,"related-repo-anthropic-policy-monitor":2695,"related-org-anthropic-policy-monitor":2791},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":26,"repoUrl":27,"updatedAt":28,"license":29,"forks":30,"topics":31,"repo":32,"sourceUrl":35,"mdContent":36},"policy-monitor","monitor privacy policy compliance","Keep the privacy policy current with practice. Two modes: weekly sweep of saved PIAs, DPA reviews, and triage results to find policy drift; or direct query for a proposed new practice. Use when the user asks \"does our policy cover this\", \"we want to start doing X — does the policy need updating\", \"run the policy monitor\", \"policy sweep\", or wants to find where the privacy policy no longer matches what the team actually does.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"anthropic","Anthropic","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fanthropic.png","anthropics",[13,17,20,23],{"name":14,"slug":15,"type":16},"Compliance","compliance","tag",{"name":18,"slug":19,"type":16},"Policy","policy",{"name":21,"slug":22,"type":16},"Legal","legal",{"name":24,"slug":25,"type":16},"Privacy","privacy",8721,"https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fclaude-for-legal","2026-05-14T06:01:14.522821",null,1642,[],{"repoUrl":27,"stars":26,"forks":30,"topics":33,"description":34},[],"A suite of plugins for legal workflows","https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fclaude-for-legal\u002Ftree\u002FHEAD\u002Fprivacy-legal\u002Fskills\u002Fpolicy-monitor","---\nname: policy-monitor\ndescription: >\n  Keep the privacy policy current with practice. Two modes: weekly sweep of saved\n  PIAs, DPA reviews, and triage results to find policy drift; or direct query for\n  a proposed new practice. Use when the user asks \"does our policy cover this\",\n  \"we want to start doing X — does the policy need updating\", \"run the policy\n  monitor\", \"policy sweep\", or wants to find where the privacy policy no longer\n  matches what the team actually does.\nargument-hint: \"[describe a proposed new practice — or omit \u002F use --sweep for crawl mode]\"\n---\n\n# \u002Fpolicy-monitor\n\n**Sweep mode** (no argument or `--sweep`):\n1. Read `~\u002F.claude\u002Fplugins\u002Fconfig\u002Fclaude-for-legal\u002Fprivacy-legal\u002FCLAUDE.md` → outputs folder path, policy document, last sweep date.\n2. Run the workflow below. Scan outputs folder for files since last sweep.\n3. For each output: extract approved practices → diff against current policy commitments.\n4. Classify gaps: REQUIRED (policy misrepresents current practice) vs ADVISABLE (policy silent).\n5. For each gap: quote current policy, describe gap, draft suggested language.\n6. Update Last policy sweep date in `~\u002F.claude\u002Fplugins\u002Fconfig\u002Fclaude-for-legal\u002Fprivacy-legal\u002FCLAUDE.md`.\n\n**Direct query mode** (with description argument):\n1. Read `~\u002F.claude\u002Fplugins\u002Fconfig\u002Fclaude-for-legal\u002Fprivacy-legal\u002FCLAUDE.md` → current policy commitments + actual policy document.\n2. Parse proposed practice. Diff against policy: data categories, purposes, third parties, retention, user rights, disclosure.\n3. Output: covered \u002F missing \u002F conflicting + suggested language for each gap + timing recommendation.\n\n**Schedule:** Set up a recurring reminder in your own scheduler (calendar, task manager, or CI) to run `\u002Fprivacy-legal:policy-monitor` weekly. Scheduled execution requires a scheduled-tasks integration, which is not bundled with this plugin.\n\n```\n\u002Fprivacy-legal:policy-monitor\n\u002Fprivacy-legal:policy-monitor \"We want to start using behavioral data to personalize onboarding emails\"\n```\n\n---\n\n# Privacy Policy Monitor\n\n## Purpose\n\nPrivacy policies drift from practice in one direction: practice moves forward,\npolicy stays behind. A PIA approves a new data category. A DPA is signed with a\nsubprocessor not listed anywhere. A triage result marks a new use case conditional\nwith a disclosure requirement that the policy doesn't yet make. Months later,\nsomeone reads the policy and it doesn't reflect what actually happens.\n\nThis skill catches the drift before it becomes a problem — either by crawling the\noutputs folder weekly, or by answering the direct question: \"we're about to start\ndoing X, what does that mean for the policy?\"\n\nThe output is always the same: here's the gap, here's the suggested language.\n\n---\n\n## Load current state\n\nRead `~\u002F.claude\u002Fplugins\u002Fconfig\u002Fclaude-for-legal\u002Fprivacy-legal\u002FCLAUDE.md`:\n- `## Who we are` → `## Regulatory footprint` — the regimes in scope (GDPR, CCPA \u002F CPRA \u002F other state consumer privacy, GLBA, HIPAA, FERPA, COPPA, VPPA, CPNI, etc.)\n- `## Privacy policy commitments` — the commitments extracted from the published policy\n- `## Outputs` — outputs folder path, policy document location, last sweep date\n\nIf `## Outputs` contains `[PLACEHOLDER]`:\n> \"Outputs aren't configured yet. I can still run a direct-query check — describe\n> what you're planning to do and I'll diff it against your current policy. To enable\n> the crawl sweep, run `\u002Fprivacy-legal:cold-start-interview` and provide the outputs\n> folder path.\"\n\nRead the actual privacy policy document from the path in `## Outputs` → **Privacy\npolicy document**. The commitments in the config CLAUDE.md are a summary; the actual document\nis authoritative for suggesting edits.\n\n### Privacy commitments live on multiple surfaces — sweep all of them\n\nThe website privacy policy is one surface. Modern privacy programs make binding commitments in at least four more places that regulators actively scrutinize for inconsistencies:\n\n1. **Cookie consent banners \u002F CMPs.** The consent management platform promises specific cookie categories and purposes. If the privacy policy says \"we use analytics cookies\" and the CMP offers \"strictly necessary only,\" there's a conflict. EU DPAs and the FTC have both enforced against CMP misconfigurations.\n2. **App store privacy labels.** Apple App Privacy (the \"nutrition label\") and Google Data Safety are self-declared and FTC-enforceable. A company that updates its privacy policy but doesn't update its App Store label has a material, regulator-visible inconsistency. Check: when was the label last updated? Does it match the current policy's data categories, purposes, and sharing?\n3. **In-product consent flows.** The actual screens where users make data-use choices (onboarding consents, settings toggles, \"we've updated our policy\" dialogs). The policy says what you do; the consent flow says what the user agreed to. They should match.\n4. **Sector-specific notices.** GLBA privacy notices, HIPAA NPPs, FERPA directory notices, COPPA direct notices. These have their own update obligations and their own consistency requirements with the general privacy policy. (Detail below under \"Sectoral notices.\")\n\n**Add fields to the practice profile for each surface's location and last-updated date.** The sweep checks each against the current policy and flags divergence: \"Privacy policy updated [date]. App Store label last updated [earlier date] — may not reflect the new data category. CMP last configured [date] — verify cookie purposes match the policy.\"\n\nA company with a clean privacy policy and a stale App Store label is a company with an FTC complaint waiting to happen. Sweep the surfaces, not just the document.\n\n### Sectoral notices are in scope for this sweep\n\nThe website privacy policy is one notice. Federally-regulated practices require a separate, sector-specific notice that the website policy does not substitute for. If `## Regulatory footprint` includes any of the following, the sweep diffs practice against that notice in addition to the website policy — or flags its absence if no such notice has been configured:\n\n| Footprint entry | Sectoral notice to diff against | What to flag |\n|---|---|---|\n| **GLBA \u002F Reg P** (financial institution handling NPI) | GLBA initial + annual privacy notice (12 C.F.R. Part 1016, or the functional regulator's equivalent) | Outputs implying new NPI categories, sharing with non-affiliated third parties, or changes to opt-out mechanics that the Reg P notice doesn't reflect. A DPA signed with an analytics vendor receiving NPI with no matching Reg P notice update is a gap. |\n| **HIPAA** (covered entity or BA) | Notice of Privacy Practices (45 C.F.R. § 164.520) | Outputs implying new uses or disclosures, new routine categories, or changes to patient-rights mechanics. A BAA signed with a new subcontractor flowing PHI with no matching NPP refresh is a gap. |\n| **FERPA** (school or school service provider) | Annual directory-information \u002F rights notice (34 C.F.R. § 99.37) | Outputs implying new disclosure categories to service providers under the school-official exception, new directory-information elements, or changes that implicate parental-consent flow-through. |\n| **COPPA** (operator of service directed to children \u003C13) | Direct notice to parents + online notice (16 C.F.R. § 312.4) | Outputs implying new data categories collected from children, new third-party disclosures, or changes to the verifiable-parental-consent mechanic. |\n| **VPPA \u002F CPNI \u002F DPPA \u002F other sectoral** | The regime's specific notice or consent regime | Processing activities the regime restricts that aren't reflected in the configured notice. |\n\n**If no sectoral notice is configured for a regime in the footprint**, surface this as a standing gap on every sweep, not a one-time finding. The sweep output should include:\n\n> **Sectoral notice coverage:**\n> - [regime]: [configured notice path + last updated, or \"NOT CONFIGURED — flag each sweep until resolved\"]\n\n**If the sweep cannot locate the sectoral notice**, say so explicitly — do not silently default to diffing only against the website policy. A fintech DPO relying on a policy-monitor sweep that ignored GLBA would ship with an outdated regulator-facing notice and no warning. Surface the gap loudly.\n\n**Ask the user if the footprint is ambiguous.** If `## Regulatory footprint` says \"GDPR \u002F CCPA\" but the outputs scan surfaces PHI, NPI, or student data categories, surface the footprint-vs-practice mismatch before proceeding: \"Your footprint doesn't list [GLBA \u002F HIPAA \u002F FERPA \u002F COPPA] but this sweep is looking at outputs that involve [category]. Should this regime be added to the footprint, and is there a sectoral notice to diff against?\"\n\n---\n\n## Mode detection\n\n**Sweep mode:** No argument, `--sweep`, or triggered by schedule.\n→ Scan the outputs folder. Diff all outputs since last sweep against current policy.\n\n**Direct query mode:** User provides a description of a proposed new practice.\n→ Diff that practice against current policy. Suggest updates.\n\n---\n\n## Mode 1: Sweep\n\n### Determine scope\n\nRead `## Outputs` → **Last policy sweep** date. Scan for output files in the\noutputs folder that are dated after that date. If no date is recorded, scan all\nfiles and note: \"First sweep — scanning all outputs.\"\n\nIf the outputs folder is empty or has no new files since the last sweep:\n> \"No new outputs since [last sweep date]. Policy appears current with recent\n> practice. Next scheduled sweep: [date].\"\n\nUpdate **Last policy sweep** in `~\u002F.claude\u002Fplugins\u002Fconfig\u002Fclaude-for-legal\u002Fprivacy-legal\u002FCLAUDE.md` to today's date after completing the sweep.\n\n### What to read in each output type\n\n**PIAs (Privacy Impact Assessments):**\n- Extract: data categories processed, purposes, third parties \u002F subprocessors involved,\n  retention periods, user rights implications, any conditions placed on the processing\n- Flag: anything in that list not present in the current privacy policy commitments\n\n**DPA reviews (signed or approved):**\n- Extract: subprocessors added, data locations agreed to, processing purposes covered,\n  any obligations to data subjects created by the DPA terms\n- Flag: subprocessors not listed in the policy (if policy names them), new processing\n  categories, new data locations, obligations inconsistent with policy\n\n**Triage results (PIA REQUIRED \u002F PROCEED outcomes):**\n- Extract: what was approved, any conditions imposed that imply a public commitment\n  (e.g., \"disclosure to affected parties required before launch\")\n- Flag: approved practices not covered by policy, conditions that require policy language\n\n**DSAR responses:**\n- Extract: any new data categories surfaced that weren't in previous DSAR responses,\n  any systems added to the systems list\n- Flag: data categories collected but not stated in policy\n\n### Gap identification\n\nFor each flagged item, assess:\n\n**REQUIRED update** — the policy makes a commitment that this output contradicts, or\nthe processing is occurring and the policy has no coverage at all. Not updating creates\na material misrepresentation.\n\n> Example: Policy says \"we collect name, email, and payment information.\" A PIA\n> approved collection of location data. Policy says nothing about location. That's\n> a REQUIRED update — you're collecting data you haven't disclosed.\n\n**ADVISABLE update** — the policy is silent but not in conflict. The processing is\ndefensible without updating, but cleaner with it.\n\n> Example: Policy says \"we may share data with service providers.\" A DPA was signed\n> with a new analytics vendor. Policy doesn't name the vendor but doesn't exclude\n> them either. Advisable to add to a named subprocessor list if one is maintained.\n\n### Sweep output format\n\n```markdown\n[WORK-PRODUCT HEADER — per plugin config ## Outputs — differs by role; see `## Who's using this`]\n\n# Privacy Policy Monitor — Sweep Report\n\n**Date:** [date]\n**Outputs scanned:** [N files] | **New since last sweep:** [N files]\n**Gaps found:** [N] REQUIRED | [N] ADVISABLE\n\n---\n\n## REQUIRED updates\n\n### [Gap 1 short name]\n\n**Source:** [filename \u002F output type that triggered this]\n**What's happening:** [plain description of the new practice]\n**Current policy:** [quote the relevant section — or \"No coverage\"]\n**Gap:** [what's missing or inconsistent]\n\n**Suggested language:**\n> *Add to [section name]:*\n> \"[Drafted policy text — specific, consistent with house style of the actual policy]\"\n\n---\n\n[repeat for each REQUIRED gap]\n\n---\n\n## ADVISABLE updates\n\n### [Gap name]\n\n**Source:** [filename]\n**What's happening:** [description]\n**Current policy:** [quote or \"Silent\"]\n**Suggested language:**\n> *Add to \u002F update [section]:*\n> \"[Drafted text]\"\n\n---\n\n## No action needed\n\n[List outputs scanned where no gaps were found — confirms they were reviewed]\n\n---\n\n## Next steps\n\n- [ ] Review REQUIRED updates — each needs a decision before the associated\n  feature\u002Fprocessing goes live (or immediately if already live)\n- [ ] Review ADVISABLE updates — lower urgency but worth addressing at next\n  policy refresh\n- [ ] Next scheduled sweep: [date]\n```\n\n---\n\n## Mode 2: Direct query\n\n### Parse the proposed practice\n\nExtract from the user's description:\n- What data is being collected or processed?\n- What's the purpose?\n- Who else is involved (vendors, partners, third parties)?\n- Who are the data subjects?\n- Is there any automated decision-making?\n- Any new disclosure to data subjects required?\n\nIf the description is vague, ask one clarifying question before proceeding. Don't\nrun a long intake — this mode should be fast.\n\n### Policy diff\n\nCheck the proposed practice against every relevant section of the current policy:\n\n| Check | Current policy says | Proposed practice | Verdict |\n|---|---|---|---|\n| Data categories | [what policy lists] | [new category if any] | 🟢 Covered \u002F 🟡 Gap \u002F 🔴 Conflict |\n| Purposes | [stated purposes] | [new purpose] | |\n| Third parties \u002F subprocessors | [stated parties] | [new party if any] | |\n| Retention | [retention commitment] | [implied retention] | |\n| User rights | [rights offered] | [any new rights implications] | |\n| Disclosure \u002F notice | [what policy says about telling users] | [what this practice requires] | |\n\n### Direct query output format\n\n```markdown\n[WORK-PRODUCT HEADER — per plugin config ## Outputs — differs by role; see `## Who's using this`]\n\n# Privacy Policy Check: [Proposed practice in one line]\n\n**Bottom line:** [POLICY UPDATE REQUIRED \u002F ADVISABLE \u002F NO UPDATE NEEDED]\n\n---\n\n## What's covered\n\n[List aspects of the proposed practice already addressed by the current policy —\nbrief, confirms they don't need to change]\n\n## What's missing\n\n### [Gap 1]\n\n**Current policy:** [quote or \"Silent\"]\n**What's needed:** [why this gap matters — legal, reputational, or consistency reason]\n\n**Suggested language:**\n> *Add to [section]:*\n> \"[Drafted text]\"\n\n### [Gap 2]\n[same format]\n\n## What conflicts\n\n### [Conflict 1 — if any]\n\n**Current policy says:** [quote]\n**Proposed practice does:** [what conflicts]\n**Resolution:** [which one needs to change and why — usually the practice adjusts\nto match the policy, or the policy gets updated to a defensible new position]\n\n---\n\n## Timing\n\n[If any gap is REQUIRED: \"Policy update should happen before this goes live.\"\nIf ADVISABLE: \"Can proceed; update at next policy refresh.\"]\n```\n\n---\n\n## Suggested language quality standards\n\nPolicy language should:\n- Match the voice and style of the existing policy (read the actual document, not\n  just the config CLAUDE.md summary, before drafting)\n- Be specific enough to be meaningful but not so specific that routine changes\n  break it (\"service providers who assist us in operating our business\" ages better\n  than naming every vendor)\n- Not make commitments the team can't keep (e.g., don't draft \"we will never share\n  location data\" if the architecture has that data flowing to an analytics vendor)\n- Flag where a broader policy position change might be needed, not just a\n  sentence addition\n\nWhen drafting, always say which section to add to. If the right section doesn't\nexist, say so and suggest creating it.\n\n---\n\n## Schedule integration\n\nSet up a recurring reminder in your own scheduler (calendar, task manager, or CI)\nto run `\u002Fprivacy-legal:policy-monitor` weekly. Scheduled execution requires a\nscheduled-tasks integration, which is not bundled with this plugin.\n\nWhenever the sweep runs, it updates `## Outputs` → **Last policy sweep** in\n`~\u002F.claude\u002Fplugins\u002Fconfig\u002Fclaude-for-legal\u002Fprivacy-legal\u002FCLAUDE.md`, so the next sweep only looks at new files.\n\n---\n\n## Close with the next-steps decision tree\n\nEnd with the next-steps decision tree per CLAUDE.md `## Outputs`. Customize the options to what this skill just produced — the five default branches (draft the X, escalate, get more facts, watch and wait, something else) are a starting point, not a lock-in. The tree is the output; the lawyer picks.\n\nIf the sweep surfaced more than ~10 drift findings, or any time the user asks: offer the dashboard (see CLAUDE.md `## Outputs → Dashboard offer for data-heavy outputs`). Shape the offer for this output — counts by surface (policy clause \u002F PIA \u002F DPA \u002F triage), counts by severity, and a sortable grid of findings with source artifact and recommended remediation.\n\n## What this skill does not do\n\n- It doesn't update the policy itself — it drafts suggested language and flags\n  decisions, but a human reviews and approves every change.\n- It doesn't catch regulatory changes — that's `reg-gap-analysis`. This skill\n  monitors internal practice drift, not external legal changes.\n- It doesn't enforce that outputs are saved — if the team isn't saving PIAs to the\n  configured folder, the sweep won't find them. The direct-query mode works without\n  saved outputs.\n- It doesn't read email or Slack for informal decisions — only structured outputs\n  saved to the configured folder.\n",{"data":38,"body":40},{"name":4,"description":6,"argument-hint":39},"[describe a proposed new practice — or omit \u002F use --sweep for crawl mode]",{"type":41,"children":42},"root",[43,51,72,122,132,156,174,186,190,196,203,208,213,218,221,227,238,283,302,319,337,344,349,392,423,428,434,446,592,602,631,641,672,675,681,698,708,711,717,723,740,745,766,784,790,798,811,819,832,840,853,861,874,880,885,895,903,913,921,927,1766,1769,1775,1781,1786,1819,1824,1830,1835,2031,2037,2531,2534,2540,2545,2568,2573,2576,2582,2594,2618,2621,2627,2639,2652,2658,2689],{"type":44,"tag":45,"props":46,"children":47},"element","h1",{"id":4},[48],{"type":49,"value":50},"text","\u002Fpolicy-monitor",{"type":44,"tag":52,"props":53,"children":54},"p",{},[55,61,63,70],{"type":44,"tag":56,"props":57,"children":58},"strong",{},[59],{"type":49,"value":60},"Sweep mode",{"type":49,"value":62}," (no argument or ",{"type":44,"tag":64,"props":65,"children":67},"code",{"className":66},[],[68],{"type":49,"value":69},"--sweep",{"type":49,"value":71},"):",{"type":44,"tag":73,"props":74,"children":75},"ol",{},[76,90,95,100,105,110],{"type":44,"tag":77,"props":78,"children":79},"li",{},[80,82,88],{"type":49,"value":81},"Read ",{"type":44,"tag":64,"props":83,"children":85},{"className":84},[],[86],{"type":49,"value":87},"~\u002F.claude\u002Fplugins\u002Fconfig\u002Fclaude-for-legal\u002Fprivacy-legal\u002FCLAUDE.md",{"type":49,"value":89}," → outputs folder path, policy document, last sweep date.",{"type":44,"tag":77,"props":91,"children":92},{},[93],{"type":49,"value":94},"Run the workflow below. Scan outputs folder for files since last sweep.",{"type":44,"tag":77,"props":96,"children":97},{},[98],{"type":49,"value":99},"For each output: extract approved practices → diff against current policy commitments.",{"type":44,"tag":77,"props":101,"children":102},{},[103],{"type":49,"value":104},"Classify gaps: REQUIRED (policy misrepresents current practice) vs ADVISABLE (policy silent).",{"type":44,"tag":77,"props":106,"children":107},{},[108],{"type":49,"value":109},"For each gap: quote current policy, describe gap, draft suggested language.",{"type":44,"tag":77,"props":111,"children":112},{},[113,115,120],{"type":49,"value":114},"Update Last policy sweep date in ",{"type":44,"tag":64,"props":116,"children":118},{"className":117},[],[119],{"type":49,"value":87},{"type":49,"value":121},".",{"type":44,"tag":52,"props":123,"children":124},{},[125,130],{"type":44,"tag":56,"props":126,"children":127},{},[128],{"type":49,"value":129},"Direct query mode",{"type":49,"value":131}," (with description argument):",{"type":44,"tag":73,"props":133,"children":134},{},[135,146,151],{"type":44,"tag":77,"props":136,"children":137},{},[138,139,144],{"type":49,"value":81},{"type":44,"tag":64,"props":140,"children":142},{"className":141},[],[143],{"type":49,"value":87},{"type":49,"value":145}," → current policy commitments + actual policy document.",{"type":44,"tag":77,"props":147,"children":148},{},[149],{"type":49,"value":150},"Parse proposed practice. Diff against policy: data categories, purposes, third parties, retention, user rights, disclosure.",{"type":44,"tag":77,"props":152,"children":153},{},[154],{"type":49,"value":155},"Output: covered \u002F missing \u002F conflicting + suggested language for each gap + timing recommendation.",{"type":44,"tag":52,"props":157,"children":158},{},[159,164,166,172],{"type":44,"tag":56,"props":160,"children":161},{},[162],{"type":49,"value":163},"Schedule:",{"type":49,"value":165}," Set up a recurring reminder in your own scheduler (calendar, task manager, or CI) to run ",{"type":44,"tag":64,"props":167,"children":169},{"className":168},[],[170],{"type":49,"value":171},"\u002Fprivacy-legal:policy-monitor",{"type":49,"value":173}," weekly. Scheduled execution requires a scheduled-tasks integration, which is not bundled with this plugin.",{"type":44,"tag":175,"props":176,"children":180},"pre",{"className":177,"code":179,"language":49},[178],"language-text","\u002Fprivacy-legal:policy-monitor\n\u002Fprivacy-legal:policy-monitor \"We want to start using behavioral data to personalize onboarding emails\"\n",[181],{"type":44,"tag":64,"props":182,"children":184},{"__ignoreMap":183},"",[185],{"type":49,"value":179},{"type":44,"tag":187,"props":188,"children":189},"hr",{},[],{"type":44,"tag":45,"props":191,"children":193},{"id":192},"privacy-policy-monitor",[194],{"type":49,"value":195},"Privacy Policy Monitor",{"type":44,"tag":197,"props":198,"children":200},"h2",{"id":199},"purpose",[201],{"type":49,"value":202},"Purpose",{"type":44,"tag":52,"props":204,"children":205},{},[206],{"type":49,"value":207},"Privacy policies drift from practice in one direction: practice moves forward,\npolicy stays behind. A PIA approves a new data category. A DPA is signed with a\nsubprocessor not listed anywhere. A triage result marks a new use case conditional\nwith a disclosure requirement that the policy doesn't yet make. Months later,\nsomeone reads the policy and it doesn't reflect what actually happens.",{"type":44,"tag":52,"props":209,"children":210},{},[211],{"type":49,"value":212},"This skill catches the drift before it becomes a problem — either by crawling the\noutputs folder weekly, or by answering the direct question: \"we're about to start\ndoing X, what does that mean for the policy?\"",{"type":44,"tag":52,"props":214,"children":215},{},[216],{"type":49,"value":217},"The output is always the same: here's the gap, here's the suggested language.",{"type":44,"tag":187,"props":219,"children":220},{},[],{"type":44,"tag":197,"props":222,"children":224},{"id":223},"load-current-state",[225],{"type":49,"value":226},"Load current state",{"type":44,"tag":52,"props":228,"children":229},{},[230,231,236],{"type":49,"value":81},{"type":44,"tag":64,"props":232,"children":234},{"className":233},[],[235],{"type":49,"value":87},{"type":49,"value":237},":",{"type":44,"tag":239,"props":240,"children":241},"ul",{},[242,261,272],{"type":44,"tag":77,"props":243,"children":244},{},[245,251,253,259],{"type":44,"tag":64,"props":246,"children":248},{"className":247},[],[249],{"type":49,"value":250},"## Who we are",{"type":49,"value":252}," → ",{"type":44,"tag":64,"props":254,"children":256},{"className":255},[],[257],{"type":49,"value":258},"## Regulatory footprint",{"type":49,"value":260}," — the regimes in scope (GDPR, CCPA \u002F CPRA \u002F other state consumer privacy, GLBA, HIPAA, FERPA, COPPA, VPPA, CPNI, etc.)",{"type":44,"tag":77,"props":262,"children":263},{},[264,270],{"type":44,"tag":64,"props":265,"children":267},{"className":266},[],[268],{"type":49,"value":269},"## Privacy policy commitments",{"type":49,"value":271}," — the commitments extracted from the published policy",{"type":44,"tag":77,"props":273,"children":274},{},[275,281],{"type":44,"tag":64,"props":276,"children":278},{"className":277},[],[279],{"type":49,"value":280},"## Outputs",{"type":49,"value":282}," — outputs folder path, policy document location, last sweep date",{"type":44,"tag":52,"props":284,"children":285},{},[286,288,293,295,301],{"type":49,"value":287},"If ",{"type":44,"tag":64,"props":289,"children":291},{"className":290},[],[292],{"type":49,"value":280},{"type":49,"value":294}," contains ",{"type":44,"tag":64,"props":296,"children":298},{"className":297},[],[299],{"type":49,"value":300},"[PLACEHOLDER]",{"type":49,"value":237},{"type":44,"tag":303,"props":304,"children":305},"blockquote",{},[306],{"type":44,"tag":52,"props":307,"children":308},{},[309,311,317],{"type":49,"value":310},"\"Outputs aren't configured yet. I can still run a direct-query check — describe\nwhat you're planning to do and I'll diff it against your current policy. To enable\nthe crawl sweep, run ",{"type":44,"tag":64,"props":312,"children":314},{"className":313},[],[315],{"type":49,"value":316},"\u002Fprivacy-legal:cold-start-interview",{"type":49,"value":318}," and provide the outputs\nfolder path.\"",{"type":44,"tag":52,"props":320,"children":321},{},[322,324,329,330,335],{"type":49,"value":323},"Read the actual privacy policy document from the path in ",{"type":44,"tag":64,"props":325,"children":327},{"className":326},[],[328],{"type":49,"value":280},{"type":49,"value":252},{"type":44,"tag":56,"props":331,"children":332},{},[333],{"type":49,"value":334},"Privacy\npolicy document",{"type":49,"value":336},". The commitments in the config CLAUDE.md are a summary; the actual document\nis authoritative for suggesting edits.",{"type":44,"tag":338,"props":339,"children":341},"h3",{"id":340},"privacy-commitments-live-on-multiple-surfaces-sweep-all-of-them",[342],{"type":49,"value":343},"Privacy commitments live on multiple surfaces — sweep all of them",{"type":44,"tag":52,"props":345,"children":346},{},[347],{"type":49,"value":348},"The website privacy policy is one surface. Modern privacy programs make binding commitments in at least four more places that regulators actively scrutinize for inconsistencies:",{"type":44,"tag":73,"props":350,"children":351},{},[352,362,372,382],{"type":44,"tag":77,"props":353,"children":354},{},[355,360],{"type":44,"tag":56,"props":356,"children":357},{},[358],{"type":49,"value":359},"Cookie consent banners \u002F CMPs.",{"type":49,"value":361}," The consent management platform promises specific cookie categories and purposes. If the privacy policy says \"we use analytics cookies\" and the CMP offers \"strictly necessary only,\" there's a conflict. EU DPAs and the FTC have both enforced against CMP misconfigurations.",{"type":44,"tag":77,"props":363,"children":364},{},[365,370],{"type":44,"tag":56,"props":366,"children":367},{},[368],{"type":49,"value":369},"App store privacy labels.",{"type":49,"value":371}," Apple App Privacy (the \"nutrition label\") and Google Data Safety are self-declared and FTC-enforceable. A company that updates its privacy policy but doesn't update its App Store label has a material, regulator-visible inconsistency. Check: when was the label last updated? Does it match the current policy's data categories, purposes, and sharing?",{"type":44,"tag":77,"props":373,"children":374},{},[375,380],{"type":44,"tag":56,"props":376,"children":377},{},[378],{"type":49,"value":379},"In-product consent flows.",{"type":49,"value":381}," The actual screens where users make data-use choices (onboarding consents, settings toggles, \"we've updated our policy\" dialogs). The policy says what you do; the consent flow says what the user agreed to. They should match.",{"type":44,"tag":77,"props":383,"children":384},{},[385,390],{"type":44,"tag":56,"props":386,"children":387},{},[388],{"type":49,"value":389},"Sector-specific notices.",{"type":49,"value":391}," GLBA privacy notices, HIPAA NPPs, FERPA directory notices, COPPA direct notices. These have their own update obligations and their own consistency requirements with the general privacy policy. (Detail below under \"Sectoral notices.\")",{"type":44,"tag":52,"props":393,"children":394},{},[395,400,402,408,410,415,417,421],{"type":44,"tag":56,"props":396,"children":397},{},[398],{"type":49,"value":399},"Add fields to the practice profile for each surface's location and last-updated date.",{"type":49,"value":401}," The sweep checks each against the current policy and flags divergence: \"Privacy policy updated ",{"type":44,"tag":403,"props":404,"children":405},"span",{},[406],{"type":49,"value":407},"date",{"type":49,"value":409},". App Store label last updated ",{"type":44,"tag":403,"props":411,"children":412},{},[413],{"type":49,"value":414},"earlier date",{"type":49,"value":416}," — may not reflect the new data category. CMP last configured ",{"type":44,"tag":403,"props":418,"children":419},{},[420],{"type":49,"value":407},{"type":49,"value":422}," — verify cookie purposes match the policy.\"",{"type":44,"tag":52,"props":424,"children":425},{},[426],{"type":49,"value":427},"A company with a clean privacy policy and a stale App Store label is a company with an FTC complaint waiting to happen. Sweep the surfaces, not just the document.",{"type":44,"tag":338,"props":429,"children":431},{"id":430},"sectoral-notices-are-in-scope-for-this-sweep",[432],{"type":49,"value":433},"Sectoral notices are in scope for this sweep",{"type":44,"tag":52,"props":435,"children":436},{},[437,439,444],{"type":49,"value":438},"The website privacy policy is one notice. Federally-regulated practices require a separate, sector-specific notice that the website policy does not substitute for. If ",{"type":44,"tag":64,"props":440,"children":442},{"className":441},[],[443],{"type":49,"value":258},{"type":49,"value":445}," includes any of the following, the sweep diffs practice against that notice in addition to the website policy — or flags its absence if no such notice has been configured:",{"type":44,"tag":447,"props":448,"children":449},"table",{},[450,474],{"type":44,"tag":451,"props":452,"children":453},"thead",{},[454],{"type":44,"tag":455,"props":456,"children":457},"tr",{},[458,464,469],{"type":44,"tag":459,"props":460,"children":461},"th",{},[462],{"type":49,"value":463},"Footprint entry",{"type":44,"tag":459,"props":465,"children":466},{},[467],{"type":49,"value":468},"Sectoral notice to diff against",{"type":44,"tag":459,"props":470,"children":471},{},[472],{"type":49,"value":473},"What to flag",{"type":44,"tag":475,"props":476,"children":477},"tbody",{},[478,502,525,548,571],{"type":44,"tag":455,"props":479,"children":480},{},[481,492,497],{"type":44,"tag":482,"props":483,"children":484},"td",{},[485,490],{"type":44,"tag":56,"props":486,"children":487},{},[488],{"type":49,"value":489},"GLBA \u002F Reg P",{"type":49,"value":491}," (financial institution handling NPI)",{"type":44,"tag":482,"props":493,"children":494},{},[495],{"type":49,"value":496},"GLBA initial + annual privacy notice (12 C.F.R. Part 1016, or the functional regulator's equivalent)",{"type":44,"tag":482,"props":498,"children":499},{},[500],{"type":49,"value":501},"Outputs implying new NPI categories, sharing with non-affiliated third parties, or changes to opt-out mechanics that the Reg P notice doesn't reflect. A DPA signed with an analytics vendor receiving NPI with no matching Reg P notice update is a gap.",{"type":44,"tag":455,"props":503,"children":504},{},[505,515,520],{"type":44,"tag":482,"props":506,"children":507},{},[508,513],{"type":44,"tag":56,"props":509,"children":510},{},[511],{"type":49,"value":512},"HIPAA",{"type":49,"value":514}," (covered entity or BA)",{"type":44,"tag":482,"props":516,"children":517},{},[518],{"type":49,"value":519},"Notice of Privacy Practices (45 C.F.R. § 164.520)",{"type":44,"tag":482,"props":521,"children":522},{},[523],{"type":49,"value":524},"Outputs implying new uses or disclosures, new routine categories, or changes to patient-rights mechanics. A BAA signed with a new subcontractor flowing PHI with no matching NPP refresh is a gap.",{"type":44,"tag":455,"props":526,"children":527},{},[528,538,543],{"type":44,"tag":482,"props":529,"children":530},{},[531,536],{"type":44,"tag":56,"props":532,"children":533},{},[534],{"type":49,"value":535},"FERPA",{"type":49,"value":537}," (school or school service provider)",{"type":44,"tag":482,"props":539,"children":540},{},[541],{"type":49,"value":542},"Annual directory-information \u002F rights notice (34 C.F.R. § 99.37)",{"type":44,"tag":482,"props":544,"children":545},{},[546],{"type":49,"value":547},"Outputs implying new disclosure categories to service providers under the school-official exception, new directory-information elements, or changes that implicate parental-consent flow-through.",{"type":44,"tag":455,"props":549,"children":550},{},[551,561,566],{"type":44,"tag":482,"props":552,"children":553},{},[554,559],{"type":44,"tag":56,"props":555,"children":556},{},[557],{"type":49,"value":558},"COPPA",{"type":49,"value":560}," (operator of service directed to children \u003C13)",{"type":44,"tag":482,"props":562,"children":563},{},[564],{"type":49,"value":565},"Direct notice to parents + online notice (16 C.F.R. § 312.4)",{"type":44,"tag":482,"props":567,"children":568},{},[569],{"type":49,"value":570},"Outputs implying new data categories collected from children, new third-party disclosures, or changes to the verifiable-parental-consent mechanic.",{"type":44,"tag":455,"props":572,"children":573},{},[574,582,587],{"type":44,"tag":482,"props":575,"children":576},{},[577],{"type":44,"tag":56,"props":578,"children":579},{},[580],{"type":49,"value":581},"VPPA \u002F CPNI \u002F DPPA \u002F other sectoral",{"type":44,"tag":482,"props":583,"children":584},{},[585],{"type":49,"value":586},"The regime's specific notice or consent regime",{"type":44,"tag":482,"props":588,"children":589},{},[590],{"type":49,"value":591},"Processing activities the regime restricts that aren't reflected in the configured notice.",{"type":44,"tag":52,"props":593,"children":594},{},[595,600],{"type":44,"tag":56,"props":596,"children":597},{},[598],{"type":49,"value":599},"If no sectoral notice is configured for a regime in the footprint",{"type":49,"value":601},", surface this as a standing gap on every sweep, not a one-time finding. The sweep output should include:",{"type":44,"tag":303,"props":603,"children":604},{},[605,613],{"type":44,"tag":52,"props":606,"children":607},{},[608],{"type":44,"tag":56,"props":609,"children":610},{},[611],{"type":49,"value":612},"Sectoral notice coverage:",{"type":44,"tag":239,"props":614,"children":615},{},[616],{"type":44,"tag":77,"props":617,"children":618},{},[619,624,626],{"type":44,"tag":403,"props":620,"children":621},{},[622],{"type":49,"value":623},"regime",{"type":49,"value":625},": ",{"type":44,"tag":403,"props":627,"children":628},{},[629],{"type":49,"value":630},"configured notice path + last updated, or \"NOT CONFIGURED — flag each sweep until resolved\"",{"type":44,"tag":52,"props":632,"children":633},{},[634,639],{"type":44,"tag":56,"props":635,"children":636},{},[637],{"type":49,"value":638},"If the sweep cannot locate the sectoral notice",{"type":49,"value":640},", say so explicitly — do not silently default to diffing only against the website policy. A fintech DPO relying on a policy-monitor sweep that ignored GLBA would ship with an outdated regulator-facing notice and no warning. Surface the gap loudly.",{"type":44,"tag":52,"props":642,"children":643},{},[644,649,651,656,658,663,665,670],{"type":44,"tag":56,"props":645,"children":646},{},[647],{"type":49,"value":648},"Ask the user if the footprint is ambiguous.",{"type":49,"value":650}," If ",{"type":44,"tag":64,"props":652,"children":654},{"className":653},[],[655],{"type":49,"value":258},{"type":49,"value":657}," says \"GDPR \u002F CCPA\" but the outputs scan surfaces PHI, NPI, or student data categories, surface the footprint-vs-practice mismatch before proceeding: \"Your footprint doesn't list ",{"type":44,"tag":403,"props":659,"children":660},{},[661],{"type":49,"value":662},"GLBA \u002F HIPAA \u002F FERPA \u002F COPPA",{"type":49,"value":664}," but this sweep is looking at outputs that involve ",{"type":44,"tag":403,"props":666,"children":667},{},[668],{"type":49,"value":669},"category",{"type":49,"value":671},". Should this regime be added to the footprint, and is there a sectoral notice to diff against?\"",{"type":44,"tag":187,"props":673,"children":674},{},[],{"type":44,"tag":197,"props":676,"children":678},{"id":677},"mode-detection",[679],{"type":49,"value":680},"Mode detection",{"type":44,"tag":52,"props":682,"children":683},{},[684,689,691,696],{"type":44,"tag":56,"props":685,"children":686},{},[687],{"type":49,"value":688},"Sweep mode:",{"type":49,"value":690}," No argument, ",{"type":44,"tag":64,"props":692,"children":694},{"className":693},[],[695],{"type":49,"value":69},{"type":49,"value":697},", or triggered by schedule.\n→ Scan the outputs folder. Diff all outputs since last sweep against current policy.",{"type":44,"tag":52,"props":699,"children":700},{},[701,706],{"type":44,"tag":56,"props":702,"children":703},{},[704],{"type":49,"value":705},"Direct query mode:",{"type":49,"value":707}," User provides a description of a proposed new practice.\n→ Diff that practice against current policy. Suggest updates.",{"type":44,"tag":187,"props":709,"children":710},{},[],{"type":44,"tag":197,"props":712,"children":714},{"id":713},"mode-1-sweep",[715],{"type":49,"value":716},"Mode 1: Sweep",{"type":44,"tag":338,"props":718,"children":720},{"id":719},"determine-scope",[721],{"type":49,"value":722},"Determine scope",{"type":44,"tag":52,"props":724,"children":725},{},[726,727,732,733,738],{"type":49,"value":81},{"type":44,"tag":64,"props":728,"children":730},{"className":729},[],[731],{"type":49,"value":280},{"type":49,"value":252},{"type":44,"tag":56,"props":734,"children":735},{},[736],{"type":49,"value":737},"Last policy sweep",{"type":49,"value":739}," date. Scan for output files in the\noutputs folder that are dated after that date. If no date is recorded, scan all\nfiles and note: \"First sweep — scanning all outputs.\"",{"type":44,"tag":52,"props":741,"children":742},{},[743],{"type":49,"value":744},"If the outputs folder is empty or has no new files since the last sweep:",{"type":44,"tag":303,"props":746,"children":747},{},[748],{"type":44,"tag":52,"props":749,"children":750},{},[751,753,758,760,764],{"type":49,"value":752},"\"No new outputs since ",{"type":44,"tag":403,"props":754,"children":755},{},[756],{"type":49,"value":757},"last sweep date",{"type":49,"value":759},". Policy appears current with recent\npractice. Next scheduled sweep: ",{"type":44,"tag":403,"props":761,"children":762},{},[763],{"type":49,"value":407},{"type":49,"value":765},".\"",{"type":44,"tag":52,"props":767,"children":768},{},[769,771,775,777,782],{"type":49,"value":770},"Update ",{"type":44,"tag":56,"props":772,"children":773},{},[774],{"type":49,"value":737},{"type":49,"value":776}," in ",{"type":44,"tag":64,"props":778,"children":780},{"className":779},[],[781],{"type":49,"value":87},{"type":49,"value":783}," to today's date after completing the sweep.",{"type":44,"tag":338,"props":785,"children":787},{"id":786},"what-to-read-in-each-output-type",[788],{"type":49,"value":789},"What to read in each output type",{"type":44,"tag":52,"props":791,"children":792},{},[793],{"type":44,"tag":56,"props":794,"children":795},{},[796],{"type":49,"value":797},"PIAs (Privacy Impact Assessments):",{"type":44,"tag":239,"props":799,"children":800},{},[801,806],{"type":44,"tag":77,"props":802,"children":803},{},[804],{"type":49,"value":805},"Extract: data categories processed, purposes, third parties \u002F subprocessors involved,\nretention periods, user rights implications, any conditions placed on the processing",{"type":44,"tag":77,"props":807,"children":808},{},[809],{"type":49,"value":810},"Flag: anything in that list not present in the current privacy policy commitments",{"type":44,"tag":52,"props":812,"children":813},{},[814],{"type":44,"tag":56,"props":815,"children":816},{},[817],{"type":49,"value":818},"DPA reviews (signed or approved):",{"type":44,"tag":239,"props":820,"children":821},{},[822,827],{"type":44,"tag":77,"props":823,"children":824},{},[825],{"type":49,"value":826},"Extract: subprocessors added, data locations agreed to, processing purposes covered,\nany obligations to data subjects created by the DPA terms",{"type":44,"tag":77,"props":828,"children":829},{},[830],{"type":49,"value":831},"Flag: subprocessors not listed in the policy (if policy names them), new processing\ncategories, new data locations, obligations inconsistent with policy",{"type":44,"tag":52,"props":833,"children":834},{},[835],{"type":44,"tag":56,"props":836,"children":837},{},[838],{"type":49,"value":839},"Triage results (PIA REQUIRED \u002F PROCEED outcomes):",{"type":44,"tag":239,"props":841,"children":842},{},[843,848],{"type":44,"tag":77,"props":844,"children":845},{},[846],{"type":49,"value":847},"Extract: what was approved, any conditions imposed that imply a public commitment\n(e.g., \"disclosure to affected parties required before launch\")",{"type":44,"tag":77,"props":849,"children":850},{},[851],{"type":49,"value":852},"Flag: approved practices not covered by policy, conditions that require policy language",{"type":44,"tag":52,"props":854,"children":855},{},[856],{"type":44,"tag":56,"props":857,"children":858},{},[859],{"type":49,"value":860},"DSAR responses:",{"type":44,"tag":239,"props":862,"children":863},{},[864,869],{"type":44,"tag":77,"props":865,"children":866},{},[867],{"type":49,"value":868},"Extract: any new data categories surfaced that weren't in previous DSAR responses,\nany systems added to the systems list",{"type":44,"tag":77,"props":870,"children":871},{},[872],{"type":49,"value":873},"Flag: data categories collected but not stated in policy",{"type":44,"tag":338,"props":875,"children":877},{"id":876},"gap-identification",[878],{"type":49,"value":879},"Gap identification",{"type":44,"tag":52,"props":881,"children":882},{},[883],{"type":49,"value":884},"For each flagged item, assess:",{"type":44,"tag":52,"props":886,"children":887},{},[888,893],{"type":44,"tag":56,"props":889,"children":890},{},[891],{"type":49,"value":892},"REQUIRED update",{"type":49,"value":894}," — the policy makes a commitment that this output contradicts, or\nthe processing is occurring and the policy has no coverage at all. Not updating creates\na material misrepresentation.",{"type":44,"tag":303,"props":896,"children":897},{},[898],{"type":44,"tag":52,"props":899,"children":900},{},[901],{"type":49,"value":902},"Example: Policy says \"we collect name, email, and payment information.\" A PIA\napproved collection of location data. Policy says nothing about location. That's\na REQUIRED update — you're collecting data you haven't disclosed.",{"type":44,"tag":52,"props":904,"children":905},{},[906,911],{"type":44,"tag":56,"props":907,"children":908},{},[909],{"type":49,"value":910},"ADVISABLE update",{"type":49,"value":912}," — the policy is silent but not in conflict. The processing is\ndefensible without updating, but cleaner with it.",{"type":44,"tag":303,"props":914,"children":915},{},[916],{"type":44,"tag":52,"props":917,"children":918},{},[919],{"type":49,"value":920},"Example: Policy says \"we may share data with service providers.\" A DPA was signed\nwith a new analytics vendor. Policy doesn't name the vendor but doesn't exclude\nthem either. Advisable to add to a named subprocessor list if one is maintained.",{"type":44,"tag":338,"props":922,"children":924},{"id":923},"sweep-output-format",[925],{"type":49,"value":926},"Sweep output format",{"type":44,"tag":175,"props":928,"children":932},{"className":929,"code":930,"language":931,"meta":183,"style":183},"language-markdown shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","[WORK-PRODUCT HEADER — per plugin config ## Outputs — differs by role; see `## Who's using this`]\n\n# Privacy Policy Monitor — Sweep Report\n\n**Date:** [date]\n**Outputs scanned:** [N files] | **New since last sweep:** [N files]\n**Gaps found:** [N] REQUIRED | [N] ADVISABLE\n\n---\n\n## REQUIRED updates\n\n### [Gap 1 short name]\n\n**Source:** [filename \u002F output type that triggered this]\n**What's happening:** [plain description of the new practice]\n**Current policy:** [quote the relevant section — or \"No coverage\"]\n**Gap:** [what's missing or inconsistent]\n\n**Suggested language:**\n> *Add to [section name]:*\n> \"[Drafted policy text — specific, consistent with house style of the actual policy]\"\n\n---\n\n[repeat for each REQUIRED gap]\n\n---\n\n## ADVISABLE updates\n\n### [Gap name]\n\n**Source:** [filename]\n**What's happening:** [description]\n**Current policy:** [quote or \"Silent\"]\n**Suggested language:**\n> *Add to \u002F update [section]:*\n> \"[Drafted text]\"\n\n---\n\n## No action needed\n\n[List outputs scanned where no gaps were found — confirms they were reviewed]\n\n---\n\n## Next steps\n\n- [ ] Review REQUIRED updates — each needs a decision before the associated\n  feature\u002Fprocessing goes live (or immediately if already live)\n- [ ] Review ADVISABLE updates — lower urgency but worth addressing at next\n  policy refresh\n- [ ] Next scheduled sweep: [date]\n","markdown",[933],{"type":44,"tag":64,"props":934,"children":935},{"__ignoreMap":183},[936,968,978,993,1001,1034,1074,1128,1136,1145,1153,1167,1175,1189,1197,1219,1241,1263,1285,1293,1311,1338,1351,1359,1367,1375,1384,1392,1400,1408,1421,1429,1442,1450,1479,1508,1529,1545,1584,1597,1605,1613,1621,1634,1642,1651,1659,1667,1675,1688,1696,1710,1719,1732,1741],{"type":44,"tag":403,"props":937,"children":940},{"class":938,"line":939},"line",1,[941,947,953,959,963],{"type":44,"tag":403,"props":942,"children":944},{"style":943},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[945],{"type":49,"value":946},"[WORK-PRODUCT HEADER — per plugin config ## Outputs — differs by role; see ",{"type":44,"tag":403,"props":948,"children":950},{"style":949},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[951],{"type":49,"value":952},"`",{"type":44,"tag":403,"props":954,"children":956},{"style":955},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[957],{"type":49,"value":958},"## Who's using this",{"type":44,"tag":403,"props":960,"children":961},{"style":949},[962],{"type":49,"value":952},{"type":44,"tag":403,"props":964,"children":965},{"style":943},[966],{"type":49,"value":967},"]\n",{"type":44,"tag":403,"props":969,"children":971},{"class":938,"line":970},2,[972],{"type":44,"tag":403,"props":973,"children":975},{"emptyLinePlaceholder":974},true,[976],{"type":49,"value":977},"\n",{"type":44,"tag":403,"props":979,"children":981},{"class":938,"line":980},3,[982,987],{"type":44,"tag":403,"props":983,"children":984},{"style":949},[985],{"type":49,"value":986},"# ",{"type":44,"tag":403,"props":988,"children":990},{"style":989},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[991],{"type":49,"value":992},"Privacy Policy Monitor — Sweep Report\n",{"type":44,"tag":403,"props":994,"children":996},{"class":938,"line":995},4,[997],{"type":44,"tag":403,"props":998,"children":999},{"emptyLinePlaceholder":974},[1000],{"type":49,"value":977},{"type":44,"tag":403,"props":1002,"children":1004},{"class":938,"line":1003},5,[1005,1011,1017,1021,1026,1030],{"type":44,"tag":403,"props":1006,"children":1008},{"style":1007},"--shiki-light:#39ADB5;--shiki-light-font-weight:bold;--shiki-default:#89DDFF;--shiki-default-font-weight:bold;--shiki-dark:#89DDFF;--shiki-dark-font-weight:bold",[1009],{"type":49,"value":1010},"**",{"type":44,"tag":403,"props":1012,"children":1014},{"style":1013},"--shiki-light:#E53935;--shiki-light-font-weight:bold;--shiki-default:#F07178;--shiki-default-font-weight:bold;--shiki-dark:#F07178;--shiki-dark-font-weight:bold",[1015],{"type":49,"value":1016},"Date:",{"type":44,"tag":403,"props":1018,"children":1019},{"style":1007},[1020],{"type":49,"value":1010},{"type":44,"tag":403,"props":1022,"children":1023},{"style":949},[1024],{"type":49,"value":1025}," [",{"type":44,"tag":403,"props":1027,"children":1028},{"style":955},[1029],{"type":49,"value":407},{"type":44,"tag":403,"props":1031,"children":1032},{"style":949},[1033],{"type":49,"value":967},{"type":44,"tag":403,"props":1035,"children":1037},{"class":938,"line":1036},6,[1038,1042,1047,1051,1056,1060,1065,1069],{"type":44,"tag":403,"props":1039,"children":1040},{"style":1007},[1041],{"type":49,"value":1010},{"type":44,"tag":403,"props":1043,"children":1044},{"style":1013},[1045],{"type":49,"value":1046},"Outputs scanned:",{"type":44,"tag":403,"props":1048,"children":1049},{"style":1007},[1050],{"type":49,"value":1010},{"type":44,"tag":403,"props":1052,"children":1053},{"style":943},[1054],{"type":49,"value":1055}," [N files] | ",{"type":44,"tag":403,"props":1057,"children":1058},{"style":1007},[1059],{"type":49,"value":1010},{"type":44,"tag":403,"props":1061,"children":1062},{"style":1013},[1063],{"type":49,"value":1064},"New since last sweep:",{"type":44,"tag":403,"props":1066,"children":1067},{"style":1007},[1068],{"type":49,"value":1010},{"type":44,"tag":403,"props":1070,"children":1071},{"style":943},[1072],{"type":49,"value":1073}," [N files]\n",{"type":44,"tag":403,"props":1075,"children":1077},{"class":938,"line":1076},7,[1078,1082,1087,1091,1095,1100,1105,1110,1115,1119,1123],{"type":44,"tag":403,"props":1079,"children":1080},{"style":1007},[1081],{"type":49,"value":1010},{"type":44,"tag":403,"props":1083,"children":1084},{"style":1013},[1085],{"type":49,"value":1086},"Gaps found:",{"type":44,"tag":403,"props":1088,"children":1089},{"style":1007},[1090],{"type":49,"value":1010},{"type":44,"tag":403,"props":1092,"children":1093},{"style":949},[1094],{"type":49,"value":1025},{"type":44,"tag":403,"props":1096,"children":1097},{"style":955},[1098],{"type":49,"value":1099},"N",{"type":44,"tag":403,"props":1101,"children":1102},{"style":949},[1103],{"type":49,"value":1104},"]",{"type":44,"tag":403,"props":1106,"children":1107},{"style":943},[1108],{"type":49,"value":1109}," REQUIRED | ",{"type":44,"tag":403,"props":1111,"children":1112},{"style":949},[1113],{"type":49,"value":1114},"[",{"type":44,"tag":403,"props":1116,"children":1117},{"style":955},[1118],{"type":49,"value":1099},{"type":44,"tag":403,"props":1120,"children":1121},{"style":949},[1122],{"type":49,"value":1104},{"type":44,"tag":403,"props":1124,"children":1125},{"style":943},[1126],{"type":49,"value":1127}," ADVISABLE\n",{"type":44,"tag":403,"props":1129,"children":1131},{"class":938,"line":1130},8,[1132],{"type":44,"tag":403,"props":1133,"children":1134},{"emptyLinePlaceholder":974},[1135],{"type":49,"value":977},{"type":44,"tag":403,"props":1137,"children":1139},{"class":938,"line":1138},9,[1140],{"type":44,"tag":403,"props":1141,"children":1142},{"style":949},[1143],{"type":49,"value":1144},"---\n",{"type":44,"tag":403,"props":1146,"children":1148},{"class":938,"line":1147},10,[1149],{"type":44,"tag":403,"props":1150,"children":1151},{"emptyLinePlaceholder":974},[1152],{"type":49,"value":977},{"type":44,"tag":403,"props":1154,"children":1156},{"class":938,"line":1155},11,[1157,1162],{"type":44,"tag":403,"props":1158,"children":1159},{"style":949},[1160],{"type":49,"value":1161},"## ",{"type":44,"tag":403,"props":1163,"children":1164},{"style":989},[1165],{"type":49,"value":1166},"REQUIRED updates\n",{"type":44,"tag":403,"props":1168,"children":1170},{"class":938,"line":1169},12,[1171],{"type":44,"tag":403,"props":1172,"children":1173},{"emptyLinePlaceholder":974},[1174],{"type":49,"value":977},{"type":44,"tag":403,"props":1176,"children":1178},{"class":938,"line":1177},13,[1179,1184],{"type":44,"tag":403,"props":1180,"children":1181},{"style":949},[1182],{"type":49,"value":1183},"### ",{"type":44,"tag":403,"props":1185,"children":1186},{"style":989},[1187],{"type":49,"value":1188},"[Gap 1 short name]\n",{"type":44,"tag":403,"props":1190,"children":1192},{"class":938,"line":1191},14,[1193],{"type":44,"tag":403,"props":1194,"children":1195},{"emptyLinePlaceholder":974},[1196],{"type":49,"value":977},{"type":44,"tag":403,"props":1198,"children":1200},{"class":938,"line":1199},15,[1201,1205,1210,1214],{"type":44,"tag":403,"props":1202,"children":1203},{"style":1007},[1204],{"type":49,"value":1010},{"type":44,"tag":403,"props":1206,"children":1207},{"style":1013},[1208],{"type":49,"value":1209},"Source:",{"type":44,"tag":403,"props":1211,"children":1212},{"style":1007},[1213],{"type":49,"value":1010},{"type":44,"tag":403,"props":1215,"children":1216},{"style":943},[1217],{"type":49,"value":1218}," [filename \u002F output type that triggered this]\n",{"type":44,"tag":403,"props":1220,"children":1222},{"class":938,"line":1221},16,[1223,1227,1232,1236],{"type":44,"tag":403,"props":1224,"children":1225},{"style":1007},[1226],{"type":49,"value":1010},{"type":44,"tag":403,"props":1228,"children":1229},{"style":1013},[1230],{"type":49,"value":1231},"What's happening:",{"type":44,"tag":403,"props":1233,"children":1234},{"style":1007},[1235],{"type":49,"value":1010},{"type":44,"tag":403,"props":1237,"children":1238},{"style":943},[1239],{"type":49,"value":1240}," [plain description of the new practice]\n",{"type":44,"tag":403,"props":1242,"children":1244},{"class":938,"line":1243},17,[1245,1249,1254,1258],{"type":44,"tag":403,"props":1246,"children":1247},{"style":1007},[1248],{"type":49,"value":1010},{"type":44,"tag":403,"props":1250,"children":1251},{"style":1013},[1252],{"type":49,"value":1253},"Current policy:",{"type":44,"tag":403,"props":1255,"children":1256},{"style":1007},[1257],{"type":49,"value":1010},{"type":44,"tag":403,"props":1259,"children":1260},{"style":943},[1261],{"type":49,"value":1262}," [quote the relevant section — or \"No coverage\"]\n",{"type":44,"tag":403,"props":1264,"children":1266},{"class":938,"line":1265},18,[1267,1271,1276,1280],{"type":44,"tag":403,"props":1268,"children":1269},{"style":1007},[1270],{"type":49,"value":1010},{"type":44,"tag":403,"props":1272,"children":1273},{"style":1013},[1274],{"type":49,"value":1275},"Gap:",{"type":44,"tag":403,"props":1277,"children":1278},{"style":1007},[1279],{"type":49,"value":1010},{"type":44,"tag":403,"props":1281,"children":1282},{"style":943},[1283],{"type":49,"value":1284}," [what's missing or inconsistent]\n",{"type":44,"tag":403,"props":1286,"children":1288},{"class":938,"line":1287},19,[1289],{"type":44,"tag":403,"props":1290,"children":1291},{"emptyLinePlaceholder":974},[1292],{"type":49,"value":977},{"type":44,"tag":403,"props":1294,"children":1296},{"class":938,"line":1295},20,[1297,1301,1306],{"type":44,"tag":403,"props":1298,"children":1299},{"style":1007},[1300],{"type":49,"value":1010},{"type":44,"tag":403,"props":1302,"children":1303},{"style":1013},[1304],{"type":49,"value":1305},"Suggested language:",{"type":44,"tag":403,"props":1307,"children":1308},{"style":1007},[1309],{"type":49,"value":1310},"**\n",{"type":44,"tag":403,"props":1312,"children":1314},{"class":938,"line":1313},21,[1315,1321,1327,1333],{"type":44,"tag":403,"props":1316,"children":1318},{"style":1317},"--shiki-light:#FF5370;--shiki-light-font-style:italic;--shiki-default:#FF9CAC;--shiki-default-font-style:italic;--shiki-dark:#FF9CAC;--shiki-dark-font-style:italic",[1319],{"type":49,"value":1320},">",{"type":44,"tag":403,"props":1322,"children":1324},{"style":1323},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[1325],{"type":49,"value":1326}," *",{"type":44,"tag":403,"props":1328,"children":1330},{"style":1329},"--shiki-light:#E53935;--shiki-light-font-style:italic;--shiki-default:#F07178;--shiki-default-font-style:italic;--shiki-dark:#F07178;--shiki-dark-font-style:italic",[1331],{"type":49,"value":1332},"Add to [section name]:",{"type":44,"tag":403,"props":1334,"children":1335},{"style":1323},[1336],{"type":49,"value":1337},"*\n",{"type":44,"tag":403,"props":1339,"children":1341},{"class":938,"line":1340},22,[1342,1346],{"type":44,"tag":403,"props":1343,"children":1344},{"style":1317},[1345],{"type":49,"value":1320},{"type":44,"tag":403,"props":1347,"children":1348},{"style":1323},[1349],{"type":49,"value":1350}," \"[Drafted policy text — specific, consistent with house style of the actual policy]\"\n",{"type":44,"tag":403,"props":1352,"children":1354},{"class":938,"line":1353},23,[1355],{"type":44,"tag":403,"props":1356,"children":1357},{"emptyLinePlaceholder":974},[1358],{"type":49,"value":977},{"type":44,"tag":403,"props":1360,"children":1362},{"class":938,"line":1361},24,[1363],{"type":44,"tag":403,"props":1364,"children":1365},{"style":943},[1366],{"type":49,"value":1144},{"type":44,"tag":403,"props":1368,"children":1370},{"class":938,"line":1369},25,[1371],{"type":44,"tag":403,"props":1372,"children":1373},{"emptyLinePlaceholder":974},[1374],{"type":49,"value":977},{"type":44,"tag":403,"props":1376,"children":1378},{"class":938,"line":1377},26,[1379],{"type":44,"tag":403,"props":1380,"children":1381},{"style":943},[1382],{"type":49,"value":1383},"[repeat for each REQUIRED gap]\n",{"type":44,"tag":403,"props":1385,"children":1387},{"class":938,"line":1386},27,[1388],{"type":44,"tag":403,"props":1389,"children":1390},{"emptyLinePlaceholder":974},[1391],{"type":49,"value":977},{"type":44,"tag":403,"props":1393,"children":1395},{"class":938,"line":1394},28,[1396],{"type":44,"tag":403,"props":1397,"children":1398},{"style":949},[1399],{"type":49,"value":1144},{"type":44,"tag":403,"props":1401,"children":1403},{"class":938,"line":1402},29,[1404],{"type":44,"tag":403,"props":1405,"children":1406},{"emptyLinePlaceholder":974},[1407],{"type":49,"value":977},{"type":44,"tag":403,"props":1409,"children":1411},{"class":938,"line":1410},30,[1412,1416],{"type":44,"tag":403,"props":1413,"children":1414},{"style":949},[1415],{"type":49,"value":1161},{"type":44,"tag":403,"props":1417,"children":1418},{"style":989},[1419],{"type":49,"value":1420},"ADVISABLE updates\n",{"type":44,"tag":403,"props":1422,"children":1424},{"class":938,"line":1423},31,[1425],{"type":44,"tag":403,"props":1426,"children":1427},{"emptyLinePlaceholder":974},[1428],{"type":49,"value":977},{"type":44,"tag":403,"props":1430,"children":1432},{"class":938,"line":1431},32,[1433,1437],{"type":44,"tag":403,"props":1434,"children":1435},{"style":949},[1436],{"type":49,"value":1183},{"type":44,"tag":403,"props":1438,"children":1439},{"style":989},[1440],{"type":49,"value":1441},"[Gap name]\n",{"type":44,"tag":403,"props":1443,"children":1445},{"class":938,"line":1444},33,[1446],{"type":44,"tag":403,"props":1447,"children":1448},{"emptyLinePlaceholder":974},[1449],{"type":49,"value":977},{"type":44,"tag":403,"props":1451,"children":1453},{"class":938,"line":1452},34,[1454,1458,1462,1466,1470,1475],{"type":44,"tag":403,"props":1455,"children":1456},{"style":1007},[1457],{"type":49,"value":1010},{"type":44,"tag":403,"props":1459,"children":1460},{"style":1013},[1461],{"type":49,"value":1209},{"type":44,"tag":403,"props":1463,"children":1464},{"style":1007},[1465],{"type":49,"value":1010},{"type":44,"tag":403,"props":1467,"children":1468},{"style":949},[1469],{"type":49,"value":1025},{"type":44,"tag":403,"props":1471,"children":1472},{"style":955},[1473],{"type":49,"value":1474},"filename",{"type":44,"tag":403,"props":1476,"children":1477},{"style":949},[1478],{"type":49,"value":967},{"type":44,"tag":403,"props":1480,"children":1482},{"class":938,"line":1481},35,[1483,1487,1491,1495,1499,1504],{"type":44,"tag":403,"props":1484,"children":1485},{"style":1007},[1486],{"type":49,"value":1010},{"type":44,"tag":403,"props":1488,"children":1489},{"style":1013},[1490],{"type":49,"value":1231},{"type":44,"tag":403,"props":1492,"children":1493},{"style":1007},[1494],{"type":49,"value":1010},{"type":44,"tag":403,"props":1496,"children":1497},{"style":949},[1498],{"type":49,"value":1025},{"type":44,"tag":403,"props":1500,"children":1501},{"style":955},[1502],{"type":49,"value":1503},"description",{"type":44,"tag":403,"props":1505,"children":1506},{"style":949},[1507],{"type":49,"value":967},{"type":44,"tag":403,"props":1509,"children":1511},{"class":938,"line":1510},36,[1512,1516,1520,1524],{"type":44,"tag":403,"props":1513,"children":1514},{"style":1007},[1515],{"type":49,"value":1010},{"type":44,"tag":403,"props":1517,"children":1518},{"style":1013},[1519],{"type":49,"value":1253},{"type":44,"tag":403,"props":1521,"children":1522},{"style":1007},[1523],{"type":49,"value":1010},{"type":44,"tag":403,"props":1525,"children":1526},{"style":943},[1527],{"type":49,"value":1528}," [quote or \"Silent\"]\n",{"type":44,"tag":403,"props":1530,"children":1532},{"class":938,"line":1531},37,[1533,1537,1541],{"type":44,"tag":403,"props":1534,"children":1535},{"style":1007},[1536],{"type":49,"value":1010},{"type":44,"tag":403,"props":1538,"children":1539},{"style":1013},[1540],{"type":49,"value":1305},{"type":44,"tag":403,"props":1542,"children":1543},{"style":1007},[1544],{"type":49,"value":1310},{"type":44,"tag":403,"props":1546,"children":1548},{"class":938,"line":1547},38,[1549,1553,1557,1562,1566,1572,1576,1580],{"type":44,"tag":403,"props":1550,"children":1551},{"style":1317},[1552],{"type":49,"value":1320},{"type":44,"tag":403,"props":1554,"children":1555},{"style":1323},[1556],{"type":49,"value":1326},{"type":44,"tag":403,"props":1558,"children":1559},{"style":1329},[1560],{"type":49,"value":1561},"Add to \u002F update ",{"type":44,"tag":403,"props":1563,"children":1564},{"style":1323},[1565],{"type":49,"value":1114},{"type":44,"tag":403,"props":1567,"children":1569},{"style":1568},"--shiki-light:#91B859;--shiki-light-font-style:italic;--shiki-default:#C3E88D;--shiki-default-font-style:italic;--shiki-dark:#C3E88D;--shiki-dark-font-style:italic",[1570],{"type":49,"value":1571},"section",{"type":44,"tag":403,"props":1573,"children":1574},{"style":1323},[1575],{"type":49,"value":1104},{"type":44,"tag":403,"props":1577,"children":1578},{"style":1329},[1579],{"type":49,"value":237},{"type":44,"tag":403,"props":1581,"children":1582},{"style":1323},[1583],{"type":49,"value":1337},{"type":44,"tag":403,"props":1585,"children":1587},{"class":938,"line":1586},39,[1588,1592],{"type":44,"tag":403,"props":1589,"children":1590},{"style":1317},[1591],{"type":49,"value":1320},{"type":44,"tag":403,"props":1593,"children":1594},{"style":1323},[1595],{"type":49,"value":1596}," \"[Drafted text]\"\n",{"type":44,"tag":403,"props":1598,"children":1600},{"class":938,"line":1599},40,[1601],{"type":44,"tag":403,"props":1602,"children":1603},{"emptyLinePlaceholder":974},[1604],{"type":49,"value":977},{"type":44,"tag":403,"props":1606,"children":1608},{"class":938,"line":1607},41,[1609],{"type":44,"tag":403,"props":1610,"children":1611},{"style":943},[1612],{"type":49,"value":1144},{"type":44,"tag":403,"props":1614,"children":1616},{"class":938,"line":1615},42,[1617],{"type":44,"tag":403,"props":1618,"children":1619},{"emptyLinePlaceholder":974},[1620],{"type":49,"value":977},{"type":44,"tag":403,"props":1622,"children":1624},{"class":938,"line":1623},43,[1625,1629],{"type":44,"tag":403,"props":1626,"children":1627},{"style":949},[1628],{"type":49,"value":1161},{"type":44,"tag":403,"props":1630,"children":1631},{"style":989},[1632],{"type":49,"value":1633},"No action needed\n",{"type":44,"tag":403,"props":1635,"children":1637},{"class":938,"line":1636},44,[1638],{"type":44,"tag":403,"props":1639,"children":1640},{"emptyLinePlaceholder":974},[1641],{"type":49,"value":977},{"type":44,"tag":403,"props":1643,"children":1645},{"class":938,"line":1644},45,[1646],{"type":44,"tag":403,"props":1647,"children":1648},{"style":943},[1649],{"type":49,"value":1650},"[List outputs scanned where no gaps were found — confirms they were reviewed]\n",{"type":44,"tag":403,"props":1652,"children":1654},{"class":938,"line":1653},46,[1655],{"type":44,"tag":403,"props":1656,"children":1657},{"emptyLinePlaceholder":974},[1658],{"type":49,"value":977},{"type":44,"tag":403,"props":1660,"children":1662},{"class":938,"line":1661},47,[1663],{"type":44,"tag":403,"props":1664,"children":1665},{"style":949},[1666],{"type":49,"value":1144},{"type":44,"tag":403,"props":1668,"children":1670},{"class":938,"line":1669},48,[1671],{"type":44,"tag":403,"props":1672,"children":1673},{"emptyLinePlaceholder":974},[1674],{"type":49,"value":977},{"type":44,"tag":403,"props":1676,"children":1678},{"class":938,"line":1677},49,[1679,1683],{"type":44,"tag":403,"props":1680,"children":1681},{"style":949},[1682],{"type":49,"value":1161},{"type":44,"tag":403,"props":1684,"children":1685},{"style":989},[1686],{"type":49,"value":1687},"Next steps\n",{"type":44,"tag":403,"props":1689,"children":1691},{"class":938,"line":1690},50,[1692],{"type":44,"tag":403,"props":1693,"children":1694},{"emptyLinePlaceholder":974},[1695],{"type":49,"value":977},{"type":44,"tag":403,"props":1697,"children":1699},{"class":938,"line":1698},51,[1700,1705],{"type":44,"tag":403,"props":1701,"children":1702},{"style":949},[1703],{"type":49,"value":1704},"-",{"type":44,"tag":403,"props":1706,"children":1707},{"style":943},[1708],{"type":49,"value":1709}," [ ] Review REQUIRED updates — each needs a decision before the associated\n",{"type":44,"tag":403,"props":1711,"children":1713},{"class":938,"line":1712},52,[1714],{"type":44,"tag":403,"props":1715,"children":1716},{"style":943},[1717],{"type":49,"value":1718},"  feature\u002Fprocessing goes live (or immediately if already live)\n",{"type":44,"tag":403,"props":1720,"children":1722},{"class":938,"line":1721},53,[1723,1727],{"type":44,"tag":403,"props":1724,"children":1725},{"style":949},[1726],{"type":49,"value":1704},{"type":44,"tag":403,"props":1728,"children":1729},{"style":943},[1730],{"type":49,"value":1731}," [ ] Review ADVISABLE updates — lower urgency but worth addressing at next\n",{"type":44,"tag":403,"props":1733,"children":1735},{"class":938,"line":1734},54,[1736],{"type":44,"tag":403,"props":1737,"children":1738},{"style":943},[1739],{"type":49,"value":1740},"  policy refresh\n",{"type":44,"tag":403,"props":1742,"children":1744},{"class":938,"line":1743},55,[1745,1749,1754,1758,1762],{"type":44,"tag":403,"props":1746,"children":1747},{"style":949},[1748],{"type":49,"value":1704},{"type":44,"tag":403,"props":1750,"children":1751},{"style":943},[1752],{"type":49,"value":1753}," [ ] Next scheduled sweep: ",{"type":44,"tag":403,"props":1755,"children":1756},{"style":949},[1757],{"type":49,"value":1114},{"type":44,"tag":403,"props":1759,"children":1760},{"style":955},[1761],{"type":49,"value":407},{"type":44,"tag":403,"props":1763,"children":1764},{"style":949},[1765],{"type":49,"value":967},{"type":44,"tag":187,"props":1767,"children":1768},{},[],{"type":44,"tag":197,"props":1770,"children":1772},{"id":1771},"mode-2-direct-query",[1773],{"type":49,"value":1774},"Mode 2: Direct query",{"type":44,"tag":338,"props":1776,"children":1778},{"id":1777},"parse-the-proposed-practice",[1779],{"type":49,"value":1780},"Parse the proposed practice",{"type":44,"tag":52,"props":1782,"children":1783},{},[1784],{"type":49,"value":1785},"Extract from the user's description:",{"type":44,"tag":239,"props":1787,"children":1788},{},[1789,1794,1799,1804,1809,1814],{"type":44,"tag":77,"props":1790,"children":1791},{},[1792],{"type":49,"value":1793},"What data is being collected or processed?",{"type":44,"tag":77,"props":1795,"children":1796},{},[1797],{"type":49,"value":1798},"What's the purpose?",{"type":44,"tag":77,"props":1800,"children":1801},{},[1802],{"type":49,"value":1803},"Who else is involved (vendors, partners, third parties)?",{"type":44,"tag":77,"props":1805,"children":1806},{},[1807],{"type":49,"value":1808},"Who are the data subjects?",{"type":44,"tag":77,"props":1810,"children":1811},{},[1812],{"type":49,"value":1813},"Is there any automated decision-making?",{"type":44,"tag":77,"props":1815,"children":1816},{},[1817],{"type":49,"value":1818},"Any new disclosure to data subjects required?",{"type":44,"tag":52,"props":1820,"children":1821},{},[1822],{"type":49,"value":1823},"If the description is vague, ask one clarifying question before proceeding. Don't\nrun a long intake — this mode should be fast.",{"type":44,"tag":338,"props":1825,"children":1827},{"id":1826},"policy-diff",[1828],{"type":49,"value":1829},"Policy diff",{"type":44,"tag":52,"props":1831,"children":1832},{},[1833],{"type":49,"value":1834},"Check the proposed practice against every relevant section of the current policy:",{"type":44,"tag":447,"props":1836,"children":1837},{},[1838,1864],{"type":44,"tag":451,"props":1839,"children":1840},{},[1841],{"type":44,"tag":455,"props":1842,"children":1843},{},[1844,1849,1854,1859],{"type":44,"tag":459,"props":1845,"children":1846},{},[1847],{"type":49,"value":1848},"Check",{"type":44,"tag":459,"props":1850,"children":1851},{},[1852],{"type":49,"value":1853},"Current policy says",{"type":44,"tag":459,"props":1855,"children":1856},{},[1857],{"type":49,"value":1858},"Proposed practice",{"type":44,"tag":459,"props":1860,"children":1861},{},[1862],{"type":49,"value":1863},"Verdict",{"type":44,"tag":475,"props":1865,"children":1866},{},[1867,1896,1923,1950,1977,2004],{"type":44,"tag":455,"props":1868,"children":1869},{},[1870,1875,1883,1891],{"type":44,"tag":482,"props":1871,"children":1872},{},[1873],{"type":49,"value":1874},"Data categories",{"type":44,"tag":482,"props":1876,"children":1877},{},[1878],{"type":44,"tag":403,"props":1879,"children":1880},{},[1881],{"type":49,"value":1882},"what policy lists",{"type":44,"tag":482,"props":1884,"children":1885},{},[1886],{"type":44,"tag":403,"props":1887,"children":1888},{},[1889],{"type":49,"value":1890},"new category if any",{"type":44,"tag":482,"props":1892,"children":1893},{},[1894],{"type":49,"value":1895},"🟢 Covered \u002F 🟡 Gap \u002F 🔴 Conflict",{"type":44,"tag":455,"props":1897,"children":1898},{},[1899,1904,1912,1920],{"type":44,"tag":482,"props":1900,"children":1901},{},[1902],{"type":49,"value":1903},"Purposes",{"type":44,"tag":482,"props":1905,"children":1906},{},[1907],{"type":44,"tag":403,"props":1908,"children":1909},{},[1910],{"type":49,"value":1911},"stated purposes",{"type":44,"tag":482,"props":1913,"children":1914},{},[1915],{"type":44,"tag":403,"props":1916,"children":1917},{},[1918],{"type":49,"value":1919},"new purpose",{"type":44,"tag":482,"props":1921,"children":1922},{},[],{"type":44,"tag":455,"props":1924,"children":1925},{},[1926,1931,1939,1947],{"type":44,"tag":482,"props":1927,"children":1928},{},[1929],{"type":49,"value":1930},"Third parties \u002F subprocessors",{"type":44,"tag":482,"props":1932,"children":1933},{},[1934],{"type":44,"tag":403,"props":1935,"children":1936},{},[1937],{"type":49,"value":1938},"stated parties",{"type":44,"tag":482,"props":1940,"children":1941},{},[1942],{"type":44,"tag":403,"props":1943,"children":1944},{},[1945],{"type":49,"value":1946},"new party if any",{"type":44,"tag":482,"props":1948,"children":1949},{},[],{"type":44,"tag":455,"props":1951,"children":1952},{},[1953,1958,1966,1974],{"type":44,"tag":482,"props":1954,"children":1955},{},[1956],{"type":49,"value":1957},"Retention",{"type":44,"tag":482,"props":1959,"children":1960},{},[1961],{"type":44,"tag":403,"props":1962,"children":1963},{},[1964],{"type":49,"value":1965},"retention commitment",{"type":44,"tag":482,"props":1967,"children":1968},{},[1969],{"type":44,"tag":403,"props":1970,"children":1971},{},[1972],{"type":49,"value":1973},"implied retention",{"type":44,"tag":482,"props":1975,"children":1976},{},[],{"type":44,"tag":455,"props":1978,"children":1979},{},[1980,1985,1993,2001],{"type":44,"tag":482,"props":1981,"children":1982},{},[1983],{"type":49,"value":1984},"User rights",{"type":44,"tag":482,"props":1986,"children":1987},{},[1988],{"type":44,"tag":403,"props":1989,"children":1990},{},[1991],{"type":49,"value":1992},"rights offered",{"type":44,"tag":482,"props":1994,"children":1995},{},[1996],{"type":44,"tag":403,"props":1997,"children":1998},{},[1999],{"type":49,"value":2000},"any new rights implications",{"type":44,"tag":482,"props":2002,"children":2003},{},[],{"type":44,"tag":455,"props":2005,"children":2006},{},[2007,2012,2020,2028],{"type":44,"tag":482,"props":2008,"children":2009},{},[2010],{"type":49,"value":2011},"Disclosure \u002F notice",{"type":44,"tag":482,"props":2013,"children":2014},{},[2015],{"type":44,"tag":403,"props":2016,"children":2017},{},[2018],{"type":49,"value":2019},"what policy says about telling users",{"type":44,"tag":482,"props":2021,"children":2022},{},[2023],{"type":44,"tag":403,"props":2024,"children":2025},{},[2026],{"type":49,"value":2027},"what this practice requires",{"type":44,"tag":482,"props":2029,"children":2030},{},[],{"type":44,"tag":338,"props":2032,"children":2034},{"id":2033},"direct-query-output-format",[2035],{"type":49,"value":2036},"Direct query output format",{"type":44,"tag":175,"props":2038,"children":2040},{"className":929,"code":2039,"language":931,"meta":183,"style":183},"[WORK-PRODUCT HEADER — per plugin config ## Outputs — differs by role; see `## Who's using this`]\n\n# Privacy Policy Check: [Proposed practice in one line]\n\n**Bottom line:** [POLICY UPDATE REQUIRED \u002F ADVISABLE \u002F NO UPDATE NEEDED]\n\n---\n\n## What's covered\n\n[List aspects of the proposed practice already addressed by the current policy —\nbrief, confirms they don't need to change]\n\n## What's missing\n\n### [Gap 1]\n\n**Current policy:** [quote or \"Silent\"]\n**What's needed:** [why this gap matters — legal, reputational, or consistency reason]\n\n**Suggested language:**\n> *Add to [section]:*\n> \"[Drafted text]\"\n\n### [Gap 2]\n[same format]\n\n## What conflicts\n\n### [Conflict 1 — if any]\n\n**Current policy says:** [quote]\n**Proposed practice does:** [what conflicts]\n**Resolution:** [which one needs to change and why — usually the practice adjusts\nto match the policy, or the policy gets updated to a defensible new position]\n\n---\n\n## Timing\n\n[If any gap is REQUIRED: \"Policy update should happen before this goes live.\"\nIf ADVISABLE: \"Can proceed; update at next policy refresh.\"]\n",[2041],{"type":44,"tag":64,"props":2042,"children":2043},{"__ignoreMap":183},[2044,2067,2074,2086,2093,2114,2121,2128,2135,2147,2154,2162,2170,2177,2189,2196,2208,2215,2234,2255,2262,2277,2313,2324,2331,2343,2351,2358,2370,2377,2389,2396,2425,2446,2467,2475,2482,2489,2496,2508,2515,2523],{"type":44,"tag":403,"props":2045,"children":2046},{"class":938,"line":939},[2047,2051,2055,2059,2063],{"type":44,"tag":403,"props":2048,"children":2049},{"style":943},[2050],{"type":49,"value":946},{"type":44,"tag":403,"props":2052,"children":2053},{"style":949},[2054],{"type":49,"value":952},{"type":44,"tag":403,"props":2056,"children":2057},{"style":955},[2058],{"type":49,"value":958},{"type":44,"tag":403,"props":2060,"children":2061},{"style":949},[2062],{"type":49,"value":952},{"type":44,"tag":403,"props":2064,"children":2065},{"style":943},[2066],{"type":49,"value":967},{"type":44,"tag":403,"props":2068,"children":2069},{"class":938,"line":970},[2070],{"type":44,"tag":403,"props":2071,"children":2072},{"emptyLinePlaceholder":974},[2073],{"type":49,"value":977},{"type":44,"tag":403,"props":2075,"children":2076},{"class":938,"line":980},[2077,2081],{"type":44,"tag":403,"props":2078,"children":2079},{"style":949},[2080],{"type":49,"value":986},{"type":44,"tag":403,"props":2082,"children":2083},{"style":989},[2084],{"type":49,"value":2085},"Privacy Policy Check: [Proposed practice in one line]\n",{"type":44,"tag":403,"props":2087,"children":2088},{"class":938,"line":995},[2089],{"type":44,"tag":403,"props":2090,"children":2091},{"emptyLinePlaceholder":974},[2092],{"type":49,"value":977},{"type":44,"tag":403,"props":2094,"children":2095},{"class":938,"line":1003},[2096,2100,2105,2109],{"type":44,"tag":403,"props":2097,"children":2098},{"style":1007},[2099],{"type":49,"value":1010},{"type":44,"tag":403,"props":2101,"children":2102},{"style":1013},[2103],{"type":49,"value":2104},"Bottom line:",{"type":44,"tag":403,"props":2106,"children":2107},{"style":1007},[2108],{"type":49,"value":1010},{"type":44,"tag":403,"props":2110,"children":2111},{"style":943},[2112],{"type":49,"value":2113}," [POLICY UPDATE REQUIRED \u002F ADVISABLE \u002F NO UPDATE NEEDED]\n",{"type":44,"tag":403,"props":2115,"children":2116},{"class":938,"line":1036},[2117],{"type":44,"tag":403,"props":2118,"children":2119},{"emptyLinePlaceholder":974},[2120],{"type":49,"value":977},{"type":44,"tag":403,"props":2122,"children":2123},{"class":938,"line":1076},[2124],{"type":44,"tag":403,"props":2125,"children":2126},{"style":949},[2127],{"type":49,"value":1144},{"type":44,"tag":403,"props":2129,"children":2130},{"class":938,"line":1130},[2131],{"type":44,"tag":403,"props":2132,"children":2133},{"emptyLinePlaceholder":974},[2134],{"type":49,"value":977},{"type":44,"tag":403,"props":2136,"children":2137},{"class":938,"line":1138},[2138,2142],{"type":44,"tag":403,"props":2139,"children":2140},{"style":949},[2141],{"type":49,"value":1161},{"type":44,"tag":403,"props":2143,"children":2144},{"style":989},[2145],{"type":49,"value":2146},"What's covered\n",{"type":44,"tag":403,"props":2148,"children":2149},{"class":938,"line":1147},[2150],{"type":44,"tag":403,"props":2151,"children":2152},{"emptyLinePlaceholder":974},[2153],{"type":49,"value":977},{"type":44,"tag":403,"props":2155,"children":2156},{"class":938,"line":1155},[2157],{"type":44,"tag":403,"props":2158,"children":2159},{"style":943},[2160],{"type":49,"value":2161},"[List aspects of the proposed practice already addressed by the current policy —\n",{"type":44,"tag":403,"props":2163,"children":2164},{"class":938,"line":1169},[2165],{"type":44,"tag":403,"props":2166,"children":2167},{"style":943},[2168],{"type":49,"value":2169},"brief, confirms they don't need to change]\n",{"type":44,"tag":403,"props":2171,"children":2172},{"class":938,"line":1177},[2173],{"type":44,"tag":403,"props":2174,"children":2175},{"emptyLinePlaceholder":974},[2176],{"type":49,"value":977},{"type":44,"tag":403,"props":2178,"children":2179},{"class":938,"line":1191},[2180,2184],{"type":44,"tag":403,"props":2181,"children":2182},{"style":949},[2183],{"type":49,"value":1161},{"type":44,"tag":403,"props":2185,"children":2186},{"style":989},[2187],{"type":49,"value":2188},"What's missing\n",{"type":44,"tag":403,"props":2190,"children":2191},{"class":938,"line":1199},[2192],{"type":44,"tag":403,"props":2193,"children":2194},{"emptyLinePlaceholder":974},[2195],{"type":49,"value":977},{"type":44,"tag":403,"props":2197,"children":2198},{"class":938,"line":1221},[2199,2203],{"type":44,"tag":403,"props":2200,"children":2201},{"style":949},[2202],{"type":49,"value":1183},{"type":44,"tag":403,"props":2204,"children":2205},{"style":989},[2206],{"type":49,"value":2207},"[Gap 1]\n",{"type":44,"tag":403,"props":2209,"children":2210},{"class":938,"line":1243},[2211],{"type":44,"tag":403,"props":2212,"children":2213},{"emptyLinePlaceholder":974},[2214],{"type":49,"value":977},{"type":44,"tag":403,"props":2216,"children":2217},{"class":938,"line":1265},[2218,2222,2226,2230],{"type":44,"tag":403,"props":2219,"children":2220},{"style":1007},[2221],{"type":49,"value":1010},{"type":44,"tag":403,"props":2223,"children":2224},{"style":1013},[2225],{"type":49,"value":1253},{"type":44,"tag":403,"props":2227,"children":2228},{"style":1007},[2229],{"type":49,"value":1010},{"type":44,"tag":403,"props":2231,"children":2232},{"style":943},[2233],{"type":49,"value":1528},{"type":44,"tag":403,"props":2235,"children":2236},{"class":938,"line":1287},[2237,2241,2246,2250],{"type":44,"tag":403,"props":2238,"children":2239},{"style":1007},[2240],{"type":49,"value":1010},{"type":44,"tag":403,"props":2242,"children":2243},{"style":1013},[2244],{"type":49,"value":2245},"What's needed:",{"type":44,"tag":403,"props":2247,"children":2248},{"style":1007},[2249],{"type":49,"value":1010},{"type":44,"tag":403,"props":2251,"children":2252},{"style":943},[2253],{"type":49,"value":2254}," [why this gap matters — legal, reputational, or consistency reason]\n",{"type":44,"tag":403,"props":2256,"children":2257},{"class":938,"line":1295},[2258],{"type":44,"tag":403,"props":2259,"children":2260},{"emptyLinePlaceholder":974},[2261],{"type":49,"value":977},{"type":44,"tag":403,"props":2263,"children":2264},{"class":938,"line":1313},[2265,2269,2273],{"type":44,"tag":403,"props":2266,"children":2267},{"style":1007},[2268],{"type":49,"value":1010},{"type":44,"tag":403,"props":2270,"children":2271},{"style":1013},[2272],{"type":49,"value":1305},{"type":44,"tag":403,"props":2274,"children":2275},{"style":1007},[2276],{"type":49,"value":1310},{"type":44,"tag":403,"props":2278,"children":2279},{"class":938,"line":1340},[2280,2284,2288,2293,2297,2301,2305,2309],{"type":44,"tag":403,"props":2281,"children":2282},{"style":1317},[2283],{"type":49,"value":1320},{"type":44,"tag":403,"props":2285,"children":2286},{"style":1323},[2287],{"type":49,"value":1326},{"type":44,"tag":403,"props":2289,"children":2290},{"style":1329},[2291],{"type":49,"value":2292},"Add to ",{"type":44,"tag":403,"props":2294,"children":2295},{"style":1323},[2296],{"type":49,"value":1114},{"type":44,"tag":403,"props":2298,"children":2299},{"style":1568},[2300],{"type":49,"value":1571},{"type":44,"tag":403,"props":2302,"children":2303},{"style":1323},[2304],{"type":49,"value":1104},{"type":44,"tag":403,"props":2306,"children":2307},{"style":1329},[2308],{"type":49,"value":237},{"type":44,"tag":403,"props":2310,"children":2311},{"style":1323},[2312],{"type":49,"value":1337},{"type":44,"tag":403,"props":2314,"children":2315},{"class":938,"line":1353},[2316,2320],{"type":44,"tag":403,"props":2317,"children":2318},{"style":1317},[2319],{"type":49,"value":1320},{"type":44,"tag":403,"props":2321,"children":2322},{"style":1323},[2323],{"type":49,"value":1596},{"type":44,"tag":403,"props":2325,"children":2326},{"class":938,"line":1361},[2327],{"type":44,"tag":403,"props":2328,"children":2329},{"emptyLinePlaceholder":974},[2330],{"type":49,"value":977},{"type":44,"tag":403,"props":2332,"children":2333},{"class":938,"line":1369},[2334,2338],{"type":44,"tag":403,"props":2335,"children":2336},{"style":949},[2337],{"type":49,"value":1183},{"type":44,"tag":403,"props":2339,"children":2340},{"style":989},[2341],{"type":49,"value":2342},"[Gap 2]\n",{"type":44,"tag":403,"props":2344,"children":2345},{"class":938,"line":1377},[2346],{"type":44,"tag":403,"props":2347,"children":2348},{"style":943},[2349],{"type":49,"value":2350},"[same format]\n",{"type":44,"tag":403,"props":2352,"children":2353},{"class":938,"line":1386},[2354],{"type":44,"tag":403,"props":2355,"children":2356},{"emptyLinePlaceholder":974},[2357],{"type":49,"value":977},{"type":44,"tag":403,"props":2359,"children":2360},{"class":938,"line":1394},[2361,2365],{"type":44,"tag":403,"props":2362,"children":2363},{"style":949},[2364],{"type":49,"value":1161},{"type":44,"tag":403,"props":2366,"children":2367},{"style":989},[2368],{"type":49,"value":2369},"What conflicts\n",{"type":44,"tag":403,"props":2371,"children":2372},{"class":938,"line":1402},[2373],{"type":44,"tag":403,"props":2374,"children":2375},{"emptyLinePlaceholder":974},[2376],{"type":49,"value":977},{"type":44,"tag":403,"props":2378,"children":2379},{"class":938,"line":1410},[2380,2384],{"type":44,"tag":403,"props":2381,"children":2382},{"style":949},[2383],{"type":49,"value":1183},{"type":44,"tag":403,"props":2385,"children":2386},{"style":989},[2387],{"type":49,"value":2388},"[Conflict 1 — if any]\n",{"type":44,"tag":403,"props":2390,"children":2391},{"class":938,"line":1423},[2392],{"type":44,"tag":403,"props":2393,"children":2394},{"emptyLinePlaceholder":974},[2395],{"type":49,"value":977},{"type":44,"tag":403,"props":2397,"children":2398},{"class":938,"line":1431},[2399,2403,2408,2412,2416,2421],{"type":44,"tag":403,"props":2400,"children":2401},{"style":1007},[2402],{"type":49,"value":1010},{"type":44,"tag":403,"props":2404,"children":2405},{"style":1013},[2406],{"type":49,"value":2407},"Current policy says:",{"type":44,"tag":403,"props":2409,"children":2410},{"style":1007},[2411],{"type":49,"value":1010},{"type":44,"tag":403,"props":2413,"children":2414},{"style":949},[2415],{"type":49,"value":1025},{"type":44,"tag":403,"props":2417,"children":2418},{"style":955},[2419],{"type":49,"value":2420},"quote",{"type":44,"tag":403,"props":2422,"children":2423},{"style":949},[2424],{"type":49,"value":967},{"type":44,"tag":403,"props":2426,"children":2427},{"class":938,"line":1444},[2428,2432,2437,2441],{"type":44,"tag":403,"props":2429,"children":2430},{"style":1007},[2431],{"type":49,"value":1010},{"type":44,"tag":403,"props":2433,"children":2434},{"style":1013},[2435],{"type":49,"value":2436},"Proposed practice does:",{"type":44,"tag":403,"props":2438,"children":2439},{"style":1007},[2440],{"type":49,"value":1010},{"type":44,"tag":403,"props":2442,"children":2443},{"style":943},[2444],{"type":49,"value":2445}," [what conflicts]\n",{"type":44,"tag":403,"props":2447,"children":2448},{"class":938,"line":1452},[2449,2453,2458,2462],{"type":44,"tag":403,"props":2450,"children":2451},{"style":1007},[2452],{"type":49,"value":1010},{"type":44,"tag":403,"props":2454,"children":2455},{"style":1013},[2456],{"type":49,"value":2457},"Resolution:",{"type":44,"tag":403,"props":2459,"children":2460},{"style":1007},[2461],{"type":49,"value":1010},{"type":44,"tag":403,"props":2463,"children":2464},{"style":943},[2465],{"type":49,"value":2466}," [which one needs to change and why — usually the practice adjusts\n",{"type":44,"tag":403,"props":2468,"children":2469},{"class":938,"line":1481},[2470],{"type":44,"tag":403,"props":2471,"children":2472},{"style":943},[2473],{"type":49,"value":2474},"to match the policy, or the policy gets updated to a defensible new position]\n",{"type":44,"tag":403,"props":2476,"children":2477},{"class":938,"line":1510},[2478],{"type":44,"tag":403,"props":2479,"children":2480},{"emptyLinePlaceholder":974},[2481],{"type":49,"value":977},{"type":44,"tag":403,"props":2483,"children":2484},{"class":938,"line":1531},[2485],{"type":44,"tag":403,"props":2486,"children":2487},{"style":949},[2488],{"type":49,"value":1144},{"type":44,"tag":403,"props":2490,"children":2491},{"class":938,"line":1547},[2492],{"type":44,"tag":403,"props":2493,"children":2494},{"emptyLinePlaceholder":974},[2495],{"type":49,"value":977},{"type":44,"tag":403,"props":2497,"children":2498},{"class":938,"line":1586},[2499,2503],{"type":44,"tag":403,"props":2500,"children":2501},{"style":949},[2502],{"type":49,"value":1161},{"type":44,"tag":403,"props":2504,"children":2505},{"style":989},[2506],{"type":49,"value":2507},"Timing\n",{"type":44,"tag":403,"props":2509,"children":2510},{"class":938,"line":1599},[2511],{"type":44,"tag":403,"props":2512,"children":2513},{"emptyLinePlaceholder":974},[2514],{"type":49,"value":977},{"type":44,"tag":403,"props":2516,"children":2517},{"class":938,"line":1607},[2518],{"type":44,"tag":403,"props":2519,"children":2520},{"style":943},[2521],{"type":49,"value":2522},"[If any gap is REQUIRED: \"Policy update should happen before this goes live.\"\n",{"type":44,"tag":403,"props":2524,"children":2525},{"class":938,"line":1615},[2526],{"type":44,"tag":403,"props":2527,"children":2528},{"style":943},[2529],{"type":49,"value":2530},"If ADVISABLE: \"Can proceed; update at next policy refresh.\"]\n",{"type":44,"tag":187,"props":2532,"children":2533},{},[],{"type":44,"tag":197,"props":2535,"children":2537},{"id":2536},"suggested-language-quality-standards",[2538],{"type":49,"value":2539},"Suggested language quality standards",{"type":44,"tag":52,"props":2541,"children":2542},{},[2543],{"type":49,"value":2544},"Policy language should:",{"type":44,"tag":239,"props":2546,"children":2547},{},[2548,2553,2558,2563],{"type":44,"tag":77,"props":2549,"children":2550},{},[2551],{"type":49,"value":2552},"Match the voice and style of the existing policy (read the actual document, not\njust the config CLAUDE.md summary, before drafting)",{"type":44,"tag":77,"props":2554,"children":2555},{},[2556],{"type":49,"value":2557},"Be specific enough to be meaningful but not so specific that routine changes\nbreak it (\"service providers who assist us in operating our business\" ages better\nthan naming every vendor)",{"type":44,"tag":77,"props":2559,"children":2560},{},[2561],{"type":49,"value":2562},"Not make commitments the team can't keep (e.g., don't draft \"we will never share\nlocation data\" if the architecture has that data flowing to an analytics vendor)",{"type":44,"tag":77,"props":2564,"children":2565},{},[2566],{"type":49,"value":2567},"Flag where a broader policy position change might be needed, not just a\nsentence addition",{"type":44,"tag":52,"props":2569,"children":2570},{},[2571],{"type":49,"value":2572},"When drafting, always say which section to add to. If the right section doesn't\nexist, say so and suggest creating it.",{"type":44,"tag":187,"props":2574,"children":2575},{},[],{"type":44,"tag":197,"props":2577,"children":2579},{"id":2578},"schedule-integration",[2580],{"type":49,"value":2581},"Schedule integration",{"type":44,"tag":52,"props":2583,"children":2584},{},[2585,2587,2592],{"type":49,"value":2586},"Set up a recurring reminder in your own scheduler (calendar, task manager, or CI)\nto run ",{"type":44,"tag":64,"props":2588,"children":2590},{"className":2589},[],[2591],{"type":49,"value":171},{"type":49,"value":2593}," weekly. Scheduled execution requires a\nscheduled-tasks integration, which is not bundled with this plugin.",{"type":44,"tag":52,"props":2595,"children":2596},{},[2597,2599,2604,2605,2609,2611,2616],{"type":49,"value":2598},"Whenever the sweep runs, it updates ",{"type":44,"tag":64,"props":2600,"children":2602},{"className":2601},[],[2603],{"type":49,"value":280},{"type":49,"value":252},{"type":44,"tag":56,"props":2606,"children":2607},{},[2608],{"type":49,"value":737},{"type":49,"value":2610}," in\n",{"type":44,"tag":64,"props":2612,"children":2614},{"className":2613},[],[2615],{"type":49,"value":87},{"type":49,"value":2617},", so the next sweep only looks at new files.",{"type":44,"tag":187,"props":2619,"children":2620},{},[],{"type":44,"tag":197,"props":2622,"children":2624},{"id":2623},"close-with-the-next-steps-decision-tree",[2625],{"type":49,"value":2626},"Close with the next-steps decision tree",{"type":44,"tag":52,"props":2628,"children":2629},{},[2630,2632,2637],{"type":49,"value":2631},"End with the next-steps decision tree per CLAUDE.md ",{"type":44,"tag":64,"props":2633,"children":2635},{"className":2634},[],[2636],{"type":49,"value":280},{"type":49,"value":2638},". Customize the options to what this skill just produced — the five default branches (draft the X, escalate, get more facts, watch and wait, something else) are a starting point, not a lock-in. The tree is the output; the lawyer picks.",{"type":44,"tag":52,"props":2640,"children":2641},{},[2642,2644,2650],{"type":49,"value":2643},"If the sweep surfaced more than ~10 drift findings, or any time the user asks: offer the dashboard (see CLAUDE.md ",{"type":44,"tag":64,"props":2645,"children":2647},{"className":2646},[],[2648],{"type":49,"value":2649},"## Outputs → Dashboard offer for data-heavy outputs",{"type":49,"value":2651},"). Shape the offer for this output — counts by surface (policy clause \u002F PIA \u002F DPA \u002F triage), counts by severity, and a sortable grid of findings with source artifact and recommended remediation.",{"type":44,"tag":197,"props":2653,"children":2655},{"id":2654},"what-this-skill-does-not-do",[2656],{"type":49,"value":2657},"What this skill does not do",{"type":44,"tag":239,"props":2659,"children":2660},{},[2661,2666,2679,2684],{"type":44,"tag":77,"props":2662,"children":2663},{},[2664],{"type":49,"value":2665},"It doesn't update the policy itself — it drafts suggested language and flags\ndecisions, but a human reviews and approves every change.",{"type":44,"tag":77,"props":2667,"children":2668},{},[2669,2671,2677],{"type":49,"value":2670},"It doesn't catch regulatory changes — that's ",{"type":44,"tag":64,"props":2672,"children":2674},{"className":2673},[],[2675],{"type":49,"value":2676},"reg-gap-analysis",{"type":49,"value":2678},". This skill\nmonitors internal practice drift, not external legal changes.",{"type":44,"tag":77,"props":2680,"children":2681},{},[2682],{"type":49,"value":2683},"It doesn't enforce that outputs are saved — if the team isn't saving PIAs to the\nconfigured folder, the sweep won't find them. The direct-query mode works without\nsaved outputs.",{"type":44,"tag":77,"props":2685,"children":2686},{},[2687],{"type":49,"value":2688},"It doesn't read email or Slack for informal decisions — only structured outputs\nsaved to the configured folder.",{"type":44,"tag":2690,"props":2691,"children":2692},"style",{},[2693],{"type":49,"value":2694},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":2696,"total":2790},[2697,2709,2726,2741,2753,2764,2775],{"slug":2698,"name":2698,"fn":2699,"description":2700,"org":2701,"tags":2702,"stars":26,"repoUrl":27,"updatedAt":2708},"ai-inventory","track AI systems for EU AI Act","EU AI Act per-system inventory — track each AI system's role (provider, deployer, importer, distributor, authorized representative, product manufacturer) and risk tier (prohibited, high-risk, limited, minimal, GPAI, GPAI+systemic). Role and tier are assessed per system, not per company. Use when the user says \"ai inventory\", \"add an ai system\", \"what systems do we have\", \"classify this ai system\", \"eu ai act register\", or \"ai system registry\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2703,2704,2707],{"name":14,"slug":15,"type":16},{"name":2705,"slug":2706,"type":16},"Governance","governance",{"name":21,"slug":22,"type":16},"2026-05-14T06:02:19.677579",{"slug":2710,"name":2710,"fn":2711,"description":2712,"org":2713,"tags":2714,"stars":26,"repoUrl":27,"updatedAt":2725},"ai-tool-handoff","manage handoff to bulk legal review tools","Detects when Luminance, Kira, or a similar bulk-review tool is in use, hands off the high-volume clause extraction to it, and QAs its output per the trust level in `~\u002F.claude\u002Fplugins\u002Fconfig\u002Fclaude-for-legal\u002Fcorporate-legal\u002FCLAUDE.md`. Use when user says \"send to Luminance\", \"bulk review\", \"AI extraction\", or when diligence-issue-extraction hits a high-volume category.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2715,2718,2721,2722],{"name":2716,"slug":2717,"type":16},"Automation","automation",{"name":2719,"slug":2720,"type":16},"Contracts","contracts",{"name":21,"slug":22,"type":16},{"name":2723,"slug":2724,"type":16},"QA","qa","2026-05-14T06:01:31.00555",{"slug":2727,"name":2727,"fn":2728,"description":2729,"org":2730,"tags":2731,"stars":26,"repoUrl":27,"updatedAt":2740},"aia-generation","run AI impact assessments","Run an AI impact assessment — structured intake, risk analysis, regulatory classification per regime in scope, policy consistency diff, and recommendation with conditions. Uses the house-style structure learned from the seed impact assessment in `~\u002F.claude\u002Fplugins\u002Fconfig\u002Fclaude-for-legal\u002Fai-governance-legal\u002FCLAUDE.md`. Use when user says \"impact assessment for\", \"assess this AI use case\", \"run an AIA\", \"generate an AIA\", \"we need to document this AI system\", \"AI risk assessment for X\", or follows a conditional triage result.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2732,2733,2734,2737],{"name":21,"slug":22,"type":16},{"name":18,"slug":19,"type":16},{"name":2735,"slug":2736,"type":16},"Regulatory Compliance","regulatory-compliance",{"name":2738,"slug":2739,"type":16},"Risk Assessment","risk-assessment","2026-05-13T06:03:19.61029",{"slug":2742,"name":2742,"fn":2743,"description":2744,"org":2745,"tags":2746,"stars":26,"repoUrl":27,"updatedAt":2752},"amendment-history","trace contract amendment history","Trace how a contract has changed across its base agreement and all amendments — either a summary of all changes over time, or a provision trace for a specific clause. Use when the user says \"what changed in this contract over time\", \"show me the amendment history\", \"where's the latest [clause]\", \"how has [provision] evolved\", or uploads multiple versions of an agreement.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2747,2748,2751],{"name":2719,"slug":2720,"type":16},{"name":2749,"slug":2750,"type":16},"Documents","documents",{"name":21,"slug":22,"type":16},"2026-05-13T06:03:34.070339",{"slug":2754,"name":2754,"fn":2755,"description":2756,"org":2757,"tags":2758,"stars":26,"repoUrl":27,"updatedAt":2763},"auto-updater","check for community skill updates","Check installed community skills for updates. Shows a diff and requires explicit approval before applying. Use when the user says \"check for updates\", \"update my skills\", \"anything new for my installed skills\", or when invoked from the registry-sync agent.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2759,2760],{"name":2716,"slug":2717,"type":16},{"name":2761,"slug":2762,"type":16},"Plugin Development","plugin-development","2026-05-13T06:02:55.642269",{"slug":2765,"name":2765,"fn":2766,"description":2767,"org":2768,"tags":2769,"stars":26,"repoUrl":27,"updatedAt":2774},"bar-prep-questions","provide bar exam practice questions","Bar prep questions — MBE or essay, targeted at your weak subjects and bar jurisdiction. Tracks misses and comes back to patterns. Use when the user says \"bar prep\", \"MBE questions\", \"practice essay\", or \"test me for the bar\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2770,2773],{"name":2771,"slug":2772,"type":16},"Education","education",{"name":21,"slug":22,"type":16},"2026-07-24T05:41:43.01243",{"slug":2776,"name":2776,"fn":2777,"description":2778,"org":2779,"tags":2780,"stars":26,"repoUrl":27,"updatedAt":2789},"board-minutes","draft board and committee meeting minutes","Drafts board or committee meeting minutes in your house format. Auto-detects upcoming board and committee meetings from your calendar, asks for the agenda and any slides or pre-read materials, and produces a complete draft in the format learned from your seed minutes. Also handles written consents in lieu of meetings. Trigger: \"board minutes\", \"draft minutes\", \"upcoming board meeting\", \"committee minutes\", \"written consent\", or calendar detection of an upcoming board or committee event.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2781,2784,2785,2786],{"name":2782,"slug":2783,"type":16},"Documentation","documentation",{"name":2705,"slug":2706,"type":16},{"name":21,"slug":22,"type":16},{"name":2787,"slug":2788,"type":16},"Meetings","meetings","2026-05-14T06:01:29.792942",118,{"items":2792,"total":2975},[2793,2814,2828,2840,2859,2870,2889,2909,2923,2938,2946,2959],{"slug":2794,"name":2794,"fn":2795,"description":2796,"org":2797,"tags":2798,"stars":2811,"repoUrl":2812,"updatedAt":2813},"algorithmic-art","create algorithmic art with p5.js","Creating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems. Create original algorithmic art rather than copying existing artists' work to avoid copyright violations.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2799,2802,2805,2808],{"name":2800,"slug":2801,"type":16},"Creative","creative",{"name":2803,"slug":2804,"type":16},"Design","design",{"name":2806,"slug":2807,"type":16},"Generative Art","generative-art",{"name":2809,"slug":2810,"type":16},"JavaScript","javascript",161831,"https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fskills","2026-04-06T17:56:15.455818",{"slug":2815,"name":2815,"fn":2816,"description":2817,"org":2818,"tags":2819,"stars":2811,"repoUrl":2812,"updatedAt":2827},"brand-guidelines","apply Anthropic brand colors and typography","Applies Anthropic's official brand colors and typography to any sort of artifact that may benefit from having Anthropic's look-and-feel. Use it when brand colors or style guidelines, visual formatting, or company design standards apply.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2820,2823,2824],{"name":2821,"slug":2822,"type":16},"Branding","branding",{"name":2803,"slug":2804,"type":16},{"name":2825,"slug":2826,"type":16},"Typography","typography","2026-04-06T17:56:05.042852",{"slug":2829,"name":2829,"fn":2830,"description":2831,"org":2832,"tags":2833,"stars":2811,"repoUrl":2812,"updatedAt":2839},"canvas-design","create posters and visual art as PNG or PDF","Create beautiful visual art in .png and .pdf documents using design philosophy. You should use this skill when the user asks to create a poster, piece of art, design, or other static piece. Create original visual designs, never copying existing artists' work to avoid copyright violations.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2834,2835,2836],{"name":2800,"slug":2801,"type":16},{"name":2803,"slug":2804,"type":16},{"name":2837,"slug":2838,"type":16},"PDF","pdf","2026-04-06T17:56:03.794732",{"slug":2841,"name":2841,"fn":2842,"description":2843,"org":2844,"tags":2845,"stars":2811,"repoUrl":2812,"updatedAt":2858},"claude-api","build apps with the Claude API","Reference for the Claude API \u002F Anthropic SDK — model ids, pricing, params, streaming, tool use, MCP, agents, caching, token counting, model migration.\nTRIGGER — read BEFORE opening the target file; don't skip because it \"looks like a one-liner\" — whenever: the prompt names Claude\u002FAnthropic in any form (Claude, Anthropic, Fable, Opus, Sonnet, Haiku, `anthropic`, `@anthropic-ai`, `claude-*`, `us.anthropic.*`, `[1m]`); the user asks about an LLM (pricing\u002Fmodel choice\u002Flimits\u002Fcaching) — never answer from memory; OR the task is LLM-shaped with provider unstated (agent\u002FMCP\u002Ftool-definition\u002Fmulti-agent\u002FRAG\u002FLLM-judge\u002Fcomputer-use; generate\u002Fsummarize\u002Fextract\u002Fclassify\u002Frewrite\u002Fconverse over NL; debugging refusals\u002Fcutoffs\u002Fstreaming\u002Ftool-calls\u002Ftokens).\nSKIP only when another provider is being worked on (overrides all triggers): OpenAI\u002FGPT\u002FGemini\u002FLlama\u002FMistral\u002FCohere\u002FOllama named in the query; OR `grep -rE 'openai|langchain_openai|google.generativeai|genai|mistralai|cohere|ollama'` over the project hits (run this grep FIRST if no provider named — don't Read the file).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2846,2849,2850,2853,2855],{"name":2847,"slug":2848,"type":16},"Agents","agents",{"name":9,"slug":8,"type":16},{"name":2851,"slug":2852,"type":16},"Anthropic SDK","anthropic-sdk",{"name":2854,"slug":2841,"type":16},"Claude API",{"name":2856,"slug":2857,"type":16},"LLM","llm","2026-07-28T05:36:08.213335",{"slug":2860,"name":2860,"fn":2861,"description":2862,"org":2863,"tags":2864,"stars":2811,"repoUrl":2812,"updatedAt":2869},"doc-coauthoring","co-author documentation and technical specs","Guide users through a structured workflow for co-authoring documentation. Use when user wants to write documentation, proposals, technical specs, decision docs, or similar structured content. This workflow helps users efficiently transfer context, refine content through iteration, and verify the doc works for readers. Trigger when user mentions writing docs, creating proposals, drafting specs, or similar documentation tasks.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2865,2866],{"name":2782,"slug":2783,"type":16},{"name":2867,"slug":2868,"type":16},"Technical Writing","technical-writing","2026-04-06T17:56:14.18897",{"slug":2871,"name":2871,"fn":2872,"description":2873,"org":2874,"tags":2875,"stars":2811,"repoUrl":2812,"updatedAt":2888},"docx","create and edit Word documents","Use this skill whenever the user wants to create, read, edit, or manipulate Word documents (.docx files) or Word templates (.dotx files). Triggers include: any mention of 'Word doc', 'word document', '.docx', '.dotx', or requests to produce professional documents with formatting like tables of contents, headings, page numbers, or letterheads. Also use when extracting or reorganizing content from .docx or .dotx files, inserting or replacing images in documents, performing find-and-replace in Word files, working with tracked changes or comments, or converting content into a polished Word document. If the user asks for a 'report', 'memo', 'letter', 'template', or similar deliverable as a Word or .docx file, use this skill. Do NOT use for PDFs, spreadsheets, Google Docs, or general coding tasks unrelated to document generation.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2876,2877,2879,2882,2885],{"name":2749,"slug":2750,"type":16},{"name":2878,"slug":2871,"type":16},"DOCX",{"name":2880,"slug":2881,"type":16},"Office","office",{"name":2883,"slug":2884,"type":16},"Templates","templates",{"name":2886,"slug":2887,"type":16},"Word","word","2026-07-18T05:16:23.136271",{"slug":2890,"name":2890,"fn":2891,"description":2892,"org":2893,"tags":2894,"stars":2811,"repoUrl":2812,"updatedAt":2908},"frontend-design","design production-grade frontend interfaces","Guidance for distinctive, intentional visual design when building new UI or reshaping an existing one. Helps with aesthetic direction, typography, and making choices that don't read as templated defaults.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2895,2896,2899,2902,2905],{"name":2803,"slug":2804,"type":16},{"name":2897,"slug":2898,"type":16},"Frontend","frontend",{"name":2900,"slug":2901,"type":16},"React","react",{"name":2903,"slug":2904,"type":16},"Tailwind CSS","tailwind-css",{"name":2906,"slug":2907,"type":16},"UI Components","ui-components","2026-04-06T17:56:16.723469",{"slug":2910,"name":2910,"fn":2911,"description":2912,"org":2913,"tags":2914,"stars":2811,"repoUrl":2812,"updatedAt":2922},"internal-comms","write internal company communications","A set of resources to help me write all kinds of internal communications, using the formats that my company likes to use. Claude should use this skill whenever asked to write some sort of internal communications (status reports, leadership updates, 3P updates, company newsletters, FAQs, incident reports, project updates, etc.).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2915,2918,2919],{"name":2916,"slug":2917,"type":16},"Communications","communications",{"name":2883,"slug":2884,"type":16},{"name":2920,"slug":2921,"type":16},"Writing","writing","2026-04-06T17:56:20.695522",{"slug":2924,"name":2924,"fn":2925,"description":2926,"org":2927,"tags":2928,"stars":2811,"repoUrl":2812,"updatedAt":2937},"mcp-builder","build MCP servers","Guide for creating high-quality MCP (Model Context Protocol) servers that enable LLMs to interact with external services through well-designed tools. Use when building MCP servers to integrate external APIs or services, whether in Python (FastMCP) or Node\u002FTypeScript (MCP SDK).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2929,2930,2933,2934],{"name":2847,"slug":2848,"type":16},{"name":2931,"slug":2932,"type":16},"API Development","api-development",{"name":2856,"slug":2857,"type":16},{"name":2935,"slug":2936,"type":16},"MCP","mcp","2026-04-06T17:56:10.357665",{"slug":2838,"name":2838,"fn":2939,"description":2940,"org":2941,"tags":2942,"stars":2811,"repoUrl":2812,"updatedAt":2945},"read edit and manipulate PDF files","Use this skill whenever the user wants to do anything with PDF files. This includes reading or extracting text\u002Ftables from PDFs, combining or merging multiple PDFs into one, splitting PDFs apart, rotating pages, adding watermarks, creating new PDFs, filling PDF forms, encrypting\u002Fdecrypting PDFs, extracting images, and OCR on scanned PDFs to make them searchable. If the user mentions a .pdf file or asks to produce one, use this skill.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2943,2944],{"name":2749,"slug":2750,"type":16},{"name":2837,"slug":2838,"type":16},"2026-04-06T17:56:02.483316",{"slug":2947,"name":2947,"fn":2948,"description":2949,"org":2950,"tags":2951,"stars":2811,"repoUrl":2812,"updatedAt":2958},"pptx","create and edit PowerPoint presentations","Use this skill any time a .pptx or .potx file is involved in any way — as input, output, or both. This includes: creating slide decks, pitch decks, or presentations; reading, parsing, or extracting text from any .pptx or .potx file (even if the extracted content will be used elsewhere, like in an email or summary); editing, modifying, or updating existing presentations; combining or splitting slide files; working with templates (.potx), layouts, speaker notes, or comments. Trigger whenever the user mentions \"deck,\" \"slides,\" \"presentation,\" or references a .pptx or .potx filename, regardless of what they plan to do with the content afterward. If a .pptx or .potx file needs to be opened, created, or touched, use this skill.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2952,2955],{"name":2953,"slug":2954,"type":16},"PowerPoint","powerpoint",{"name":2956,"slug":2957,"type":16},"Presentations","presentations","2026-07-18T05:16:24.1471",{"slug":2960,"name":2960,"fn":2961,"description":2962,"org":2963,"tags":2964,"stars":2811,"repoUrl":2812,"updatedAt":2974},"skill-creator","create and optimize agent skills","Create new skills, modify and improve existing skills, and measure skill performance. Use when users want to create a skill from scratch, edit, or optimize an existing skill, run evals to test a skill, benchmark skill performance with variance analysis, or optimize a skill's description for better triggering accuracy.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2965,2966,2967,2970,2973],{"name":2847,"slug":2848,"type":16},{"name":2782,"slug":2783,"type":16},{"name":2968,"slug":2969,"type":16},"Evals","evals",{"name":2971,"slug":2972,"type":16},"Performance","performance",{"name":2867,"slug":2868,"type":16},"2026-04-19T06:45:40.804",490]