본문으로 건너뛰기
cccskills
무료GitHub에 공개

expense-report

Organize, categorize, and summarize business expenses for reimbursement and tax preparation. Use when a user asks to create an expense report, organize receipts, categorize expenses, summarize spending, prepare expenses for reimbursement, or compile business expenses for tax filing. Handles receipts, CSV data, and manual entries.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

연동 도구Excel
설치 방법 보기

포함된 파일(2)

  • SKILL.md10.5 KB
  • _scores.json2.7 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

Expense Report

Overview

Organize, categorize, and summarize business expenses into professional reports. This skill processes expense data from receipts, CSV files, or manual entries, categorizes them by type, calculates totals, and generates formatted reports suitable for reimbursement submissions or tax preparation.

Instructions

When a user asks to create an expense report or organize their expenses, follow these steps:

Step 1: Collect expense data

Gather expenses from the available sources:

From a CSV or spreadsheet:

import pandas as pd

def load_expenses_csv(file_path):
    df = pd.read_csv(file_path)
    df.columns = [col.strip().lower() for col in df.columns]  # date, description, amount, ...
    df["date"] = pd.to_datetime(df["date"])  # needed for the monthly grouping below
    df["amount"] = pd.to_numeric(df["amount"].astype(str).str.replace(r"[$,]", "", regex=True))
    if "category" not in df.columns:
        df["category"] = df["description"].map(categorize_expense)
    return df

From manual entries: Prompt the user for each expense or accept a list:

  • Date
  • Description / Vendor
  • Amount
  • Category (assign automatically if not provided)
  • Payment method (credit card, cash, reimbursable)

From receipt images or PDFs: Extract data using OCR or text extraction, then structure into the same format. Treat OCR output as a draft: confirm amounts and dates with the user.

Step 2: Categorize expenses

Assign each expense to a standard category from the vendor name and description. Match whole words: plain substring tests misfile "Attorney fees" under Communication (att) and "Las Vegas" under Transportation (gas).

import re

CATEGORY_RULES = {
    "Travel": ["airline", "airlines", "hotel", "uber", "lyft", "taxi", "flight", "airbnb", "rental car"],
    "Meals": ["restaurant", "cafe", "coffee", "lunch", "dinner", "doordash", "grubhub"],
    "Office Supplies": ["staples", "office depot", "supplies"],
    "Software & Subscriptions": ["github", "aws", "google cloud", "slack", "zoom", "adobe"],
    "Transportation": ["gas", "parking", "toll", "metro", "transit"],
    "Professional Services": ["consulting", "legal", "accounting", "freelance"],
    "Communication": ["phone", "internet", "verizon", "at&t", "t-mobile"],
    "Training & Education": ["course", "conference", "workshop", "udemy", "training"],
}
PATTERNS = {cat: re.compile(r"\b(?:" + "|".join(re.escape(k) for k in kws) + r")\b", re.I)
            for cat, kws in CATEGORY_RULES.items()}

def categorize_expense(description):
    for category, pattern in PATTERNS.items():
        if pattern.search(description):
            return category
    return "Other"

Ambiguous vendors (Amazon, Costco, Walmart) cannot be categorized from the name alone: leave them as "Other" and ask the user.

Step 3: Calculate totals and summaries

def summarize_expenses(df):
    return {
        "total": df["amount"].sum(),
        "by_category": df.groupby("category")["amount"].sum().to_dict(),
        "by_month": {str(p): v for p, v in df.groupby(df["date"].dt.to_period("M"))["amount"].sum().items()},
        "count": len(df),
        "date_range": f"{df['date'].min():%Y-%m-%d} to {df['date'].max():%Y-%m-%d}",
        "avg_per_expense": df["amount"].mean(),
        "largest_expense": df.loc[df["amount"].idxmax()].to_dict(),
    }

def find_duplicates(df):
    return df[df.duplicated(["description", "amount", "date"], keep=False)]

Step 4: Generate the report

Excel report with multiple sheets (keep amounts numeric and apply a number format, so the user can still sum and filter in Excel):

def generate_excel_report(df, summary, output_path="expense_report.xlsx"):
    with pd.ExcelWriter(output_path, engine="openpyxl") as writer:
        pd.DataFrame([
            {"Metric": "Total expenses", "Value": summary["total"]},
            {"Metric": "Number of expenses", "Value": summary["count"]},
            {"Metric": "Date range", "Value": summary["date_range"]},
            {"Metric": "Average per expense", "Value": summary["avg_per_expense"]},
        ]).to_excel(writer, sheet_name="Summary", index=False)

        by_cat = sorted(summary["by_category"].items(), key=lambda kv: -kv[1])
        pd.DataFrame(by_cat, columns=["Category", "Total"]).to_excel(writer, sheet_name="By Category", index=False)
        for cell in writer.sheets["By Category"]["B"][1:]:
            cell.number_format = "$#,##0.00"

        df.to_excel(writer, sheet_name="All Expenses", index=False)
    return output_path

Markdown summary for quick review:

def generate_markdown_summary(summary):
    lines = [
        "# Expense Report Summary",
        f"**Period:** {summary['date_range']}",
        f"**Total Expenses:** ${summary['total']:,.2f}",
        f"**Number of Items:** {summary['count']}",
        "",
        "## By Category",
    ]
    for cat, amt in sorted(summary["by_category"].items(), key=lambda kv: -kv[1]):
        lines.append(f"- **{cat}:** ${amt:,.2f} ({amt / summary['total'] * 100:.1f}%)")
    return "\n".join(lines)

Step 5: Present results and flag issues

Display the summary and flag any potential issues:

  • Expenses missing receipts
  • Unusually large individual expenses
  • Expenses outside the reporting period
  • Duplicate entries (same vendor, amount, and date)

Examples

Example 1: Monthly expense report from CSV

User request: "Create an expense report from my expenses.csv file for January"

Actions taken:

  1. Load and parse expenses.csv
  2. Filter to January entries
  3. Auto-categorize 34 expenses
  4. Generate summary and Excel report

Output:

Expense Report: January 2026
=============================
Total Expenses: $4,287.50
Number of Items: 34
Average per Expense: $126.10

By Category:
  Travel:                   $1,850.00 (43.1%)
  Software & Subscriptions:   $680.00 (15.9%)
  Meals:                     $542.30 (12.7%)
  Office Supplies:            $418.20 (9.8%)
  Transportation:             $365.00 (8.5%)
  Professional Services:      $320.00 (7.5%)
  Other:                      $112.00 (2.6%)

Top 3 Expenses:
  1. $890.00 - Delta Airlines (Jan 15)
  2. $520.00 - Marriott Hotel (Jan 15-16)
  3. $320.00 - Legal consultation (Jan 22)

Flags:
  - 2 potential duplicates found (review recommended)
  - 3 expenses over $200 may require manager approval

Report saved: expense_report_jan_2026.xlsx

Example 2: Annual tax expense summary

User request: "Summarize all my business expenses from 2025 for tax filing"

Actions taken:

  1. Load expense data for full year
  2. Categorize using IRS Schedule C categories
  3. Generate annual summary with monthly breakdown

Output:

Annual Expense Summary: 2025
============================
Total Business Expenses: $48,320.75

IRS Schedule C Categories:
  Advertising:                  $3,200.00
  Car & Truck Expenses:         $4,850.00
  Contract Labor:               $8,400.00
  Insurance:                    $2,160.00
  Office Expenses:              $5,680.00
  Supplies:                     $2,340.00
  Travel:                      $12,450.00
  Meals (50% deductible):       $4,280.75
  Utilities:                    $1,920.00
  Other:                        $3,040.00

Monthly Trend:
  Highest month: November ($6,420)
  Lowest month: August ($2,180)

Report saved: annual_expenses_2025.xlsx

Example 3: Organize receipts from a business trip

User request: "I just got back from a conference in Chicago. Organize these receipts: flights $450, hotel 3 nights $180/night, Uber rides $85, meals $220, conference ticket $399"

Output:

Business Trip Expense Report: Chicago Conference
=================================================
Total: $1,694.00

Expenses:
  Date       | Category      | Description           | Amount
  ---------- | ------------- | --------------------- | --------
  [Trip]     | Travel        | Round-trip flights     | $450.00
  [Trip]     | Travel        | Hotel (3 nights)       | $540.00
  [Trip]     | Transportation| Uber rides             | $85.00
  [Trip]     | Meals         | Meals during trip      | $220.00
  [Trip]     | Training      | Conference registration| $399.00

Summary:
  Travel & Lodging:   $990.00 (58.4%)
  Meals:              $220.00 (13.0%)
  Training:           $399.00 (23.6%)
  Transportation:      $85.00 (5.0%)

Note: Fill in specific dates for each expense before submitting.
Report saved: trip_expense_chicago.xlsx

Guidelines

  • Auto-categorize expenses by default but allow the user to override categories.
  • Always flag potential duplicates (same vendor, amount, and date within 1 day).
  • Keep entertainment separate from meals: entertainment is generally not deductible in the US, and business meals are generally 50% deductible. Rules change, so point the user to the current IRS Publication 463 and Schedule C instructions.
  • Use standard business expense categories that align with common reimbursement policies and IRS Schedule C.
  • For tax reports, note which categories have special deduction rules (e.g., meals at 50%).
  • Format all currency amounts consistently with two decimal places.
  • When generating Excel reports, include a summary sheet, category breakdown, and full detail sheet.
  • Date formats should be consistent. Parse and normalize dates from various input formats.
  • Never assume tax rates or reimbursement policies. Present the data and let the user or their accountant make tax decisions.
  • Install the libraries in a virtual environment: python -m venv .venv && .venv/bin/pip install pandas openpyxl. pandas 3 needs Python 3.11 or newer.
  • Receipts hold personal data (card numbers, addresses): keep report files out of shared folders and version control.

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

Scripts and configures production rendering in Autodesk 3ds Max with the V-Ray and Corona renderers: output size and files, render elements, denoising, light mix, batch and command-line rendering, and network rendering. Use when a user asks to set up a production render, render several cameras in one batch, render from the command line or on a render farm, add render passes for compositing, or cut render time for archviz and product shots.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

TerminalSkills/skills1722026년 10월 14일 업데이트

Covers scripting Autodesk 3ds Max, the 3D modeling and rendering application, with MAXScript and Python (pymxs): scene manipulation, object creation, material assignment, camera and light setup, batch operations, and file I/O. Use when tasks involve automating repetitive 3ds Max workflows, batch processing scenes, running scripts headless with 3dsmaxbatch, creating custom tools, or scripting scene setup for archviz, product visualization, or VFX.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

TerminalSkills/skills1722026년 10월 14일 업데이트

3proxy

무료

3proxy is a small open-source proxy server that runs HTTP/HTTPS, SOCKS4/5, SNI and TCP/UDP port-mapping proxies from one config file. Use when a user asks to set up an HTTP or SOCKS5 proxy, add proxy users and passwords, write 3proxy access rules, chain or rotate upstream (parent) proxies, limit bandwidth, connections or monthly traffic per user, run 3proxy in Docker, or fix a 3proxy.cfg that will not start.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

TerminalSkills/skills1722026년 10월 14일 업데이트

Builds Agent2Agent (A2A) servers and clients, the open protocol (originally from Google, now under the Linux Foundation) that lets AI agents from different frameworks call each other. Use when the user wants to create an A2A-compliant agent, build an Agent Card, implement task management, connect agents across frameworks, set up agent discovery, handle streaming responses, implement push notifications, or orchestrate multi-agent workflows. Trigger words: a2a, agent to agent, agent2agent, a2a protocol, a2a server, a2a client, agent card, agent interoperability, agent collaboration, multi-agent, agent discovery, a2a sdk, a2a task.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

TerminalSkills/skills1722026년 10월 14일 업데이트

Plans a controlled experiment (A/B test) so its result can be trusted: writes the hypothesis, picks one primary metric and the guardrails, computes sample size and run time, specifies how visitors are assigned and when exposure is logged, and reads out the result with a confidence interval. Use when someone says "set up an A/B test", "split test this page", "how many visitors do I need", "how long should the experiment run", "is this result significant", "can I stop the test early", or wants to test a headline, price, layout or onboarding change against the current version.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

TerminalSkills/skills1722026년 10월 14일 업데이트

ably

무료

Ably is a hosted realtime messaging service: clients publish and subscribe to named channels over WebSockets, see who is present, replay message history, and resume after a dropped connection. Use when a user asks to "add realtime updates", "push live notifications to the browser", "show who is online", "add a chat room with typing indicators", "publish from a serverless function", or "authenticate Ably clients without exposing the API key". Covers the ably 2.x JavaScript SDK (Realtime and REST), JWT token authentication, presence, history and rewind, batch publishing, and the @ably/chat 1.x SDK.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

TerminalSkills/skills1722026년 10월 14일 업데이트

TerminalSkills의 스킬 모두 보기

이 스킬의 문제 신고