Install any skill in seconds. Free to start, no credit card required.
Get Started Free →ECM 尽职调查工具类 Skill:调用第三方公开数据源(Tushare Pro / 企查查开放平台)与客户 提供的材料做交叉比对,发现数据不一致、未披露变更、过期信息等问题。当用户提到以下场景时 触发:外部数据验证、第三方数据核实、自动比对工商信息 / 股东 / 主要人员 / 知识产权 / 行政处罚、 用 Tushare 查财务数据 / 用企查查查工商、客户提供的营业执照 / 股东名册与外部工商档案是否一致、 API 数据比对、public data verification、cross-check 客户材料、抓取外部公开数据、 核实注册资本、核实法定代表人、核实实控人穿透、查专利 / 商标 / 软著是否真实存在、 查行政处罚记录。 典型输入:公司统一社会信用代码 / 名称 / ts_code、需比对的维度列表、客户提供的对应数据; 典型输出:数据比对报告(Markdown 表格 + 差异分析 + 建议核实清单)。 非触发边界:本 skill 是**工具类**不输出 DD Memo(五段式);真正的合规判断由各业务 DD skill 去做。不负责文件读取(归 ecm-dd-file-
.claude/skills/thomasmoreai-ecm-dd-data-verify/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 137% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 117% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 173% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 268% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 146% | 0% |
本 skill 是 ECM DD 的工具类 skill,和 17 个业务性 DD skill(dd-approval / dd-entity / … / dd-compliance)有明显的职责分工:
skill 作为输入使用
> ⚠️ 本 skill 不套用 shared/templates/dd-skill-template.md 的五段式输出契约。 > 该模板只约束业务性 DD skill。本 skill 走自己的"数据比对报告"格式。
scripts/tushare_connector.py / scripts/qcc_connector.py 取外部数据ecm-dd-file-reviewecm-setup-file-organizeecm-research-reg-search / ecm-research-reg-study本 skill 产出的数据比对报告仅为尽调辅助工具底稿,不构成最终法律意见。Tushare 与企查查是 第三方商业数据源,数据口径与更新频率由其运营方决定,存在滞后或偏差的可能。关键事项仍须 以政府主管部门出具的官方文件为准。完整免责声明见 DISCLAIMER.md。
执行本 skill 时,必须同时遵循 senior-lawyer-execution-standards.md。本 skill 的任何输出不得突破四条底线:事实可追溯、法源可核验、风险可分级、建议可落地;无法核验时必须显式标注。
from __future__ import annotations)pip install -r scripts/requirements.txt(requests / pandas 等)TUSHARE_TOKEN(Tushare Pro 账号 token)QCC_APPKEY + QCC_SECRET(企查查开放平台凭证)ecm-setup-file-organize:已归位的客户文件,本 skill 据此定位"客户侧数据"ecm-dd-file-review:如需从 PDF/Word/Excel 中抽取客户侧字段值,先调用它目前已封装的数据源:
| 数据源 | 覆盖维度 | 典型用途 | |-------|---------|---------| | Tushare Pro | 上市公司基础、财务指标、前十大股东、利润表 / 资产负债表 | 已上市标的反查、财务口径核验 | | 企查查 | 工商基础、股东及出资、主要人员、工商变更、知识产权、行政处罚 | 全量非上市标的核验(发行人自身 / 股东 / 子公司 / 关联方) |
和律师确认本次需要比对的维度。ECM DD 场景常见的 6 大维度:
| 维度 | 对应字段 | 数据源优先级 | |------|---------|-------------| | 工商基本信息 | 企业名称、统一社会信用代码、注册资本(实缴 / 认缴)、成立日期、注册地址、经营范围、法定代表人、登记机关、企业状态 | 企查查 > Tushare | | 股东信息 | 股东名称、出资额、持股比例、出资方式、出资日期 | 企查查(穿透)+ Tushare(上市公司前十大) | | 主要人员 | 法定代表人、董事、监事、高管 | 企查查 + Tushare stock_company | | 知识产权 | 专利号、商标注册号、软著登记号、权利人 | 企查查 | | 行政处罚 | 处罚机关、处罚日期、处罚事由、处罚结果 | 企查查 | | 财务数据 | 营业收入、净利润、资产总额、负债总额、股东权益、ROE | Tushare(仅上市公司) |
不在列表里但用户要求的维度,应以"可扩展点"加入 references/dimensions-registry.md。
使用对应脚本的 --smoke 模式检查凭证:
bashpython scripts/tushare_connector.py --smoke python scripts/qcc_connector.py --smoke
对于每个维度,先确定"客户说什么":
02-尽职调查/02-02-主体资格/ 等目录读取相关文件(由ecm-dd-file-review 完成)
把客户侧数据整理成结构化表格写入 references/client-data-staging.md(工作区临时文件), 明确每个值的来源。
按维度调用 connector。推荐脚本方式(可追溯 + 留日志):
bash# 工商基础 + 股东 + 处罚 python scripts/qcc_connector.py \ --basic "腾讯科技(深圳)有限公司" \ > 05-底稿和附件/数据比对/qcc_basic_$(date +%Y%m%d_%H%M%S).json # 已上市标的:基础 + 财务 python scripts/tushare_connector.py \ --ts-code 600519.SH --fields full \ --period 20241231 --financials
库方式(供编排脚本使用):
pythonfrom scripts.qcc_connector import QccClient, MissingCredentialError c = QccClient() try: basic = c.company_basic("腾讯科技(深圳)有限公司") keyno = basic["Result"][0]["KeyNo"] shareholders = c.shareholders(keyno) penalty = c.penalty(keyno) except MissingCredentialError: # 跳到 fallback ...
所有原始响应 留痕到 05-底稿和附件/数据比对/ 目录,保留到项目归档。
按下方"输出格式契约"生成 Markdown 报告。差异分级规则:
| 级别 | 含义 | 典型情形 | |------|------|---------| | 高 | 核心字段存在实质差异,可能触发业务级高风险 | 注册资本客户说 5000 万、API 显示 3000 万;法定代表人客户写张三、API 显示李四;实控人穿透链断裂 | | 中 | 次要字段差异或信息滞后 | 经营范围表述不同但实质相近;最近一次变更未同步到 API(<30 天) | | 低 | 格式 / 笔误 / 翻译差异 | 名称全角 / 半角括号差异;地址后缀"号""栋"差异;单位万元 / 元 |
差异 ≠ 业务风险。差异的业务意义由调用本 skill 的上层业务 DD skill 判断。
无法取到外部数据时,绝不伪造。改为输出"人工核对清单":
markdown# 数据比对报告(fallback 模式) > 本次比对因 [外部 API 凭证缺失 / API 返回错误 / 数据源暂时不可用], > 已自动降级为"人工核对清单"。以下字段需要项目组律师**手工登录相应平台**核对, > 核对完成后把结果补充到本报告。 ## 建议的人工核对渠道 - 企查查官网 https://www.qcc.com/ - 天眼查 https://www.tianyancha.com/ - 国家企业信用信息公示系统 https://www.gsxt.gov.cn/ - 裁判文书网 https://wenshu.court.gov.cn/ - 证监会行政处罚库 http://www.csrc.gov.cn/pub/zjhpublic/ (搜索"行政处罚决定书") ## 待人工核对字段清单 | 维度 | 字段 | 客户侧数据 | 官方口径(待核对) | 核对结果 | |------|------|-----------|-------------------|---------| | 工商 | 注册资本 | 5000 万元 | (待核对) | | | 工商 | 法定代表人 | 张三 | (待核对) | | | ... | ... | ... | ... | |
markdown# 数据比对报告:{客户简称} > 项目:{客户简称} | 编制日期:YYYY-MM-DD | 编制人:{律师姓名} > 数据源:{Tushare Pro / 企查查 / 二者} > 凭证状态:{均可用 / 仅 Tushare / 仅企查查 / 均不可用(fallback 模式)} ## 一、比对维度与数据源 | 维度 | 数据源 | 抓取时间 | 原始响应存档 | |------|-------|---------|-------------| | 工商基本信息 | 企查查 | 2026-04-24 10:30 | 05-底稿和附件/数据比对/qcc_basic_20260424_103000.json | | 股东信息 | 企查查 | 2026-04-24 10:31 | ... | | 财务数据 | Tushare Pro | 2026-04-24 10:32 | ... | ## 二、比对结果汇总 | 序号 | 维度 | 字段 | 客户侧数据 | 外部数据 | 差异 | 级别 | 备注 | |-----:|------|------|-----------|---------|------|------|------| | 1 | 工商 | 注册资本 | 5000 万元 | 5000 万元 | 无 | - | 一致 | | 2 | 工商 | 法定代表人 | 张三 | 李四 | 人名不同 | 高 | 建议核实最近变更 | | 3 | 股东 | 股东 A 持股比例 | 30% | 28% | -2 个百分点 | 高 | 疑有未披露股权转让 | ## 三、差异分析 ### 差异 2:法定代表人不一致 - 客户侧来源:02-02-主体资格/营业执照-20250312.pdf - API 侧数据:企查查 2026-04-23 抓取 - 可能原因: 1. 客户营业执照为旧版,未及时更换 2. 外部数据源未同步最近变更 3. 存在未披露的治理层变更 - 建议核实:向客户索取最新营业执照 + 变更登记通知书;同时查工商局在线档案 ### 差异 3:股东持股比例不一致 ... ## 四、建议核实事项 - **高风险项(立即核实)**: 1. 法定代表人差异——要求客户提供最近一次变更登记完整档案 2. 股东 A 持股比例差异——要求客户提供近两年历次股权变更协议 - **中风险项(次轮核实)**: - ... - **低风险项(可一并处理)**: - ... ## 五、数据源局限与注意事项 - 企查查数据有 T+{N} 天滞后,本次抓取时间:2026-04-24 - Tushare 财务数据以公司披露的定期报告为准,定期报告披露前可能暂无最新季度数据 - 行政处罚维度仅覆盖公开发布的处罚决定书,部门内部处理、未公开的警示谈话等不在覆盖范围 - 关键事项仍以政府主管部门出具的官方文件为准 ## 六、附件 - 05-底稿和附件/数据比对/qcc_basic_YYYYMMDD_HHMMSS.json - 05-底稿和附件/数据比对/qcc_shareholders_YYYYMMDD_HHMMSS.json - 05-底稿和附件/数据比对/tushare_fina_YYYYMMDD_HHMMSS.csv - (下级业务 DD skill 可直接引用上述原始响应)
契约硬性要求:
五个二级标题
05-底稿和附件/数据比对/数据比对报告-{YYYYMMDD}.md(如该目录尚未建立,先按 shared/templates/project-folder-structure.md 创建)
05-底稿和附件/数据比对/,不得仅贴到报告里业务 DD skill 可以在自己的"核心工作流"里插入本 skill 作为可选前置步骤。约定:
ecm-dd-data-verify 对 {具体字段}做外部数据核验"
作为补充材料注明
典型链路:
ecm-dd-entity(主体资格)
└─ 可选调用 ecm-dd-data-verify(工商基本信息维度)
└─ 调用 scripts/qcc_connector.py --basicA:不可以。本 skill 是工具,产出的是"数据差异"。业务合规判断必须由对应业务 DD skill 完成。
A:记为"高"级差异,写进报告的"差异分析",并建议人工登录政府主管部门官网核对 —— 以官方 档案为最终仲裁。
A:不可以。任何形式落盘都违反本 skill 的安全约束。见 docs/data-connectors.md。
A:可以。走 fallback 模式:不调用 API,仅输出"人工核对清单"+"建议核对渠道"。
references/dimensions-registry.md 和docs/data-connectors.md
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 16,724 | 20,591 | +23% | 1 | 1 | 0% | 3,645 | 8,625 | +137% | 0 | 0 | — |
case-02 | fail→pass | 19,187 | 18,304 | -5% | 1 | 1 | 0% | 3,714 | 8,069 | +117% | 0 | 0 | — |
case-03 | fail→fail | 15,562 | 24,401 | +57% | 1 | 1 | 0% | 3,229 | 8,913 | +176% | 0 | 0 | — |
case-04 | fail→pass | 15,151 | 15,466 | +2% | 1 | 1 | 0% | 2,655 | 7,256 | +173% | 0 | 0 | — |
case-05 | fail→pass | 9,443 | 8,604 | -9% | 1 | 1 | 0% | 1,603 | 5,900 | +268% | 0 | 0 | — |
case-06 | fail→pass | 11,148 | 4,938 | -56% | 1 | 1 | 0% | 2,126 | 5,231 | +146% | 0 | 0 | — |
case-07 | fail→fail | 20,382 | 21,624 | +6% | 1 | 1 | 0% | 3,550 | 7,975 | +125% | 0 | 0 | — |
case-08 | fail→fail | 12,316 | 20,840 | +69% | 1 | 1 | 0% | 2,381 | 8,147 | +242% | 0 | 0 | — |
case-09 | fail→fail | 12,288 | 26,023 | +112% | 1 | 1 | 0% | 2,488 | 8,799 | +254% | 0 | 0 | — |
case-10 | fail→pass | 13,902 | 13,093 | -6% | 1 | 1 | 0% | 2,543 | 7,198 | +183% | 0 | 0 | — |
case-11 | pass→pass | 7,945 | 11,279 | +42% | 1 | 1 | 0% | 1,513 | 6,578 | +335% | 0 | 0 | — |
case-12 | fail→pass | 7,967 | 6,138 | -23% | 1 | 1 | 0% | 1,419 | 5,301 | +274% | 0 | 0 | — |
case-13 | fail→pass | 5,777 | 8,144 | +41% | 1 | 1 | 0% | 1,105 | 6,158 | +457% | 0 | 0 | — |
case-14 | fail→pass | 11,567 | 7,120 | -38% | 1 | 1 | 0% | 2,454 | 5,821 | +137% | 0 | 0 | — |
case-15 | fail→fail | 12,777 | 15,994 | +25% | 1 | 1 | 0% | 2,217 | 7,017 | +217% | 0 | 0 | — |
case-16 | fail→fail | 14,641 | 18,122 | +24% | 1 | 1 | 0% | 2,484 | 7,403 | +198% | 0 | 0 | — |
case-17 | fail→pass | 18,849 | 23,641 | +25% | 1 | 1 | 0% | 3,407 | 9,062 | +166% | 0 | 0 | — |
case-18 | pass→pass | 11,971 | 15,036 | +26% | 1 | 1 | 0% | 2,003 | 6,883 | +244% | 0 | 0 | — |
case-19 | fail→pass | 19,264 | 22,781 | +18% | 1 | 1 | 0% | 3,008 | 8,782 | +192% | 0 | 0 | — |
case-20 | pass→pass | 15,168 | 12,262 | -19% | 1 | 1 | 0% | 2,755 | 6,550 | +138% | 0 | 0 | — |
case-21 | pass→pass | 11,364 | 12,813 | +13% | 1 | 1 | 0% | 1,963 | 6,460 | +229% | 0 | 0 | — |
case-22 | pass→pass | 19,494 | 14,432 | -26% | 1 | 1 | 0% | 3,354 | 7,181 | +114% | 0 | 0 | — |
case-23 | fail→pass | 9,286 | 9,630 | +4% | 1 | 1 | 0% | 1,498 | 6,005 | +301% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted. The headline lift of +52 percentage points is the difference between those two pass rates over the 23 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.