moonlight-lupin/agent-skills/receipt-compiler
Claude Code and agent skill by moonlight-lupin/agent-skills
- community
Checking that the SKILL.md file is still in the repository.
Use when compiling phone-camera photos of receipts into an A4 PDF expense-claim pack — straighten, B&W scan look, optional cover/numbering/captions.
Install
npx vskill@latest install moonlight-lupin/agent-skills/receipt-compilerSKILL.md
Receipt Compiler
Overview
Receipt Compiler turns a folder of phone-camera receipt photos into one A4 PDF that looks like a photocopied expense-claim pack: each receipt is straightened (perspective warp, deskew), converted to a B&W "scanned" look, tiled on A4 with uniform visual scale, numbered, and summarised on an optional cover page.
Four subcommands with an enforced confirmation gate:
scan— straighten + scanify + OCR each photo →manifest.jsonreview— print the extracted expense tableconfirm— stamp user approval + bind the reviewed data (digest)pack— build the A4 PDF (refuses to run untilconfirmhas run)
When to Use
- "Compile my receipts into a PDF for expense claim"
- "Make a claim pack from these receipt photos"
- "Straighten and B&W these receipts and line them up on A4"
- Not for: scanning via flatbed scanner, or PDFs of invoices (use
pdfskill).
Prerequisites
Plus system tesseract-ocr on PATH. Check with tesseract --version.
Workflow (agent must follow the gate)
Step 1 — scan
Default --mode bw gives the photocopy look the user asked for. Use --mode photo for grayscale. Completion criterion: manifest exists with one entry per photo; ocr_confidence and needs_review flags set.
Step 2 — review + confirm (MANDATORY, user in the loop)
Present the printed table to the user in chat. Ask:
- Are the extracted dates/merchants/amounts right? Fix
manifest.jsonfields. - Optional requirements — ask every time, do not assume:
- cover page (with claimant/period/notes)
- per-receipt numbering badges
- per-receipt captions (date · merchant · amount)
- currency symbol on totals
- Exclusions — any receipt to drop (
"include": false)? - Purpose/notes text for the cover.
Only after the user approves: run confirm <workdir>. This sets confirmed: true AND binds a review_digest of the exact reviewed fields at approval time. Any edit after confirm (dates, amounts, currency, inclusion) makes pack refuse until you re-run confirm — which means showing the user the changed table again. There is no bypass flag. Apply user corrections to manifest.json BEFORE running confirm.
Step 3 — pack
Completion criterion: PDF exists, page count reported in JSON output. Then send the PDF to the user as a document/file on the active channel.
Layout rules (how receipts line up)
- A4 portrait, 15 mm margins, 5 mm gaps.
- Very tall receipts (aspect ≥ 2.2) are packed 3-per-row full-height;
normal receipts 2-per-row, capped at 52% of content height (≈47% of the page). Scale is per-cell (each receipt fills its cell); rows with fewer receipts get wider cells.
- Every image is scaled to preserve aspect ratio — no distortion, no cropping.
- Receipts flow across pages; 30+ receipts pack fine.
- Tall receipts print before normal ones; re-order via the manifest if needed.
Common Pitfalls
- Skipping the confirmation gate —
packhard-fails onconfirmed: false,
non-boolean confirmation values, and post-confirmation edits (digest check). There is no bypass flag; the user must see the table first.
- Dark/shadowed photos — the 2/98 percentile stretch handles most; if OCR
confidence is < 55, or no amount was extracted, the entry is flagged needs_review; surface these to the user.
- Perspective warp failure — glossy/wrinkled receipts may not produce a clean
quad; the script falls back to small-angle deskew of the full frame. Check method in the manifest; if deskew on a receipt that clearly needs cropping, fix the crop manually with PIL or accept the framing.
- HEIC photos — iPhone photos arrive as .heic;
pillow-heifhandles them if
installed. If missing, ask the user for JPGs or install pillow-heif.
- Multiple currencies — totals are grouped per currency (review output and
cover page print one line per currency, no combined total). For a cleaner claim, keep one currency per pack; never zero or edit valid amounts to force a combined total.
- Long descriptions in cover table — descriptions truncate at 70 chars; keep
cover notes short or put detail in notes.
Verification Checklist
- [ ]
scanproduced manifest.json with an entry per photo - [ ]
reviewtable shown to user; corrections applied to manifest - [ ] Optional requirements asked each time (cover/numbering/captions)
- [ ]
confirmrun only after user approval (never hand-editconfirmed) - [ ]
packoutput PDF exists, page count matches expectation - [ ] PDF sent to the user with the correct output path
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingproductivity/receipt-compiler/SKILL.md
Popularity
- Repository stars
- 76
- Repository forks
- 12
- 7-day trend score
- 22
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/moonlight-lupin/agent-skills/receipt-compiler)