关于 tabular-document-review
面向法律团队的批量法律文档审阅技能,可将多个文档中的指定字段整理为带引用的对照矩阵。它支持并行 Agent 提取、置信度标记及 Markdown 或 JSON 输出;不负责解析文档内容或法律风险判断。
主要功能
- 01扫描目录并生成文档清单
- 02按自定义列提取信息
- 03汇总提取结果为对照矩阵
- 04记录引用与置信度
- 05导出 Markdown 或 JSON
适用场景
- 01批量比较合同关键条款
- 02审阅 NDA、雇佣协议或租约
- 03集中核查缺失值与冲突结果
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ borghei/ claude-skills --skill tabular-document-review安装后在 Claude Code 中输入/tabular-document-review确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/common_extraction_columns.mdextraction_methodology.mdscripts/document_discovery.pyextraction_aggregator.py详细介绍
⚠️ 实验性 — 此技能仅用于教育和提供信息,不构成法律建议。用户需对使用行为承担全部责任。采取任何行动前,请咨询合格的法律专业人士。
表格化文档审查技能
概述
用于从多份法律文档中提取结构化数据,并生成带有引文的对比矩阵的生产级工具包。支持用户自定义提取列、最多由 10 个 Agent 并行处理、置信度评分,以及以 Markdown 表格或结构化 JSON 格式输出。专为需要批量审查合同、比较保密协议、分析雇佣协议和审查租约的法律团队打造。
目录
先澄清
审查前,请确认以下信息。若有任何一项未知或含糊不清,请提问——不要自行假设:
- 提取列 — 明确每个单元格具体存放什么;含糊的“日期”可能对应数十个日期,而有说明的“生效日期”则不会
- 文档集的位置和格式 — 这决定了如何发现文档,以及分配多少个并行 Agent(ceil(N/10),最多 10 个)
- 文档类型 — 合同、保密协议、雇佣协议、租约——据此选择预定义的列集和各列的提取指南
停止规则:只询问对输出影响最大的 2–3 项。如果用户说“直接起草”,则继续处理,并在矩阵顶部列出你的假设。
工具
1. 文档发现(scripts/document_discovery.py)
扫描目录中的法律文档,并生成清单。
python scripts/document_discovery.py /path/to/contracts
python scripts/document_discovery.py /path/to/ndas --types pdf,docx --json
python scripts/document_discovery.py /path/to/leases --types pdf,docx,txt,md --min-size 1024
2. 提取结果汇总工具(scripts/extraction_aggregator.py)
将多个提取结果 JSON 汇总为统一的对比矩阵。
python scripts/extraction_aggregator.py \
--results extraction_1.json extraction_2.json extraction_3.json
python scripts/extraction_aggregator.py \
--results-dir ./extraction_results/ --json
python scripts/extraction_aggregator.py \
--results-dir ./extraction_results/ \
--format markdown \
--output review_matrix.md
python scripts/extraction_aggregator.py \
--results extraction_1.json extraction_2.json \
--columns "Parties,Effective Date,Term,Governing Law"
参考指南
| 参考资料 | 用途 |
|---|---|
references/extraction_methodology.md | 文档提取最佳实践、JSON 架构、Agent 提示词 |
references/common_extraction_columns.md | 合同、保密协议、雇佣协议、租约的预定义列集 |
工作流
5 步文档审查流程
| 步骤 | 操作 | 工具 | 输出 |
|---|---|---|---|
| 1. 收集需求 | 确定文档文件夹、输出文件名和要提取的列 | 手动 | 列表、文件路径 |
| 2. 发现文档 | 扫描目录,查找目标文档 | document_discovery.py | 文档清单 JSON |
| 3. 处理文档 | 按列提取值及引文(由多个 Agent 并行处理) | AI Agent(外部) | 每份文档各自的提取 JSON |
| 4. 汇总结果 | 将提取 JSON 汇总为统一矩阵 | extraction_aggregator.py | 汇总矩阵 |
| 5. 生成输出 | 导出为 Markdown 表格或结构化 JSON | extraction_aggregator.py | 最终交付物 |
并行处理策略
| Agent 数量 | 每个 Agent 处理的文档数 | 适用情况 |
|---|---|---|
| 1 | 全部 | 1–5 份文档 |
| 2–3 | ceil(N/agents) | 6–15 份文档 |
| 4–6 | ceil(N/agents) | 16–40 份文档 |
| 7–10 | ceil(N/agents) | 41–100 份文档 |
| 10(最多) | ceil(N/10) | 100 份以上文档 |
Agent 提示词模板
每个 Agent 收到的提示词结构如下:
You are reviewing {count} legal documents. For each document, extract the
following columns:
{column_definitions}
For each value extracted:
1. Provide the exact value found
2. Include the page number (PDF) or section/paragraph (DOCX/MD)
3. Rate your confidence: HIGH (exact match), MEDIUM (inferred), LOW (uncertain)
4. If not found, record "NOT FOUND" with confidence LOW
Output as JSON per the extraction schema.
置信度评分
| 等级 | 颜色代码 | 定义 |
|---|---|---|
| 高 | 绿色 | 找到确切值,且有明确引文 |
| 中 | 黄色 | 根据上下文推断出值;存在多种可能的解释 |
| 低 | 红色 / 未找到 | 值不确定或未在文档中找到 |
输出格式
工作表 1:文档审查
| 文档 | 当事方 | 生效日期 | 期限 | 管辖法律 | ... |
|---|---|---|---|---|---|
| contract_a.pdf | Acme / Beta [p.1] | 2026-01-15 [p.2] | 3 年 [p.3] | Delaware [p.12] | ... |
| contract_b.pdf | Gamma / Delta [p.1] | NOT FOUND | 2 年 [p.4] | New York [p.10] | ... |
工作表 2:摘要
| 指标 | 值 |
|---|---|
| 已处理文档数 | 25 |
| 已提取列数 | 8 |
| 平均置信度 | 87% |
| 未找到比例 | 12% |
提取场景
合同审查
| 列 | 提取内容 |
|---|---|
| 当事方 | 所有签约方的完整法定名称 |
| 生效日期 | 合同生效日期或签署日期 |
| 期限 | 协议的有效期限 |
| 续约 | 自动续约条款和通知期限 |
| 管辖法律 | 管辖协议的司法管辖区 |
| 责任上限 | 最高责任金额或计算公式 |
| 赔偿 | 赔偿义务及范围 |
| IP 所有权 | 知识产权所有权条款 |
| 终止权 | 终止触发条件和通知要求 |
| 数据保护 | 数据保护或隐私义务 |
NDA 审查
| 列 | 提取内容 |
|---|---|
| 当事方 | 披露方和接收方 |
| 类型 | 双向或单向 |
| 定义范围 | “机密信息”的定义方式 |
| 例外 | 保密义务的常见例外 |
| 期限 | 保密义务的有效期限 |
| 存续期 | 终止后的存续期限 |
| 返还/销毁 | 终止时的义务 |
| 救济措施 | 违约时可采取的救济措施 |
故障排除
| 问题 | 原因 | 解决方案 |
|---|---|---|
| Discovery 未找到任何文档 | 路径或文件类型错误 | 确认路径存在;检查 --types 是否与实际文件扩展名匹配 |
| 提取 JSON 的架构错误 | Agent 提示词不完整 | 使用 extraction_methodology.md 中的提取架构 |
| Aggregator 显示冲突 | 同一单元格存在多个值 | 检查源文档;Aggregator 会标记冲突,供人工审查 |
| “NOT FOUND” 比例偏高 | 列定义对文档类型过于具体 | 使用 common_extraction_columns.md 中的列定义;放宽定义 |
| 置信度全部为 LOW | Agent 无法定位值 | 检查列定义是否足够具体;确认文档可读 |
| Aggregator 在处理大量数据集时崩溃 | 一次加载的结果文件过多 | 分批处理,每批 50 个结果;使用 --columns 限制输出宽度 |
| Markdown 表格错位 | 值过长或包含特殊字符 | 使用 --format json 进行机器处理;截断过长的值 |
| 缺少引用 | Agent 未包含页码/章节引用 | 在 Agent 提示词中强调引用要求;检查提取架构 |
成功标准
- 提取覆盖率:所有文档中,已填充的定义列占比达到 90% 以上
- 置信度分布:置信度评为 HIGH 的提取结果达到 70% 以上
- 引用准确性:每个提取值都包含可验证的页码/章节引用
- 处理速度:使用并行 Agent 在 30 分钟内处理 50 份以上文档
- 矩阵完整性:最终矩阵包含所有文档和所有列,且没有孤立行
范围与限制
此技能涵盖:
- 对 PDF、DOCX、TXT 和 MD 格式的文档进行盘点和发现
- 将并行 Agent 处理的提取结果汇总到统一矩阵中
- 为合同、NDA、雇佣协议和租约预定义列集
- 对提取的值进行置信度评分和冲突检测
- Markdown 和 JSON 输出格式
此技能不涵盖:
- 实际的文档解析或文本提取(需要外部库或 AI Agent)
- 对扫描文档进行 OCR 处理
- Excel/XLSX 输出生成(使用 JSON 输出并在外部转换)
- 对提取的值进行自动法律分析或风险评估
- 比较不同版本的文档或进行修订标记
反模式
| 反模式 | 失败原因 | 更好的做法 |
|---|---|---|
| 列定义含糊 | “日期”可能匹配合同中的几十个日期 | 使用具体定义:例如“生效日期”,并说明查找位置 |
| 跳过文档发现 | 文档数量未知会导致 Agent 分配错误 | 始终先进行发现;使用清单规划流水线 |
| 忽略 LOW 置信度结果 | 将缺失或不确定的数据当作事实 | 手动检查所有 LOW 置信度单元格;在最终报告中标记 |
| 让 1 个 Agent 处理 100 多份文档 | 速度慢、上下文窗口溢出、质量下降 | 使用并行处理:每个 Agent 处理 ceil(N/10) 份文档,最多 10 个 Agent |
| 不要求提供引文 | 无法对照来源验证提取的值 | 要求每项提取结果都附带页码/章节引文;拒绝未附引文的值 |
工具参考
scripts/document_discovery.py
扫描目录中的法律文档并生成清单。
usage: document_discovery.py [-h] [--json]
[--types TYPES]
[--min-size MIN_SIZE]
[--max-size MAX_SIZE]
directory
positional arguments:
directory Path to directory containing documents
options:
-h, --help Show help message and exit
--json Output in JSON format
--types TYPES Comma-separated file extensions to include
(default: pdf,docx,doc,txt,md,rtf)
--min-size MIN_SIZE Minimum file size in bytes (default: 0)
--max-size MAX_SIZE Maximum file size in bytes (default: no limit)
scripts/extraction_aggregator.py
将提取结果汇总到统一对比矩阵中。
usage: extraction_aggregator.py [-h] [--json]
[--results RESULTS [RESULTS ...]]
[--results-dir RESULTS_DIR]
[--format {markdown,json}]
[--columns COLUMNS]
[--output OUTPUT]
options:
-h, --help Show help message and exit
--json Output in JSON format (alias for --format json)
--results One or more extraction result JSON files
--results-dir Directory containing extraction result JSON files
--format Output format: markdown table or JSON (default: markdown)
--columns Comma-separated column names to include (default: all)
--output Write output to file instead of stdout
评论
支持 Markdown