policy-gap-analysis
Compares a firm policy to a regulation clause by clause, giving a coverage table with verbatim excerpts, suggested edits and a memo. Reports coverage states; never concludes compliance. Use when the user says "does our policy cover this regulation", "where are the gaps against this rule", "map our procedure to the requirements", "compare our AML policy to the rule", or "what needs to change in this policy". Do NOT use for customer or counterparty research or EDD packs (use kyc-research-pack), firm-wide triage of a new rule (use reg-change-triage), enforcement read-across (use enforcement-action-review), exam requests (use exam-request-response), vendor SOC 2 reviews (use vendor-risk-review), workbook formatting (use built-in xlsx), or sending email (use built-in outlook-email).
- License 许可
- MIT
- 最近更新
- 2026-11-13
- Stars
- ★ 105
- Forks
- 120
01 前言 Front Matter
- name
- policy-gap-analysis
- metadata
- { "icon": "DocumentBulletListMultiple" }
- description
- Compares a firm policy to a regulation clause by clause, giving a coverage table with verbatim excerpts, suggested edits and a memo. Reports coverage states; never concludes compliance. Use when the user says "does our policy cover this regulation", "where are the gaps against this rule", "map our procedure to the requirements", "compare our AML policy to the rule", or "what needs to change in this policy". Do NOT use for customer or counterparty research or EDD packs (use kyc-research-pack), firm-wide triage of a new rule (use reg-change-triage), enforcement read-across (use enforcement-action-review), exam requests (use exam-request-response), vendor SOC 2 reviews (use vendor-risk-review), workbook formatting (use built-in xlsx), or sending email (use built-in outlook-email).
02 资源文件 7
- 参考文档references/document-extraction.md8.7 KB
- 参考文档references/gap-outline.md14.9 KB
- 参考文档references/house-rules.md59.4 KB
- 参考文档references/reg-source-access.md11.3 KB
- 参考文档references/self-check.md8.3 KB
- 参考文档references/workflow.md15.7 KB
- 脚本scripts/lint_deliverable.py74.8 KB
03 SKILL.md 正文
Scope
Do: compare specific regulation sections to a firm policy clause by clause, quote both sides, assign coverage states, suggest owner-reviewed edits Do not: conclude compliant, non-compliant, or in violation, score unretrieved requirements, treat drafts or unretrieved referenced documents as coverage, alter source systems, send, or file anything
When NOT to Use
- Triaging a newly published rule across the firm — use
reg-change-triageinstead. - An examiner request list or PDL response tracker — use
exam-request-responseinstead. - Formatting, charting, or restyling an existing workbook — use
xlsxinstead.
Policy-to-Regulation Gap Analysis
Clause-by-clause: what the regulation requires, what the policy says, and whether the second addresses the first.
This skill never concludes compliance. It reports coverage states with both sides quoted.
Whether the firm complies is a determination by a qualified owner — house-rules.md § 2.
Read first
Read these in full before step 1. They are binding; this body only summarises them.
references/workflow.md— the full text of every step below, with the guardrails, source resolution, and footer detail.references/house-rules.md— destination gate, determination gate, authority tiers, markers, footers, and § 12 data minimisation (every artifact, search, and chat reply, declines included).references/reg-source-access.md— routing, the codification gap, precision filtering.references/document-extraction.md— policy version and approval discipline.references/gap-outline.md— default table and memo structure: the output format.references/self-check.md— the final self-check (step 7).
Workflow
1. Establish both sides before comparing
Detail: workflow.md § 1.
- Regulation: agency · citation · type · tier · sections in scope. Retrieve per
reg-source-access.mdand run the codification check; an effective later final rule governs (PENDING CODIFICATION), a future one is a forthcoming change in theSourcecell. House-rules markers only, plusPROPOSED DRAFTING. - Policy: name · version · approval status · approval date · owner · scope. A draft is
DRAFT — not approved, never the control of record. When the policy given is a draft or superseded, find and open the approved version and stateControl of record: <doc> v<x>, approved <date> (<location>)in § 2 and the chat reply: a fact, never a D-bullet. Version or approval unknown →GAP — policy version not established, and no row is scored as covered. - Scope is load-bearing. Quote the policy's scope clause. Which entities, accounts, or
products the rule covers is proposed applicability:
NOT DETERMINED, compliance owner decides, with the retrieved defining provision cited. If that provision was not retrieved, the reasoning reads exactlynone - defining provision not retrieved. No hedge words.
2. Decompose the regulation into requirements
Detail: workflow.md § 2.
- One row per discrete requirement; a sentence with three obligations is three rows. Keep conditions, thresholds, and exemptions with the requirement. Requirements are scored; permissions and safe harbours are recorded, not scored.
- Quote each requirement verbatim. With the definitions section not retrieved, every entity term
in any quote or paraphrase reads
[covered entity], and the definitions section gets its G-bullet. - Exemption cell, three forms only (hard stop): verbatim quote with citation;
none stated in <citation>; orNOT DETERMINED - <decider> decides (Dn). Whether the firm can use an exemption is for the compliance owner; only its legal meaning goes to counsel.
3. Locate the policy text for each requirement
Detail: workflow.md § 3. Quote verbatim with section and page. Search the whole document,
appendices, and referenced procedures before concluding absence. A document incorporated by
reference is not coverage until retrieved and analysed: otherwise NOT RETRIEVED (request failed)
or GAP - <name> retrieval not attempted (Gn). State only the topical link for a match.
4. Assign a coverage state
Detail: workflow.md § 4. covered · partial (say which part is missing, with its (Gn)) ·
not found (searched and absent) · conflicts (quote both sides) · NOT DETERMINED. Substance,
not vocabulary; the same act, not the same topic. A requirement whose text was not retrieved is
never scored. Adequacy is not a coverage question.
5. Suggest edits
Detail: workflow.md § 5. For every partial, not found, or conflicts row, propose policy
language marked PROPOSED DRAFTING, anchored to the requirement it serves. Never presented as
approved and never written into the policy.
6. Emit the table and memo
Detail: workflow.md § 6. Build the table with xlsx and the memo with docx, following
gap-outline.md. Counts carry denominators and exclude marker rows, which stay visible. The memo
headline and the chat reply read, for example,
covered 3 of 9; partial 4 of 9 (G11 to G14); not found 2 of 9 (G9, G10); conflicts 1 of 9 (G8).
7. Final self-check, then count
- Save the artifact text, the chat reply (
reply.md), and the search log (searches.md: oneREQ | <source> | ok / failed / not attemptedline per request and oneHIT | <query> | <document> | used / rejected (Gn) / duplicate (Gn) / set asideline per document returned). - Run
python scripts/lint_deliverable.py <artifact> --reply reply.md --searches searches.md. Fix everyERROR, resolve everyCHECK, and re-run until it printsERROR: 0(house-rules.md§ 13). - Work through every item in
references/self-check.md, including the ones the script cannot judge. - Build the footer counts from the G-list and D-list last, then recount.
Guardrails
Full list: workflow.md, Guardrails.
- Never "compliant", "non-compliant", or "in violation"; coverage states only.
- Never score a requirement whose text was not retrieved, a draft as the control of record, or an incorporated document you did not retrieve.
- Never state what a rule covers as fact or from memory; never "will require you to".
- Never paraphrase either side into the table; never merge compound requirements.
- Never present suggested language as approved; never invent a marker; never fabricate.
- Never claim a save succeeded when it failed. Nothing is written into a policy, sent, filed, or committed in a source system.
Output footer
Per house-rules.md § 9 and workflow.md, Output footer: destination · regulation with tier,
sections, retrieval date and route · codification check and result · policy version and approval ·
requirements analysed and scored · coverage headline with G-IDs · open items by marker type ·
determinations outstanding · files and save result · template used.
Example
Input: CDD Policy v3.2 (approved 2026-03-18) against 31 CFR 1010.230(b)(2), (d) and (g).
Row 1010.230-2 | Requirement: "[covered entity] shall ... document the verification method
used" (31 CFR 1010.230(b)(2)) | Policy § 4.2: "Beneficial ownership information is verified
at onboarding." | Coverage: partial - no text on recording the method used (G4)
Row 1010.230-4 | Exemption: NOT DETERMINED - compliance owner decides (D2)
Headline: covered 2 of 9; partial 3 of 9 (G4 to G6); not found 3 of 9 (G7 to G9); conflicts 1 of 9 (G3)
D-bullet: D2 - NOT DETERMINED - can the firm rely on the (g) exemption - compliance owner decides
Suggested edit: PROPOSED DRAFTING - "Record the verification method used and its result." (1010.230-2)
Reference files
references/workflow.md— full step text, guardrails, source resolution, footer detail.references/self-check.md— the final self-check.references/house-rules.md— gates, tiers, markers, footers, data minimisation, the lint step.references/reg-source-access.md— routing, codification gap, citation fields.references/document-extraction.md— policy version, approval status, scope, incorporation.references/gap-outline.md— default coverage table and memo structure.
04 同仓库更多 Skills
stakeholder-and-decision-map
Mines customer interactions to identify stakeholders, infer their likely roles and engagement, map the decision process, and highlight who or what may be missing. Use when asked to "map a deal's buying group", identify influential or missing stakeholders, "assess who has gone quiet", or "explain how the customer will decide". Do not use for phased engagement plans, contact sequences, choosing or drafting outreach to the single next contact, seller or team performance reviews, or contacting, scheduling, or changing records.
sales-progress-update
Creates or refreshes a sales progress update for a manager or team about work done, deal movement, pending outcomes, supported forecast position, and help needed. Use when asked to "create my weekly sales update", "refresh my sales progress deck", "report my forecast position", "where do I stand against my quarter forecast", or "catch my manager up on committed deals". Do NOT use for non-sales project updates, a since-date deal change digest, momentum or blocker analysis, meeting prep, or outreach drafting.
submission-assemble
Put the checked CSR or 510(k) sections together in template order with a reviewer-facing open-items register, as a draft package for human sign-off. Use when the user asks "assemble the CSR draft", "put the module together for review", "build the review package with the open items on top", "compile the 510(k) sections in order" or "package this up for the submission lead". Do NOT use for assembling an unchecked draft - use consistency-check instead. Do NOT use for loading protocol, SAP or TLF sources - use source-ingest instead. Do NOT use for compiling general documents or slide decks - use the built-in docx or pptx skill instead. Do NOT use for filing or submitting to a regulator - use the sponsor's validated gateway, operated by a human, instead. Guardrail: draft for human approval only (L1); status is draft_clean or draft_open_items, never submitted.
source-ingest
Pull every number, date and population definition out of a study's protocol, SAP, TLF tables, investigator brochure and prior approved text into one cited fact map, keyed per config/field-dictionary.json, before any CSR or 510(k) section is written. Use when the user asks "here's the locked TLF set and SAP, set up the CSR", "load the protocol and tables before we start drafting", "what figures do we have from the database lock?", "pull the disposition counts out of Table 14.1.1" or "ingest the IB for the 510(k)". Do NOT use for drafting or assembling submission sections - use section-draft or submission-assemble instead. Do NOT use for reconciling a patient's medications - use the discharge-care-transition plugin instead. Guardrail: reads and cites sources only; never estimates, rounds or invents a fact.
section-plan
Work out which sections a CSR or 510(k) requires, from the templates in config, check each one against the cited fact map, and name what is missing before a word is drafted. Use when the user asks "what do we still need before we can draft the CSR?", "which sections are ready to start?", "what's blocking the performance data section?", "do we have everything for the synopsis?" or "map our tables to the E3 structure". Do NOT use for writing section language - use section-draft instead. Do NOT use for cross-checking a finished draft - use consistency-check instead. Do NOT use for outlining general Word documents or business reports - use the built-in docx skill instead. Only structures with a template in config are supported. Guardrail: plans only; never marks a section ready on a missing fact and never invents a structure.
section-draft
Write or revise the language for one planned CSR or 510(k) section - synopsis, efficacy, safety, discussion, device description - using only figures already in the cited fact map, each with its TLF or SAP citation. Use when the user asks "draft the Synopsis from our locked tables", "write up safety from Table 14.3.1", "give me a first pass at the discussion", "draft the device description for the 510(k)" or "tighten the wording of the Discussion section". Do NOT use for supplying a number not already in source_facts - use source-ingest instead. Do NOT use for verifying a draft's figures - use consistency-check instead. Do NOT use for appeal letters, clinical notes or discharge summaries - use the matching HLS plugin instead. Guardrail: drafts for human approval only (L1); never asserts an unsourced number or harmonises two figures.