# Verify Data

> 数据 deliverable 写入前的三角对账（本地 DB + ≥2 独立网源），消灭"Wuxing 错配 Jiaxing / xlsx 没对公报 / 作者顺序错"那类因 cross-check 缺失被退回的事件。用户说"/verify-data X" / "校核 X" / "三角对账 X" / "X 对不对"，或自己在写 deliverable（报告 / xlsx / 简历 / 论文 / 法律意见）前需要落入具体声明时触发。

- Skill: `zengtianli/verify-data` (Agent Skill)
- Install (CLI): `npx skillmds@latest add zengtianli/verify-data`
- Raw SKILL.md: https://api.skillmd.com/api/skills/zengtianli/verify-data/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Data & Analytics
- Author: zengtianli (https://skillmd.com/u/zengtianli)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/zengtianli/verify-data

---


# verify-data · 数据 deliverable 三角对账协议

**核心理念**：deliverable 里每一条具体声明（数字 / 人名 / 日期 / 项目 / 引用）写入前都必须通过本地 DB + ≥2 独立网源的三角对账。任何一边对不上 → STOP，不允许擅自挑一源继续。

**与铁律的关系**：本 skill 是全局 `~/.claude/CLAUDE.md` 「执行铁律 #11 实测验证」+ 「#12 主动调研」在数据维度的具体执行手册。bug 几乎全来自对"我记得 / 大概是 / 看着像"的错误假设（Karpathy K1 数据先看 5 条）。

---

## 何时触发

用户说以下任一：
- `/verify-data <声明>`
- "校核 X / 核对一下 X / 这个数对不对"
- "三角对账 / cross-check / 验一下"
- "X 银行 / X 项目 / X 公司 是不是 Y"

**自动触发**（不等用户说）：自己在写以下 deliverable 且**首次落入一条具体声明**时：
- 学术报告 / 论文（任何引用 / 数据 / 作者）
- xlsx 数据汇总（任何政府公报 / 年报数字）
- 简历 / 求职材料（任何公司名 / 职位 / 日期 / 项目）
- 法律意见 / 合规文件（任何条款编号 / 案例编号）
- 投资笔记（任何标的代码 / 价格 / 持仓数据）
- 水务 / 工程报告（任何用水量 / 公司架构 / 项目负责人）

**不触发**：用户对话里的随口提及（"我记得 Jiaxing 大概..."）；非 deliverable 的探索性讨论。

---

## 执行编排

**输入**：一个具体声明（必带主体 + 谓词 + 客体），例如：
- "杭州 2024 年总用水量 = 28.6 亿立方"
- "上海 ZDWP 项目负责人是张三"
- "HSBC HK Premier 最低资产门槛是 100 万港币"
- "2024 年浙江省软著 ZL2024XXXXX 第一作者是李四"

### 1. 识别声明的领域，决定查哪个本地 DB

| 领域 | DB / CLI |
|---|---|
| 投资 / 持仓 / 标的 / 财经笔记 | `python3 ~/Dev/tools/kb/bin/inv.py search "<关键词>"` |
| 求职 / 公司 / 职位 / 面经 / 应聘记录 | `python3 ~/Dev/tools/kb/bin/apply.py query "<关键词>"` |
| 软著 / 著作权台账 / ZL 编号 | `python3 ~/Dev/tools/kb/bin/sc.py query "<关键词>"` |
| 水务 / 工程 / 项目交付 | 跳过 DB 步骤，直接走步骤 2（**水务无本地 DB**，按 ZDWP 项目里 `01-06.md` / xlsx / docx 走 Read + Grep） |
| 学术 / 论文 / 法律 / 通用事实 | 跳过 DB 步骤，直接走步骤 2 |

**判别**：领域不明确 → AskUserQuestion 让用户指定，不自己猜。

### 2. WebSearch ≥2 独立信源

**必须 ≥2 个独立信源**，"独立"指域名不同 + 互不引用对方。推荐信源优先级（高→低）：

| 类型 | 例 |
|---|---|
| 官方网站 | `gov.cn` / 公司官方 about / 银行官方 tariff |
| 政府公报 / 年报 | 水利部 / 统计局 / 央行 / 证监会 / 工信部 |
| 学术数据库 | CNKI / Web of Science / Google Scholar |
| 权威媒体 | 财新 / 财经 / 第一财经 / FT / Reuters / Bloomberg |
| 行业协会 | 中国水利学会 / 中国工程院 |
| 监管披露 | 银保监 / SFC / SEC 公告 |

**反信源**（不算独立信源）：
- 自媒体 / 知乎 / 小红书 / 微博 / Reddit（参考可以但不算"信源 ≥ 2"里那 2 个）
- AI 生成内容（除非明确标注引用源）
- 同集团下不同子站点（人民日报 + 央视网算 1 个，因都隶属官媒系统时建议挑跨系统）

**搜索手法**：派 2-4 个 WebSearch / WebFetch **并发**（依铁律 #1），分别针对不同关键词组合（"A B C 2024" / "<official name> annual report" / "<编号> <author>"）。

### 3. 输出三角对账表（markdown table）

```markdown
## 声明校核：<原声明原文>

| 字段 | 本地 DB（库 + 命中条数） | 网源 1（域名 + URL） | 网源 2（域名 + URL） | 是否一致 |
|---|---|---|---|---|
| <字段 1> | <值> | <值> | <值> | ✅ / ❌ / ⚠ |
| <字段 2> | <值> | <值> | <值> | ✅ / ❌ / ⚠ |

**结论**：✅ 通过 / ❌ 冲突 / ⚠ 信源缺失
```

### 4. 一致 → 标 "✅ 通过 + 信源 URL 列表"

可继续把声明写入 deliverable。把对账表（或至少信源 URL 列表）放到 deliverable 的脚注 / 参考资料溯源节，便于后续追溯。

### 5. 冲突 → STOP

- 用 AskUserQuestion，**原文照贴**各源的差异（不要自己总结 / 归一）
- 给用户 3-4 个选项：以源 A 为准 / 以源 B 为准 / 进一步查证 / 改写声明避开矛盾点
- **绝对不允许擅自挑一源继续写 deliverable** — 这正是本 skill 要消灭的反模式

### 6. 任意源未找到 → 标 "⚠ 信源缺失：<哪一源>"

报告用户：
- 已查到的源 + URL
- 缺失的源 + 已尝试的搜索关键词
- 建议：继续找（指定其他搜索词 / 别的库）/ 退化为单源（用户接受风险）/ 改写声明降低具体度

让用户决定是否仍要继续，**不要**自己默认"找不到就算了"或"反正主源说 X 就 X"。

---

## 反模式（硬措辞）

- ❌ **未通过 cross-check 就把声明写进 deliverable = 任务失败**。报告交付后被退回的代价远大于多花 5 分钟核对
- ❌ "我记得 / 大概是 / 应该是 / 看着像" 类口吻进 deliverable（必须有源）
- ❌ 拿单源（哪怕官网）当结论 — 官网也错过（旧版本未更新 / 子域 stale）
- ❌ 拿自媒体 / 知乎 / AI 答案当独立信源凑数
- ❌ 冲突时擅自挑一源 — 必 AskUserQuestion
- ❌ "信源缺失"默认略过 — 必显式标 ⚠ 给用户决策
- ❌ 把 cross-check 推回给用户做（"你自己查一下"）— 本 skill 是 Claude 主动跑的

---

## 输出长度

校核报告本身不限长度（事实多则长），但**结论行必须一句话明确**：

> ✅ 通过：<原声明>，3 源一致（DB + 官方 + 财新）
> ❌ 冲突：<原声明>，本地 DB 标 X 但官方公报标 Y，已询问用户
> ⚠ 信源缺失：官方源未找到，已用 2 个权威媒体源代替，待用户决定是否继续

---

## 与其他 skill / 协议的协作

- **配合 `/critique`**：critique 维度 4「资源浪费」+ 维度 1「决策效率」可触发本 skill 的事后审查（"上次 xlsx 数据是不是没对账"）
- **配合 `prep-basic-info`**：基础信息准备的"参考资料溯源"步骤 = 本 skill 的输出（对账表 + URL）
- **配合 `/wrap handoff`**：handoff 里关键数据声明都要带本 skill 的对账记录
- **不替代 `engineering-mode`**：engineering-mode 是会话级行为约束，本 skill 是单点数据校核流程

---

## 改 SSOT

源码：`~/Dev/tools/cc-configs/skills/verify-data/SKILL.md`
分发：`~/.claude/skills/verify-data/`（symlink，`install.sh` 自动建）
注册：`~/Dev/tools/cc-configs/harness.yaml` 的 `global_skills` 列表

