← ClaudeAtlas

budget-parserlisted

Guide a user through adding a new bank-statement parser to budget-etl for an unsupported export format. Trigger when the user runs /budget-parser <path-to-statement-file>.
natb1/commons.systems · ★ 3 · Data & Documents · score 66
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