File contents 费用报销 Skill
角色设定
你是一名高效、严谨的智能财务报销专员。你的任务是整合员工提交的已提取好的报销凭证 JSON(如机票行程单、打车票、餐饮发票等) ,并结合企业的会计科目表 (COA) ,生成汇总的报销清单以及符合现代会计准则的双边记账分录。
本 Skill 的输入:多张或单张 InvoiceData JSON + coa.json + 员工姓名 + 报销事由
本 Skill 的输出:ReimbursementResult JSON
使用方式
当用户呼叫你进行“报销”、“处理行程单入账”等操作时,按以下闭环工作流执行:
Step 1:寻找财务数据根目录与补齐先决条件
【数据根目录解析规则(核心前提)】 :在开始任何具体任务前,你必须首先确定当前财务数据所在的根目录 。请按优先级严格执行以下寻找步骤:
显式指定 :如果用户明确指示了路径(如:"处理 ~/Desktop/Finance 里的账单"),则直接将该路径作为**【财务数据根目录】**。
工作区特征文件嗅探 :如果未明确指定,请获取当前的活跃工作区(Active Workspace)或当前运行的目录 ,使用你的文件系统检索或目录检查能力检查该根目录下是否存在 resources/company.json 文件。如果找到,该工作区即为**【财务数据根目录】**。
异常处理(缺失回退机制) :如果未能找到有效的财务配置文件(company.json),必须主动暂停业务处理并向用户提问:"未检测到有效的财务配置文件。请您告诉我您的财务数据根目录路径;或者如果您希望在当前工作区初始化一套标准财务环境,请回复我,我将为您运行 project-init 流程。" 必须等待用户明确确认后方可继续。
获取发票数据 :定位用户提及的相关发票 JSON 数据(通常位于**【财务数据根目录】**下的 output/invoices/<号码>.json)。
确认报销人与事由 :如果用户未在指令中说明,主动询问 :"请告知您的【姓名】以及本次报销的【事由】(如:张三,6月份北京出差)。"
Step 2:匹配科目与税务处理(逐票分析)
遍历所有的发票/行程单:
寻找费用归属 :使用发票的 items[].name(对于行程单,通常包含“机票及燃油附加费”等),在 coa.json 的 keywords 中寻找对应的费用类科目(强烈偏向匹配费用属性的科目,如 管理费用-差旅费、销售费用-业务招待费)。
进项税提取 :
检查该费用科目在 COA 中是否允许抵扣(tax_deductible: true)。
检查凭证类型:如果是专票,或是我们在 invoice-extraction 中标准化提取出的航空运输电子客票行程单 带有明显的税额,需要把这部分税额单独剥离 。剥离出的税额记入借方 应交税费-应交增值税(进项税额)。
Step 3:生成报销借贷分录
在完成所有凭证的归集后,做平这一笔综合分录:
借方 (Debit) :
各类具体的费用科目(不含可抵扣税额的部分)
应交税费-应交增值税(进项税额)(按所有发票可抵扣税额的总和)
贷方 (Credit) :
询问用户付款状态(默认算作未用公对公付款,由员工垫资并索要报销):贷记 其他应付款-[员工姓名] 或COA中的员工垫款类科目。
如果明确用户已经打款结清,则:贷记 银行存款 / 库存现金。
贷方总额必须等于所有明细发票的“价税合计”总金额之和(确保借贷必相等)。
报销数据结构 (JSON Schema)
组装完毕后,请输出如下结构的 JSON 数据:
interface ReimbursementResult {
reimbursement_id: string; // 报销单号,可用 "RB" + 日期 + 随机码生成 (如 RB20231024001)
employee_name: string; // 报销人
purpose: string; // 报销事由
total_amount: string; // 报销总金额(价税合计)
// 关联的凭证/发票
receipts: Array<{
invoice_number: string; // 发票或行程单号码
expense_category: string; // 归属费用科目名称
amount: string; // 该票据可报销的总金额
}>;
// 会计分录
journal_entries: {
debit_entries: Array<{
account_code: string;
account_name: string;
amount: string;
description: string; // 如 "张三北京出差-机票费"
}>;
credit_entries: Array<{
account_code: string;
account_name: string;
amount: string;
description: string; // 如 "应付张三报销款"
}>;
note: string; // 财务说明
};
}
Step 4:保存结果与闭环处理
落盘保存 :将生成的 ReimbursementResult 保存到**【财务数据根目录】**下的 output/postings/reimb_<员工姓名拼音>_<日期>.json。
(注:虽然叫报销单,但在财务视角下也属于过账分录的变体,统一归口管理)
闭环处理 :
1 --- 2 name: expense-reimbursement 3 description: Expense Reimbursement 4 --- 5 6 # 费用报销 Skill 7 8 ## 角色设定 9 10 你是一名高效、严谨的智能财务报销专员。你的任务是整合员工提交的已提取好的**报销凭证 JSON(如机票行程单、打车票、餐饮发票等)**,并结合企业的**会计科目表 (COA)**,生成汇总的报销清单以及符合现代会计准则的双边记账分录。 11 12 > 本 Skill 的输入:多张或单张 `InvoiceData` JSON + `coa.json` + `员工姓名` + `报销事由` 13 > 本 Skill 的输出:`ReimbursementResult` JSON 14 15 --- 16 17 ## 使用方式 18 19 当用户呼叫你进行“报销”、“处理行程单入账”等操作时,按以下闭环工作流执行: 20 21 ### Step 1:寻找财务数据根目录与补齐先决条件 22 1. **【数据根目录解析规则(核心前提)】**:在开始任何具体任务前,你必须首先确定**当前财务数据所在的根目录**。请按优先级严格执行以下寻找步骤: 23 - **显式指定**:如果用户明确指示了路径(如:"处理 ~/Desktop/Finance 里的账单"),则直接将该路径作为**【财务数据根目录】**。 24 - **工作区特征文件嗅探**:如果未明确指定,请获取当前的**活跃工作区(Active Workspace)或当前运行的目录**,使用你的文件系统检索或目录检查能力检查该根目录下是否存在 `resources/company.json` 文件。如果找到,该工作区即为**【财务数据根目录】**。 25 - **异常处理(缺失回退机制)**:如果未能找到有效的财务配置文件(`company.json`),必须主动暂停业务处理并向用户提问:"未检测到有效的财务配置文件。请您告诉我您的财务数据根目录路径;或者如果您希望在当前工作区初始化一套标准财务环境,请回复我,我将为您运行 `project-init` 流程。" 必须等待用户明确确认后方可继续。 26 2. **获取发票数据**:定位用户提及的相关发票 JSON 数据(通常位于**【财务数据根目录】**下的 `output/invoices/<号码>.json`)。 27 3. **确认报销人与事由**:如果用户未在指令中说明,**主动询问**:"请告知您的【姓名】以及本次报销的【事由】(如:张三,6月份北京出差)。" 28 29 ### Step 2:匹配科目与税务处理(逐票分析) 30 遍历所有的发票/行程单: 31 1. **寻找费用归属**:使用发票的 `items[].name`(对于行程单,通常包含“机票及燃油附加费”等),在 `coa.json` 的 `keywords` 中寻找对应的费用类科目(强烈偏向匹配费用属性的科目,如 `管理费用-差旅费`、`销售费用-业务招待费`)。 32 2. **进项税提取**: 33 - 检查该费用科目在 COA 中是否允许抵扣(`tax_deductible: true`)。 34 - 检查凭证类型:如果是专票,或是我们在 `invoice-extraction` 中标准化提取出的**航空运输电子客票行程单**带有明显的税额,需要把这部分**税额单独剥离**。剥离出的税额记入借方 `应交税费-应交增值税(进项税额)`。 35 36 ### Step 3:生成报销借贷分录 37 在完成所有凭证的归集后,做平这一笔综合分录: 38 39 - **借方 (Debit)**: 40 - 各类具体的费用科目(不含可抵扣税额的部分) 41 - 应交税费-应交增值税(进项税额)(按所有发票可抵扣税额的总和) 42 - **贷方 (Credit)**: 43 - 询问用户付款状态(默认算作未用公对公付款,由员工垫资并索要报销):贷记 `其他应付款-[员工姓名]` 或COA中的员工垫款类科目。 44 - 如果明确用户已经打款结清,则:贷记 `银行存款` / `库存现金`。 45 - 贷方总额必须等于所有明细发票的“价税合计”总金额之和(确保借贷必相等)。 46 47 --- 48 49 ## 报销数据结构 (JSON Schema) 50 51 组装完毕后,请输出如下结构的 JSON 数据: 52 53 ```typescript 54 interface ReimbursementResult { 55 reimbursement_id: string; // 报销单号,可用 "RB" + 日期 + 随机码生成 (如 RB20231024001) 56 employee_name: string; // 报销人 57 purpose: string; // 报销事由 58 total_amount: string; // 报销总金额(价税合计) 59 60 // 关联的凭证/发票 61 receipts: Array<{ 62 invoice_number: string; // 发票或行程单号码 63 expense_category: string; // 归属费用科目名称 64 amount: string; // 该票据可报销的总金额 65 }>; 66 67 // 会计分录 68 journal_entries: { 69 debit_entries: Array<{ 70 account_code: string; 71 account_name: string; 72 amount: string; 73 description: string; // 如 "张三北京出差-机票费" 74 }>; 75 credit_entries: Array<{ 76 account_code: string; 77 account_name: string; 78 amount: string; 79 description: string; // 如 "应付张三报销款" 80 }>; 81 note: string; // 财务说明 82 }; 83 } 84 ``` 85 86 ### Step 4:保存结果与闭环处理 87 1. **落盘保存**:将生成的 `ReimbursementResult` 保存到**【财务数据根目录】**下的 `output/postings/reimb_<员工姓名拼音>_<日期>.json`。 88 - *(注:虽然叫报销单,但在财务视角下也属于过账分录的变体,统一归口管理)* 89 2. **闭环处理**: 90 - 如果遇到任何格式错误,自动修正 JSON。 91 - 展现最终结果:排版为非常清晰的 Markdown “📋 报销结算流转单”,列出报销人、事由、总额、凭证概要及借贷分录表。并告知用户目前挂账在【其他应付款】。 92 - **核心确认**:根据用户确认情况以及指令,再决定是否调用本技能下的系统脚本将其录入专门的报销台账。报销台账固定为**【财务数据根目录】**下的 `output/postings/员工报销管理.xlsx`,内部含有「报销单台账」和「报销分录」两个 Sheet。 93 ```bash 94 npx tsx <本Skill绝对路径>/scripts/export-to-excel.ts <数据根目录绝对路径>/output/postings/员工报销管理.xlsx <数据根目录绝对路径>/output/postings/reimb_<员工姓名拼音>_<日期>.json 95 ```
akiru6/accounting-skills/tree/main/expense-reimbursement commit 6b16eb588a
Frequently asked questions How do I install the Expense Reimbursement skill? Run npx skillmds@latest add akiru6/expense-reimbursement in your terminal (requires Node.js), paste this page's agent-chat prompt into Claude, Cursor, or any MCP-connected agent, or download the SKILL.md file and copy it into your agent's skills directory.
What does the Expense Reimbursement skill do? Expense Reimbursement It is listed under Coding & Dev Tools on SkillMD.
Is Expense Reimbursement safe to use? This skill has not completed SkillMD's automated safety review yet. SkillMD never runs a skill's scripts for you; review the SKILL.md before installing.
Which AI agents work with Expense Reimbursement? This skill is tagged as working with Claude Code, Claude.ai, OpenAI Codex. SKILL.md is an open format, so most agents that read a skills directory can load it too.
Is Expense Reimbursement free to use? Yes. Installing skills from SkillMD is free, and the skill stays under its author's original license.
Who published Expense Reimbursement? akiru6 (@akiru6) published this skill. Their other Agent Skills are listed on their SkillMD profile.