Claude-skill-registry bill-processing

Extract data from bill/receipt images and return JSON for lunch-splitter app

install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/bill-processing" ~/.claude/skills/majiayu000-claude-skill-registry-bill-processing && rm -rf "$T"
manifest: skills/data/bill-processing/SKILL.md
source content

Bill Processing Skill

This skill extracts structured data from restaurant bills and receipts.

When to Use

Activate this skill when:

  • User uploads an image of a bill or receipt
  • User mentions processing a bill/receipt
  • User asks to extract data from a restaurant bill

Output Format

Return ONLY a JSON object in this exact format:

{
  "people": [],
  "items": [
    {"id": 0, "name": "Item Name", "price": 0.00, "personQuantities": {}}
  ],
  "nextPersonId": 0,
  "nextItemId": 1,
  "tax": 0,
  "tip": 0,
  "isTransposed": false
}

Field Specifications

  • items: Array of menu items with sequential IDs starting from 0
    • id
      : Sequential number (0, 1, 2, ...)
    • name
      : Exact item name from bill
    • price
      : Item price as decimal number
    • personQuantities
      : Empty object
      {}
  • people: Always empty array
    []
  • nextPersonId: Always
    0
  • nextItemId: Number of items extracted
  • tax: Tax percentage (calculate: (tax_amount / subtotal) × 100)
  • tip: Tip percentage (calculate: (tip_amount / subtotal) × 100)
  • isTransposed: Always
    false

Extraction Rules

  1. Items: Extract ALL food and drink items with exact names
  2. Prices: Use exact decimal values (e.g., 12.99, not "~13")
  3. Tax: If only amount shown, calculate percentage from subtotal
  4. Tip: If only amount shown, calculate percentage from subtotal
  5. Service charges: Treat as additional items if not tip/tax
  6. Duplicates: Create separate entries for each occurrence
  7. Output: Return ONLY JSON, no markdown code blocks, no explanations

Example

Input: Image of bill with "Burger $12.99, Fries $4.50, Tax $1.57, Tip $3.52"

Calculation:

  • Subtotal: $17.49
  • Tax %: (1.57 / 17.49) × 100 ≈ 9%
  • Tip %: (3.52 / 17.49) × 100 ≈ 20%

Output:

{
  "people": [],
  "items": [
    {"id": 0, "name": "Burger", "price": 12.99, "personQuantities": {}},
    {"id": 1, "name": "Fries", "price": 4.50, "personQuantities": {}}
  ],
  "nextPersonId": 0,
  "nextItemId": 2,
  "tax": 9,
  "tip": 20,
  "isTransposed": false
}