Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add zhou210712/claude-for-legal-ZH --skill gap-surfacergit clone --depth 1 https://github.com/zhou210712/claude-for-legal-ZHWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/zhou210712/claude-for-legal-zh/gap-surfacer)<a href="https://agentmods.dev/skills/zhou210712/claude-for-legal-zh/gap-surfacer"><img src="https://agentmods.dev/badge/skills/zhou210712/claude-for-legal-zh/gap-surfacer/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/zhou210712/claude-for-legal-zh/gap-surfacer"><img src="https://agentmods.dev/badge/skills/zhou210712/claude-for-legal-zh/gap-surfacer.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00106 | $0.01653 |
| Opus 5.5 | $0.00042 | $0.00661 |
| Sonnet 5.5 | $0.00021 | $0.00331 |
| Haiku 4.5 | $0.00011 | $0.00165 |
Grade A, and why
gap-surfacer scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 147 lines — stays where its author put it; the contents beside it link to each section on GitHub.
差距呈现
负责人通知:默认开启。如需选择某个负责人不接收通知,将
owner_contact留空。
逐次发送确认——无例外
在发送任何通知消息(分配通知、逾期提醒、批量通知、状态报告)之前:
- 向用户展示你即将发送给谁、发送什么内容。
- 等待明确的同意。
- 绝不要不经确认就发送。不因是定时任务而跳过。不因是批量而跳过。不因昨天发送过而跳过。
未经确认的自动发送是本插件中最不可逆的操作——发送了插件自身页脚声明可能出错的内容,给无法检查的人。这种组合不能跳过审阅。
目的
差距被发现后就忘了。此技能跟踪它们直到关闭,并通知负责关闭它们的人。
跟踪文件
位于 ~/.claude/plugins/config/claude-for-legal/regulatory-legal/gap-tracker.yaml:
gaps:
- id: GAP-001
requirement: "[法规要求的内容]"
regulation: "[名称 + 引用]"
policy_affected: "[名称或'需要制定新政策']"
gap_type: "partial" # none | partial | full | new-policy | watch | comment-decision
owner: "[政策索引中的姓名]"
owner_contact: "[联系方式,如已知]"
opened: 2026-03-01
due: 2026-06-01 # 法规生效日期、内部截止日期或意见征集截止日期
status_verified: true # 如果上游政策差异分析无法确认法规有效,则为false;未验证的事项永不会进入🔴逾期分类
status: "open" # open | in-progress | closed | risk-accepted
notified: false # 分配通知发送后设为true
resolution: "" # 关闭时填写
绝不要将差距分类为"逾期"——如果法规未经验证。 🔴逾期分类意味着"我们错过了一个具有约束力的截止日期"。如果法规状态未经验证(政策差异分析设置了 status_verified: false,或法规>12个月/已超过适用日期且未确认时效性),截止日期可能不具有约束力。使用🟡"需要审查"并注明。
gap_type 语义:
| 值 | 含义 | 典型提醒频率 |
|---|---|---|
none |
政策已涵盖此要求。仅为审计追踪记录。 | 无自动提醒。 |
partial |
政策涵盖该主题但未完全覆盖新要求。需要修订。 | 到期前30天。 |
full |
政策与新要求矛盾或未提及。需要重写或添加新章节。 | 到期前30天。 |
new-policy |
现有政策中无此项内容。需要起草政策。 | 到期前30天。 |
watch |
前瞻性事项——预征求意见、调研通知、尚未最终确定的征求意见稿。当前没有合规义务;政策工作等待正式法规出台。due: 是重访日期,不是合规截止日期。 |
无自动提醒;在征求意见稿发布时或重访日期重新评估。 |
comment-decision |
预规则意见征集决策待定——团队正在决定是否提交反馈意见。due: 是意见征集截止日期。 |
截止日期前21天(比合规差距更紧凑)。 |
模式
模式1:从政策差异分析中获取
当政策差异分析发现差距时,追加到 gap-tracker.yaml。去重——相同要求 + 相同政策 = 相同差距,不重复计算。
获取后,通知负责人:
如果企业通讯工具可用且 owner_contact 已设置:向差距负责人发送通知——但仅在完成逐次发送确认之后。预览消息给用户,等待明确的同意,然后发送。发送后将 notified: true 设置在跟踪条目中。
模式2:状态报告
[工作成果头 — 按照插件配置 ## 输出]
## 开放差距 — [日期]
### 要点
[N个差距需要在[日期]前采取行动 — 前3项:X、Y、Z]
### 🔴 逾期
| ID | 要求 | 政策 | 负责人 | 截止日期 | 逾期天数 |
|----|------|------|--------|----------|---------|
| | | | | | |
### 🟠 30天内到期
[同上]
### 🟡 开放
[同上]
### 👀 观察事项(前瞻性——预法规)
[预法规跟踪——`watch` 和 `comment-decision` 条目。这些不是合规差距。单独呈现。]
### 进行中
[同上]
### 最近关闭
[最近5项,附解决方案]
---
**最早开放的差距:** [ID],[N]天
**按负责人分组的差距:** [分布]
**负责人通知已发送:** [N] / [N个总差距]
---
**依赖前核实引注。** 此跟踪文件中的法规引注由AI在上游生成(reg-feed-watcher 和 policy-diff),未经对照一手来源核实。在关闭、接受风险或引用到任何合规声明、董事会报告或监管机构回复之前,通过法律研究工具确认。
What ships with it
2 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 1mo ago First seen · 147 lines · 106 tokens per session scan A 30932d6750b9
gap-surfacer is a skill published in the GitHub repository zhou210712/claude-for-legal-ZH (238 stars, last pushed 5mo ago), licensed Apache-2.0. It adds 106 tokens to every session and 1,653 once invoked, about $0.0004 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-03.
Other skills, from other repositories
vendor-review
Evaluate a vendor — cost analysis, risk assessment, and recommendation. Use when reviewing a new vendor proposal, deciding whether to renew or replace a contract, comparing two vendors side-by-side, or building a TCO breakdown and negotiation points before procurement sign-off.
entity-compliance
Entity compliance tracker — initialize, report upcoming deadlines, update status, run health audit, export to CSV. Maintains a compliance-tracker.yaml built from the entity table, calculates filing deadlines by entity and jurisdiction, and surfaces what's due in the next 30/60/90 days. Use when user says "entity…
portfolio
Track the IP portfolio — registrations, renewals, maintenance fees, and use declarations. Use when checking what's renewing, adding or updating an asset, recording a maintenance filing, or auditing the register for gaps, lapses, and use-in-commerce questions. Receives handoffs from prosecution and clearance work.
launch-review
Full launch review against your framework and risk calibration. Use when the user says "review this launch", "legal review for [feature]", "can we ship this", "what are the legal issues with [product]", or references a launch tracker ticket or PRD that needs a category-by-category review memo.
client-intake
Structured intake — practice-area templates, cross-area issue spotting, conflict flags, and triage classification. Produces a formatted case summary the student analyzes and the professor reviews. Does NOT decide case acceptance. Use when starting a new client intake, running an intake interview, or writing up a new…
gap-surfacer
Reference: shared gap- and comment-tracker framework backing /regulatory-legal:gaps and /regulatory-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…