budgetlisted
Install: claude install-skill natb1/commons.systems
# budget
This skill runs the monthly statement-merge sync entirely on the user's machine.
Each run ingests new bank downloads into the statements archive, generates an
inspection report, walks the user through categorizing any unhandled
transactions, and writes a fresh encrypted snapshot that the hosted budget app
picks up automatically.
Two orchestrator scripts do the heavy lifting. You drive them and own the
user-facing dialog:
- `bash .claude/skills/budget/scripts/budget-sync` — the read-only half. It
resolves the per-user config, resolves the distributed binary, requires
`BUDGET_ETL_PASSWORD`, bootstraps the snapshot on first run, ingests new
downloads, and writes the inspection report to `/tmp/inspect.json`. Platform
detection and binary resolution are encapsulated inside this script — you no
longer do them yourself.
- `bash .claude/skills/budget/scripts/budget-apply [spec]` — the mutating half.
It applies a patch spec (default `/tmp/budget-patch.json`), merges the
statements into a fresh encrypted snapshot `snapshotDir/budget-<ts>.enc.json`,
publishes it onto `current` with `cp -f`, and re-reports residual
uncategorized into `/tmp/inspect.json`.
## Privacy invariant
Transaction data does not leave the user's machine. You must not send
transaction contents, descriptions, amounts, account numbers, the input files,
or any snapshot to a network endpoint.
The snapshot written to the user-configured `snapshotDir` and `current` is
**encrypted** (`.enc.j