ecm-dd-data-verify
SkillDev toolsECM due diligence tool skill: cross-checks customer-provided materials against third-party public data sources (Tushare Pro / Qichacha Open Platform) to detect data inconsistencies, undisclosed changes, and outdated information. Triggers when users mention: external data validation, third-party data
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the ecm-dd-data-verify skill
What this skill tells your AI
The instructions your AI receives, as published by thomasmoreai/legal-skills-open in cn/corporate/skills/ecm-dd-data-verify/SKILL.md and read by ahel’s review.
定位与边界
本 skill 是 ECM DD 的工具类 skill,和 17 个业务性 DD skill(dd-approval / dd-entity / … / dd-compliance)有明显的职责分工:
- 业务性 DD skill 输出"合规判断"(核查要点 + 审阅发现 + 风险分级 + 建议措施,五段式)
- 本 skill 输出"数据差异清单"(客户数据 ↔ 外部公开数据的逐字段比对结果),供业务 DD skill 作为输入使用
⚠️ 本 skill 不套用
shared/templates/dd-skill-template.md的五段式输出契约。 该模板只约束业务性 DD skill。本 skill 走自己的"数据比对报告"格式。
本 skill 负责
- 按需求维度调用
scripts/tushare_connector.py/scripts/qcc_connector.py取外部数据 - 将外部数据与客户材料中的对应字段做逐项比对
- 为每条差异打"高 / 中 / 低"级别(仅指比对差异本身的严重程度,不等同于业务风险分级)
- 输出差异清单 + 可能原因 + 建议核实措施
本 skill 不负责
- 合规结论——差异是否构成发行上市障碍,交由调用它的业务 DD skill 判断
- 文件读取——客户文件的 PDF/Word/Excel 读取归
ecm-dd-file-review - 文件归位——归
ecm-setup-file-organize - 法规解释——归
ecm-research-reg-search/ecm-research-reg-study
免责声明
本 skill 产出的数据比对报告仅为尽调辅助工具底稿,不构成最终法律意见。Tushare 与企查查是 第三方商业数据源,数据口径与更新频率由其运营方决定,存在滞后或偏差的可能。关键事项仍须 以政府主管部门出具的官方文件为准。完整免责声明见 DISCLAIMER.md。
资深律师执行标准
执行本 skill 时,必须同时遵循 senior-lawyer-execution-standards.md。本 skill 的任何输出不得突破四条底线:事实可追溯、法源可核验、风险可分级、建议可落地;无法核验时必须显式标注。
本 skill 的实务加固点
- 数据不替代底稿:Tushare、企查查等第三方数据仅作交叉验证线索,不得覆盖客户原件和官方登记信息。
- 差异分级:主体名称、股本、股东、董监高、处罚、诉讼、经营范围等差异需按发行影响分级。
- 原始响应留存:每次调用必须记录来源、查询关键词、时间戳、接口返回和失败原因,归入数据比对底稿。
- 高风险触发器:第三方数据出现未披露处罚/诉讼/股权冻结/经营异常,应转对应 DD skill 复核。
前置依赖
外部依赖
- Python 3.9+(脚本使用 dataclass /
from __future__ import annotations) pip install -r scripts/requirements.txt(requests / pandas 等)- 至少一个以下环境变量组合(缺失时自动进入 fallback):
TUSHARE_TOKEN(Tushare Pro 账号 token)QCC_APPKEY+QCC_SECRET(企查查开放平台凭证)
内部依赖
ecm-setup-file-organize:已归位的客户文件,本 skill 据此定位"客户侧数据"ecm-dd-file-review:如需从 PDF/Word/Excel 中抽取客户侧字段值,先调用它
可选数据源
目前已封装的数据源:
| 数据源 | 覆盖维度 | 典型用途 |
|---|---|---|
| Tushare Pro | 上市公司基础、财务指标、前十大股东、利润表 / 资产负债表 | 已上市标的反查、财务口径核验 |
| 企查查 | 工商基础、股东及出资、主要人员、工商变更、知识产权、行政处罚 | 全量非上市标的核验(发行人自身 / 股东 / 子公司 / 关联方) |
核心工作流(五步)
第 1 步:明确比对维度
和律师确认本次需要比对的维度。ECM DD 场景常见的 6 大维度:
| 维度 | 对应字段 | 数据源优先级 |
|---|---|---|
| 工商基本信息 | 企业名称、统一社会信用代码、注册资本(实缴 / 认缴)、成立日期、注册地址、经营范围、法定代表人、登记机关、企业状态 | 企查查 > Tushare |
| 股东信息 | 股东名称、出资额、持股比例、出资方式、出资日期 | 企查查(穿透)+ Tushare(上市公司前十大) |
| 主要人员 | 法定代表人、董事、监事、高管 | 企查查 + Tushare stock_company |
| 知识产权 | 专利号、商标注册号、软著登记号、权利人 | 企查查 |
| 行政处罚 | 处罚机关、处罚日期、处罚事由、处罚结果 | 企查查 |
| 财务数据 | 营业收入、净利润、资产总额、负债总额、股东权益、ROE | Tushare(仅上市公司) |
不在列表里但用户要求的维度,应以"可扩展点"加入 references/dimensions-registry.md。
第 2 步:凭证预检
使用对应脚本的 --smoke 模式检查凭证:
python scripts/tushare_connector.py --smoke
python scripts/qcc_connector.py --smoke
- 两个都没凭证:直接跳到第 5 步的"fallback 路径",不要伪造数据
- 只有一个有凭证:走可用那个的维度,另一个相关维度进 fallback
第 3 步:取客户侧数据
对于每个维度,先确定"客户说什么":
- 从
02-尽职调查/02-02-主体资格/等目录读取相关文件(由 ecm-dd-file-review 完成) - 从已完成的业务 DD skill 的 Memo 里摘取字段(如已运行 dd-entity,可从其 Memo 抽注册资本)
- 直接由律师口头告知(适用于快速核对场景)
把客户侧数据整理成结构化表格写入 references/client-data-staging.md(工作区临时文件),
明确每个值的来源。
第 4 步:调用 API 取外部数据
按维度调用 connector。推荐脚本方式(可追溯 + 留日志):
# 工商基础 + 股东 + 处罚
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
库方式(供编排脚本使用):
from 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-底稿和附件/数据比对/ 目录,保留到项目归档。
第 5 步:逐字段比对 + 输出报告
按下方"输出格式契约"生成 Markdown 报告。差异分级规则:
| 级别 | 含义 | 典型情形 |
|---|---|---|
| 高 | 核心字段存在实质差异,可能触发业务级高风险 | 注册资本客户说 5000 万、API 显示 3000 万;法定代表人客户写张三、API 显示李四;实控人穿透链断裂 |
| 中 | 次要字段差异或信息滞后 | 经营范围表述不同但实质相近;最近一次变更未同步到 API(<30 天) |
| 低 | 格式 / 笔误 / 翻译差异 | 名称全角 / 半角括号差异;地址后缀"号""栋"差异;单位万元 / 元 |
差异 ≠ 业务风险。差异的业务意义由调用本 skill 的上层业务 DD skill 判断。
fallback 路径(凭证 / 数据完全不可用时)
无法取到外部数据时,绝不伪造。改为输出"人工核对清单":
# 数据比对报告(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 万元 | (待核对) | |
| 工商 | 法定代表人 | 张三 | (待核对) | |
| ... | ... | ... | ... | |
输出格式契约
# 数据比对报告:{客户简称}
> 项目:{客户简称} | 编制日期: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 可直接引用上述原始响应)
契约硬性要求:
- 一级标题必须是"数据比对报告:{客户简称}"——供上层 Skill 识别
- 必有"比对维度与数据源 / 比对结果汇总 / 差异分析 / 建议核实事项 / 数据源局限与注意事项" 五个二级标题
- 汇总表的"级别"列取值必须是"高 / 中 / 低 / -"("-" 表示一致)
- 输出文件放到
05-底稿和附件/数据比对/数据比对报告-{YYYYMMDD}.md(如该目录尚未建立,先按shared/templates/project-folder-structure.md创建) - 所有 API 原始响应必须留痕存档到
05-底稿和附件/数据比对/,不得仅贴到报告里
如何被其他 DD skill 调用
业务 DD skill 可以在自己的"核心工作流"里插入本 skill 作为可选前置步骤。约定:
- 调用方式:在业务 DD skill 的 SKILL.md 里写"可选:调用
ecm-dd-data-verify对 {具体字段} 做外部数据核验" - 传递的输入:公司名称 / 统一社会信用代码 / ts_code、需比对的字段清单、客户侧字段值
- 接收的输出:本 skill 生成的 Markdown 报告 + 原始响应 JSON
- 后续处理:业务 DD skill 将"高"级差异写进自己的"审阅发现"段,"中 / 低"级差异 作为补充材料注明
典型链路:
ecm-dd-entity(主体资格)
└─ 可选调用 ecm-dd-data-verify(工商基本信息维度)
└─ 调用 scripts/qcc_connector.py --basic
常见误用 / FAQ
-
Q:可以让本 skill 直接生成 DD Memo 吗? A:不可以。本 skill 是工具,产出的是"数据差异"。业务合规判断必须由对应业务 DD skill 完成。
-
Q:API 数据和客户数据都对不上怎么办? A:记为"高"级差异,写进报告的"差异分析",并建议人工登录政府主管部门官网核对 —— 以官方 档案为最终仲裁。
-
Q:可以把 TUSHARE_TOKEN 写到仓库的某个文件里吗? A:不可以。任何形式落盘都违反本 skill 的安全约束。见 docs/data-connectors.md。
-
Q:我只想手动对一下,不想跑脚本? A:可以。走 fallback 模式:不调用 API,仅输出"人工核对清单"+"建议核对渠道"。
参考资料索引
- references/dimensions-registry.md — 6 大比对维度 + 字段级映射
- references/report-template.md — 数据比对报告完整模板(含 fallback 版)
- ../../docs/data-connectors.md — 连接器安装、环境变量、异常分层、故障排查
- ../../scripts/tushare_connector.py — Tushare 封装
- ../../scripts/qcc_connector.py — 企查查封装
变更规则
- 输出契约变动(报告结构)→ MAJOR,同步更新所有引用本 skill 的业务 DD skill
- 新增数据源 / 新增比对维度 → MINOR,更新
references/dimensions-registry.md和docs/data-connectors.md - connector 脚本 API 兼容性不变的修复 → PATCH
Signals
- GitHub stars
- 72
- Forks
- 7
- Last commit
- Jul 2026
Advanced
- Catalog kind
- skill
- Gateway key
ecm-dd-data-verify- Source
- github.com/thomasmoreai/legal-skills-open