Community生产力与协作github.com

szalvay/小型企业工资准备

在发薪日之前捕获错误和遗漏。

小型企业工资准备 是什么?

此技能(szalvay/small-business-payroll-prep)专为处理小型企业工资准备的AI代理(如Claude Code、Cursor、Codex)设计。它通过一个命令行工具将业主的工资规则与来自POS、考勤系统、会计软件和HR系统的导出文件整合,生成经过检查的工资单:包含审查工作簿、证据链以及用于上传到工资系统的文件。该技能不会自动提交工资单;所有结果必须由人工审查并提交。它支持从初始配置到运行新付款周期的完整工作流,包括导入HR数据、映射POS报告、运行验证检查以及生成最终输出。关键规则要求用户从不猜测数据、在处理警告时记录人工确认、并保持敏感数据的安全。该技能使用Python 3.10+和openpyxl库,需要一个清晰的工作区结构,其中包含配置文件、规则手册和证据输出。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/szalvay/small-business-payroll-prep/tree/HEAD/skills/small-business-payroll-prep

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

在你喜欢的 AI 中提问

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

文档

小型企业工资准备 是做什么的?

在发薪日之前捕获错误和遗漏。

此技能将业主的工资规则及其POS、考勤系统、记账和HR导出文件转换为经过检查的工资单:一个审查工作簿、一个证据链以及用于其工资系统的上传文件。它从不提交工资单。由人工审查并提交。

所有操作均通过此技能文件夹中的单一命令行工具运行:

python3 scripts/payroll.py --help          # 需要 Python 3.10+ 和 openpyxl (pip install openpyxl)

在其他位置工作时,使用技能文件夹的绝对路径运行它,例如 python3 <skill-dir>/scripts/payroll.py run <period-folder>。

基本规则(请先阅读)

  1. 只有 payroll.py run 决定一切正常。 退出代码0且 output/evidence.json 中 "status": "ALL CLEAR" 是唯一的一切正常标志。切勿根据您自己对数字的判断将运行描述为干净、完成或就绪。退出代码2表示未就绪,退出代码1表示受阻。
  2. 切勿编造费率、阈值、窗口或工资类型名称。 如果业主没有告知您,请留空以使运行停止并询问。猜测的数字将成为一张工资支票。
  3. 业主签署的规则是运行的法律。 规则变更应写入 payroll_config.json,然后重新生成并重新批准工资规则手册。切勿手工编辑工作簿或导出文件中的数字;修复输入或规则并重新运行。
  4. 警告需要决策。 每个警告都会阻止一切正常,直到输入被修复或有人在 period.json 中记录了确认信息(acknowledged_warnings,包含决策人和原因)。不要代替业主确认;请询问他们。
  5. 非法律或税务建议。 州预设仅为起点。告知业主与他们的工资服务提供商或雇佣法律顾问确认加班、最低工资、病假、小费和最后工资规则。
  6. 保护敏感数据。 引擎只需要姓名、ID、费率和工时。切勿要求或存储社会保障号码、银行详细信息或出生日期。如果导出文件中包含这些信息,不要将这些列复制到任何地方。

工作区结构

<workspace>/
  payroll_config.json          业主的规则(来自初始设置)
  PAY_RULES_BOOK.md / .html    用通俗语言编写的规则,包含业主的签字确认
  connectors/                  可选的HRIS / 工资系统配置文件副本
  history/weeks.json           已支付的工时和加班费,按工作周记录(由运行写入)
  periods/<start>_<end>/
    period.json                日期、月度窗口、窗口、证明、来源、确认信息
    raw/                       原样下载的导出文件
    inputs/                    引擎读取的标准CSV文件
    output/                    审查工作簿、上传文件、运行摘要、evidence.json

如果业主想先看看效果,可以先用一个虚构样本:payroll.py sample ./demo(一家水疗中心)或 payroll.py sample ./demo --kind retail(一家连锁店),然后针对 demo/periods/ 中的每个期间运行 approve ./demo --by "<name>"、hris-import 和 run(参见 references/getting-started.md)。选择最接近业主业务的示例。

业主的需求决定模式

1. 设置(初始信息收集)

业主尚未拥有 payroll_config.json,或希望更改工资支付方式。

  1. 询问他们所在的行业以及工资支付方式(references/questionnaire.md 中的 start.1 和 start.2)。即使此工具不支持其行业的某些需求,也应尽早告知业主(参见该文件中的“尚未处理”列)。
  2. 询问他们希望如何回答其余问题:与您面谈,或使用其行业的可填写初始工作簿(payroll.py intake-workbook intake.xlsx --industry <id>,然后 compile-intake intake.xlsx payroll_config.json)。
  3. 对于面谈,按照 references/questionnaire.md 进行:一次一个问题,仅涵盖与其支付方式相符的核心部分及其行业的附加包,在写入任何内容之前,将每个部分作为规则反馈给业主。
  4. 根据 references/config-reference.md 编写配置。从 payroll.py init <workspace> 开始。从 assets/states/ 加载州预设,并让业主确认它们(references/state-rules.md)。
  5. 运行 payroll.py validate <workspace> 直到它显示 VALID。
  6. 运行 payroll.py rulebook <workspace>,引导业主检查每个规则ID,修复问题,重新生成。
  7. 当业主同意时,运行 payroll.py approve <workspace> --by "<owner name>"。

2. 开始一个新的付款周期

payroll.py new-period <workspace> --start YYYY-MM-DD --end YYYY-MM-DD --pay-date YYYY-MM-DD (在支付月度激励的运行中添加 --monthly;窗口默认为结束日期所在日历月,或使用 --month-start 和 --month-end 设置)。 按日期顺序运行期间:跨越两个周期的工作周需要前一个周期的工时。对于第一个期间,请参阅 references/config-reference.md 中的“history”。它会打印该期间涉及的工作周、边界周警告以及来自 systems.pos_reports 的导出清单。将该清单提供给业主。

3. 将导出文件转换为输入文件

  • HR花名册、工资费率和休假记录:使用 systems.hris 中的配置文件,运行 payroll.py hris-import <period> --roster <file> --time-off <file>(references/hris-connectors.md)。阅读 output/hris_import_report.md;使用 --map field=Header 或编辑 <workspace>/connectors/ 中配置文件的副本修复失败项。
  • POS报告:将每个报告映射到标准CSV文件中(references/input-formats.md、references/pos-mapping.md)。根据标题文本映射,绝不根据列位置。在 period.json 的 sources 中记录每个报告及其打印的总数,以便运行可以证明没有数据丢失或重复。
  • 如果某个输入在本期间确实没有数据(例如某个地点没有人休过假),则在 period.json 中记录一个证明,而不是提供一个空文件。

然后运行 payroll.py check <period>:如果就绪则显示 READY TO RUN,或者显示需要修复的确切失败项。

4. 运行

payroll.py run <period>。它会执行检查关卡、计算、将每个输入总额与已支付总额进行核对、独立重新计算一切(审计)、与上一期比较、写入工资文件,并打印 ALL CLEAR、NOT CLEAR 或 BLOCKED。

  • BLOCKED: 未进行任何计算。修复失败的行(通常是输入问题)并重新运行。
  • NOT CLEAR: 阅读原因。修复输入或规则;对于业主接受的警告,将其确认信息添加到 period.json 中。重新运行。NOT CLEAR 运行的上传文件命名为 DO_NOT_UPLOAD_...;每次运行都会先清除前一次运行的输出。
  • ALL CLEAR: 将 output/payroll_review_<date>.xlsx、run_summary.html 和上传文件发送给业主。指出“发现”和“激励说明”中他们应该注意的内容。业主负责审查和上传;您不参与。

对于高风险运行(第一个实际期间、新地点、规则变更),在移交前请让另一个代理使用 references/auditor.md 审查输出。

5. 更改规则

编辑 payroll_config.json、运行 validate、重新生成规则手册、再次获取业主的批准(approve),然后重新运行该期间。规则手册中的指纹会随着每次规则变更而改变,因此过期的批准会被自动捕获。

查阅指南

需要文件
按行业划分的面试问题,解释每个问题的重要性及已知缺口references/questionnaire.md
每个配置字段的说明references/config-reference.md
标准CSV输入格式references/input-formats.md
映射POS报告(及常见报告陷阱)references/pos-mapping.md
HR和工资系统接入指南references/hris-connectors.md
州预设及需要确认的内容references/state-rules.md
每个检查关卡和核对存在的原因references/lessons.md
独立审查简报references/auditor.md
使用水疗和零售样本的首次入门教程references/getting-started.md

相关技能