[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-anthropic-gap-surfacer":3,"mdc-es4vpr-key":37,"related-repo-anthropic-gap-surfacer":2279,"related-org-anthropic-gap-surfacer":2373},{"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},"gap-surfacer","track and remediate policy gaps","Reference: shared gap- and comment-tracker framework backing \u002Fregulatory-legal:gaps and \u002Fregulatory-legal:comments. Tracks open policy gaps with remediation status, ingests gaps from policy-diff, surfaces what's open and aging, routes to owners, and notifies gap owners via Slack with per-send confirmation. Loaded by the gaps and comments skills before doing substantive work.\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},"Documentation","documentation",{"name":21,"slug":22,"type":16},"Policy","policy",{"name":24,"slug":25,"type":16},"Legal","legal",8721,"https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fclaude-for-legal","2026-05-13T06:02:46.615811",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\u002Fregulatory-legal\u002Fskills\u002Fgap-surfacer","---\nname: gap-surfacer\ndescription: >\n  Reference: shared gap- and comment-tracker framework backing \u002Fregulatory-legal:gaps\n  and \u002Fregulatory-legal:comments. Tracks open policy gaps with remediation status,\n  ingests gaps from policy-diff, surfaces what's open and aging, routes to owners,\n  and notifies gap owners via Slack with per-send confirmation. Loaded by the gaps\n  and comments skills before doing substantive work.\nuser-invocable: false\n---\n\n# Gap Surfacer\n\n> Owner notifications: on by default. To opt an owner out, leave `owner_slack` empty.\n\n## Per-send confirmation — no exceptions\n\nBefore sending ANY Slack message (assignment notice, overdue reminder, bulk notification, status report):\n\n1. Show the user exactly what you're about to send and to whom: \"I'm about to send this to [N] people: [preview].\"\n2. Wait for an explicit yes.\n3. If the message contains any citations, deadlines, or compliance conclusions, add: \"⚠️ The citations in this message are unverified — I'm not confirming they're current before sending. Do you want me to add a 'verify before acting' line?\"\n4. Never send without the confirm. Not on a cadence. Not in a batch. Not because it was sent yesterday.\n\nAuto-send without confirmation is the most irreversible action in this plugin, sending content this plugin's own footer says may be wrong, to people who have no way to check. That combination does not get to skip review.\n\n## Matter context\n\n**Matter context.** Check `## Matter workspaces` in the practice-level CLAUDE.md. If `Enabled` is `✗` (the default for in-house users), skip the rest of this paragraph — skills use practice-level context and the matter machinery is invisible. If enabled and there is no active matter, ask: \"Which matter is this for? Run `\u002Fregulatory-legal:matter-workspace switch \u003Cslug>` or say `practice-level`.\" Load the active matter's `matter.md` for matter-specific context and overrides. Write outputs to the matter folder at `~\u002F.claude\u002Fplugins\u002Fconfig\u002Fclaude-for-legal\u002Fregulatory-legal\u002Fmatters\u002F\u003Cmatter-slug>\u002F`. Never read another matter's files unless `Cross-matter context` is `on`.\n\n---\n\n## Purpose\n\nGaps get found and then forgotten. This skill tracks them until they're closed\nand notifies the people responsible for closing them.\n\n## The tracker\n\nLives at `~\u002F.claude\u002Fplugins\u002Fconfig\u002Fclaude-for-legal\u002Fregulatory-legal\u002Fgap-tracker.yaml`:\n\n> **Note on comment-tracker.yaml:** `~\u002F.claude\u002Fplugins\u002Fconfig\u002Fclaude-for-legal\u002Fregulatory-legal\u002Fcomment-tracker.yaml` is a sibling file owned by the comments skill. It is written to by reg-feed-watcher (which logs NPRMs automatically) and the comments skill (which tracks user-initiated comment decisions). This skill does not read or cross-reference it. If you modify the comment-tracker schema, update both actual consumers.\n\n```yaml\ngaps:\n  - id: GAP-001\n    requirement: \"[what the reg requires]\"\n    regulation: \"[name + cite]\"\n    policy_affected: \"[name or 'new policy needed']\"\n    gap_type: \"partial\"  # none | partial | full | new-policy | watch | comment-decision\n    owner: \"[name from policy index]\"\n    owner_slack: \"[Slack user ID or handle, if known]\"\n    opened: 2026-03-01\n    due: 2026-06-01  # reg effective date, internal deadline, or comment deadline\n    status_verified: true  # false if upstream policy-diff could not confirm the rule is in force; unverified items never hit 🔴 Overdue\n    status: \"open\"  # open | in-progress | closed | risk-accepted\n    notified: false  # set to true after assignment notification sent\n    resolution: \"\"  # filled on close\n```\n\n**Never classify a gap as Overdue on an unverified rule.** The 🔴 Overdue classification means \"we missed a binding deadline.\" If the rule's status is unverified (policy-diff set `status_verified: false`, or the rule is >12 months old \u002F past its applicability date with no currency confirmation), the deadline may not be binding. Use 🟡 \"Review needed\" and note: \"If this rule is in force as published, this would be overdue by [N] days. Verify rule status before escalating.\" Route unverified-rule items to `watch`, not to the active overdue\u002Fdue-soon buckets; the `watch` revisit cadence forces a rule-status check before the item can re-surface as a compliance gap.\n\n**`gap_type` semantics:**\n\n| Value | Meaning | Typical reminder cadence |\n|---|---|---|\n| `none` | Policy already covers the requirement. Logged for audit trail only. Should be rare — if most entries are `none`, the diff is probably running against the wrong policy. | No auto-reminder. |\n| `partial` | Policy addresses the topic but doesn't fully cover the new requirement. Needs an amendment. | 30 days before due. |\n| `full` | Policy contradicts or silently omits the new requirement. Needs a rewrite or new section. | 30 days before due. |\n| `new-policy` | No existing policy covers this. Policy needs to be drafted. | 30 days before due. |\n| `watch` | Forward-looking item — ANPR, RFI, proposed rule not yet final. No compliance obligation today; policy work waits for the final rule. `due:` is a revisit date (typically the NPRM expected date or a one-year horizon), not a compliance deadline. | No auto-reminder; re-evaluate when an NPRM drops or at the revisit date. |\n| `comment-decision` | Pre-rulemaking comment decision pending — ANPR or NPRM where the team is deciding whether to file a comment. `due:` is the comment deadline. | 21 days before due (tighter than compliance gaps because comment-drafting windows are short). |\n\nA `watch` or `comment-decision` entry is not a compliance gap — it's a tracking artifact for pre-rule items that the watch skill and comments skill produce. Surface them in the status report in their own bucket so counsel reading at 7am can tell at a glance which items are \"fix this before a regulator notices\" vs. \"keep an eye on this.\"\n\n## Modes\n\n### Mode 1: Ingest from policy-diff\n\nWhen policy-diff finds gaps, append them to gap-tracker.yaml. De-dupe — same\nrequirement + same policy = same gap, don't double-count.\n\n**After ingesting, notify the owner:**\n\nIf Slack MCP is available and `owner_slack` is set:\n\nSend a Slack DM to the gap owner — but only after the per-send confirmation at the top of this file. Preview the message to the user, wait for an explicit yes, then send:\n\n```\n📋 New compliance gap assigned to you\n\nGap: [GAP-ID] — [requirement, one sentence]\nRegulation: [name + link]\nPolicy affected: [policy name or \"new policy needed\"]\nDue: [reg effective date]\n\nView full gap tracker: \u002Fregulatory-legal:gaps\n```\n\nSet `notified: true` in the tracker entry after sending.\n\nIf Slack MCP is not available: note in the status report that owner notification\nwas not sent and flag for manual follow-up.\n\n### Mode 2: Status report\n\n```markdown\n[WORK-PRODUCT HEADER — per plugin config ## Outputs — differs by role; see `## Who's using this`]\n\n## Open Gaps — [date]\n\n### Bottom line\n\n[N gaps need action by [date] — top 3: X, Y, Z]\n\n### 🔴 Overdue\n\n| ID | Requirement | Policy | Owner | Due | Days over |\n|---|---|---|---|---|---|\n\n### 🟠 Due in \u003C30 days\n\n[same]\n\n### 🟡 Open\n\n[same]\n\n### 👀 Watch items (forward-looking — pre-rule)\n\n[Pre-rule tracking — `watch` and `comment-decision` entries. These are not\ncompliance gaps. Surface separately so the overdue \u002F due-soon bands contain\nonly real compliance deadlines.]\n\n| ID | Item | Type (ANPR\u002FNPRM\u002FRFI) | Comment deadline | Owner |\n|---|---|---|---|---|\n\n### In progress\n\n[same]\n\n### Recently closed\n\n[last 5, with resolution]\n\n---\n\n**Oldest open gap:** [ID], [N] days\n**Gaps by owner:** [breakdown]\n**Owner notifications sent:** [N] \u002F [N total gaps]\n\n---\n\n**Next step for each open gap:** `\u002Fregulatory-legal:policy-redraft` produces a marked-up policy redraft with `[verify]` tags and a change summary. It's a proposal for the policy owner's review — not a direct edit to source documents.\n\n---\n\n**Verify citations before relying on them.** Regulation citations in this tracker were AI-generated upstream (by reg-feed-watcher and policy-diff) and have not been checked against a primary source. Before closing or risk-accepting a gap — or citing one in an attestation, board report, or regulator response — confirm the underlying rule against Westlaw, your firm's research platform, or the issuing authority's website. AI-generated regulatory citations are sometimes fabricated, misquoted, or stale. Source tags carried forward from upstream (e.g., `[Federal Register]`, `[web search — verify]`) show where each citation originated; `verify` tags carry higher fabrication risk and should be checked first. Never strip the tags when surfacing gaps.\n```\n\n## Config-dependent fallbacks\n\nThis skill reads gap-response owners and the escalation path from `~\u002F.claude\u002Fplugins\u002Fconfig\u002Fclaude-for-legal\u002Fregulatory-legal\u002FCLAUDE.md`. When a value it needs is empty or still `[PLACEHOLDER]`:\n\n- **Gap-response triager missing:** leave assignment open and append to the output: \"No triager is set in `## Gap response process`. Assign one with `\u002Fregulatory-legal:cold-start-interview --redo` or by editing `~\u002F.claude\u002Fplugins\u002Fconfig\u002Fclaude-for-legal\u002Fregulatory-legal\u002FCLAUDE.md` so new gaps get routed.\"\n- **Owner unknown for a newly-ingested gap (no owner in policy library):** log the gap with `owner: [unassigned]` and append: \"[N] gaps were ingested without an owner because the policy library doesn't name one for the affected policy. Fill in the Owner column in the policy library to route them.\"\n- **Escalation path missing for an overdue material gap:** still report it as overdue, and append: \"No escalation path is set for material overdue gaps. Configure it with `\u002Fregulatory-legal:cold-start-interview --redo` or by editing `~\u002F.claude\u002Fplugins\u002Fconfig\u002Fclaude-for-legal\u002Fregulatory-legal\u002FCLAUDE.md`.\"\n\nSay nothing about config when the values are populated.\n\n**Due-date reminder logic (runs during status report and scheduled agent):**\n\nReminder cadence is a function of `gap_type` — compliance gaps get a 30-day heads-up, comment-decision items get 21 days (tighter because the drafting window is shorter), watch items get no auto-reminder (re-evaluate when an NPRM drops).\n\nFor each gap with status \"open\" or \"in-progress\":\n- `partial`, `full`, `new-policy`, `none`: if due date is within 30 days and a reminder has not been sent in the last 7 days, PREVIEW a Slack DM (subject \"⏰ Reminder: compliance gap due in [N] days\") and wait for per-send confirm before sending.\n- `comment-decision`: if comment deadline is within 21 days and a reminder has not been sent in the last 7 days, PREVIEW a Slack DM (subject \"💬 Comment-decision deadline in [N] days\") and wait for per-send confirm before sending.\n- `watch`: no auto-reminder. Revisit when the tracker is reviewed or an NPRM is logged for the same regulation.\n- If due date has passed on a compliance gap: flag as overdue in the report and PREVIEW a Slack DM — wait for per-send confirm before sending.\n- If comment deadline has passed on a `comment-decision` item and no comment was filed: flag as overdue, PREVIEW a Slack DM (wait for per-send confirm), and ask the owner to update to `risk-accepted` (deliberate no-comment) or `closed` (comment filed) with a note.\n- Record reminder timestamps in the tracker to avoid repeat nags.\n- Batch reminders still require per-send confirm — previewing \"you're about to send 12 DMs\" and waiting for yes counts; silently firing a batch does not.\n\n### Consequential-action gate (certify compliance)\n\n**Before closing a gap as resolved, or producing any output that certifies compliance with a regulatory requirement (internal attestation, board report, audit response, regulator response):** Read `## Who's using this` in ~\u002F.claude\u002Fplugins\u002Fconfig\u002Fclaude-for-legal\u002Fregulatory-legal\u002FCLAUDE.md. If the Role is **Non-lawyer**:\n\n> Certifying compliance — or closing a gap as resolved — has legal consequences. The certification can be used against the company if it's later shown to be wrong, and premature closure leaves exposure unaddressed. Have you reviewed this with an attorney? If yes, proceed. If no, here's a brief to bring to them:\n>\n> - The gap (requirement, source, what the policy diff found)\n> - What the proposed resolution does and does not cover\n> - Any residual gap or ambiguity\n> - Open questions and what's unresolved\n> - What could go wrong (overbroad certification, unresolved residual obligation, inconsistent prior position)\n> - What to ask the attorney (is this truly closed; should we risk-accept with rationale instead; do we need outside-counsel concurrence)\n>\n> If you need to find a lawyer: your professional regulator's referral service is the fastest starting point (state bar in the US; SRA\u002FBar Standards Board in England & Wales; Law Society in Scotland\u002FNI\u002FIreland\u002FCanada\u002FAustralia; or your jurisdiction's equivalent).\n\nDo not mark a gap closed or produce a compliance certification past this gate without an explicit yes. Status reports and tracking views do not require the gate.\n\n### Mode 3: Close a gap\n\n```\n\u002Fregulatory-legal:gaps --close GAP-001\nResolution: \"Policy updated v2.3, approved [date]\"\n```\n\nUpdates status to closed, records resolution and close date.\n\n### Mode 4: Risk-accept a gap\n\nSometimes the answer is \"we're not going to fix this.\" That's a valid decision\n— but it should be documented.\n\n```\n\u002Fregulatory-legal:gaps --accept GAP-002\nRationale: \"Requirement applies only to [condition we don't meet]. Revisit if [trigger].\"\nAccepted by: [name with authority]\n```\n\nStatus → risk-accepted. Stays in the tracker (not deleted) but falls out of\nthe open-gaps report.\n\n## Integration: reg-change-monitor agent\n\nThe agent's digest includes the gap count and oldest-open-gap age. If anything\ngoes overdue, that goes at the top of the digest. The agent also runs the\ndue-date reminder check and sends any outstanding Slack notifications.\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 tracker surfaced more than ~10 open gaps, 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 severity, a timeline of gaps by due date, and a sortable grid with owner, status, and last-touched date.\n\n## What this skill does not do\n\n- Close gaps on its own. Closing requires the resolution note and the human\n  action that the note describes.\n- Send Slack notifications if the Slack MCP is not configured. Falls back to\n  flagging in the status report.\n- Send more than one reminder per 7-day period per gap. Nag once, not constantly.\n",{"data":38,"body":40},{"name":4,"description":6,"user-invocable":39},false,{"type":41,"children":42},"root",[43,51,70,77,82,122,127,133,215,219,225,230,236,249,270,630,669,683,866,885,891,898,903,911,923,928,938,951,956,962,1837,1843,1863,1946,1951,1959,1971,1976,2081,2087,2110,2156,2161,2167,2176,2181,2187,2192,2201,2206,2212,2217,2223,2236,2249,2255,2273],{"type":44,"tag":45,"props":46,"children":47},"element","h1",{"id":4},[48],{"type":49,"value":50},"text","Gap Surfacer",{"type":44,"tag":52,"props":53,"children":54},"blockquote",{},[55],{"type":44,"tag":56,"props":57,"children":58},"p",{},[59,61,68],{"type":49,"value":60},"Owner notifications: on by default. To opt an owner out, leave ",{"type":44,"tag":62,"props":63,"children":65},"code",{"className":64},[],[66],{"type":49,"value":67},"owner_slack",{"type":49,"value":69}," empty.",{"type":44,"tag":71,"props":72,"children":74},"h2",{"id":73},"per-send-confirmation-no-exceptions",[75],{"type":49,"value":76},"Per-send confirmation — no exceptions",{"type":44,"tag":56,"props":78,"children":79},{},[80],{"type":49,"value":81},"Before sending ANY Slack message (assignment notice, overdue reminder, bulk notification, status report):",{"type":44,"tag":83,"props":84,"children":85},"ol",{},[86,107,112,117],{"type":44,"tag":87,"props":88,"children":89},"li",{},[90,92,98,100,105],{"type":49,"value":91},"Show the user exactly what you're about to send and to whom: \"I'm about to send this to ",{"type":44,"tag":93,"props":94,"children":95},"span",{},[96],{"type":49,"value":97},"N",{"type":49,"value":99}," people: ",{"type":44,"tag":93,"props":101,"children":102},{},[103],{"type":49,"value":104},"preview",{"type":49,"value":106},".\"",{"type":44,"tag":87,"props":108,"children":109},{},[110],{"type":49,"value":111},"Wait for an explicit yes.",{"type":44,"tag":87,"props":113,"children":114},{},[115],{"type":49,"value":116},"If the message contains any citations, deadlines, or compliance conclusions, add: \"⚠️ The citations in this message are unverified — I'm not confirming they're current before sending. Do you want me to add a 'verify before acting' line?\"",{"type":44,"tag":87,"props":118,"children":119},{},[120],{"type":49,"value":121},"Never send without the confirm. Not on a cadence. Not in a batch. Not because it was sent yesterday.",{"type":44,"tag":56,"props":123,"children":124},{},[125],{"type":49,"value":126},"Auto-send without confirmation is the most irreversible action in this plugin, sending content this plugin's own footer says may be wrong, to people who have no way to check. That combination does not get to skip review.",{"type":44,"tag":71,"props":128,"children":130},{"id":129},"matter-context",[131],{"type":49,"value":132},"Matter context",{"type":44,"tag":56,"props":134,"children":135},{},[136,142,144,150,152,158,160,166,168,174,176,182,184,190,192,198,200,206,207,213],{"type":44,"tag":137,"props":138,"children":139},"strong",{},[140],{"type":49,"value":141},"Matter context.",{"type":49,"value":143}," Check ",{"type":44,"tag":62,"props":145,"children":147},{"className":146},[],[148],{"type":49,"value":149},"## Matter workspaces",{"type":49,"value":151}," in the practice-level CLAUDE.md. If ",{"type":44,"tag":62,"props":153,"children":155},{"className":154},[],[156],{"type":49,"value":157},"Enabled",{"type":49,"value":159}," is ",{"type":44,"tag":62,"props":161,"children":163},{"className":162},[],[164],{"type":49,"value":165},"✗",{"type":49,"value":167}," (the default for in-house users), skip the rest of this paragraph — skills use practice-level context and the matter machinery is invisible. If enabled and there is no active matter, ask: \"Which matter is this for? Run ",{"type":44,"tag":62,"props":169,"children":171},{"className":170},[],[172],{"type":49,"value":173},"\u002Fregulatory-legal:matter-workspace switch \u003Cslug>",{"type":49,"value":175}," or say ",{"type":44,"tag":62,"props":177,"children":179},{"className":178},[],[180],{"type":49,"value":181},"practice-level",{"type":49,"value":183},".\" Load the active matter's ",{"type":44,"tag":62,"props":185,"children":187},{"className":186},[],[188],{"type":49,"value":189},"matter.md",{"type":49,"value":191}," for matter-specific context and overrides. Write outputs to the matter folder at ",{"type":44,"tag":62,"props":193,"children":195},{"className":194},[],[196],{"type":49,"value":197},"~\u002F.claude\u002Fplugins\u002Fconfig\u002Fclaude-for-legal\u002Fregulatory-legal\u002Fmatters\u002F\u003Cmatter-slug>\u002F",{"type":49,"value":199},". Never read another matter's files unless ",{"type":44,"tag":62,"props":201,"children":203},{"className":202},[],[204],{"type":49,"value":205},"Cross-matter context",{"type":49,"value":159},{"type":44,"tag":62,"props":208,"children":210},{"className":209},[],[211],{"type":49,"value":212},"on",{"type":49,"value":214},".",{"type":44,"tag":216,"props":217,"children":218},"hr",{},[],{"type":44,"tag":71,"props":220,"children":222},{"id":221},"purpose",[223],{"type":49,"value":224},"Purpose",{"type":44,"tag":56,"props":226,"children":227},{},[228],{"type":49,"value":229},"Gaps get found and then forgotten. This skill tracks them until they're closed\nand notifies the people responsible for closing them.",{"type":44,"tag":71,"props":231,"children":233},{"id":232},"the-tracker",[234],{"type":49,"value":235},"The tracker",{"type":44,"tag":56,"props":237,"children":238},{},[239,241,247],{"type":49,"value":240},"Lives at ",{"type":44,"tag":62,"props":242,"children":244},{"className":243},[],[245],{"type":49,"value":246},"~\u002F.claude\u002Fplugins\u002Fconfig\u002Fclaude-for-legal\u002Fregulatory-legal\u002Fgap-tracker.yaml",{"type":49,"value":248},":",{"type":44,"tag":52,"props":250,"children":251},{},[252],{"type":44,"tag":56,"props":253,"children":254},{},[255,260,262,268],{"type":44,"tag":137,"props":256,"children":257},{},[258],{"type":49,"value":259},"Note on comment-tracker.yaml:",{"type":49,"value":261}," ",{"type":44,"tag":62,"props":263,"children":265},{"className":264},[],[266],{"type":49,"value":267},"~\u002F.claude\u002Fplugins\u002Fconfig\u002Fclaude-for-legal\u002Fregulatory-legal\u002Fcomment-tracker.yaml",{"type":49,"value":269}," is a sibling file owned by the comments skill. It is written to by reg-feed-watcher (which logs NPRMs automatically) and the comments skill (which tracks user-initiated comment decisions). This skill does not read or cross-reference it. If you modify the comment-tracker schema, update both actual consumers.",{"type":44,"tag":271,"props":272,"children":277},"pre",{"className":273,"code":274,"language":275,"meta":276,"style":276},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","gaps:\n  - id: GAP-001\n    requirement: \"[what the reg requires]\"\n    regulation: \"[name + cite]\"\n    policy_affected: \"[name or 'new policy needed']\"\n    gap_type: \"partial\"  # none | partial | full | new-policy | watch | comment-decision\n    owner: \"[name from policy index]\"\n    owner_slack: \"[Slack user ID or handle, if known]\"\n    opened: 2026-03-01\n    due: 2026-06-01  # reg effective date, internal deadline, or comment deadline\n    status_verified: true  # false if upstream policy-diff could not confirm the rule is in force; unverified items never hit 🔴 Overdue\n    status: \"open\"  # open | in-progress | closed | risk-accepted\n    notified: false  # set to true after assignment notification sent\n    resolution: \"\"  # filled on close\n","yaml","",[278],{"type":44,"tag":62,"props":279,"children":280},{"__ignoreMap":276},[281,298,322,350,376,402,435,461,487,506,529,553,584,607],{"type":44,"tag":93,"props":282,"children":285},{"class":283,"line":284},"line",1,[286,292],{"type":44,"tag":93,"props":287,"children":289},{"style":288},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[290],{"type":49,"value":291},"gaps",{"type":44,"tag":93,"props":293,"children":295},{"style":294},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[296],{"type":49,"value":297},":\n",{"type":44,"tag":93,"props":299,"children":301},{"class":283,"line":300},2,[302,307,312,316],{"type":44,"tag":93,"props":303,"children":304},{"style":294},[305],{"type":49,"value":306},"  -",{"type":44,"tag":93,"props":308,"children":309},{"style":288},[310],{"type":49,"value":311}," id",{"type":44,"tag":93,"props":313,"children":314},{"style":294},[315],{"type":49,"value":248},{"type":44,"tag":93,"props":317,"children":319},{"style":318},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[320],{"type":49,"value":321}," GAP-001\n",{"type":44,"tag":93,"props":323,"children":325},{"class":283,"line":324},3,[326,331,335,340,345],{"type":44,"tag":93,"props":327,"children":328},{"style":288},[329],{"type":49,"value":330},"    requirement",{"type":44,"tag":93,"props":332,"children":333},{"style":294},[334],{"type":49,"value":248},{"type":44,"tag":93,"props":336,"children":337},{"style":294},[338],{"type":49,"value":339}," \"",{"type":44,"tag":93,"props":341,"children":342},{"style":318},[343],{"type":49,"value":344},"[what the reg requires]",{"type":44,"tag":93,"props":346,"children":347},{"style":294},[348],{"type":49,"value":349},"\"\n",{"type":44,"tag":93,"props":351,"children":353},{"class":283,"line":352},4,[354,359,363,367,372],{"type":44,"tag":93,"props":355,"children":356},{"style":288},[357],{"type":49,"value":358},"    regulation",{"type":44,"tag":93,"props":360,"children":361},{"style":294},[362],{"type":49,"value":248},{"type":44,"tag":93,"props":364,"children":365},{"style":294},[366],{"type":49,"value":339},{"type":44,"tag":93,"props":368,"children":369},{"style":318},[370],{"type":49,"value":371},"[name + cite]",{"type":44,"tag":93,"props":373,"children":374},{"style":294},[375],{"type":49,"value":349},{"type":44,"tag":93,"props":377,"children":379},{"class":283,"line":378},5,[380,385,389,393,398],{"type":44,"tag":93,"props":381,"children":382},{"style":288},[383],{"type":49,"value":384},"    policy_affected",{"type":44,"tag":93,"props":386,"children":387},{"style":294},[388],{"type":49,"value":248},{"type":44,"tag":93,"props":390,"children":391},{"style":294},[392],{"type":49,"value":339},{"type":44,"tag":93,"props":394,"children":395},{"style":318},[396],{"type":49,"value":397},"[name or 'new policy needed']",{"type":44,"tag":93,"props":399,"children":400},{"style":294},[401],{"type":49,"value":349},{"type":44,"tag":93,"props":403,"children":405},{"class":283,"line":404},6,[406,411,415,419,424,429],{"type":44,"tag":93,"props":407,"children":408},{"style":288},[409],{"type":49,"value":410},"    gap_type",{"type":44,"tag":93,"props":412,"children":413},{"style":294},[414],{"type":49,"value":248},{"type":44,"tag":93,"props":416,"children":417},{"style":294},[418],{"type":49,"value":339},{"type":44,"tag":93,"props":420,"children":421},{"style":318},[422],{"type":49,"value":423},"partial",{"type":44,"tag":93,"props":425,"children":426},{"style":294},[427],{"type":49,"value":428},"\"",{"type":44,"tag":93,"props":430,"children":432},{"style":431},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[433],{"type":49,"value":434},"  # none | partial | full | new-policy | watch | comment-decision\n",{"type":44,"tag":93,"props":436,"children":438},{"class":283,"line":437},7,[439,444,448,452,457],{"type":44,"tag":93,"props":440,"children":441},{"style":288},[442],{"type":49,"value":443},"    owner",{"type":44,"tag":93,"props":445,"children":446},{"style":294},[447],{"type":49,"value":248},{"type":44,"tag":93,"props":449,"children":450},{"style":294},[451],{"type":49,"value":339},{"type":44,"tag":93,"props":453,"children":454},{"style":318},[455],{"type":49,"value":456},"[name from policy index]",{"type":44,"tag":93,"props":458,"children":459},{"style":294},[460],{"type":49,"value":349},{"type":44,"tag":93,"props":462,"children":464},{"class":283,"line":463},8,[465,470,474,478,483],{"type":44,"tag":93,"props":466,"children":467},{"style":288},[468],{"type":49,"value":469},"    owner_slack",{"type":44,"tag":93,"props":471,"children":472},{"style":294},[473],{"type":49,"value":248},{"type":44,"tag":93,"props":475,"children":476},{"style":294},[477],{"type":49,"value":339},{"type":44,"tag":93,"props":479,"children":480},{"style":318},[481],{"type":49,"value":482},"[Slack user ID or handle, if known]",{"type":44,"tag":93,"props":484,"children":485},{"style":294},[486],{"type":49,"value":349},{"type":44,"tag":93,"props":488,"children":490},{"class":283,"line":489},9,[491,496,500],{"type":44,"tag":93,"props":492,"children":493},{"style":288},[494],{"type":49,"value":495},"    opened",{"type":44,"tag":93,"props":497,"children":498},{"style":294},[499],{"type":49,"value":248},{"type":44,"tag":93,"props":501,"children":503},{"style":502},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[504],{"type":49,"value":505}," 2026-03-01\n",{"type":44,"tag":93,"props":507,"children":509},{"class":283,"line":508},10,[510,515,519,524],{"type":44,"tag":93,"props":511,"children":512},{"style":288},[513],{"type":49,"value":514},"    due",{"type":44,"tag":93,"props":516,"children":517},{"style":294},[518],{"type":49,"value":248},{"type":44,"tag":93,"props":520,"children":521},{"style":502},[522],{"type":49,"value":523}," 2026-06-01  ",{"type":44,"tag":93,"props":525,"children":526},{"style":431},[527],{"type":49,"value":528},"# reg effective date, internal deadline, or comment deadline\n",{"type":44,"tag":93,"props":530,"children":532},{"class":283,"line":531},11,[533,538,542,548],{"type":44,"tag":93,"props":534,"children":535},{"style":288},[536],{"type":49,"value":537},"    status_verified",{"type":44,"tag":93,"props":539,"children":540},{"style":294},[541],{"type":49,"value":248},{"type":44,"tag":93,"props":543,"children":545},{"style":544},"--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC",[546],{"type":49,"value":547}," true",{"type":44,"tag":93,"props":549,"children":550},{"style":431},[551],{"type":49,"value":552},"  # false if upstream policy-diff could not confirm the rule is in force; unverified items never hit 🔴 Overdue\n",{"type":44,"tag":93,"props":554,"children":556},{"class":283,"line":555},12,[557,562,566,570,575,579],{"type":44,"tag":93,"props":558,"children":559},{"style":288},[560],{"type":49,"value":561},"    status",{"type":44,"tag":93,"props":563,"children":564},{"style":294},[565],{"type":49,"value":248},{"type":44,"tag":93,"props":567,"children":568},{"style":294},[569],{"type":49,"value":339},{"type":44,"tag":93,"props":571,"children":572},{"style":318},[573],{"type":49,"value":574},"open",{"type":44,"tag":93,"props":576,"children":577},{"style":294},[578],{"type":49,"value":428},{"type":44,"tag":93,"props":580,"children":581},{"style":431},[582],{"type":49,"value":583},"  # open | in-progress | closed | risk-accepted\n",{"type":44,"tag":93,"props":585,"children":587},{"class":283,"line":586},13,[588,593,597,602],{"type":44,"tag":93,"props":589,"children":590},{"style":288},[591],{"type":49,"value":592},"    notified",{"type":44,"tag":93,"props":594,"children":595},{"style":294},[596],{"type":49,"value":248},{"type":44,"tag":93,"props":598,"children":599},{"style":544},[600],{"type":49,"value":601}," false",{"type":44,"tag":93,"props":603,"children":604},{"style":431},[605],{"type":49,"value":606},"  # set to true after assignment notification sent\n",{"type":44,"tag":93,"props":608,"children":610},{"class":283,"line":609},14,[611,616,620,625],{"type":44,"tag":93,"props":612,"children":613},{"style":288},[614],{"type":49,"value":615},"    resolution",{"type":44,"tag":93,"props":617,"children":618},{"style":294},[619],{"type":49,"value":248},{"type":44,"tag":93,"props":621,"children":622},{"style":294},[623],{"type":49,"value":624}," \"\"",{"type":44,"tag":93,"props":626,"children":627},{"style":431},[628],{"type":49,"value":629},"  # filled on close\n",{"type":44,"tag":56,"props":631,"children":632},{},[633,638,640,646,648,652,654,660,662,667],{"type":44,"tag":137,"props":634,"children":635},{},[636],{"type":49,"value":637},"Never classify a gap as Overdue on an unverified rule.",{"type":49,"value":639}," The 🔴 Overdue classification means \"we missed a binding deadline.\" If the rule's status is unverified (policy-diff set ",{"type":44,"tag":62,"props":641,"children":643},{"className":642},[],[644],{"type":49,"value":645},"status_verified: false",{"type":49,"value":647},", or the rule is >12 months old \u002F past its applicability date with no currency confirmation), the deadline may not be binding. Use 🟡 \"Review needed\" and note: \"If this rule is in force as published, this would be overdue by ",{"type":44,"tag":93,"props":649,"children":650},{},[651],{"type":49,"value":97},{"type":49,"value":653}," days. Verify rule status before escalating.\" Route unverified-rule items to ",{"type":44,"tag":62,"props":655,"children":657},{"className":656},[],[658],{"type":49,"value":659},"watch",{"type":49,"value":661},", not to the active overdue\u002Fdue-soon buckets; the ",{"type":44,"tag":62,"props":663,"children":665},{"className":664},[],[666],{"type":49,"value":659},{"type":49,"value":668}," revisit cadence forces a rule-status check before the item can re-surface as a compliance gap.",{"type":44,"tag":56,"props":670,"children":671},{},[672],{"type":44,"tag":137,"props":673,"children":674},{},[675,681],{"type":44,"tag":62,"props":676,"children":678},{"className":677},[],[679],{"type":49,"value":680},"gap_type",{"type":49,"value":682}," semantics:",{"type":44,"tag":684,"props":685,"children":686},"table",{},[687,711],{"type":44,"tag":688,"props":689,"children":690},"thead",{},[691],{"type":44,"tag":692,"props":693,"children":694},"tr",{},[695,701,706],{"type":44,"tag":696,"props":697,"children":698},"th",{},[699],{"type":49,"value":700},"Value",{"type":44,"tag":696,"props":702,"children":703},{},[704],{"type":49,"value":705},"Meaning",{"type":44,"tag":696,"props":707,"children":708},{},[709],{"type":49,"value":710},"Typical reminder cadence",{"type":44,"tag":712,"props":713,"children":714},"tbody",{},[715,745,766,787,808,837],{"type":44,"tag":692,"props":716,"children":717},{},[718,728,740],{"type":44,"tag":719,"props":720,"children":721},"td",{},[722],{"type":44,"tag":62,"props":723,"children":725},{"className":724},[],[726],{"type":49,"value":727},"none",{"type":44,"tag":719,"props":729,"children":730},{},[731,733,738],{"type":49,"value":732},"Policy already covers the requirement. Logged for audit trail only. Should be rare — if most entries are ",{"type":44,"tag":62,"props":734,"children":736},{"className":735},[],[737],{"type":49,"value":727},{"type":49,"value":739},", the diff is probably running against the wrong policy.",{"type":44,"tag":719,"props":741,"children":742},{},[743],{"type":49,"value":744},"No auto-reminder.",{"type":44,"tag":692,"props":746,"children":747},{},[748,756,761],{"type":44,"tag":719,"props":749,"children":750},{},[751],{"type":44,"tag":62,"props":752,"children":754},{"className":753},[],[755],{"type":49,"value":423},{"type":44,"tag":719,"props":757,"children":758},{},[759],{"type":49,"value":760},"Policy addresses the topic but doesn't fully cover the new requirement. Needs an amendment.",{"type":44,"tag":719,"props":762,"children":763},{},[764],{"type":49,"value":765},"30 days before due.",{"type":44,"tag":692,"props":767,"children":768},{},[769,778,783],{"type":44,"tag":719,"props":770,"children":771},{},[772],{"type":44,"tag":62,"props":773,"children":775},{"className":774},[],[776],{"type":49,"value":777},"full",{"type":44,"tag":719,"props":779,"children":780},{},[781],{"type":49,"value":782},"Policy contradicts or silently omits the new requirement. Needs a rewrite or new section.",{"type":44,"tag":719,"props":784,"children":785},{},[786],{"type":49,"value":765},{"type":44,"tag":692,"props":788,"children":789},{},[790,799,804],{"type":44,"tag":719,"props":791,"children":792},{},[793],{"type":44,"tag":62,"props":794,"children":796},{"className":795},[],[797],{"type":49,"value":798},"new-policy",{"type":44,"tag":719,"props":800,"children":801},{},[802],{"type":49,"value":803},"No existing policy covers this. Policy needs to be drafted.",{"type":44,"tag":719,"props":805,"children":806},{},[807],{"type":49,"value":765},{"type":44,"tag":692,"props":809,"children":810},{},[811,819,832],{"type":44,"tag":719,"props":812,"children":813},{},[814],{"type":44,"tag":62,"props":815,"children":817},{"className":816},[],[818],{"type":49,"value":659},{"type":44,"tag":719,"props":820,"children":821},{},[822,824,830],{"type":49,"value":823},"Forward-looking item — ANPR, RFI, proposed rule not yet final. No compliance obligation today; policy work waits for the final rule. ",{"type":44,"tag":62,"props":825,"children":827},{"className":826},[],[828],{"type":49,"value":829},"due:",{"type":49,"value":831}," is a revisit date (typically the NPRM expected date or a one-year horizon), not a compliance deadline.",{"type":44,"tag":719,"props":833,"children":834},{},[835],{"type":49,"value":836},"No auto-reminder; re-evaluate when an NPRM drops or at the revisit date.",{"type":44,"tag":692,"props":838,"children":839},{},[840,849,861],{"type":44,"tag":719,"props":841,"children":842},{},[843],{"type":44,"tag":62,"props":844,"children":846},{"className":845},[],[847],{"type":49,"value":848},"comment-decision",{"type":44,"tag":719,"props":850,"children":851},{},[852,854,859],{"type":49,"value":853},"Pre-rulemaking comment decision pending — ANPR or NPRM where the team is deciding whether to file a comment. ",{"type":44,"tag":62,"props":855,"children":857},{"className":856},[],[858],{"type":49,"value":829},{"type":49,"value":860}," is the comment deadline.",{"type":44,"tag":719,"props":862,"children":863},{},[864],{"type":49,"value":865},"21 days before due (tighter than compliance gaps because comment-drafting windows are short).",{"type":44,"tag":56,"props":867,"children":868},{},[869,871,876,878,883],{"type":49,"value":870},"A ",{"type":44,"tag":62,"props":872,"children":874},{"className":873},[],[875],{"type":49,"value":659},{"type":49,"value":877}," or ",{"type":44,"tag":62,"props":879,"children":881},{"className":880},[],[882],{"type":49,"value":848},{"type":49,"value":884}," entry is not a compliance gap — it's a tracking artifact for pre-rule items that the watch skill and comments skill produce. Surface them in the status report in their own bucket so counsel reading at 7am can tell at a glance which items are \"fix this before a regulator notices\" vs. \"keep an eye on this.\"",{"type":44,"tag":71,"props":886,"children":888},{"id":887},"modes",[889],{"type":49,"value":890},"Modes",{"type":44,"tag":892,"props":893,"children":895},"h3",{"id":894},"mode-1-ingest-from-policy-diff",[896],{"type":49,"value":897},"Mode 1: Ingest from policy-diff",{"type":44,"tag":56,"props":899,"children":900},{},[901],{"type":49,"value":902},"When policy-diff finds gaps, append them to gap-tracker.yaml. De-dupe — same\nrequirement + same policy = same gap, don't double-count.",{"type":44,"tag":56,"props":904,"children":905},{},[906],{"type":44,"tag":137,"props":907,"children":908},{},[909],{"type":49,"value":910},"After ingesting, notify the owner:",{"type":44,"tag":56,"props":912,"children":913},{},[914,916,921],{"type":49,"value":915},"If Slack MCP is available and ",{"type":44,"tag":62,"props":917,"children":919},{"className":918},[],[920],{"type":49,"value":67},{"type":49,"value":922}," is set:",{"type":44,"tag":56,"props":924,"children":925},{},[926],{"type":49,"value":927},"Send a Slack DM to the gap owner — but only after the per-send confirmation at the top of this file. Preview the message to the user, wait for an explicit yes, then send:",{"type":44,"tag":271,"props":929,"children":933},{"className":930,"code":932,"language":49},[931],"language-text","📋 New compliance gap assigned to you\n\nGap: [GAP-ID] — [requirement, one sentence]\nRegulation: [name + link]\nPolicy affected: [policy name or \"new policy needed\"]\nDue: [reg effective date]\n\nView full gap tracker: \u002Fregulatory-legal:gaps\n",[934],{"type":44,"tag":62,"props":935,"children":936},{"__ignoreMap":276},[937],{"type":49,"value":932},{"type":44,"tag":56,"props":939,"children":940},{},[941,943,949],{"type":49,"value":942},"Set ",{"type":44,"tag":62,"props":944,"children":946},{"className":945},[],[947],{"type":49,"value":948},"notified: true",{"type":49,"value":950}," in the tracker entry after sending.",{"type":44,"tag":56,"props":952,"children":953},{},[954],{"type":49,"value":955},"If Slack MCP is not available: note in the status report that owner notification\nwas not sent and flag for manual follow-up.",{"type":44,"tag":892,"props":957,"children":959},{"id":958},"mode-2-status-report",[960],{"type":49,"value":961},"Mode 2: Status report",{"type":44,"tag":271,"props":963,"children":967},{"className":964,"code":965,"language":966,"meta":276,"style":276},"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## Open Gaps — [date]\n\n### Bottom line\n\n[N gaps need action by [date] — top 3: X, Y, Z]\n\n### 🔴 Overdue\n\n| ID | Requirement | Policy | Owner | Due | Days over |\n|---|---|---|---|---|---|\n\n### 🟠 Due in \u003C30 days\n\n[same]\n\n### 🟡 Open\n\n[same]\n\n### 👀 Watch items (forward-looking — pre-rule)\n\n[Pre-rule tracking — `watch` and `comment-decision` entries. These are not\ncompliance gaps. Surface separately so the overdue \u002F due-soon bands contain\nonly real compliance deadlines.]\n\n| ID | Item | Type (ANPR\u002FNPRM\u002FRFI) | Comment deadline | Owner |\n|---|---|---|---|---|\n\n### In progress\n\n[same]\n\n### Recently closed\n\n[last 5, with resolution]\n\n---\n\n**Oldest open gap:** [ID], [N] days\n**Gaps by owner:** [breakdown]\n**Owner notifications sent:** [N] \u002F [N total gaps]\n\n---\n\n**Next step for each open gap:** `\u002Fregulatory-legal:policy-redraft` produces a marked-up policy redraft with `[verify]` tags and a change summary. It's a proposal for the policy owner's review — not a direct edit to source documents.\n\n---\n\n**Verify citations before relying on them.** Regulation citations in this tracker were AI-generated upstream (by reg-feed-watcher and policy-diff) and have not been checked against a primary source. Before closing or risk-accepting a gap — or citing one in an attestation, board report, or regulator response — confirm the underlying rule against Westlaw, your firm's research platform, or the issuing authority's website. AI-generated regulatory citations are sometimes fabricated, misquoted, or stale. Source tags carried forward from upstream (e.g., `[Federal Register]`, `[web search — verify]`) show where each citation originated; `verify` tags carry higher fabrication risk and should be checked first. Never strip the tags when surfacing gaps.\n","markdown",[968],{"type":44,"tag":62,"props":969,"children":970},{"__ignoreMap":276},[971,998,1007,1035,1042,1055,1062,1088,1095,1107,1114,1177,1185,1192,1204,1212,1229,1237,1250,1258,1274,1282,1295,1303,1346,1355,1364,1372,1423,1432,1440,1453,1461,1477,1485,1498,1506,1515,1523,1532,1540,1596,1626,1660,1668,1676,1684,1738,1746,1754,1762],{"type":44,"tag":93,"props":972,"children":973},{"class":283,"line":284},[974,979,984,989,993],{"type":44,"tag":93,"props":975,"children":976},{"style":502},[977],{"type":49,"value":978},"[WORK-PRODUCT HEADER — per plugin config ## Outputs — differs by role; see ",{"type":44,"tag":93,"props":980,"children":981},{"style":294},[982],{"type":49,"value":983},"`",{"type":44,"tag":93,"props":985,"children":986},{"style":318},[987],{"type":49,"value":988},"## Who's using this",{"type":44,"tag":93,"props":990,"children":991},{"style":294},[992],{"type":49,"value":983},{"type":44,"tag":93,"props":994,"children":995},{"style":502},[996],{"type":49,"value":997},"]\n",{"type":44,"tag":93,"props":999,"children":1000},{"class":283,"line":300},[1001],{"type":44,"tag":93,"props":1002,"children":1004},{"emptyLinePlaceholder":1003},true,[1005],{"type":49,"value":1006},"\n",{"type":44,"tag":93,"props":1008,"children":1009},{"class":283,"line":324},[1010,1015,1021,1026,1031],{"type":44,"tag":93,"props":1011,"children":1012},{"style":294},[1013],{"type":49,"value":1014},"## ",{"type":44,"tag":93,"props":1016,"children":1018},{"style":1017},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[1019],{"type":49,"value":1020},"Open Gaps — ",{"type":44,"tag":93,"props":1022,"children":1023},{"style":294},[1024],{"type":49,"value":1025},"[",{"type":44,"tag":93,"props":1027,"children":1028},{"style":318},[1029],{"type":49,"value":1030},"date",{"type":44,"tag":93,"props":1032,"children":1033},{"style":294},[1034],{"type":49,"value":997},{"type":44,"tag":93,"props":1036,"children":1037},{"class":283,"line":352},[1038],{"type":44,"tag":93,"props":1039,"children":1040},{"emptyLinePlaceholder":1003},[1041],{"type":49,"value":1006},{"type":44,"tag":93,"props":1043,"children":1044},{"class":283,"line":378},[1045,1050],{"type":44,"tag":93,"props":1046,"children":1047},{"style":294},[1048],{"type":49,"value":1049},"### ",{"type":44,"tag":93,"props":1051,"children":1052},{"style":1017},[1053],{"type":49,"value":1054},"Bottom line\n",{"type":44,"tag":93,"props":1056,"children":1057},{"class":283,"line":404},[1058],{"type":44,"tag":93,"props":1059,"children":1060},{"emptyLinePlaceholder":1003},[1061],{"type":49,"value":1006},{"type":44,"tag":93,"props":1063,"children":1064},{"class":283,"line":437},[1065,1070,1074,1078,1083],{"type":44,"tag":93,"props":1066,"children":1067},{"style":502},[1068],{"type":49,"value":1069},"[N gaps need action by ",{"type":44,"tag":93,"props":1071,"children":1072},{"style":294},[1073],{"type":49,"value":1025},{"type":44,"tag":93,"props":1075,"children":1076},{"style":318},[1077],{"type":49,"value":1030},{"type":44,"tag":93,"props":1079,"children":1080},{"style":294},[1081],{"type":49,"value":1082},"]",{"type":44,"tag":93,"props":1084,"children":1085},{"style":502},[1086],{"type":49,"value":1087}," — top 3: X, Y, Z]\n",{"type":44,"tag":93,"props":1089,"children":1090},{"class":283,"line":463},[1091],{"type":44,"tag":93,"props":1092,"children":1093},{"emptyLinePlaceholder":1003},[1094],{"type":49,"value":1006},{"type":44,"tag":93,"props":1096,"children":1097},{"class":283,"line":489},[1098,1102],{"type":44,"tag":93,"props":1099,"children":1100},{"style":294},[1101],{"type":49,"value":1049},{"type":44,"tag":93,"props":1103,"children":1104},{"style":1017},[1105],{"type":49,"value":1106},"🔴 Overdue\n",{"type":44,"tag":93,"props":1108,"children":1109},{"class":283,"line":508},[1110],{"type":44,"tag":93,"props":1111,"children":1112},{"emptyLinePlaceholder":1003},[1113],{"type":49,"value":1006},{"type":44,"tag":93,"props":1115,"children":1116},{"class":283,"line":531},[1117,1122,1127,1131,1136,1140,1145,1149,1154,1158,1163,1167,1172],{"type":44,"tag":93,"props":1118,"children":1119},{"style":294},[1120],{"type":49,"value":1121},"|",{"type":44,"tag":93,"props":1123,"children":1124},{"style":502},[1125],{"type":49,"value":1126}," ID ",{"type":44,"tag":93,"props":1128,"children":1129},{"style":294},[1130],{"type":49,"value":1121},{"type":44,"tag":93,"props":1132,"children":1133},{"style":502},[1134],{"type":49,"value":1135}," Requirement ",{"type":44,"tag":93,"props":1137,"children":1138},{"style":294},[1139],{"type":49,"value":1121},{"type":44,"tag":93,"props":1141,"children":1142},{"style":502},[1143],{"type":49,"value":1144}," Policy ",{"type":44,"tag":93,"props":1146,"children":1147},{"style":294},[1148],{"type":49,"value":1121},{"type":44,"tag":93,"props":1150,"children":1151},{"style":502},[1152],{"type":49,"value":1153}," Owner ",{"type":44,"tag":93,"props":1155,"children":1156},{"style":294},[1157],{"type":49,"value":1121},{"type":44,"tag":93,"props":1159,"children":1160},{"style":502},[1161],{"type":49,"value":1162}," Due ",{"type":44,"tag":93,"props":1164,"children":1165},{"style":294},[1166],{"type":49,"value":1121},{"type":44,"tag":93,"props":1168,"children":1169},{"style":502},[1170],{"type":49,"value":1171}," Days over ",{"type":44,"tag":93,"props":1173,"children":1174},{"style":294},[1175],{"type":49,"value":1176},"|\n",{"type":44,"tag":93,"props":1178,"children":1179},{"class":283,"line":555},[1180],{"type":44,"tag":93,"props":1181,"children":1182},{"style":294},[1183],{"type":49,"value":1184},"|---|---|---|---|---|---|\n",{"type":44,"tag":93,"props":1186,"children":1187},{"class":283,"line":586},[1188],{"type":44,"tag":93,"props":1189,"children":1190},{"emptyLinePlaceholder":1003},[1191],{"type":49,"value":1006},{"type":44,"tag":93,"props":1193,"children":1194},{"class":283,"line":609},[1195,1199],{"type":44,"tag":93,"props":1196,"children":1197},{"style":294},[1198],{"type":49,"value":1049},{"type":44,"tag":93,"props":1200,"children":1201},{"style":1017},[1202],{"type":49,"value":1203},"🟠 Due in \u003C30 days\n",{"type":44,"tag":93,"props":1205,"children":1207},{"class":283,"line":1206},15,[1208],{"type":44,"tag":93,"props":1209,"children":1210},{"emptyLinePlaceholder":1003},[1211],{"type":49,"value":1006},{"type":44,"tag":93,"props":1213,"children":1215},{"class":283,"line":1214},16,[1216,1220,1225],{"type":44,"tag":93,"props":1217,"children":1218},{"style":294},[1219],{"type":49,"value":1025},{"type":44,"tag":93,"props":1221,"children":1222},{"style":318},[1223],{"type":49,"value":1224},"same",{"type":44,"tag":93,"props":1226,"children":1227},{"style":294},[1228],{"type":49,"value":997},{"type":44,"tag":93,"props":1230,"children":1232},{"class":283,"line":1231},17,[1233],{"type":44,"tag":93,"props":1234,"children":1235},{"emptyLinePlaceholder":1003},[1236],{"type":49,"value":1006},{"type":44,"tag":93,"props":1238,"children":1240},{"class":283,"line":1239},18,[1241,1245],{"type":44,"tag":93,"props":1242,"children":1243},{"style":294},[1244],{"type":49,"value":1049},{"type":44,"tag":93,"props":1246,"children":1247},{"style":1017},[1248],{"type":49,"value":1249},"🟡 Open\n",{"type":44,"tag":93,"props":1251,"children":1253},{"class":283,"line":1252},19,[1254],{"type":44,"tag":93,"props":1255,"children":1256},{"emptyLinePlaceholder":1003},[1257],{"type":49,"value":1006},{"type":44,"tag":93,"props":1259,"children":1261},{"class":283,"line":1260},20,[1262,1266,1270],{"type":44,"tag":93,"props":1263,"children":1264},{"style":294},[1265],{"type":49,"value":1025},{"type":44,"tag":93,"props":1267,"children":1268},{"style":318},[1269],{"type":49,"value":1224},{"type":44,"tag":93,"props":1271,"children":1272},{"style":294},[1273],{"type":49,"value":997},{"type":44,"tag":93,"props":1275,"children":1277},{"class":283,"line":1276},21,[1278],{"type":44,"tag":93,"props":1279,"children":1280},{"emptyLinePlaceholder":1003},[1281],{"type":49,"value":1006},{"type":44,"tag":93,"props":1283,"children":1285},{"class":283,"line":1284},22,[1286,1290],{"type":44,"tag":93,"props":1287,"children":1288},{"style":294},[1289],{"type":49,"value":1049},{"type":44,"tag":93,"props":1291,"children":1292},{"style":1017},[1293],{"type":49,"value":1294},"👀 Watch items (forward-looking — pre-rule)\n",{"type":44,"tag":93,"props":1296,"children":1298},{"class":283,"line":1297},23,[1299],{"type":44,"tag":93,"props":1300,"children":1301},{"emptyLinePlaceholder":1003},[1302],{"type":49,"value":1006},{"type":44,"tag":93,"props":1304,"children":1306},{"class":283,"line":1305},24,[1307,1312,1316,1320,1324,1329,1333,1337,1341],{"type":44,"tag":93,"props":1308,"children":1309},{"style":502},[1310],{"type":49,"value":1311},"[Pre-rule tracking — ",{"type":44,"tag":93,"props":1313,"children":1314},{"style":294},[1315],{"type":49,"value":983},{"type":44,"tag":93,"props":1317,"children":1318},{"style":318},[1319],{"type":49,"value":659},{"type":44,"tag":93,"props":1321,"children":1322},{"style":294},[1323],{"type":49,"value":983},{"type":44,"tag":93,"props":1325,"children":1326},{"style":502},[1327],{"type":49,"value":1328}," and ",{"type":44,"tag":93,"props":1330,"children":1331},{"style":294},[1332],{"type":49,"value":983},{"type":44,"tag":93,"props":1334,"children":1335},{"style":318},[1336],{"type":49,"value":848},{"type":44,"tag":93,"props":1338,"children":1339},{"style":294},[1340],{"type":49,"value":983},{"type":44,"tag":93,"props":1342,"children":1343},{"style":502},[1344],{"type":49,"value":1345}," entries. These are not\n",{"type":44,"tag":93,"props":1347,"children":1349},{"class":283,"line":1348},25,[1350],{"type":44,"tag":93,"props":1351,"children":1352},{"style":502},[1353],{"type":49,"value":1354},"compliance gaps. Surface separately so the overdue \u002F due-soon bands contain\n",{"type":44,"tag":93,"props":1356,"children":1358},{"class":283,"line":1357},26,[1359],{"type":44,"tag":93,"props":1360,"children":1361},{"style":502},[1362],{"type":49,"value":1363},"only real compliance deadlines.]\n",{"type":44,"tag":93,"props":1365,"children":1367},{"class":283,"line":1366},27,[1368],{"type":44,"tag":93,"props":1369,"children":1370},{"emptyLinePlaceholder":1003},[1371],{"type":49,"value":1006},{"type":44,"tag":93,"props":1373,"children":1375},{"class":283,"line":1374},28,[1376,1380,1384,1388,1393,1397,1402,1406,1411,1415,1419],{"type":44,"tag":93,"props":1377,"children":1378},{"style":294},[1379],{"type":49,"value":1121},{"type":44,"tag":93,"props":1381,"children":1382},{"style":502},[1383],{"type":49,"value":1126},{"type":44,"tag":93,"props":1385,"children":1386},{"style":294},[1387],{"type":49,"value":1121},{"type":44,"tag":93,"props":1389,"children":1390},{"style":502},[1391],{"type":49,"value":1392}," Item ",{"type":44,"tag":93,"props":1394,"children":1395},{"style":294},[1396],{"type":49,"value":1121},{"type":44,"tag":93,"props":1398,"children":1399},{"style":502},[1400],{"type":49,"value":1401}," Type (ANPR\u002FNPRM\u002FRFI) ",{"type":44,"tag":93,"props":1403,"children":1404},{"style":294},[1405],{"type":49,"value":1121},{"type":44,"tag":93,"props":1407,"children":1408},{"style":502},[1409],{"type":49,"value":1410}," Comment deadline ",{"type":44,"tag":93,"props":1412,"children":1413},{"style":294},[1414],{"type":49,"value":1121},{"type":44,"tag":93,"props":1416,"children":1417},{"style":502},[1418],{"type":49,"value":1153},{"type":44,"tag":93,"props":1420,"children":1421},{"style":294},[1422],{"type":49,"value":1176},{"type":44,"tag":93,"props":1424,"children":1426},{"class":283,"line":1425},29,[1427],{"type":44,"tag":93,"props":1428,"children":1429},{"style":294},[1430],{"type":49,"value":1431},"|---|---|---|---|---|\n",{"type":44,"tag":93,"props":1433,"children":1435},{"class":283,"line":1434},30,[1436],{"type":44,"tag":93,"props":1437,"children":1438},{"emptyLinePlaceholder":1003},[1439],{"type":49,"value":1006},{"type":44,"tag":93,"props":1441,"children":1443},{"class":283,"line":1442},31,[1444,1448],{"type":44,"tag":93,"props":1445,"children":1446},{"style":294},[1447],{"type":49,"value":1049},{"type":44,"tag":93,"props":1449,"children":1450},{"style":1017},[1451],{"type":49,"value":1452},"In progress\n",{"type":44,"tag":93,"props":1454,"children":1456},{"class":283,"line":1455},32,[1457],{"type":44,"tag":93,"props":1458,"children":1459},{"emptyLinePlaceholder":1003},[1460],{"type":49,"value":1006},{"type":44,"tag":93,"props":1462,"children":1464},{"class":283,"line":1463},33,[1465,1469,1473],{"type":44,"tag":93,"props":1466,"children":1467},{"style":294},[1468],{"type":49,"value":1025},{"type":44,"tag":93,"props":1470,"children":1471},{"style":318},[1472],{"type":49,"value":1224},{"type":44,"tag":93,"props":1474,"children":1475},{"style":294},[1476],{"type":49,"value":997},{"type":44,"tag":93,"props":1478,"children":1480},{"class":283,"line":1479},34,[1481],{"type":44,"tag":93,"props":1482,"children":1483},{"emptyLinePlaceholder":1003},[1484],{"type":49,"value":1006},{"type":44,"tag":93,"props":1486,"children":1488},{"class":283,"line":1487},35,[1489,1493],{"type":44,"tag":93,"props":1490,"children":1491},{"style":294},[1492],{"type":49,"value":1049},{"type":44,"tag":93,"props":1494,"children":1495},{"style":1017},[1496],{"type":49,"value":1497},"Recently closed\n",{"type":44,"tag":93,"props":1499,"children":1501},{"class":283,"line":1500},36,[1502],{"type":44,"tag":93,"props":1503,"children":1504},{"emptyLinePlaceholder":1003},[1505],{"type":49,"value":1006},{"type":44,"tag":93,"props":1507,"children":1509},{"class":283,"line":1508},37,[1510],{"type":44,"tag":93,"props":1511,"children":1512},{"style":502},[1513],{"type":49,"value":1514},"[last 5, with resolution]\n",{"type":44,"tag":93,"props":1516,"children":1518},{"class":283,"line":1517},38,[1519],{"type":44,"tag":93,"props":1520,"children":1521},{"emptyLinePlaceholder":1003},[1522],{"type":49,"value":1006},{"type":44,"tag":93,"props":1524,"children":1526},{"class":283,"line":1525},39,[1527],{"type":44,"tag":93,"props":1528,"children":1529},{"style":294},[1530],{"type":49,"value":1531},"---\n",{"type":44,"tag":93,"props":1533,"children":1535},{"class":283,"line":1534},40,[1536],{"type":44,"tag":93,"props":1537,"children":1538},{"emptyLinePlaceholder":1003},[1539],{"type":49,"value":1006},{"type":44,"tag":93,"props":1541,"children":1543},{"class":283,"line":1542},41,[1544,1550,1556,1560,1565,1570,1574,1579,1583,1587,1591],{"type":44,"tag":93,"props":1545,"children":1547},{"style":1546},"--shiki-light:#39ADB5;--shiki-light-font-weight:bold;--shiki-default:#89DDFF;--shiki-default-font-weight:bold;--shiki-dark:#89DDFF;--shiki-dark-font-weight:bold",[1548],{"type":49,"value":1549},"**",{"type":44,"tag":93,"props":1551,"children":1553},{"style":1552},"--shiki-light:#E53935;--shiki-light-font-weight:bold;--shiki-default:#F07178;--shiki-default-font-weight:bold;--shiki-dark:#F07178;--shiki-dark-font-weight:bold",[1554],{"type":49,"value":1555},"Oldest open gap:",{"type":44,"tag":93,"props":1557,"children":1558},{"style":1546},[1559],{"type":49,"value":1549},{"type":44,"tag":93,"props":1561,"children":1562},{"style":294},[1563],{"type":49,"value":1564}," [",{"type":44,"tag":93,"props":1566,"children":1567},{"style":318},[1568],{"type":49,"value":1569},"ID",{"type":44,"tag":93,"props":1571,"children":1572},{"style":294},[1573],{"type":49,"value":1082},{"type":44,"tag":93,"props":1575,"children":1576},{"style":502},[1577],{"type":49,"value":1578},", ",{"type":44,"tag":93,"props":1580,"children":1581},{"style":294},[1582],{"type":49,"value":1025},{"type":44,"tag":93,"props":1584,"children":1585},{"style":318},[1586],{"type":49,"value":97},{"type":44,"tag":93,"props":1588,"children":1589},{"style":294},[1590],{"type":49,"value":1082},{"type":44,"tag":93,"props":1592,"children":1593},{"style":502},[1594],{"type":49,"value":1595}," days\n",{"type":44,"tag":93,"props":1597,"children":1599},{"class":283,"line":1598},42,[1600,1604,1609,1613,1617,1622],{"type":44,"tag":93,"props":1601,"children":1602},{"style":1546},[1603],{"type":49,"value":1549},{"type":44,"tag":93,"props":1605,"children":1606},{"style":1552},[1607],{"type":49,"value":1608},"Gaps by owner:",{"type":44,"tag":93,"props":1610,"children":1611},{"style":1546},[1612],{"type":49,"value":1549},{"type":44,"tag":93,"props":1614,"children":1615},{"style":294},[1616],{"type":49,"value":1564},{"type":44,"tag":93,"props":1618,"children":1619},{"style":318},[1620],{"type":49,"value":1621},"breakdown",{"type":44,"tag":93,"props":1623,"children":1624},{"style":294},[1625],{"type":49,"value":997},{"type":44,"tag":93,"props":1627,"children":1629},{"class":283,"line":1628},43,[1630,1634,1639,1643,1647,1651,1655],{"type":44,"tag":93,"props":1631,"children":1632},{"style":1546},[1633],{"type":49,"value":1549},{"type":44,"tag":93,"props":1635,"children":1636},{"style":1552},[1637],{"type":49,"value":1638},"Owner notifications sent:",{"type":44,"tag":93,"props":1640,"children":1641},{"style":1546},[1642],{"type":49,"value":1549},{"type":44,"tag":93,"props":1644,"children":1645},{"style":294},[1646],{"type":49,"value":1564},{"type":44,"tag":93,"props":1648,"children":1649},{"style":318},[1650],{"type":49,"value":97},{"type":44,"tag":93,"props":1652,"children":1653},{"style":294},[1654],{"type":49,"value":1082},{"type":44,"tag":93,"props":1656,"children":1657},{"style":502},[1658],{"type":49,"value":1659}," \u002F [N total gaps]\n",{"type":44,"tag":93,"props":1661,"children":1663},{"class":283,"line":1662},44,[1664],{"type":44,"tag":93,"props":1665,"children":1666},{"emptyLinePlaceholder":1003},[1667],{"type":49,"value":1006},{"type":44,"tag":93,"props":1669,"children":1671},{"class":283,"line":1670},45,[1672],{"type":44,"tag":93,"props":1673,"children":1674},{"style":294},[1675],{"type":49,"value":1531},{"type":44,"tag":93,"props":1677,"children":1679},{"class":283,"line":1678},46,[1680],{"type":44,"tag":93,"props":1681,"children":1682},{"emptyLinePlaceholder":1003},[1683],{"type":49,"value":1006},{"type":44,"tag":93,"props":1685,"children":1687},{"class":283,"line":1686},47,[1688,1692,1697,1701,1706,1711,1715,1720,1724,1729,1733],{"type":44,"tag":93,"props":1689,"children":1690},{"style":1546},[1691],{"type":49,"value":1549},{"type":44,"tag":93,"props":1693,"children":1694},{"style":1552},[1695],{"type":49,"value":1696},"Next step for each open gap:",{"type":44,"tag":93,"props":1698,"children":1699},{"style":1546},[1700],{"type":49,"value":1549},{"type":44,"tag":93,"props":1702,"children":1703},{"style":294},[1704],{"type":49,"value":1705}," `",{"type":44,"tag":93,"props":1707,"children":1708},{"style":318},[1709],{"type":49,"value":1710},"\u002Fregulatory-legal:policy-redraft",{"type":44,"tag":93,"props":1712,"children":1713},{"style":294},[1714],{"type":49,"value":983},{"type":44,"tag":93,"props":1716,"children":1717},{"style":502},[1718],{"type":49,"value":1719}," produces a marked-up policy redraft with ",{"type":44,"tag":93,"props":1721,"children":1722},{"style":294},[1723],{"type":49,"value":983},{"type":44,"tag":93,"props":1725,"children":1726},{"style":318},[1727],{"type":49,"value":1728},"[verify]",{"type":44,"tag":93,"props":1730,"children":1731},{"style":294},[1732],{"type":49,"value":983},{"type":44,"tag":93,"props":1734,"children":1735},{"style":502},[1736],{"type":49,"value":1737}," tags and a change summary. It's a proposal for the policy owner's review — not a direct edit to source documents.\n",{"type":44,"tag":93,"props":1739,"children":1741},{"class":283,"line":1740},48,[1742],{"type":44,"tag":93,"props":1743,"children":1744},{"emptyLinePlaceholder":1003},[1745],{"type":49,"value":1006},{"type":44,"tag":93,"props":1747,"children":1749},{"class":283,"line":1748},49,[1750],{"type":44,"tag":93,"props":1751,"children":1752},{"style":294},[1753],{"type":49,"value":1531},{"type":44,"tag":93,"props":1755,"children":1757},{"class":283,"line":1756},50,[1758],{"type":44,"tag":93,"props":1759,"children":1760},{"emptyLinePlaceholder":1003},[1761],{"type":49,"value":1006},{"type":44,"tag":93,"props":1763,"children":1765},{"class":283,"line":1764},51,[1766,1770,1775,1779,1784,1788,1793,1797,1801,1805,1810,1814,1819,1823,1828,1832],{"type":44,"tag":93,"props":1767,"children":1768},{"style":1546},[1769],{"type":49,"value":1549},{"type":44,"tag":93,"props":1771,"children":1772},{"style":1552},[1773],{"type":49,"value":1774},"Verify citations before relying on them.",{"type":44,"tag":93,"props":1776,"children":1777},{"style":1546},[1778],{"type":49,"value":1549},{"type":44,"tag":93,"props":1780,"children":1781},{"style":502},[1782],{"type":49,"value":1783}," Regulation citations in this tracker were AI-generated upstream (by reg-feed-watcher and policy-diff) and have not been checked against a primary source. Before closing or risk-accepting a gap — or citing one in an attestation, board report, or regulator response — confirm the underlying rule against Westlaw, your firm's research platform, or the issuing authority's website. AI-generated regulatory citations are sometimes fabricated, misquoted, or stale. Source tags carried forward from upstream (e.g., ",{"type":44,"tag":93,"props":1785,"children":1786},{"style":294},[1787],{"type":49,"value":983},{"type":44,"tag":93,"props":1789,"children":1790},{"style":318},[1791],{"type":49,"value":1792},"[Federal Register]",{"type":44,"tag":93,"props":1794,"children":1795},{"style":294},[1796],{"type":49,"value":983},{"type":44,"tag":93,"props":1798,"children":1799},{"style":502},[1800],{"type":49,"value":1578},{"type":44,"tag":93,"props":1802,"children":1803},{"style":294},[1804],{"type":49,"value":983},{"type":44,"tag":93,"props":1806,"children":1807},{"style":318},[1808],{"type":49,"value":1809},"[web search — verify]",{"type":44,"tag":93,"props":1811,"children":1812},{"style":294},[1813],{"type":49,"value":983},{"type":44,"tag":93,"props":1815,"children":1816},{"style":502},[1817],{"type":49,"value":1818},") show where each citation originated; ",{"type":44,"tag":93,"props":1820,"children":1821},{"style":294},[1822],{"type":49,"value":983},{"type":44,"tag":93,"props":1824,"children":1825},{"style":318},[1826],{"type":49,"value":1827},"verify",{"type":44,"tag":93,"props":1829,"children":1830},{"style":294},[1831],{"type":49,"value":983},{"type":44,"tag":93,"props":1833,"children":1834},{"style":502},[1835],{"type":49,"value":1836}," tags carry higher fabrication risk and should be checked first. Never strip the tags when surfacing gaps.\n",{"type":44,"tag":71,"props":1838,"children":1840},{"id":1839},"config-dependent-fallbacks",[1841],{"type":49,"value":1842},"Config-dependent fallbacks",{"type":44,"tag":56,"props":1844,"children":1845},{},[1846,1848,1854,1856,1862],{"type":49,"value":1847},"This skill reads gap-response owners and the escalation path from ",{"type":44,"tag":62,"props":1849,"children":1851},{"className":1850},[],[1852],{"type":49,"value":1853},"~\u002F.claude\u002Fplugins\u002Fconfig\u002Fclaude-for-legal\u002Fregulatory-legal\u002FCLAUDE.md",{"type":49,"value":1855},". When a value it needs is empty or still ",{"type":44,"tag":62,"props":1857,"children":1859},{"className":1858},[],[1860],{"type":49,"value":1861},"[PLACEHOLDER]",{"type":49,"value":248},{"type":44,"tag":1864,"props":1865,"children":1866},"ul",{},[1867,1900,1924],{"type":44,"tag":87,"props":1868,"children":1869},{},[1870,1875,1877,1883,1885,1891,1893,1898],{"type":44,"tag":137,"props":1871,"children":1872},{},[1873],{"type":49,"value":1874},"Gap-response triager missing:",{"type":49,"value":1876}," leave assignment open and append to the output: \"No triager is set in ",{"type":44,"tag":62,"props":1878,"children":1880},{"className":1879},[],[1881],{"type":49,"value":1882},"## Gap response process",{"type":49,"value":1884},". Assign one with ",{"type":44,"tag":62,"props":1886,"children":1888},{"className":1887},[],[1889],{"type":49,"value":1890},"\u002Fregulatory-legal:cold-start-interview --redo",{"type":49,"value":1892}," or by editing ",{"type":44,"tag":62,"props":1894,"children":1896},{"className":1895},[],[1897],{"type":49,"value":1853},{"type":49,"value":1899}," so new gaps get routed.\"",{"type":44,"tag":87,"props":1901,"children":1902},{},[1903,1908,1910,1916,1918,1922],{"type":44,"tag":137,"props":1904,"children":1905},{},[1906],{"type":49,"value":1907},"Owner unknown for a newly-ingested gap (no owner in policy library):",{"type":49,"value":1909}," log the gap with ",{"type":44,"tag":62,"props":1911,"children":1913},{"className":1912},[],[1914],{"type":49,"value":1915},"owner: [unassigned]",{"type":49,"value":1917}," and append: \"",{"type":44,"tag":93,"props":1919,"children":1920},{},[1921],{"type":49,"value":97},{"type":49,"value":1923}," gaps were ingested without an owner because the policy library doesn't name one for the affected policy. Fill in the Owner column in the policy library to route them.\"",{"type":44,"tag":87,"props":1925,"children":1926},{},[1927,1932,1934,1939,1940,1945],{"type":44,"tag":137,"props":1928,"children":1929},{},[1930],{"type":49,"value":1931},"Escalation path missing for an overdue material gap:",{"type":49,"value":1933}," still report it as overdue, and append: \"No escalation path is set for material overdue gaps. Configure it with ",{"type":44,"tag":62,"props":1935,"children":1937},{"className":1936},[],[1938],{"type":49,"value":1890},{"type":49,"value":1892},{"type":44,"tag":62,"props":1941,"children":1943},{"className":1942},[],[1944],{"type":49,"value":1853},{"type":49,"value":106},{"type":44,"tag":56,"props":1947,"children":1948},{},[1949],{"type":49,"value":1950},"Say nothing about config when the values are populated.",{"type":44,"tag":56,"props":1952,"children":1953},{},[1954],{"type":44,"tag":137,"props":1955,"children":1956},{},[1957],{"type":49,"value":1958},"Due-date reminder logic (runs during status report and scheduled agent):",{"type":44,"tag":56,"props":1960,"children":1961},{},[1962,1964,1969],{"type":49,"value":1963},"Reminder cadence is a function of ",{"type":44,"tag":62,"props":1965,"children":1967},{"className":1966},[],[1968],{"type":49,"value":680},{"type":49,"value":1970}," — compliance gaps get a 30-day heads-up, comment-decision items get 21 days (tighter because the drafting window is shorter), watch items get no auto-reminder (re-evaluate when an NPRM drops).",{"type":44,"tag":56,"props":1972,"children":1973},{},[1974],{"type":49,"value":1975},"For each gap with status \"open\" or \"in-progress\":",{"type":44,"tag":1864,"props":1977,"children":1978},{},[1979,2013,2028,2038,2043,2071,2076],{"type":44,"tag":87,"props":1980,"children":1981},{},[1982,1987,1988,1993,1994,1999,2000,2005,2007,2011],{"type":44,"tag":62,"props":1983,"children":1985},{"className":1984},[],[1986],{"type":49,"value":423},{"type":49,"value":1578},{"type":44,"tag":62,"props":1989,"children":1991},{"className":1990},[],[1992],{"type":49,"value":777},{"type":49,"value":1578},{"type":44,"tag":62,"props":1995,"children":1997},{"className":1996},[],[1998],{"type":49,"value":798},{"type":49,"value":1578},{"type":44,"tag":62,"props":2001,"children":2003},{"className":2002},[],[2004],{"type":49,"value":727},{"type":49,"value":2006},": if due date is within 30 days and a reminder has not been sent in the last 7 days, PREVIEW a Slack DM (subject \"⏰ Reminder: compliance gap due in ",{"type":44,"tag":93,"props":2008,"children":2009},{},[2010],{"type":49,"value":97},{"type":49,"value":2012}," days\") and wait for per-send confirm before sending.",{"type":44,"tag":87,"props":2014,"children":2015},{},[2016,2021,2023,2027],{"type":44,"tag":62,"props":2017,"children":2019},{"className":2018},[],[2020],{"type":49,"value":848},{"type":49,"value":2022},": if comment deadline is within 21 days and a reminder has not been sent in the last 7 days, PREVIEW a Slack DM (subject \"💬 Comment-decision deadline in ",{"type":44,"tag":93,"props":2024,"children":2025},{},[2026],{"type":49,"value":97},{"type":49,"value":2012},{"type":44,"tag":87,"props":2029,"children":2030},{},[2031,2036],{"type":44,"tag":62,"props":2032,"children":2034},{"className":2033},[],[2035],{"type":49,"value":659},{"type":49,"value":2037},": no auto-reminder. Revisit when the tracker is reviewed or an NPRM is logged for the same regulation.",{"type":44,"tag":87,"props":2039,"children":2040},{},[2041],{"type":49,"value":2042},"If due date has passed on a compliance gap: flag as overdue in the report and PREVIEW a Slack DM — wait for per-send confirm before sending.",{"type":44,"tag":87,"props":2044,"children":2045},{},[2046,2048,2053,2055,2061,2063,2069],{"type":49,"value":2047},"If comment deadline has passed on a ",{"type":44,"tag":62,"props":2049,"children":2051},{"className":2050},[],[2052],{"type":49,"value":848},{"type":49,"value":2054}," item and no comment was filed: flag as overdue, PREVIEW a Slack DM (wait for per-send confirm), and ask the owner to update to ",{"type":44,"tag":62,"props":2056,"children":2058},{"className":2057},[],[2059],{"type":49,"value":2060},"risk-accepted",{"type":49,"value":2062}," (deliberate no-comment) or ",{"type":44,"tag":62,"props":2064,"children":2066},{"className":2065},[],[2067],{"type":49,"value":2068},"closed",{"type":49,"value":2070}," (comment filed) with a note.",{"type":44,"tag":87,"props":2072,"children":2073},{},[2074],{"type":49,"value":2075},"Record reminder timestamps in the tracker to avoid repeat nags.",{"type":44,"tag":87,"props":2077,"children":2078},{},[2079],{"type":49,"value":2080},"Batch reminders still require per-send confirm — previewing \"you're about to send 12 DMs\" and waiting for yes counts; silently firing a batch does not.",{"type":44,"tag":892,"props":2082,"children":2084},{"id":2083},"consequential-action-gate-certify-compliance",[2085],{"type":49,"value":2086},"Consequential-action gate (certify compliance)",{"type":44,"tag":56,"props":2088,"children":2089},{},[2090,2095,2097,2102,2104,2109],{"type":44,"tag":137,"props":2091,"children":2092},{},[2093],{"type":49,"value":2094},"Before closing a gap as resolved, or producing any output that certifies compliance with a regulatory requirement (internal attestation, board report, audit response, regulator response):",{"type":49,"value":2096}," Read ",{"type":44,"tag":62,"props":2098,"children":2100},{"className":2099},[],[2101],{"type":49,"value":988},{"type":49,"value":2103}," in ~\u002F.claude\u002Fplugins\u002Fconfig\u002Fclaude-for-legal\u002Fregulatory-legal\u002FCLAUDE.md. If the Role is ",{"type":44,"tag":137,"props":2105,"children":2106},{},[2107],{"type":49,"value":2108},"Non-lawyer",{"type":49,"value":248},{"type":44,"tag":52,"props":2111,"children":2112},{},[2113,2118,2151],{"type":44,"tag":56,"props":2114,"children":2115},{},[2116],{"type":49,"value":2117},"Certifying compliance — or closing a gap as resolved — has legal consequences. The certification can be used against the company if it's later shown to be wrong, and premature closure leaves exposure unaddressed. Have you reviewed this with an attorney? If yes, proceed. If no, here's a brief to bring to them:",{"type":44,"tag":1864,"props":2119,"children":2120},{},[2121,2126,2131,2136,2141,2146],{"type":44,"tag":87,"props":2122,"children":2123},{},[2124],{"type":49,"value":2125},"The gap (requirement, source, what the policy diff found)",{"type":44,"tag":87,"props":2127,"children":2128},{},[2129],{"type":49,"value":2130},"What the proposed resolution does and does not cover",{"type":44,"tag":87,"props":2132,"children":2133},{},[2134],{"type":49,"value":2135},"Any residual gap or ambiguity",{"type":44,"tag":87,"props":2137,"children":2138},{},[2139],{"type":49,"value":2140},"Open questions and what's unresolved",{"type":44,"tag":87,"props":2142,"children":2143},{},[2144],{"type":49,"value":2145},"What could go wrong (overbroad certification, unresolved residual obligation, inconsistent prior position)",{"type":44,"tag":87,"props":2147,"children":2148},{},[2149],{"type":49,"value":2150},"What to ask the attorney (is this truly closed; should we risk-accept with rationale instead; do we need outside-counsel concurrence)",{"type":44,"tag":56,"props":2152,"children":2153},{},[2154],{"type":49,"value":2155},"If you need to find a lawyer: your professional regulator's referral service is the fastest starting point (state bar in the US; SRA\u002FBar Standards Board in England & Wales; Law Society in Scotland\u002FNI\u002FIreland\u002FCanada\u002FAustralia; or your jurisdiction's equivalent).",{"type":44,"tag":56,"props":2157,"children":2158},{},[2159],{"type":49,"value":2160},"Do not mark a gap closed or produce a compliance certification past this gate without an explicit yes. Status reports and tracking views do not require the gate.",{"type":44,"tag":892,"props":2162,"children":2164},{"id":2163},"mode-3-close-a-gap",[2165],{"type":49,"value":2166},"Mode 3: Close a gap",{"type":44,"tag":271,"props":2168,"children":2171},{"className":2169,"code":2170,"language":49},[931],"\u002Fregulatory-legal:gaps --close GAP-001\nResolution: \"Policy updated v2.3, approved [date]\"\n",[2172],{"type":44,"tag":62,"props":2173,"children":2174},{"__ignoreMap":276},[2175],{"type":49,"value":2170},{"type":44,"tag":56,"props":2177,"children":2178},{},[2179],{"type":49,"value":2180},"Updates status to closed, records resolution and close date.",{"type":44,"tag":892,"props":2182,"children":2184},{"id":2183},"mode-4-risk-accept-a-gap",[2185],{"type":49,"value":2186},"Mode 4: Risk-accept a gap",{"type":44,"tag":56,"props":2188,"children":2189},{},[2190],{"type":49,"value":2191},"Sometimes the answer is \"we're not going to fix this.\" That's a valid decision\n— but it should be documented.",{"type":44,"tag":271,"props":2193,"children":2196},{"className":2194,"code":2195,"language":49},[931],"\u002Fregulatory-legal:gaps --accept GAP-002\nRationale: \"Requirement applies only to [condition we don't meet]. Revisit if [trigger].\"\nAccepted by: [name with authority]\n",[2197],{"type":44,"tag":62,"props":2198,"children":2199},{"__ignoreMap":276},[2200],{"type":49,"value":2195},{"type":44,"tag":56,"props":2202,"children":2203},{},[2204],{"type":49,"value":2205},"Status → risk-accepted. Stays in the tracker (not deleted) but falls out of\nthe open-gaps report.",{"type":44,"tag":71,"props":2207,"children":2209},{"id":2208},"integration-reg-change-monitor-agent",[2210],{"type":49,"value":2211},"Integration: reg-change-monitor agent",{"type":44,"tag":56,"props":2213,"children":2214},{},[2215],{"type":49,"value":2216},"The agent's digest includes the gap count and oldest-open-gap age. If anything\ngoes overdue, that goes at the top of the digest. The agent also runs the\ndue-date reminder check and sends any outstanding Slack notifications.",{"type":44,"tag":71,"props":2218,"children":2220},{"id":2219},"close-with-the-next-steps-decision-tree",[2221],{"type":49,"value":2222},"Close with the next-steps decision tree",{"type":44,"tag":56,"props":2224,"children":2225},{},[2226,2228,2234],{"type":49,"value":2227},"End with the next-steps decision tree per CLAUDE.md ",{"type":44,"tag":62,"props":2229,"children":2231},{"className":2230},[],[2232],{"type":49,"value":2233},"## Outputs",{"type":49,"value":2235},". 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":56,"props":2237,"children":2238},{},[2239,2241,2247],{"type":49,"value":2240},"If the tracker surfaced more than ~10 open gaps, or any time the user asks: offer the dashboard (see CLAUDE.md ",{"type":44,"tag":62,"props":2242,"children":2244},{"className":2243},[],[2245],{"type":49,"value":2246},"## Outputs → Dashboard offer for data-heavy outputs",{"type":49,"value":2248},"). Shape the offer for this output — counts by severity, a timeline of gaps by due date, and a sortable grid with owner, status, and last-touched date.",{"type":44,"tag":71,"props":2250,"children":2252},{"id":2251},"what-this-skill-does-not-do",[2253],{"type":49,"value":2254},"What this skill does not do",{"type":44,"tag":1864,"props":2256,"children":2257},{},[2258,2263,2268],{"type":44,"tag":87,"props":2259,"children":2260},{},[2261],{"type":49,"value":2262},"Close gaps on its own. Closing requires the resolution note and the human\naction that the note describes.",{"type":44,"tag":87,"props":2264,"children":2265},{},[2266],{"type":49,"value":2267},"Send Slack notifications if the Slack MCP is not configured. Falls back to\nflagging in the status report.",{"type":44,"tag":87,"props":2269,"children":2270},{},[2271],{"type":49,"value":2272},"Send more than one reminder per 7-day period per gap. Nag once, not constantly.",{"type":44,"tag":2274,"props":2275,"children":2276},"style",{},[2277],{"type":49,"value":2278},"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":2280,"total":2372},[2281,2293,2310,2325,2337,2348,2359],{"slug":2282,"name":2282,"fn":2283,"description":2284,"org":2285,"tags":2286,"stars":26,"repoUrl":27,"updatedAt":2292},"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},[2287,2288,2291],{"name":14,"slug":15,"type":16},{"name":2289,"slug":2290,"type":16},"Governance","governance",{"name":24,"slug":25,"type":16},"2026-05-14T06:02:19.677579",{"slug":2294,"name":2294,"fn":2295,"description":2296,"org":2297,"tags":2298,"stars":26,"repoUrl":27,"updatedAt":2309},"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},[2299,2302,2305,2306],{"name":2300,"slug":2301,"type":16},"Automation","automation",{"name":2303,"slug":2304,"type":16},"Contracts","contracts",{"name":24,"slug":25,"type":16},{"name":2307,"slug":2308,"type":16},"QA","qa","2026-05-14T06:01:31.00555",{"slug":2311,"name":2311,"fn":2312,"description":2313,"org":2314,"tags":2315,"stars":26,"repoUrl":27,"updatedAt":2324},"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},[2316,2317,2318,2321],{"name":24,"slug":25,"type":16},{"name":21,"slug":22,"type":16},{"name":2319,"slug":2320,"type":16},"Regulatory Compliance","regulatory-compliance",{"name":2322,"slug":2323,"type":16},"Risk Assessment","risk-assessment","2026-05-13T06:03:19.61029",{"slug":2326,"name":2326,"fn":2327,"description":2328,"org":2329,"tags":2330,"stars":26,"repoUrl":27,"updatedAt":2336},"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},[2331,2332,2335],{"name":2303,"slug":2304,"type":16},{"name":2333,"slug":2334,"type":16},"Documents","documents",{"name":24,"slug":25,"type":16},"2026-05-13T06:03:34.070339",{"slug":2338,"name":2338,"fn":2339,"description":2340,"org":2341,"tags":2342,"stars":26,"repoUrl":27,"updatedAt":2347},"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},[2343,2344],{"name":2300,"slug":2301,"type":16},{"name":2345,"slug":2346,"type":16},"Plugin Development","plugin-development","2026-05-13T06:02:55.642269",{"slug":2349,"name":2349,"fn":2350,"description":2351,"org":2352,"tags":2353,"stars":26,"repoUrl":27,"updatedAt":2358},"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},[2354,2357],{"name":2355,"slug":2356,"type":16},"Education","education",{"name":24,"slug":25,"type":16},"2026-07-24T05:41:43.01243",{"slug":2360,"name":2360,"fn":2361,"description":2362,"org":2363,"tags":2364,"stars":26,"repoUrl":27,"updatedAt":2371},"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},[2365,2366,2367,2368],{"name":18,"slug":19,"type":16},{"name":2289,"slug":2290,"type":16},{"name":24,"slug":25,"type":16},{"name":2369,"slug":2370,"type":16},"Meetings","meetings","2026-05-14T06:01:29.792942",118,{"items":2374,"total":2557},[2375,2396,2410,2422,2441,2452,2471,2491,2505,2520,2528,2541],{"slug":2376,"name":2376,"fn":2377,"description":2378,"org":2379,"tags":2380,"stars":2393,"repoUrl":2394,"updatedAt":2395},"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},[2381,2384,2387,2390],{"name":2382,"slug":2383,"type":16},"Creative","creative",{"name":2385,"slug":2386,"type":16},"Design","design",{"name":2388,"slug":2389,"type":16},"Generative Art","generative-art",{"name":2391,"slug":2392,"type":16},"JavaScript","javascript",161831,"https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fskills","2026-04-06T17:56:15.455818",{"slug":2397,"name":2397,"fn":2398,"description":2399,"org":2400,"tags":2401,"stars":2393,"repoUrl":2394,"updatedAt":2409},"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},[2402,2405,2406],{"name":2403,"slug":2404,"type":16},"Branding","branding",{"name":2385,"slug":2386,"type":16},{"name":2407,"slug":2408,"type":16},"Typography","typography","2026-04-06T17:56:05.042852",{"slug":2411,"name":2411,"fn":2412,"description":2413,"org":2414,"tags":2415,"stars":2393,"repoUrl":2394,"updatedAt":2421},"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},[2416,2417,2418],{"name":2382,"slug":2383,"type":16},{"name":2385,"slug":2386,"type":16},{"name":2419,"slug":2420,"type":16},"PDF","pdf","2026-04-06T17:56:03.794732",{"slug":2423,"name":2423,"fn":2424,"description":2425,"org":2426,"tags":2427,"stars":2393,"repoUrl":2394,"updatedAt":2440},"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},[2428,2431,2432,2435,2437],{"name":2429,"slug":2430,"type":16},"Agents","agents",{"name":9,"slug":8,"type":16},{"name":2433,"slug":2434,"type":16},"Anthropic SDK","anthropic-sdk",{"name":2436,"slug":2423,"type":16},"Claude API",{"name":2438,"slug":2439,"type":16},"LLM","llm","2026-07-28T05:36:08.213335",{"slug":2442,"name":2442,"fn":2443,"description":2444,"org":2445,"tags":2446,"stars":2393,"repoUrl":2394,"updatedAt":2451},"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},[2447,2448],{"name":18,"slug":19,"type":16},{"name":2449,"slug":2450,"type":16},"Technical Writing","technical-writing","2026-04-06T17:56:14.18897",{"slug":2453,"name":2453,"fn":2454,"description":2455,"org":2456,"tags":2457,"stars":2393,"repoUrl":2394,"updatedAt":2470},"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},[2458,2459,2461,2464,2467],{"name":2333,"slug":2334,"type":16},{"name":2460,"slug":2453,"type":16},"DOCX",{"name":2462,"slug":2463,"type":16},"Office","office",{"name":2465,"slug":2466,"type":16},"Templates","templates",{"name":2468,"slug":2469,"type":16},"Word","word","2026-07-18T05:16:23.136271",{"slug":2472,"name":2472,"fn":2473,"description":2474,"org":2475,"tags":2476,"stars":2393,"repoUrl":2394,"updatedAt":2490},"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},[2477,2478,2481,2484,2487],{"name":2385,"slug":2386,"type":16},{"name":2479,"slug":2480,"type":16},"Frontend","frontend",{"name":2482,"slug":2483,"type":16},"React","react",{"name":2485,"slug":2486,"type":16},"Tailwind CSS","tailwind-css",{"name":2488,"slug":2489,"type":16},"UI Components","ui-components","2026-04-06T17:56:16.723469",{"slug":2492,"name":2492,"fn":2493,"description":2494,"org":2495,"tags":2496,"stars":2393,"repoUrl":2394,"updatedAt":2504},"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},[2497,2500,2501],{"name":2498,"slug":2499,"type":16},"Communications","communications",{"name":2465,"slug":2466,"type":16},{"name":2502,"slug":2503,"type":16},"Writing","writing","2026-04-06T17:56:20.695522",{"slug":2506,"name":2506,"fn":2507,"description":2508,"org":2509,"tags":2510,"stars":2393,"repoUrl":2394,"updatedAt":2519},"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},[2511,2512,2515,2516],{"name":2429,"slug":2430,"type":16},{"name":2513,"slug":2514,"type":16},"API Development","api-development",{"name":2438,"slug":2439,"type":16},{"name":2517,"slug":2518,"type":16},"MCP","mcp","2026-04-06T17:56:10.357665",{"slug":2420,"name":2420,"fn":2521,"description":2522,"org":2523,"tags":2524,"stars":2393,"repoUrl":2394,"updatedAt":2527},"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},[2525,2526],{"name":2333,"slug":2334,"type":16},{"name":2419,"slug":2420,"type":16},"2026-04-06T17:56:02.483316",{"slug":2529,"name":2529,"fn":2530,"description":2531,"org":2532,"tags":2533,"stars":2393,"repoUrl":2394,"updatedAt":2540},"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},[2534,2537],{"name":2535,"slug":2536,"type":16},"PowerPoint","powerpoint",{"name":2538,"slug":2539,"type":16},"Presentations","presentations","2026-07-18T05:16:24.1471",{"slug":2542,"name":2542,"fn":2543,"description":2544,"org":2545,"tags":2546,"stars":2393,"repoUrl":2394,"updatedAt":2556},"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},[2547,2548,2549,2552,2555],{"name":2429,"slug":2430,"type":16},{"name":18,"slug":19,"type":16},{"name":2550,"slug":2551,"type":16},"Evals","evals",{"name":2553,"slug":2554,"type":16},"Performance","performance",{"name":2449,"slug":2450,"type":16},"2026-04-19T06:45:40.804",490]