Agent skill

Receipts To Expenses

by skrun-dev in skrun-dev/skrun

Read a batch of receipt images directly via vision, classify each into expense categories, optionally reconcile against a bank statement CSV, and produce a multi-sheet Excel workbook + a PDF summary.

MITAuto-check passedDocuments & Office

Install Receipts To Expenses

skills CLI
$ npx skills add skrun-dev/skrun --skill receipts-to-expenses -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install skrun-dev/skrun receipts-to-expenses --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/skrun-dev/skrun.git skills-src && mkdir -p .claude/skills && cp -r skills-src/agents/receipts-to-expenses .claude/skills/receipts-to-expenses && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
receipts-to-expenses
GitHub stars
210
Token cost
~1.1k tokens
SKILL.md length
554 words
Files
10 (incl. scripts)
Skills in repo
14
Repo updated
First seen
Licence
MIT

At a glance

Read a batch of receipt images directly via vision, classify each into expense categories, optionally reconcile against a bank statement CSV, and produce a multi-sheet Excel workbook + a PDF summary.

  • Works in 5 steps: Read each receipt image directly — your… → Optional: reconcile against bank… → Compute category totals — group line… → …
  • Given receipt photos and asked for an expense report
  • SKILL.md covers Workflow, Style and Failure modes
  • Runs Python scripts from its folder

What it does

Receipts To Expenses is an agent skill from skrun-dev/skrun. Read a batch of receipt images directly via vision, classify each into expense categories, optionally reconcile against a bank statement CSV, and produce a multi-sheet Excel workbook + a PDF summary. Use when given receipt photos and asked for an expense report.

Its SKILL.md is about 1.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 12 other files, including scripts (for example `README.md`, `agent.yaml` and `scripts/build_workbook.py`).

It sits in Documents & Office, covering Accounting and bookkeeping, Excel spreadsheets and CSV and tabular files. It works with Microsoft Excel. The repository describes itself as: Deploy any Agent Skill as an API via POST /run. The open-source multi-model alternative to Claude Managed Agents, Microsoft Foundry & Mistral/Koyeb — works with any LLM. The licence is MIT.

When your agent uses it

  • Given receipt photos and asked for an expense report
  • Tasks that involve Accounting and bookkeeping
  • Tasks that involve Excel spreadsheets

Example prompts

  • “/receipts-to-expenses”

Requirements

  • Python 3

Workflow steps

5 steps, taken from the first numbered list in SKILL.md.

  1. Read each receipt image directly — your input includes a receipts field that is an array of receipt images. Use your vision capability to…
  2. Optional: reconcile against bank statement — if user passed bank_statement_csv
  3. Compute category totals — group line items by category, sum amounts per category, count items per category. Build the category_totals array.
  4. Call build_workbook — pass line_items, category_totals, report_title (synthesize: e.g., "Expense Report — April 2026"), period (echo the…
  5. Return structured output

What it can do on your machine

Read from SKILL.md and the folder at commit b1d963b. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 2 files in scripts/ (Python), which the agent can run.

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Receipts To Expenses loads about 1.1k tokens when it runs. Until then it costs about 71 tokens; SKILL.md has 554 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~71
When it runs · the whole SKILL.md, loaded when a task matches
~1.1k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from skrun-dev/skrun at commit b1d963b, republished under its MIT licence (© skrun-dev). 554 words, ~1,071 tokens.

Download SKILL.mdSave it as .claude/skills/receipts-to-expenses/SKILL.md (or your agent's skills folder). This skill also uses 9 other files; get the full folder from GitHub.
name
receipts-to-expenses
description
Read a batch of receipt images directly via vision, classify each into expense categories, optionally reconcile against a bank statement CSV, and produce a multi-sheet Excel workbook + a PDF summary. Use when given receipt photos and asked for an expense report.

Receipts to Expenses

You are a freelance bookkeeper for a one-person consultancy. Each call hands you a list of receipt images (photos of paper tickets, screenshots of digital receipts, etc.) and an optional bank statement. You produce two artifacts: a polished Excel workbook with line items + category totals, and a 1-2 page PDF summary suitable for handing to your accountant.

Workflow

  1. Read each receipt image directly — your input includes a receipts field that is an array of receipt images. Use your vision capability to read each one. For every image, extract:

    • vendor — the merchant name. Look at the top of the receipt or whatever line is the issuer.
    • date — ISO format (YYYY-MM-DD). If the receipt has a localized format (15/04/2026), normalize.
    • amount — total, as a number (e.g., 42.50). Strip currency symbols, normalize decimals (handle , as decimal separator if European format).
    • currency — 3-letter code (USD, EUR, GBP). Default to USD if unclear.
    • category — assign one of: meals, transportation, lodging, software, office_supplies, professional_services, entertainment, other. Be conservative — other is acceptable when truly ambiguous.
    • note — optional 1-line explanation of why this category was picked, or any anomaly worth flagging.
    • source_index — the 0-based position of this receipt in the input array (so the workbook can refer back to it).
  2. Optional: reconcile against bank statement — if user passed bank_statement_csv:

    • Call read_bank_statement with the path.
    • For each receipt line item, find the bank row that matches by amount (within ±0.50 tolerance for tip/fee differences) and date (within ±2 days). Set matched_bank_row to a short label like "Bank: 2026-04-15 / -42.50 / RESTAURANT X".
    • Track unmatched bank rows (rows that didn't match any receipt). Surface count via the unmatched_count argument to build_workbook.
    • If user did not pass bank_statement_csv, skip this step and pass unmatched_count: 0.
  3. Compute category totals — group line items by category, sum amounts per category, count items per category. Build the category_totals array.

  4. Call build_workbook — pass line_items, category_totals, report_title (synthesize: e.g., "Expense Report — April 2026"), period (echo the user's month), unmatched_count. The tool returns paths for the .xlsx and .pdf files.

  5. Return structured output:

    • expenses_xlsx_path: from the build_workbook tool response
    • summary_pdf_path: from the build_workbook tool response
    • total_amount: sum of all line item amounts
    • receipt_count: number of line items (= number of images parsed)
    • unmatched_count: from step 2 (or 0)
Show full SKILL.md (178 more words)Show less

Style

  • Currency consistency: if all receipts are in the same currency, the totals should be in that currency. If mixed, leave a note in the line item and don't try to convert (no FX rates here).
  • Vendor names: keep them as the receipt presents them. Don't normalize "RESTAURANT XYZ" → "Restaurant Xyz" — accountants want fidelity.
  • For ambiguous categories, prefer other + a note explaining the ambiguity. Don't guess.
  • For receipts where the amount can't be read clearly from the image (blurry, cut off, etc.), still include a row with amount: 0, category: "other", and note: "could not read amount from image" — don't fabricate a number, but don't drop the row either.

Failure modes

  • Empty receipts input or all images unreadable: produce an empty workbook with a single "No receipts found" note in the PDF. Return receipt_count: 0, total_amount: 0.
  • A single receipt unreadable: include a row in line_items with amount: 0, category: "other", and note: "could not read amount from image". Don't crash.
  • bank_statement_csv malformed: skip reconciliation, set unmatched_count: 0, add a note in the PDF that reconciliation was skipped.

© skrun-dev, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 9 other files (scripts) in agents/receipts-to-expenses of skrun-dev/skrun.

  • SKILL.md
  • README.md
  • agent.yaml
  • fixtures/sample-bank.csv
  • fixtures/sample-receipts/01-restaurant.jpg
  • fixtures/sample-receipts/02-uber.jpg
  • fixtures/sample-receipts/03-saas.jpg
  • requirements.txt
  • scripts/build_workbook.py
  • scripts/read_bank_statement.py

Open the folder on GitHubat commit b1d963b

Compare with similar skills

Receipts To Expenses next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Receipts To Expenses compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Receipts To Expenses this skillskrun-dev/skrun210—~1.1kAutomated safety check: PassMIT
Anti Gambling Tradermars-tw/anti-gambling-trader-tw907—~1.9kAutomated safety check: PassMIT
Data UpdateSixian-Li/plain-backtest204—~1.6kAutomated safety check: PassMIT
Stock Market Analysisqusong0627/QuantMind1.7k—~5.4kAutomated safety check: PassAGPL-3.0
Officecli Data DashboardFerroxLabs/wayland6084 repos~9.2kAutomated safety check: PassAGPL-3.0
Lbo Modelw95/awesome-claude-corporate-skills2441 repos~3kAutomated safety check: PassMIT

Similar skills

  • Anti Gambling Trader

    mars-tw/anti-gambling-trader-tw

    分析台股 / 台股ETF / 台指期選擇權 / 美股 / 加密貨幣 / 外匯的交易紀錄 (CSV / JSON / Excel),用統計學判斷使用者的獲利是「可重複的優勢」還是 「運氣 + 倖存者偏差(賭博)」,不適合長期投資會明確勸退。內建反詐工具: 掃描群組對話的詐騙話術(scan-text)、檢驗老師宣稱的績效(guru-check)、…

    907 GitHub stars~1.9k tokensUpdated 2 days ago
    Documents & OfficeAuto-check passed
  • Data Update

    Sixian-Li/plain-backtest

    Operate and assess the Quant workspace market-data layer through the tested data-update CLI.

    204 GitHub stars~1.6k tokensUpdated 13 days ago
    Documents & OfficeAuto-check passed
  • Stock Market Analysis

    qusong0627/QuantMind

    股票市场深度数据分析与导出 — 全市场信号扫描、行业轮动、个股研报级深度分析(基本面/估值/技术/资金筹码/情绪/风险六维)、数据挖掘、CSV/Excel 导出。在 QuantBot / Claude Code 中分析股票市场、挖掘机会、导出分析数据、生成选股报告时使用。触发词:分析市场、数据分析、数据挖掘、全市场扫描、行业轮动、导出数据、导出CSV、挖掘机会、个股研报、个股分析、深度分析

    1.7k GitHub stars~5.4k tokensUpdated today
    Documents & OfficeAuto-check passed
  • Officecli Data Dashboard

    FerroxLabs/wayland

    A skill your agent uses to build a multi-element Excel dashboard - Dashboard sheet on open, multiple formula-driven KPI cards, multiple charts, sparklines, and conditional formatting - from CSV or…

    608 GitHub starsUsed in 4 repos~9.2k tokens
    Documents & OfficeAuto-check passed
  • Lbo Model

    w95/awesome-claude-corporate-skills

    This skill should be used when completing LBO (Leveraged Buyout) model templates in Excel for private equity transactions, deal materials, or investment committee presentations.

    244 GitHub starsUsed in 1 repo~3k tokens
    Documents & OfficeAuto-check passed
  • Official

    Load before calling data-tables or parse-file. An agent skill from n8n-io/n8n.

    207k GitHub stars~2.3k tokensUpdated today
    Documents & OfficeAuto-check passed

More from skrun-dev/skrun

All 14 skills in this repo
  • Adr Writer

    skrun-dev/skrun

    Generate a numbered Architecture Decision Record (ADR) following the standard nygard/MADR convention.

    210 GitHub stars~861 tokensUpdated 18 days ago
    Auto-check passed
  • Changelog Generator

    skrun-dev/skrun

    Generate a polished CHANGELOG.md and release-notes.md from a local git repository (or a captured .git-log.txt dump).

    210 GitHub stars~770 tokensUpdated 18 days ago
    Auto-check passed
  • Turn a CSV of operational data (sales, usage, signups, support tickets) into a multi-page styled PDF executive report with narrative + matplotlib charts.

    210 GitHub stars~1.1k tokensUpdated 18 days ago
    Auto-check passed
  • Turn a folder of Markdown notes (Obsidian vault, Notion export, plain repo docs) into a navigable static HTML knowledge base bundled as a single .zip file.

    210 GitHub stars~1.4k tokensUpdated 18 days ago
    Auto-check passed
  • Listen to a meeting recording and extract structured action items, decisions, and open questions.

    210 GitHub stars~1.3k tokensUpdated 18 days ago
    Auto-check passed
  • Semgrep Rule Creator

    skrun-dev/skrun

    Generate a complete Semgrep rule bundle (rule.yml + tests.md + README.md) from a CVE description and a bad-code example.

    210 GitHub stars~1.3k tokensUpdated 18 days ago
    Auto-check passed

Works with

Questions about Receipts To Expenses

What does Receipts To Expenses do?

Read a batch of receipt images directly via vision, classify each into expense categories, optionally reconcile against a bank statement CSV, and produce a multi-sheet Excel workbook + a PDF summary. Receipts To Expenses is an agent skill from skrun-dev/skrun. Read a batch of receipt images directly via vision, classify each into expense categories, optionally reconcile against a bank statement CSV, and produce a multi-sheet Excel workbook + a PDF summary.

When should I use Receipts To Expenses?

Receipts To Expenses fits situations like: given receipt photos and asked for an expense report; tasks that involve Accounting and bookkeeping; tasks that involve Excel spreadsheets.

How do I install Receipts To Expenses in Claude Code?

Run `npx skills add skrun-dev/skrun --skill receipts-to-expenses -a claude-code`. Or copy the skill folder (agents/receipts-to-expenses in skrun-dev/skrun) into .claude/skills/receipts-to-expenses in your project. Claude Code loads it when a task matches its description.

How do I install Receipts To Expenses in Codex?

Run `npx skills add skrun-dev/skrun --skill receipts-to-expenses -a codex`. Or copy the skill folder (agents/receipts-to-expenses in skrun-dev/skrun) into .agents/skills/receipts-to-expenses in your project. Codex loads it when a task matches its description.

Can I use Receipts To Expenses in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add skrun-dev/skrun --skill receipts-to-expenses -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/receipts-to-expenses, .gemini/skills/receipts-to-expenses, .github/skills/receipts-to-expenses and .opencode/skills/receipts-to-expenses in your project.

What does Receipts To Expenses need to run?

Going by SKILL.md and its folder, Receipts To Expenses needs Python for the scripts in its folder. Our summary lists: Python 3.

Does Receipts To Expenses access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Receipts To Expenses safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Receipts To Expenses use?

Receipts To Expenses is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Receipts To Expenses use?

About 1.1k tokens (SKILL.md is roughly 4.3k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Receipts To Expenses?

Skills that share tags, products or a category with Receipts To Expenses: Anti Gambling Trader (mars-tw/anti-gambling-trader-tw, 907 stars), Data Update (Sixian-Li/plain-backtest, 204 stars), Stock Market Analysis (qusong0627/QuantMind, 1.7k stars) and Officecli Data Dashboard (FerroxLabs/wayland, 608 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Receipts To Expenses?

skrun-dev (a GitHub organization) maintains it in skrun-dev/skrun, which has 210 GitHub stars. The repository holds 14 skills in this directory. The repository was last updated on September 22, 2026.

Source: skrun-dev/skrun on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.