Community生产力与协作github.com

Kpakfar/german-tax-return

一个用于准备德国个人所得税申报表(Einkommensteuererklärung,2024纳税年度起)的模板技能。它从12个问题的访谈开始,找出适用的领域和需要收集的材料,然后运行一个带有门控的工作流——由脚本(而非模型)将申报金额与发票匹配,并应用常见的法定限额。

german-tax-return 是什么?

该技能帮助用户(主要是德国纳税人)使用AI助手(如Claude Code、Cursor等)准备自己的个人所得税申报表。它首先通过12个筛选问题识别用户适用的申报领域,然后引导用户完成分步骤的门控工作流:收集文件、建立分类账目、通过脚本验证收据和适用法定限额(例如扣除上限、一次性扣除额、低价值资产限额等)。关键特性是脚本(而非AI模型)负责匹配金额与原始凭证,确保了合规性;任何无法由脚本验证的判断都会作为问题留给用户。该技能支持年度申报、月度扫描和税务评估核对三种模式,并明确声明不提供税务建议,用户需对最终申报内容负责。它基于公开法律文本(链接在`references/thresholds.json`中)设计,最多支持配偶联合申报,但禁止用于商业代报税服务。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Kpakfar/german-tax-skill/tree/HEAD/skills/german-tax-return

Installed? Explore more 生产力与协作 skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

在你喜欢的 AI 中提问

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

文档

德国个人所得税申报表

免责声明:这是一个模板,不是税务建议。 它是基于一个家庭的经验构建的申报起始结构,并根据该项目给出日期下 references/thresholds.json 中链接的法律文本进行了核对。税法每年都会变化,每个案例也各不相同。该技能可能错误、不完整或过时。您对您申报的内容负责。请自行核实每一笔金额,对于复杂情况,请咨询税务顾问(Steuerberater)或工资税援助协会(Lohnsteuerhilfeverein)。不提供任何担保(请参阅LICENSE)。在使用规则、问题及限额之前,请根据您自身情况进行调整。

模型提出并解释。脚本检查它们能检查的内容。由人类签署并提交。

没有一笔金额是因为模型相信它而被放入申报表中。只有当 scripts/check_receipts.py 在其来源文档中找到该金额,并且 scripts/limits.py 应用了它所涵盖的限额后,该金额才会被计入。脚本涵盖了一套常见的规则,而非全部税法;任何超出范围的内容都会作为问题留给用户。判断(例如,这笔订阅是工作相关吗?)会被写成一个问题留给人类,而不会默默地决定。

范围与限制(请先阅读)

  • 仅适用于用户自己的申报,或与配偶的联合申报。在德国,作为业务为第三方处理税务是持证专业人士的特权(§§ 2, 5 StBerG;§ 6 列出了狭窄的例外情况,例如无偿帮助亲属)。请勿提供此项服务。
  • 这是一个模板,不是税务建议。在用户开始时、访谈之前,明确、直白地告知这一点。
  • 特定年份的数据来自 references/thresholds.json,每个数据都附有官方来源。如果某一年份在该文件中缺失,则在将其添加之前,请务必通过官方来源(参见 references/official-sources.md)进行核实。
  • 切勿提交。智能体可以应要求填写ELSTER或税务软件中的表格,但发送操作始终由用户点击完成。

模式

  1. 年度申报:完整的工作流如下。
  2. 月度扫描:参见 references/monthly.md。每月初运行,检查上个月的付款记录、发票和电子邮件。
  3. 税务评估核对:将税务评估通知书(Steuerbescheid)与已申报内容进行比较,列出所有差异,以及提出异议的截止日期(Einspruch:评估通知被视为送达后一个月内,§ 355 AO)。参见 references/workflow.md,第6步。

年度工作流(按顺序的门控)

每个步骤都有一个门控。不要凭模型自己的判断通过门控。

  1. 访谈。 用通俗的语言,一次一两个地询问 references/interview.json 中的12个筛选问题。答案为“是”、“否”或“不确定”(不确定视为“是”)。然后运行 python3 scripts/interview.py --answers answers.json(或在终端中使用 --ask)。输出将列出每个适用领域的后续问题、需要收集的文件、相关成本的总账分类以及可能涉及的表格。不要因为用户未提及某个领域就跳过它。 门控:所有12个问题都回答完毕。
  2. 收集。 首先询问纳税年度。收集上一年的申报表和评估通知书、所有证书、发票、银行导出文件和税务局的信件,存放至一个本地文件夹。使用 references/intake-checklist.md。 门控:清单中的每一部分都有明确的答案(数值、是/否、无)。
  3. 安全。 在用户的本地文件夹中工作。切勿要求或存储密码;用户自行登录。确保税号、IBAN和姓名不会出现在任何同步或共享的文件中。 门控:用户已确认数据存放位置及可查看人员。
  4. 测试任务(聘用智能体)。 在新年度之前,阅读上一年度的评估通知书,找出被遗漏或削减的项目。报告它们及其所在页和行号。 门控:用户对照纸质文件检查发现结果。
  5. 建立分类账。 在 ledger-YYYY.csv 中为每项申报的成本创建一行(列格式参见 scripts/limits.py --help)。按照 references/deduction-guide.md 对行进行排序。混合用途项目需包含 work_share 和书面理由。
  6. 检查(脚本说了算,而非观点)。
    • python3 scripts/check_receipts.py ledger-YYYY.csv --root FOLDER 每笔金额必须在对应文档中找到。如果安装了 tesseract,扫描件将通过 OCR 读取。检查失败的行要么修正,要么标记为推算数值,并在旁边附上计算过程。
    • python3 scripts/limits.py ledger-YYYY.csv --year YYYY 应用份额、上限、一次性扣除额、低价值资产限额以及支付年份规则。被标记的行将作为问题提交给用户。
    • 公寓租赁:python3 scripts/afa.py split|eligible|schedule ... 门控:两个脚本均以退出码0结束(在 limits.py 中,只有状态为 approved 的行通过),或者每个剩余的标记都有书面回答。
  7. 填写、审核、提交。 将核对后的总计映射到申报表格(references/output-template.md)。用户审核每个字段并提交。收到评估通知书后,运行税务评估核对。

输出规则

  • 优先显示结果:退税额或应缴税额,以及仍阻碍提交的因素。
  • 显示脚本输出,而非转述内容。
  • 每一项估算都必须明确标记为估算。
  • 对于德语术语,首次出现时给出英文翻译(括号内)。

文件

  • scripts/interview.py + references/interview.json:12个筛选问题 -> 生成收集清单
  • scripts/check_receipts.py:金额必须出现在其来源文档中
  • scripts/limits.py:每年、每人的法定限额
  • scripts/afa.py:建筑份额、5%递减资格、折旧计划
  • scripts/monthly_scan.py:银行CSV + 发票 + .eml -> 月度报告
  • references/thresholds.json:带官方来源的年份数值
  • references/deduction-guide.md:哪些费用算作扣除及如何判断
  • references/workflow.md:详细的关控步骤、税务评估核对
  • references/monthly.md:月度例行程序及如何安排
  • references/intake-checklist.md、references/output-template.md
  • references/official-sources.md
  • examples/:虚构的分类账和收据,供快速测试两项检查
  • tests/:python3 -m unittest discover -s tests

相关技能