File Format Conversion
pipeshub-ai/pipeshub-ai
Picks the right library for converting between CSV, XLSX, JSON, images, DOCX and PDF text, and lists the conversions that are not supported so the agent does not attempt them.
Checks audit reports (financial statements and notes) for cross-reference, summation and text errors, with arithmetic done by script and results exported to Excel and Markdown.
SKILL.md written in Chinese; this summary is our English description.
$ npx skills add nigo81/nigo-skills --skill audit-report-checker -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install nigo81/nigo-skills audit-report-checker --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/nigo81/nigo-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/audit-report-checker .claude/skills/audit-report-checker && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "audit-report-checker" agent skill from https://github.com/nigo81/nigo-skills/tree/main/audit-report-checker into .claude/skills/audit-report-checker/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "audit-report-checker", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/nigo81/nigo-skills/tree/main/audit-report-checkerType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add nigo81/nigo-skills --skill audit-report-checker -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install nigo81/nigo-skills audit-report-checker --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/nigo81/nigo-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/audit-report-checker .agents/skills/audit-report-checker && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "audit-report-checker" agent skill from https://github.com/nigo81/nigo-skills/tree/main/audit-report-checker into .agents/skills/audit-report-checker/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "audit-report-checker", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add nigo81/nigo-skills --skill audit-report-checker -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install nigo81/nigo-skills audit-report-checker --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/nigo81/nigo-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/audit-report-checker .cursor/skills/audit-report-checker && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "audit-report-checker" agent skill from https://github.com/nigo81/nigo-skills/tree/main/audit-report-checker into .cursor/skills/audit-report-checker/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "audit-report-checker", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/nigo81/nigo-skills.git --path audit-report-checker--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add nigo81/nigo-skills --skill audit-report-checker -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install nigo81/nigo-skills audit-report-checker --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/nigo81/nigo-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/audit-report-checker .gemini/skills/audit-report-checker && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "audit-report-checker" agent skill from https://github.com/nigo81/nigo-skills/tree/main/audit-report-checker into .gemini/skills/audit-report-checker/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "audit-report-checker", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install nigo81/nigo-skills audit-report-checkerInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add nigo81/nigo-skills --skill audit-report-checker -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/nigo81/nigo-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/audit-report-checker .github/skills/audit-report-checker && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "audit-report-checker" agent skill from https://github.com/nigo81/nigo-skills/tree/main/audit-report-checker into .github/skills/audit-report-checker/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "audit-report-checker", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add nigo81/nigo-skills --skill audit-report-checker -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install nigo81/nigo-skills audit-report-checker --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/nigo81/nigo-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/audit-report-checker .opencode/skills/audit-report-checker && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "audit-report-checker" agent skill from https://github.com/nigo81/nigo-skills/tree/main/audit-report-checker into .opencode/skills/audit-report-checker/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "audit-report-checker", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
audit-report-checkerChecks audit reports (financial statements and notes) for cross-reference, summation and text errors, with arithmetic done by script and results exported to Excel and Markdown.
This Chinese-language skill reviews an audit report's financial statements and notes, looking for cross-statement tie-out errors, addition errors and text or format problems. The agent handles meaning, such as locating statements, understanding note sections, judging column meaning and annotating table structure, while code handles deterministic arithmetic. Its overriding rule is that numbers are never added by hand: even a three-number sum goes through scripts/calculator.py, which accepts thousands separators, bracketed negatives, dashes as zero, full-width characters and units of ten thousand, with a default tolerance of 0.01.
The first step asks you to choose a depth: quick (cross-checks between the four statements plus format), standard (the default, adding horizontal and vertical sums, common note tie-outs and text errors) or deep (all movement tables, cross-account checks and AI structure annotation, with a token-cost warning), and optionally which check types to run. When AI help is enabled, DeepSeek speeds up typo checks, table annotation and second review, and the skill falls back to code-only mode with --no-ai if the API is busy or no key is found.
Parsing routes each file by type: text PDFs go through pdfplumber, scanned PDFs and image-based Word reports through the mineru cloud API with numbers needing manual review, and text-table Word files through python-docx, preferring the .docx when both versions exist. It handles split (report plus notes) and combined files, including large reports of 50 to 150 pages, and produces a 7-sheet Excel workbook plus a Markdown review report.
8 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 6468211. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 11 files in scripts/ (Python), which the agent can run.
Shell commands in SKILL.md call:
python3pipnpmFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use pip and npm, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Audit Report Checker loads about 4.3k tokens when it runs, and up to ~19k if it reads all its reference files. Until then it costs about 71 tokens; SKILL.md has 1,003 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from nigo81/nigo-skills at commit 6468211, republished under its MIT licence (© nigo81). 1,003 words, ~4,276 tokens.
.claude/skills/audit-report-checker/SKILL.md (or your agent's skills folder). This skill also uses 17 other files; get the full folder from GitHub.作者:nigo(公众号:逆行的狗) 版本:1.0.0
检查审计报告(财务报表 + 附注),发现勾稽错误、加总错误、文本格式问题。Claude 是主控——负责语义理解(定位报表、理解附注章节、判断列含义、标注表格结构),代码负责确定性算术(求和、核对、reconcile)。两者分工,消除旧工具"硬拆分 + 关键词匹配"导致的系统性误报。
LLM 直接做数值加减会算错,且无法复现——审计核查中算错等于致命。所有数值计算,哪怕只是三个数相加,都调用 scripts/calculator.py。AI 只决定"传哪些数""哪个等于哪个",代码算出结果。
正确做法:
# 从报表/附注提取出数字后,调 calculator 验算
python3 scripts/calculator.py check "113,157,711.68" "113,157,711.68" # 核对相等
python3 scripts/calculator.py sum "1,234.56 5,678.90 100.00" # 求和
python3 scripts/calculator.py reconcile "100" "50" "30" "120" # 期初+增-减=期末错误做法:
# 心算"流动资产合计 = 货币资金 + 应收账款 + ..." ← 会算错,且别人无法核验calculator 支持千分位逗号、括号负数、横线(=0)、全角字符、万元单位,容差默认 0.01,用 round(diff, 6) 避免浮点边界误判。这是上一版已验证有效的原则,保留。
开始前用 question 工具问用户两件事:检查深度(单选)+ 检查类型(多选,可空则按深度档执行)。
三档深度:
| 档位 | 覆盖范围 | 耗时 | 适用 |
|---|---|---|---|
| 快速检查 | 四表间勾稽 + 格式(公司名/页码/页眉) | 几分钟 | 初筛、只关心报表平衡 |
| 标准检查(默认) | 快速 + 表内横加竖加 + 高频表注勾稽 + 文本(错别字/病句) | 十几分钟 | 日常复核,覆盖常见错误 |
| 深度检查 | 标准 + 附注所有变动表 reconcile + 跨科目勾稽 + AI 结构标注全表 | 半小时以上,token 消耗大 | 重大报告、终稿复核 |
用户不选就默认标准。选深度检查时先提示 token 消耗较大让用户确认(128 页报告深度检查可能消耗很多)。
检查类型多选:勾稽 / 横加竖加 / 表注 / 文本 / 格式。用户可自由组合覆盖深度档(多选全部 ≈ 深度检查)。
为什么要分档:审计师多数时候只需快速验证勾稽,无差别深度检查既慢又费 token。scope 让用户知情选择,按需触发。
附注-only 自动调整:若识别到文档只有附注、无四表(如盛屯/博达新材的纯附注 Word),自动跳过报表间/表注勾稽,聚焦附注内勾稽 + 横加竖加 + 文本格式,并告知用户调整了范围。详见后文"附注-only"。
DeepSeek 模型选择(启用 AI 时执行):标准/深度检查默认启用 DeepSeek 加速(文本错别字、附注表结构标注、warning 二次复核)。涉及 AI 时,问完深度+类型后先选模型,避免 reasoning 模型拖垮批处理:
python3 scripts/ai_worker.py --test-check-key(读 ~/.deepseek/config.json;无 key 则全程走 --no-ai 纯代码)python3 scripts/ai_worker.py --test-list-models(DeepSeek 503 服务繁忙时可能查不到,可跳过用默认)question 让用户选模型,默认推荐 flash 类模型(非 reasoning,单请求延迟低,适合大批量并发;reasoning 类如 v4-flash 单请求 25s+ 会拖垮批处理)。用户无偏好直接用 flash。--model <选定> 传入,或写入 ~/.deepseek/config.json 的 model 字段持久化。降级原则:DeepSeek API 服务繁忙(503)/限流属外部问题。多次失败时降级 --no-ai(纯代码 L1+scan+词库),文本/标注/warning 复核由 Claude 终审兜底(Step 5 本就要求 Claude 复核,不完全依赖 API)。
python3 scripts/parse_report.py "<文件或目录>" -o <输出目录>脚本四路自动分流,按文档类型和内容特征选最佳提取路径:
extract --model vlm),数字需人工复核Word/PDF 双路(重要):实际场景大部分是 Word 报告。parse 对同 basename 的 .docx/.pdf 优先 .docx(去重,Word 表格精确无断字);无 Word 才用 PDF。两路分开处理:
定位差异:Word 用章节("附注五-3 应收账款"),PDF 用页码("第N页")。result 的 chapter(Word)/ page(PDF)字段区分,export 自动适配。
输出两个文件:
report.md:全文 markdown,每段用 <!-- SOURCE file="..." page=N method=... --> 标注来源页码和提取路径extracted_tables.json:原始二维表格(headers + rows),不做列映射、不做报表分类、不做续表合并解析层只输出原始数据,报表定位、附注识别、列含义判断全部由 Claude 在后续步骤用语义完成。这是消除旧工具"拆分匹配错误"的核心——parse 层不越界做本该人做的事。提取策略原理见 references/extraction.md。
mineru 是云端 API,数据会上传 mineru.net。审计报告含敏感财务数据,首次走 mineru 路径前要告知用户并获得知情同意。详见 references/mineru_usage.md。
读 report.md,理解整体结构:
<!-- WARNING: ... 为图片/扫描页 -->,直接据此处理;否则自己扫描各页文本量。发现四表区域空白时:mineru-open-api extract "<报告.pdf>" --pages 7-16 -o <目录> --model vlm --language ch(需先 mineru-open-api auth 配 token,见 references/mineru_usage.md,含数据上传云端隐私提示)识别同义科目变体靠语义理解,不做映射表:股东权益 = 所有者权益、股本 = 实收资本、股东权益变动表 = 所有者权益变动表。为什么用语义而不是关键词字典:每遇到一个新报告格式就要加规则,关键词爆炸不可持续;Claude 一次调用就能理解,且能处理变体。
生成 note_map.json(表注勾稽的定位基石,Step 2 必做):理解附注结构时,一次性生成「科目→附注明细表」精确映射 note_map.json(写入 parse 输出目录)。这是三层分工架构的定位层——Claude 语义定位(准、只做一次、低 token),取数/算术交给代码(DeepSeek locate + calculator)。
为什么定位必须 Claude 做:旧工具靠正则匹配标题 + 页码邻近定位,在①标题格式多样 ②同页多科目 ③续表跨页 上系统性失败(详见 旧报告检查工具_定位研究.md 的 4 大根因)。Claude 一次语义理解就能准确定位到表级别。
格式({科目: {...}}):
{"货币资金": {"table_ids": [220], "pages": [16], "field": "期末余额", "formula": "期末余额", "note": "报表数=附注期末余额"},
"应收账款": {"table_ids": [221,222], "pages": [18,19], "field": "账面价值", "formula": "账面余额-坏账准备=账面价值", "note": "报表数=附注账面价值"}}table_ids:该科目附注明细涉及的表 id(附注文件范围,绝不混入资产负债表/利润表等报表表,否则表注勾稽会"自己比自己")field:报表数等于附注哪个字段(直接取,如"账面价值"/"期末余额")formula:取数口径公式(field 取不到时按此运算,如"账面余额-坏账准备")subjects_index.json(scan 生成的科目→候选表粗索引)可作为定位参考/校验,但精确定位以 Claude 生成的 note_map 为准生成 manifest.json(四表提取的结构契约,Step 2 必做):理解四表在文件里的位置/列布局后,写成 manifest.json(写入 parse 输出目录)。这是三层分工架构的结构契约层——Claude 语义识别结构(准、只做一次),抽数交给 apply_manifest 纯机械执行(零猜测、新格式改 JSON 不改代码)。
自动生成优先:run_check --auto-manifest --auto-note-map 时 DeepSeek 并发自动生成 manifest.json 和 note_map.json(看 sheet 表头/附注表内容判断列布局/科目归属),代码做结构性校验 + 回原文核对降错。自动生成失败或校验大量不过→回退 Claude 手写(有模板库)。
为什么用 manifest 不靠代码猜:天邑列布局(B/E/F) vs Macko(A/C/D) 不同、Macko 母公司 BS 主表/续表列布局不同、续表项目名带空格("负 债 合 计")、非标准名("股东权益合计")——每遇到一个新格式,代码猜列/猜 sheet/硬编码 ALIAS 都会崩。manifest 把这些差异声明在 JSON 里,apply_manifest 按声明抽数。
格式(详见 references/manifest_template.md,含 4 份报告的 manifest 样例):
{
"report_format": "merged_docx | split_xlsx | split_docx | split_pdf",
"company": "...", "period": "...",
"files": {"文件名": {"role": "statements|notes|opinion|cover", "loader": "xlsx|docx|pdf|doc"}},
"statements_map": {
"合并资产负债表": {
"source": "文件名", "loader": "xlsx|docx|pdf",
"sheets": ["sheet名"], "source_table": "表名(docx/pdf按此在extracted_tables定位)",
"kind": "linear | matrix",
"item_col": 0, "current_col": 2, "prior_col": 3,
"field_aliases": {"股东权益合计": "所有者权益合计"},
"merge_into": null
}
}
}files.role+loader:分体式文件角色(报表/附注/正文/封面)+ 读取器(xlsx=openpyxl / docx,pdf=读extracted_tables / doc=textutil转)item_col/current_col/prior_col:列布局(看 dump 确定,不猜)sheets+merge_into:BS 续表/分段合并(同表不同列布局时分两段,merge_into 合并)source_table:docx/pdf 时按表名/内容在 extracted_tables 定位四表(表 name 常为空,靠内容匹配"资产总计"+"流动资产合计"=BS)field_aliases:项目名标准化("股东权益合计"→"所有者权益合计")kind: linear|matrix:权益变动表矩阵结构(sheets_main/sheets_prior + value_col)生成方法:Claude 看每个报表文件的 dump(xlsx 的 sheet 名+表头+前3行 / docx 的 extracted_tables 四表名+列)后手写 manifest(3-5 分钟)。Macko/天邑/巨东/清研的 manifest 已在各自 parse_output 目录,可作为模板。
用 Step 2 的 manifest.json,调 apply_manifest 纯机械抽数:
python3 scripts/apply_manifest.py <parse输出目录>/manifest.json -o statements.jsonapply_manifest 读 manifest 的 statements_map,按声明的 source+loader(xlsx 读 sheet / docx,pdf 读 extracted_tables 按 source_table 定位)+ item_col/current_col/prior_col 抽数,套 field_aliases 标准化项目名,处理 merge_into 分段合并,产出 statements.json。零猜测、零改代码——所有格式差异已在 manifest 声明。
产物格式(与 calculator_rules 匹配):
{
"合并资产负债表": {"流动资产合计": {"current": "113,157,711.68", "prior": "..."}, "资产总计": {"current": "...", "prior": "..."}},
"合并利润表": {...},
"合并现金流量表": {...},
"合并所有者权益变动表": {...},
"母公司资产负债表": {...}, ...
}字段名必须精确:calculator_rules 按字段名匹配(如 "期末现金及现金等价物余额"),字段名不一致会导致 L1 检查报"缺少必要项目"。提取前先查必需字段清单:
python3 scripts/calculator_rules.py报表原文项目名与清单不一致时,在 manifest 的 field_aliases 里声明映射(如"股东权益合计"→"所有者权益合计"、"负债和股东权益总计"→"负债和所有者权益总计"),不要改代码。
python3 scripts/run_check.py <parse输出目录> \
--statements <parse输出目录>/statements.json \
--note-map <parse输出目录>/note_map.json \
--scope <scope> --scan --use-ai -o <parse输出目录>/results.json说明:
--statements 和 --note-map 支持相对路径,脚本会优先相对于 <parse输出目录> 解析;如果找不到会给出明确报错。<parse输出目录> 前缀,避免不同工作目录下的路径歧义。可选参数(用于提速/跳过已跑过的慢步骤):
--max-workers N:DeepSeek 并发数(默认 60)--skip-annotation:跳过 AI 结构标注(复用本地 annotations_cache.json)--skip-text-ai:跳过 AI 文本错别字/病句检查--skip-ai-review:跳过 DeepSeek 对 warning/error 的预复核(默认执行,最终终审仍由 Claude Step5 完成)脚本执行确定性检查(不依赖 LLM),--scan 必加——它让代码分担横加竖加的粗活,大幅减轻你在 Step 5 的负担:
--use-ai 说明(默认启用):
--use-ai:启用 DeepSeek 并发(4 场景:①文本错别字 ②附注表结构标注 ③表注勾稽+附注reconcile(按 Step2 的 note_map 定位→locate 取数→calculator 比较)④warning 预复核;均批量化 + 并发默认 60)。需 DeepSeek API key + 选定 flash 类模型(见 Step 0)。文本检查(错别字/病句)和表注勾稽取数只有 --use-ai 能自动执行,纯代码扫描覆盖不到。--note-map 不传时默认读 <input_dir>/note_map.json(Step2 生成)。--no-ai:纯代码扫描(无文本 AI 检查),DeepSeek 服务繁忙/无 key 时降级用。此时文本检查只走内置词库,结构标注/warning 复核由 Claude 在 Step 5 手动完成。run_check.py 在 AI 结构标注(run_check.py:2368-2400)、表注勾稽(run_check.py:2533-2562)、文本错别字(run_check.py:2473-2510)、warning 二次复核(run_check.py:2640-2670)四个场景均捕获 API/取数异常,失败时跳过该场景并在 results.json 中生成降级提示,不会中断主流程。--model <name> 传入;不传则用 ~/.deepseek/config.json 的 model 字段。优先 flash 类(非 reasoning),详见 Step 0。执行的检查(按 scope):
calculator_rules.py 四函数,验资产=负债+权益等恒等式--scan):candidates.json(代码无法判断的变动表/复杂横加表清单,留给你在 Step 5 做 AI 结构标注)和 subjects_index.json(41 科目→附注候选表粗索引,供你在 Step 2 生成 note_map.json 时参考/校验,精确定位以 Claude 生成的 note_map 为准)输出 results.json,每条结果含:check_type / rule_name / severity / passed / description / expected / actual / difference / source_location / target_location / evidence / page / context / source_file。
定位字段(审计师核对原文用,必填):
page:页码(纯数字,如 45)。从 report.md 的 <!-- SOURCE ... page=N --> 注释或附注章节位置获取。context:原文摘录(约50字,被检查的那行原文片段),审计师在 Excel 里直接看到原文,不用翻 PDF。source_file:由 run_check 自动回填原始报告路径,你写语义检查结果时无需手动填。rule_name:用有意义的科目名(如 货币资金年末竖加、存货-原材料横加),不要带 id=N 前缀(id 是解析时的表格序号,对审计师无意义)。run_check.py 只是代码侧的确定性粗筛(L1 报表间恒等式 + 页码/单位/错别字词库)。以下四类语义检查是本 skill 区别于普通脚本的核心能力,必须执行,不可跳过——跳过等于只做了 20% 的工作。
Agent 终审输出习惯(D2.4):
results.json。⚠️ Claude 终审强制(D2.1 核心,最重要)
表注勾稽(check_type="表注"):run_check --use-ai 已自动执行(三层分工:Step2 的 note_map 定位 → DeepSeek locate 取数 → calculator 比较"报表数 vs 附注数")。你只需做 Claude 终审 + 兜底:
calculator check 比较(算术绝不手算,全走 calculator)横加竖加(check_type="横加"/"竖加"):Step 4 的 scan 已对含合计行的表做了代码验算,你在这里做 scan 做不了的部分:
按表分组复核(效率关键,禁止逐条):同一张表的多个竖加/横加 warning(如某账龄表4列各报1条=4条warning)合并成一次复核——读该表完整原文一次,批量判断该表所有 warning。用 source_location(表格ID)分组:
# 按表分组 warning,一张表一次复核
from collections import defaultdict
by_table = defaultdict(list)
for w in warnings: by_table[w.get("source_location")].append(w)
for table_loc, table_warns in by_table.items():
# 读这张表的完整 headers+rows(一次),批量判断该表所有 warning判断标准(必须给明确结论,禁止骑墙存疑):
为什么必须明确结论:审计师拿到报告要能直接行动(改/不改/人工核),"存疑"过多等于没核查。DeepSeek 会误报,但你回原文后应能判断,判断不了说明原文读得不够。
附注内变动表 reconcile(check_type="附注内"):调 calculator reconcile 验证期初 + 增加 − 减少 = 期末(固定资产、应付职工薪酬、应交税费等,见 rules.md C1)。凡识别为四列变动结构的表都做。
文本复核(check_type="文本"):通读 report.md,找错别字、病句、前后矛盾、数据口径不一致。这是 LLM 擅长而脚本词库只是粗筛的部分。
执行完以上四类才能进 Step 6。若某类确实无目标(如附注-only 文档无四表→无表注勾稽对象),在 results 里记一条 info 说明"未执行表注勾稽(原因:附注-only 无四表)",不要静默跳过——让用户知道哪些检查做了、哪些没做、为什么。
每条语义检查结果必须填定位信息(审计师要回原文核对):从 report.md 找到被检查内容的 <!-- SOURCE page=N --> 标记,填入 page;把被检查的那行原文摘录(约50字)填入 context。这样审计师在 Excel 里点页码能打开原报告、看原文摘录能直接核对,不用逐页翻 PDF。
把补充结果按统一格式追加到 results.json(字段同 Step 4)。
python3 scripts/export_report.py results.json -o <输出目录>生成两个文件:
Severity 二元化:
输出只读不改源报告(audit-only)。
向用户解释发现的问题,按严重程度说明,保持简洁:
对标记"异常"的项做二次判断,排除规则误触(如附注口径不同导致的正常差异)后再呈现给用户。
输出习惯:完成 Step 5 终审和 Step 6 导出后,直接告诉用户报告保存路径(Excel + Markdown),并给出核心统计(问题数/存疑数/主要问题)。不必逐项展开,除非用户要求。
细节在各 reference 文件,这里只给骨架和读取时机。
定位四表:看编制单位、会计期间、项目结构,语义识别合并 + 母公司 8 张或单体 4 张。识别变体(股东权益 = 所有者权益)。读 references/rules.md 了解科目覆盖范围。
附注语义索引:理解"附注三、货币资金"讲货币资金、"(三)应收账款"讲应收账款,不穷举正则匹配标题。按科目索引后按需取数,不全量加载。
列含义判断:看表头和内容判断期末/期初/附注编号/项目名列,不硬编码列数。3 列、4 列、8 列左右两栏都能处理。
AI 结构标注:读 references/structure_annotation.md,用里面的 prompt 模板标注行 type/op、列 type、横加关系,批量标注提效。标注失败降级为仅合计行验证。
附注-only:无四表 → 跳过报表间/表注勾稽,做附注内勾稽 + 横加竖加 + 文本格式。报告中明确标注"本文档为附注-only,未执行报表间/表注勾稽"。
50-150 页合体大报告(如盛屯 128 页)容易上下文爆炸。分批策略:
算术纪律全程不变:任何数值加减都调 calculator,AI 只决定传哪些数。
Python 依赖(mac/Windows 通用):
pip install pdfplumber python-docx openpyxl openaimineru(仅扫描件/图片报表才需要):
npm install -g mineru-open-api
mineru-open-api auth # 配置免费 token脚本纯 Python 跨平台(pathlib、无平台特定命令),mac/Windows 双平台、中文路径、含空格路径均支持。
mineru 数据隐私:审计报告含敏感财务数据,上传云端前必须告知用户并获得知情同意。上市公司公开报告无隐私问题;未公开/保密报告建议优先用文本路径(pdfplumber/python-docx,数据不出本机)。详见 references/mineru_usage.md。
| 文件 | 何时读 |
|---|---|
references/rules.md | 做表注勾稽时查 41 科目对照表;做变动表时查 reconcile 规则;用户问覆盖哪些科目时 |
references/structure_annotation.md | 做横加竖加时用 prompt 模板标注附注表格;标注失败查降级策略;批量标注查提效建议 |
references/extraction.md | 看到 report.md 中 mineru 来源标记时判断数字置信度;用户问为什么分四路/为什么文本优先时 |
references/mineru_usage.md | 首次遇扫描件/图片报表需引导安装配置 mineru;mineru 调用失败排查;用户问数据安全时 |
references/user_rules.md | 每次检查时加载用户自定义规则并执行;用户描述新需求时写入 |
读 references/user_rules.md。用户可在对话中描述特殊检查需求(如"我们事务所要求核对关联方披露完整性""金融行业客户重点查贷款五级分类"),你理解后整理成"自然语言描述 + 适用场景 + 期望结果"格式写入该文件的"## 我的规则"章节。规则跟着 skill 走(不绑定具体报告目录),所有报告共用。检查时一并执行这些规则。规则失效或需修改时,用户在对话里说即可,你更新文件。
© nigo81, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 17 other files (scripts, references) in audit-report-checker of nigo81/nigo-skills.
Open the folder on GitHubat commit 6468211
Audit Report Checker next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Audit Report Checker this skillnigo81/nigo-skills | 133 | — | ~4.3k | Automated safety check: Pass | MIT | |
| File Format Conversionpipeshub-ai/pipeshub-ai | 3.8k | — | ~865 | Automated safety check: Pass | Apache-2.0 | |
| Office ArtifactsPrismer-AI/PrismerCloud | 1.6k | — | ~2.6k | Automated safety check: Pass | MIT | |
| PDFzai-org/ZCode | 7.7k | — | ~18k | Automated safety check: Notes | Proprietary | |
| PDFIgorWarzocha/Opencode-Workflows | 122 | — | ~495 | Automated safety check: Pass | None | |
| Local Knowledge Base RetrieverConardLi/rag-skill | 715 | 2 repos | ~1.7k | Automated safety check: Pass | None |
pipeshub-ai/pipeshub-ai
Picks the right library for converting between CSV, XLSX, JSON, images, DOCX and PDF text, and lists the conversions that are not supported so the agent does not attempt them.
Prismer-AI/PrismerCloud
Generate real DOCX, PPTX, XLSX, PDF, CSV files using python-docx / python-pptx / openpyxl / reportlab by writing them into the dispatch artifacts dir, then explicitly deliver each one with cloud…
zai-org/ZCode
Professional PDF toolkit covering four production workflows: reports, creative visuals, academic LaTeX, and existing PDF processing.
IgorWarzocha/Opencode-Workflows
Handle PDF manipulation, form filling, text/table extraction, and high-fidelity generation.
ConardLi/rag-skill
Answers questions from a local knowledge base folder by walking hierarchical index files and searching with grep, pdfplumber and pandas instead of loading whole files.
NateBJones-Projects/OB1
Converts large PDF, DOCX, PPTX, XLSX and CSV files into markdown or CSV plus an index before the agent reads them, so tokens go to the compressed copy.
nigo81/nigo-skills
Looks up Chinese company registration data in the CICPA industry knowledge base, from a quick search to a full 61-dimension export, subsidiary discovery and Excel output.
nigo81/nigo-skills
Merges bank statements from several banks and formats into one standard Excel layout, then reconciles them against the general ledger with a layered matching engine.
nigo81/nigo-skills
A Chinese-language persona that answers accounting-standards and audit questions in the style of forum moderator Chen Yiwei, checking standards text before it replies.
nigo81/nigo-skills
Chinese-language tool that turns a business process description into a swimlane flowchart for internal control and audit work, exported as .drawio, PNG, SVG or VSDX.
nigo81/nigo-skills
Cross-checks a client's own registry data against its customers' and suppliers' to surface undisclosed related-party relationships for an audit.
nigo81/nigo-skills
Exports an OpenCode session from its local database into a single self-contained HTML page styled like the official share view, with folding and editing controls.
Works with
Categories
Checks audit reports (financial statements and notes) for cross-reference, summation and text errors, with arithmetic done by script and results exported to Excel and Markdown. This Chinese-language skill reviews an audit report's financial statements and notes, looking for cross-statement tie-out errors, addition errors and text or format problems. The agent handles meaning, such as locating statements, understanding note sections, judging column meaning and annotating table structure, while code handles deterministic arithmetic.
Audit Report Checker fits situations like: checking an audit report's statements and notes for cross-reference errors; verifying that subtotals and totals in report tables add up; proofreading a report's text and formatting before sign-off; reviewing a scanned or image-based financial report.
Run `npx skills add nigo81/nigo-skills --skill audit-report-checker -a claude-code`. Or copy the skill folder (audit-report-checker in nigo81/nigo-skills) into .claude/skills/audit-report-checker in your project. Claude Code loads it when a task matches its description.
Run `npx skills add nigo81/nigo-skills --skill audit-report-checker -a codex`. Or copy the skill folder (audit-report-checker in nigo81/nigo-skills) into .agents/skills/audit-report-checker in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add nigo81/nigo-skills --skill audit-report-checker -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/audit-report-checker, .gemini/skills/audit-report-checker, .github/skills/audit-report-checker and .opencode/skills/audit-report-checker in your project.
Going by SKILL.md and its folder, Audit Report Checker needs Python for the scripts in its folder and the command-line tools its instructions call (python3, pip and npm). Our summary lists: Python 3 with pdfplumber and python-docx; Access to the mineru cloud API, for scanned PDFs and image-based reports; A DeepSeek key in ~/.deepseek/config.json, optional.
SKILL.md contains no URLs. Its commands use pip and npm, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Audit Report Checker is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.3k tokens (SKILL.md is roughly 17k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 15k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Audit Report Checker: File Format Conversion (pipeshub-ai/pipeshub-ai, 3.8k stars), Office Artifacts (Prismer-AI/PrismerCloud, 1.6k stars), PDF (zai-org/ZCode, 7.7k stars) and PDF (IgorWarzocha/Opencode-Workflows, 122 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
nigo81 (a GitHub user) maintains it in nigo81/nigo-skills, which has 133 GitHub stars. The repository holds 13 skills in this directory. The repository was last updated on August 23, 2026.
Source: nigo81/nigo-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.