Install
openclaw skills install @chenqg618/tax-filing-pack-free申报前的涉税批量自查,一次跑完目录里所有对象,逐个跑 14 项涉税检查并每个对象输出一行结论(各项通过 / 有问题 / 材料不足未执行),每条结论都引用原文文件与行号。触发词包括 涉税申报自查、申报前核对、税务批量核对、进项抵扣核对、附加税费核对、一次跑完所有对象。
openclaw skills install @chenqg618/tax-filing-pack-free完全本地运行:批量壳与 14 项涉税检查规则都打包在本技能里(
scripts/engine/)。 不对外发材料、不写任何文件(结果只打到 stdout)、没有次数上限。
谁会在什么时候用:企业税务会计 / 代账公司的涉税岗,在每次申报之前。申报要核的不是一个数, 而是十几张互相关联的底稿;一张张手核既慢,又说不清哪一项这次到底核没核。
这个工具做什么:--input 对象目录 时,目录里每个子目录就是一个对象(一个客户 / 一套申报材料);
本工具逐对象跑 14 项涉税检查(每一项内部还有若干子检查),最后每个对象输出一行结论:
对象名 / 14 项各自「通过 / 有问题(几条) / 未执行」/ 问题条数与 P0、P1 计数。
每条问题都带对象名 + 原文文件与行号(例如 申报材料.txt:5),可被第三方用同一份材料复算;
某个对象没交材料时,那个对象单独标「未执行」,不会拖累其他对象,也不会被算成"没问题";
只交了一部分材料时(只覆盖了部分检查项),会额外报一条 P2 检查项未执行(材料只覆盖了一部分),
把"没核的那几项"点名列出——绝不能因为跑了几项就当成 14 项都跑过了。
免费版是完整可用的核心产出——"一次跑完所有对象"这件事本身就在免费版里做完了:
CHECKS_WITHHELD 如实列出,跑 --sample 会打印):
跨对象汇总台账、跨对象风险排序处理清单、跨对象共性问题归类、申报台账导出(Markdown / CSV)。scope.sub_checks_not_run,
每一项各自列出,一条都不藏。node scripts/run.mjs --sample # 单对象样例(内置,14 项全跑)
node scripts/run.mjs --sample-batch # 3 个对象样例(干净 / 有一处硬伤 / 没交材料)
node scripts/run.mjs --input 对象目录 # 批量:每个子目录 = 一个对象
node scripts/run.mjs --input 对象目录 --json # 机器可读
对象目录这样放(每个对象的一套材料里,每张表用 === 检查名 === 分段,Tab 分隔最稳):
对象目录/
豫州商贸有限公司(2026-02 申报)/申报材料.txt
中岳建材有限公司(2026-02 申报)/申报材料.txt
一个文件里放全部 14 张表、或者拆成 14 个文件放进同一个子目录,都可以——引擎按表头认表。
目录里没有子目录时,直接把每个文件当一个对象;.json 文件里若写 {"text":"…"} 就按 JSON 取正文。
那 14 项涉税检查(含各自的子检查逻辑)是逐字节拷贝进本技能包 scripts/engine/parts/ 的,
本包只做"对象目录 → 逐对象跑 14 项 → 每个对象一行结论"的编排与汇总,没有改写任何一条核对规则。
--input 指到了"某个对象的文件",却以为在跑批量:--input 指向的应当是对象目录
(里面每个子目录才是一个对象)。直接指一个对象的文件,就只会出 1 个对象的结果。=== 检查名 === 分段行删掉了:引擎按表头找表,分段行不是必需的,但分段行没了就容易
把两张表的行粘在一起,表头后面跟着别人的明细行。分段名本身就是给"这个对象到底核了哪几项"用的。文件:行号。1 000.00)
会被拆成两列,凭空多出"关键字段缺失"。从 Excel 复制时用 Tab。本免费版是完整可用的核心产出,本版本不包含下面这些项:
同名工具的完整档是另一个独立商品(条款与条件以它自己的商品页为准);两档的差别就是上面这些,没有别的。
本工具不做引擎 CHECKS_OUT_OF_SCOPE 里列的那些判断(判断某项支出能不能抵扣、适用哪档税率、
代替纳税申报、出鉴证意见与税务意见、核对发票真伪、读电子税务局/开票系统导出文件);材料不足时
不给结论(认不出表头就不出结论,绝不套用默认值)。它只核表内与表间的算术和勾稽关系,
不替代你的专业判断。