budget-parserlisted
Install: claude install-skill natb1/commons.systems
# budget-parser
Adds a new parser to `projects/budget-etl/internal/parse/` for a bank export format not already handled (QFX/OFX/CSV). The user provides a sample statement file; this skill identifies the format, generates the parser and test, registers the format in the dispatch table, and runs `go test`.
## Step 1 — Check prerequisites
Run `go version`. If not found or non-zero, report that Go is required (https://go.dev/dl/) and stop.
Confirm `projects/budget-etl/internal/parse/` exists relative to the current directory. If not, the user is not in a clone of this repo — report and stop.
## Step 2 — Identify the format and record a header marker
Read the file the user provided. Then identify:
- **Syntax type**: delimiter-separated, XML/tag markup with closing tags, SGML-style markup without closing tags, fixed-width, JSON, or other.
- **Transaction boundaries**: enclosing tags, row delimiters, blank-line separators, etc.
- **Field positions**: where dates, amounts, descriptions appear within each transaction.
- **Balance**: whether a ledger balance and balance date are present, and where.
- **Header marker**: a stable substring within the first 512 bytes that uniquely identifies this format (e.g. `<?xml`, `OFXHEADER:`). Also record the match mode — `strings.HasPrefix` if the marker is always at byte 0, `strings.Contains` otherwise. The CSV branch is a `Contains(",")` catch-all and must stay last; any new `Contains`-based branch belongs before it. Reused verbatim in St