Skill detail
accounting
Performs genuine expense and reconciliation work but is narrowly tied to one institution.
Inspect before use
Automated review checks relevance, not safety or endorsement. Read the source instructions before using this skill.
SKILL.md
The saved excerpt is a snapshot from review. The external source remains the complete and most current version.
---
name: accounting
description: "Process receipts, track expenses in Google Sheets, reconcile records, and generate entertainment supplement tables for Field Museum procurement card accounting"
---
# Accounting Skill
Use this skill when the user wants to:
- Process new receipts and add expense records
- Reconcile receipts against spreadsheet records
- Generate entertainment supplement tables
- Check budget or fund balances
- Organize procurement card accounting
Keywords: receipt, expense, accounting, budget, fund, supplement, p-card, procurement, GL code, reconcile
## Available Resources
- `references/gl_codes.md` — GL code reference table with entertainment flags
- `references/supplement_guide.md` — Supplement form layout and filing rules
- `references/smartdata_reports.md` — SmartData report formats, parsing, the 1% international fee, and pairing rules
- `scripts/parse_smartdata.py` — parses a SmartData Account Statement XLSX and pairs international fees
- `scripts/check_missing_receipts.py` — flags posted charges missing from the expenses sheet
## Session Start
**Run this skill from the accounts and receipts working folder.** Every path below is relative to it, and `{working_folder}` means that directory — the current one. The folder's location is deliberately not recorded in this repo.
**One exception:** `scripts/` and `references/` name this skill's own files and resolve against the **skill's** directory — the one holding this `SKILL.md` — not the working folder. `{skill_dir}` below means that directory; substitute it when running a command, since the current directory is the working folder and `python3 scripts/…` would not be found there. Every other path in this file, `{year}/…` included, is relative to the working folder.
If the current directory holds neither `spreadsheet_links.yaml` nor a `{year}/` directory, this is the wrong folder: say so and ask the user to restart the session from the right one. Do not go searching the filesystem for it.
1. **Detect year**: Determine the current year from today's date. Confirm with the user: "Working on **{year}** expenses — correct?"
2. **Get spreadsheet link**: Check for `spreadsheet_links.yaml` in the working folder.
- If a link for this year **already exists** in the YAML, show it and ask: "Using this spreadsheet — correct? {url}"
- If the file is missing or has no entry for this year, ask the user for the Google Sheet link.
Save/update the link:
```yaml
{year}:
spreadsheet_id: "{extracted_id}"
url: "{full_url}"
```
3. **Read current expenses**: Detect the environment by testing whether this is a local Mac session — `command -v open` succeeds and the `{year}/receipts/` directory is present. Then:
- **On cowork (local Mac)**:
Open the spreadsheet in Chrome so the user can interact with it:
```bash
open -a "Google Chrome" "{full_url}"
```
Also fetch the expenses tab via WebFetch CSV export:
```
https://docs.google.com/spreadsheets/d/{SPREADSHEET_ID}/gviz/tq?tqx=out:csv&sheet=expenses
```
If the WebFetch CSV export fails or returns an auth/login page, note this and ask the user to manually export the sheet as CSV and provide the file path.
- **Not on cowork (cloud/remote — no local receipts tree)**:
Fetch directly via WebFetch CSV export:
```
https://docs.google.com/spreadsheets/d/{SPREADSHEET_ID}/gviz/tq?tqx=out:csv&sheet=expenses
```
If this fails, ask the user to paste the spreadsheet data or provide a downloaded CSV file.
Parse the expenses data to understand existing records and the receipt numbers already used. **Analyze patterns** in existing records to learn Fund and GL code assignment conventions — e.g., which vendors consistently map to which funds and GL codes. Use these precedents when proposing values for new receipts rather than defaulting to a single fund.
**Expenses CSV file for `check_missing_receipts.py`** (the *expenses-CSV
recipeRead the full source on GitHub (opens external page)