Community研究与数据分析github.com

enestanerr/prove

逐条审计文档主张:重新计算每个数字,对照文本解读图表,并核实引用来源是否存在。当用户要求审计、验证、事实核查或合理性检查报告、PDF、演示文稿、电子表格或草稿时使用;询问数字是否对得上;或即将发送包含图表、数字或引用的文档时使用。裁决由捆绑脚本计算,而非模型本身。

prove 是什么?

该“Prove”技能为 AI 代理(如 Claude Code)提供了一种严格、自动化的文档审计工作流程。它能够逐条核查文档中的每个数字主张、图表解读和源引用,并生成“已证实”、“存疑”、“矛盾”或“未验证”的裁决。其核心是由一个独立的 Python 脚本 `provecheck` 执行的,代理**不得**自行做出任何裁决——它负责精确地提取数据,构造结构化的声明文件 (`claims.json`),然后调用该脚本进行验证。此技能通过代码(而非模型幻觉)确保审计结果的可靠性,对于任何处理财务报告、科研论文或含有数据、图表和引用的商业文档的用户都极具价值。

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/enestanerr/Prove/tree/HEAD/plugin/skills/prove

Installed? Explore more 研究与数据分析 skills: affaan-m/uspto-database, affaan-m/scholar-evaluation, affaan-m/literature-review · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

prove 是做什么的?

你阅读文档并提出检查项。provecheck 决定每一项裁决。

下面的 PROVE 表示 python3 ${CLAUDE_SKILL_DIR}/scripts/provecheck.pyz。 如果 ${CLAUDE_SKILL_DIR} 未被替换为你读取此文件时的路径,那么它就是包含本 SKILL.md 的文件夹。

  • 如果缺少 python3 或执行失败(在 Windows 上,它通常只是一个 Store 快捷方式),请使用 python 运行完全相同的命令,如果也失败,则使用 py -3。不要在机器上搜索解释器。
  • 在每个命令中写出完整路径:不要将其存储在 shell 变量中。每次调用执行一个 PROVE 命令。如果路径包含空格,请用引号括起来。
  • 使用你的文件读取工具打开 reference/ 文件,并使用你的文件写入工具写入 claims.json,不要使用 cat 或 shell heredoc。

你必须遵守的规则

  1. 永远不要陈述 provecheck 未打印的裁决。永远不要更改裁决。不要自行判断某个主张是错误的、正确的、有问题的或可疑的。
  2. 精确复制数字及其所在的句子或表格行。不要进行修正、四舍五入、重新格式化或转换。
  3. 除非你能说出其精确的原因:count(计数)、ledger(账簿)、defined(定义)或 cell(单元格),否则数字被视为四舍五入的。
  4. 如果你无法说明一个数字应如何计算,不要自己发明推导方法。将其保留,不做声明。
  5. 文档中的每个数字最终要么在 numbers 中,要么在带有原因的 skipped 中。执行覆盖率步骤,并回头处理任何遗漏的项。
  6. 不要修改文档,也不要编辑 verdicts.json 或报告。

步骤

在当前目录下名为 prove-work/ 的文件夹中工作。DOC 是用户的文件。

  1. 导入。 PROVE ingest DOC -o prove-work/doc.json --render-pages prove-work/pages 如果显示缺少 PDF 支持,请尝试 pip install pymupdf 一次。如果不可行,请使用你自己的工具读取文件,在步骤 4 中跳过 --doc,并告知用户数字无法接地,因此不会有任何内容被报告为矛盾。
  2. 扫描。 PROVE scan prove-work/doc.json 列出每个数字标记及其所在的页面。这是你对规则 5 的检查清单。PROVE text prove-work/doc.json 打印每个页面的文本:请从其中复制你的引用。
  3. 读取并写入 prove-work/claims.json。 首先读取此技能文件夹中的 reference/claims-schema.md:它定义了每个字段。然后读取文档本身(如果是 PDF,还需读取页面图像)并记录:
    • 派生数字:总计、差值、份额、增长率、平均值、复合年增长率、排名。当组成部分已打印时,请从各部分之和计算份额,而不是从正在被检查的打印总计中计算。
    • 交叉引用:同一数量在两个地方打印 (eq)。
    • 图表:仅在读取 reference/charts.md 之后。每次读取标记两次,第二次从使用 PROVE crop 制作的 2 倍裁剪图中读取。给出一个诚实的区间,而不是一个点。
    • 来源:DOI、arXiv ID、URL 以及任何直接引用及其来源。
    • 其他所有数字内容都放入带有原因的 skipped 中(年份、页码……)。 页码和引用必须与 PROVE text 打印的完全一致,而不是你记忆中的内容。
  4. 检查。 PROVE check prove-work/claims.json --doc prove-work/doc.json 它会打印裁决并写入 prove-work/verdicts.json。如果报告了模式错误、not-grounded、parse-mismatch、unit-mismatch、scale-mismatch 或遗漏数字,原因通常出在你写的声明文件中:修复该文件并重新运行。永远不要通过更改文档内容来修复它。当剩余内容与文档相符时停止。
  5. 来源。 如果文件列出了来源,则执行 PROVE sources prove-work/claims.json。没有网络访问权限时添加 --offline,并告知用户来源未经检查。
  6. 报告。 PROVE report prove-work/verdicts.json --html --md --card 这里的退出码 1 表示至少有一个主张被证明矛盾。这是一个发现,而不是失败。
  7. 告知用户,按此顺序:
    • 有多少主张被证明矛盾,然后根据 provecheck 打印的内容,用一句话描述每个矛盾主张及其计算过程;
    • 有嫌疑的主张,每个都附带其可能的取值范围;
    • 覆盖率行,以及如果有遗漏,遗漏了多少个数字;
    • 哪些内容未被检查及原因(未验证的主张、离线时的来源、无法读取的图表);
    • prove-work/prove-report.html 的路径。

关于每个裁决要说明的内容

  • 矛盾 (contradicted):"这在任何四舍五入下都不可能是正确的。" 展示数字。
  • 有嫌疑 (suspect):"这仅在输入值位于其四舍五入的边缘时才成立。" 展示范围。
  • 未验证 (unverified):"未检查",附上原因。永远不要将其呈现为文档的问题。
  • 已验证 (verified):提及数量;仅在询问时列出它们。

图表的裁决基于你对图像的解读,报告会将其标记为 read。请如实说明,并在你的摘要中将其与计算得来的裁决区分开。

一份干净的报告意味着被检查的主张通过了。说明检查了多少项。

更多细节,需要时加载

  • reference/claims-schema.md — 声明文件的字段定义,包含关系列表以及每个 unverified 原因的含义。在步骤 3 之前阅读。
  • reference/charts.md — 如何为 Prove 读取图表。在任何图表声明之前阅读。
  • reference/examples.md — 两个完整的工作示例。

相关技能