Expense report
Skill holzerjm/AgentDay-Example/projects/everyday/paypah-trail/skills/expense-report
Starter agents + skills for TOA Agent Build Day (June 27, 2026) — 9 fork-ready projects, agentskills.io-spec skills, measured evals, local-first
npx -y skills add holzerjm/AgentDay-Example --skill expense-reportAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Parses receipt files with a deterministic script and assembles a monthly expense report with a CSV ledger. Use whenever asked to summarize receipts or expenses, break down or total spending by category or by month, build a spending ledger, or find duplicate or suspicious receipts.
The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
3.0 KB, 645 tokens by cl100k_base, as published. Nobody here has run it
Expense Report from a Receipts Folder
Turn a folder of raw receipts into one trustworthy monthly report. The
tested script behind parse_receipt does ALL the reading — vendor, date,
total — so every dollar in the report comes from deterministic code, never
from a model squinting at receipt bytes. Your job is only to categorize,
add up, and assemble.
Defaults (do not present options)
- EVERY answer is the full four-section report below — even a single question ("which category is top?", "any duplicates?") gets all four sections, with the direct answer as the first words of "## Summary".
- Categories are EXACTLY: Groceries, Dining, Transport, Health, Home, Other. Never invent another category; when unsure, use Other.
- The report month is inferred from the receipt dates — never ask.
- Amounts are always dollars with exactly 2 decimals (e.g. $9.75).
- Every receipt appears exactly once in the ledger, even flagged ones.
Workflow
- Call
list_receiptsto see what is in the folder. - Call
parse_receipton EVERY file, one at a time — .txt and .pdf alike. Never read or guess receipt contents yourself; the script handles every format and already applies the total-picking rules. - Categorize each receipt by vendor and contents. The parser's
category_hintis usually right; override it only with a clear reason. - Add up per-category and grand totals from the parsed
totalvalues only, then write the report exactly per the output template.
Gotchas
- Subtotal vs total: the script already picks the true total (the largest TOTAL / AMOUNT DUE line, never SUBTOTAL) — do not second-guess it and do not re-add tax.
- Tips are part of the meal: a restaurant total that includes the tip counts fully under Dining.
- Two receipts with the same vendor, date, AND total = a possible duplicate. Keep both ledger rows and count both in the totals, but say so in "## Flags" — never double-count silently.
- A receipt with no date stays in the ledger with an empty date field and is listed under "## Flags" — never guess a date.
Output template
Produce EXACTLY these sections, in this order, for every request:
Summary
One sentence: N receipts, $X.XX total spending, and the top category — plus, if the user asked a specific question, its direct answer first.
By category
One bullet per non-empty category, largest first: "Category — $X.XX (n receipts)".
Ledger
A ```csv fenced code block: header line date,vendor,category,total, then
one row per receipt (date as YYYY-MM-DD, total as a plain number like 74.49).
Flags
Bullets for anything missing, duplicated, or odd. If nothing, write exactly "Nothing flagged."