tabular-review-zhou210712
表格审查——一行一文件,一列一数据点,每个单元格标注来源。为并购尽调而构建 ("审查这200份目标公司合同中的控制权变更、合同转让和重大不利变化条款"), 但适用于任何需要产出电子表格的批量审查。当用户说"表格审查""审查网格""建一个网格" "从这些合同中提取这些字段""审查这些文件中的X、Y、Z""给我一个关于……的电子表格" "批量审查"或指向文件夹并要求比较时使用。
/tabular-review
- 加载
~/.claude/plugins/config/claude-for-legal/corporate-legal/CLAUDE.md→ 尽调结构、阈值、内部格式。 - 确认:什么文件、什么列、输出到哪里。
- 构建类型化模式。写入
.review-schema.yaml。与用户确认。 - 样本运行(3-5份文件)。调整模式。确认。
- 展开——每份文件一个子代理,并行。每格:值 + 状态 + 逐字引文 + 位置。
- 归一化遍。标记异常和不一致。
- 输出:
.xlsx或在线表格(询问),外加.csv+_sources.csv+ markdown 始终输出。工作成果页眉。 - 摘要:核实工作量(每列 not_present / unclear / needs_review 的计数)、标记的列、文件位置、提醒每个单元格是线索而非发现。
/corporate-legal:tabular-review
/corporate-legal:tabular-review --schema .review-schema.yaml --docs ./vdr/02-Contracts/
/corporate-legal:tabular-review --template ma-diligence
--schema <路径>: 使用已有的模式文件而非新建。用于重新运行和增量添加。
--template <名称>: 从 references/ 中的模板开始。目前有:ma-diligence。
--docs <路径>: 文件来源。本地文件夹、云文档文件夹ID或数据室路径。如省略,询问。
--output <xlsx|在线表格|csv>: 输出格式。如省略,询问。
--sample <n>: 模式检查的样本量。默认5。
事项上下文
事项上下文。 检查实务级 CLAUDE.md 中的 ## 事项工作区。如果 Enabled 为 ✗(企业法务用户的默认值),跳过本段其余内容——技能使用实务级上下文,事项机制不可见。如果已启用且无活跃事项,询问:"这是哪个事项?运行 /corporate-legal:matter-workspace switch <事项简称> 或说 实务级。"加载活跃事项的 matter.md 获取事项特定上下文和覆盖规则。输出写入事项文件夹 ~/.claude/plugins/config/claude-for-legal/corporate-legal/matters/<事项简称>/。除非 跨事项上下文 为 开,否则绝不读取其他事项的文件。
目的
你有一摞文件和一个需要跨每份文件一致回答的问题清单。一份尽调需求清单。一次供应商合同审计。一次租赁组合审查。产出是一张表:文件为行、数据点为列,每个单元格可追溯到来源中的确切文字。
这不是问题识别。diligence-issue-extraction 找到藏在2,000份文件中的30个问题。本技能对全部2,000份文件回答同样的15个问题。两者都是合法的;它们回答不同的问题。
这也不是替代人工阅读文件。本技能产出的每个单元格是一个需要核实的线索,不是发现。输出设计为使核实更快速,而非跳过核实。
加载上下文
~/.claude/plugins/config/claude-for-legal/corporate-legal/CLAUDE.md→ 尽调结构、重要性阈值、内部格式偏好~/.claude/plugins/config/claude-for-legal/corporate-legal/deals/[代码]/deal-context.md(如处理特定交易)- 用户已有的模式文件(
.review-schema.yaml)
列类型系统
使表格审查有用的是:C列在第1行和第200行中含义相同。自由文本会产生漂移。类型保持不变。
每列有一个类型来约束答案格式:
| 类型 | 返回什么 | 用于 |
|---|---|---|
verbatim |
文件中的确切引文,逐字逐符 | 定义术语、操作性条款语言、任何文字本身重要的地方 |
classify |
来自你定义的固定列表中的一个值 | 是/否、存在/不存在、条款变体(如"须经同意"/"不得无理拒绝同意"/"未提及") |
date |
ISO 格式日期 | 生效日期、到期日、解除通知截止日 |
duration |
数字 + 单位 | 期限长度、通知期、存续期 |
currency |
数字 + 货币代码 | 上限、阈值、费用、购买价格引用 |
number |
裸数字 | 计数、百分比、页码 |
free |
简短自由文本摘要 | 少量使用——这是会漂移的类型。仅在其他类型确实不适合时使用。 |
逐字规则: 每个非 verbatim 列也捕获支持答案的确切来源引文,作为伴随字段。单元格中的答案是解读;引文是证据。一个说"不得无理拒绝同意"的 classify 单元格如果没有来源句子就是无用的,因为审查者的工作是检查该解读是否正确。
"未找到"的三种状态
空白单元格隐藏信息。当无法产出肯定答案时,强制使用三种明确状态之一:
| 状态 | 含义 | 何时使用 |
|---|---|---|
not_present |
已读文件,该条款不存在 | 确信该主题未被涉及 |
unclear |
有内容但无法自信分类 | 模糊起草、部分条款、冲突规定 |
needs_review |
找到了内容但需要人工判断 | 边界情形、异常起草、答案取决于模式未捕捉的判断 |
这是三种不同的信息。交易团队处理"合同对合同转让保持沉默"的方式与"合同转让条款模糊"截然不同。将它们压缩成一个空白单元格丢失了这一区分。
工作流
第0步:什么和哪里
确认:
- 文件。 它们在哪里?数据室MCP(数据室/飞书/坚果云)、本地文件夹、云文档文件夹或文件列表。数量?如果 >200,警告这将花费一些时间并提供从经重要性过滤的子集开始。
- 模式。 哪些列?两条路径:
- 用户从
references/中选择模板(并购尽调标准是默认) - 用户用自然语言描述列,你将其结构化为类型化模式
- 用户从
- 输出。 Excel(
.xlsx)或在线表格——询问团队用哪个。CSV 和 markdown 始终作为备份写入。输出到交易文件夹、云文档或用户指定的位置。
第1步:构建并确认模式
将用户的列清单转化为结构化模式。每列:一个稳定的 id、一个人读的 label、一个 type、一个 prompt(审查者阅读文件时会问的问题),以及对 classify 列一个 options 列表。
将其写入输出旁边的 .review-schema.yaml。此文件是可重复使用的工件——用户可以编辑、添加列、对新文件重新运行。在展开前向用户展示并确认。
schema:
name: "并购尽调 — 项目 [代码]"
created: 2026-05-07
columns:
- id: counterparty
label: "对方当事人"
type: verbatim
prompt: "目标公司以外的合同相对方是谁?"
- id: effective_date
label: "生效日期"
type: date
prompt: "协议何时生效?"
- id: change_of_control
label: "控制权变更"
type: classify
options: [未提及, 须经同意, 不得无理拒绝同意, 自动终止, 仅通知]
prompt: "协议是否涉及目标公司的控制权变更?要求什么?"
- id: assignment
label: "合同转让限制"
type: classify
options: [未提及, 须经同意, 不得无理拒绝同意, 可自由转让, 可转让给关联方]
prompt: "目标公司能否转让本协议?有哪些限制?"
# ... 更多列
第2步:样本运行
不要在未测试的模式上对200份文件展开。先对3-5份文件运行。向用户展示行。寻找:
- 大多数答案为
unclear的列——提示语模糊,重写 - 答案不符合选项的
classify列——增加选项或改为free - 返回释义而非逐字文本的
verbatim列——强调必须逐字逐符
调整模式,重新运行样本,确认。这避免了用户做一个会被丢弃的完整运行。
第3步:展开
每份文件一个子代理,并行。每个子代理:
- 阅读完整文件(不是RAG分块——是整个文件)。
- 对每列,找到相关联条款。
- 返回结构化行:每列
{value, state, quote, location}。value是类型化答案(如果state不是answered则为 null)state是answered | not_present | unclear | needs_reviewquote是逐字的支持文本(精确,不释义,句内不使用省略号——如果截断,在句边界处截断并标注)location是引文所在位置(条款编号、标题、页码——文件提供什么就用什么)
引文不是可选的,逐字规则是机械性的,而非劝告。 每个子代理在返回 state: answered 的单元格前必须满足以下全部要求:
quote必须是从来源文件逐字逐符复制的连续文本,可在子代理引用的location处检索到。不得从条款标题加上你预期会存在于此处的标准模板文本拼凑引文。不得释义并称其为逐字原文。不得凭记忆以"此类条款通常"如何重构引文。不得用省略号拼接非连续文本以填充来源的缺口。location必须足够具体,使归一化遍能重新打开文件并重读相同片段——审查者可以导航到的条款编号、标题或页码。- 如果子代理无法定位和复制确切文本(来源被截断、OCR乱码、条款隐含但未写明、条款标题可见但正文未加载),单元格状态为
needs_review,value为 null,notes必须包含quote_unavailable: <原因>。绝不得以合成或重构的引文设置state: answered。 - 同一规则适用于
verbatim-类型列以及附在classify/date/duration/currency/number/free单元格上的伴随来源引文。支持性引文承担与单元格值同样的逐字义务。
第4步的归一化遍通过在引用 location 处重读来源并将存储的 quote 逐字逐符与来源文本对比来抽查这一点。不匹配将单元格降级为 needs_review,备注 quote_mismatch,并标记整列扩大抽查——如果一个子代理拼凑了引文,同次运行中的其他子代理可能也如此。
第4步:归一化
展开完成后,逐列阅读整张表。这是捕捉每个表格审查工具失败模式的遍:同一条款在不同文件间被不一致解读。
对每个 classify 列:
- 检查每个
answered值是否在选项列表中。异常值重新分类或提升为needs_review。 - 检查聚类:如果180份文件说
须经同意而20份说不得无理拒绝同意,这可能是真实的。如果195份说须经同意而5份说可自由转让,看这5份——它们要么确实不同,要么被错误分类。
对每个 date / duration / currency 列:
- 检查格式一致性。归一化。
- 将不合理的值(99年期限、¥1的上限)标记为
needs_review。
对每个 verbatim 列以及每个其他列上的伴随来源引文:
- 对随机样本(每列至少3-5行,或行的10%,取较大者)通过重新打开来源文件在引用的
location处将存储的quote逐字逐符与来源对比进行抽查。 - 如果任何引文是拼凑、释义、重构或无法在引用片段处定位:将该单元格降级为
needs_review并在备注中注明quote_mismatch,标记整列——将抽查扩展到该列的其余行而非假定其他行干净。一条编造的引文就足以触发扩大检查。 state: answered且引文不匹配的单元格是比unclear或needs_review单元格更高严重程度的失败——它曲解了证据线索。积极降级。
第5步:输出
以三种格式写入表格:
Markdown(始终,用于会话内审查):
| 文件 | 对方当事人 | 生效日期 | 控制权变更 | 合同转让 | ⚠️ 标记 |
|---|---|---|---|---|---|
| 供应商主协议 — Acme | Acme Corp | 2023-04-01 | 须经同意 | 须经同意 | — |
| 供应协议 — Beta | Beta LLC | 2021-11-15 | ⚠️ unclear | 未提及 | CoC模糊 §14.2 |
CSV(.csv,始终):
一个文件存值,一个伴随文件存引文和位置(_sources.csv)。保持主文件干净、证据线索完整。
Excel(.xlsx)或在线表格——取决于用户的工作环境。询问;不猜测。两者遵循相同的工作簿结构(见 references/excel-output.md 和 references/gsheets-output.md)。对 Excel:如可用则用 Claude in Excel(Office 代理),openpyxl 为备选。对 Sheets:如可用则用 Sheets MCP,通过 ADC 使用 Sheets API,CSV 导入为备选。在电子表格输出中:
- 每个数据列与包含引文和位置的隐藏来源列配对。可见列上的单元格评论(Excel)或备注(Sheets)在悬停时显示引文。
- 按状态颜色编码:白色 = answered,黄色 = unclear 或 needs_review,灰色 = not_present。
- 每个数据列一个
Verified列,默认为空白。审查者标记。这是使表格可审计的核实/标记模式——交易团队可一眼看出人工已实际检查了什么。 - 一个
_schema表包含列定义,使文件自我记录。
将工作成果页眉从插件配置 ## 输出规范 作为顶行加入。其旁加入分发说明:
本审查来源于可能具有特权、保密或两者兼有的来源文件。它继承来源的特权和保密状态——向特权保护圈之外分发可能放弃特权。存放于事项的特权文件中并慎重作出分发决定。
第6步:摘要
表格写入后,给用户一屏读览:
- 文件计数、列计数、完成的行数
- 每列
not_present、unclear、needs_review的计数——这是核实工作量 - 归一化遍中 >10% 行被标记的任何列
- 产出文件的位置
- 提醒:每个单元格是线索而非发现。在据此形成陈述与保证、清单或备忘录前必须核实。
以下一步行动决策树收尾
以 CLAUDE.md ## 输出规范 中的下一步行动决策树收尾。根据本技能刚产出的内容定制选项——五个默认分支(起草X、上报、补充事实、监控等待、其他)是起点,不是锁定。决策树本身就是产出;律师选择。
本技能不做什么
- 不替代阅读文件。 它告诉你在哪里看。
- 不产出置信度分数。 0.73不是信息。
unclear/needs_review状态和逐字引文是置信信号——如果引文不支持值,标记。 - 不无声地跳过文件。 用户指向的每份文件都得到一行。无法读取的文件得到一行
needs_review附说明。 - 不假装释义是引文。 证据线索是全部意义所在。
与其他技能的关系
diligence-issue-extraction发现问题;本技能提取数据点。如果提取中发现一个问题(一条引用特定盈利目标的重大不利变化条款、一项毒丸条款),记录并建议对该文件运行 diligence-issue-extraction。material-contract-schedule构建一张特定表(披露清单)。它可以直接消费本技能的产出——清单是表格审查经过滤、重新格式化的视图。ai-tool-handoff在语料过于庞大或团队偏好专用平台时将批量审查交接给 AI 工具。本技能是在其能处理的任何内容上的内部选项——先运行它,把剩余交接出去。
输出安全措施
每个输出都带工作成果页眉。每个单元格都有来源引用或标记状态。摘要明确说需要核实。Excel 的 Verified 列使核实状态可审计。这不是一个让你跳过阅读的工具;它是一个让阅读更快的工具。
No additional documents ship with this skill.
Related Skills
AI Tool Handoff
Detects when Luminance, Kira, or a similar bulk-review tool is in use, hands off the high-volume clause extraction to it, and QAs its output per the …
AI Tool Handoff
Detects when Luminance, Kira, or a similar bulk-review tool is in use, hands off the high-volume clause extraction to it, and QAs its output per the …
AI 工具交接
检测 AI 辅助审查工具(如 Luminance、Kira 等)是否在使用中,将大批量条款提取 交接给工具,并按 `~/.claude/plugins/config/claude-for-legal/corporate-legal/CLAUDE.md` 中的 信任层级对其输出进行 QA。当用户说"…
Board Meeting Summary
Produces a structured, objective summary of corporate board meetings covering metadata, quorum, attendance, conflicts, resolutions with vote counts, …
Board of Directors Meeting Minutes
Drafts corporate board of directors meeting minutes. Triggers on "board minutes", "minutes of board meeting", "board of directors meeting minutes", "…