bex-co/beancount-io
Skills for working with local Beancount ledgers through a coding agent: init, add, trade, property, import, importer-author, reconcile, migrate, ask, roll-forward, accruals, close, options. Needs bea 0.3.1 or later for checks, queries, and writes.
Prepare supported accrual and reversal drafts for a period from an explicitly stated schedule — basis, service interval, day-count, recognized-to-date, already-booked, required adjustment — posted only through the suite's propose/confirm/check flow with stable schedule identity. Skip recording one-off entries the user describes (beancount-add), explaining how a balance moved (beancount-roll-forward), tax or depreciation advice, automatic reversals, and ledgers hosted on Beancount.io.
Record one-off entries the user describes in a local Beancount ledger through bea — a purchase, bill, paycheck, or transfer between their own accounts (including splits and pasted receipt text), opening or closing an account, a price, or a note. Propose the exact entries from existing accounts, check whether one is already recorded, and write only after confirmation with a passing check; it never changes existing entries. Skip bank or card export files (beancount-import), statements (beancount-reconcile), finance-app migrations, options trades (beancount-options), investment trades, dividends, splits, and vests (beancount-trade), month-end close, edits to existing entries, and ledgers hosted on Beancount.io.
Answer questions about a local Beancount ledger using shown, reproducible bea queries and reports for spending, trends, net worth, holdings, subscriptions and anomalies. Strictly read-only; figures come from executed queries. Skip ledgers hosted on Beancount.io, recording transactions (beancount-add), reconciliation, migration, ledger edits, option pricing or greeks, investment or tax advice, and general Beancount, BQL, or bea documentation questions (including what bea ask does).
Close an accounting period in a local Beancount ledger by reconciling each active account through beancount-reconcile, checking assertions and recurring gaps, reviewing flags, then proposing a commit with the period reports. Use for month-end close or wrapping up the books. Surface incomplete work and require a passing check before a confirmed commit; never push. Skip closing a single account (a close directive; beancount-add) and ledgers hosted on Beancount.io.
Import a bank or card CSV, OFX/QFX, QIF, or PDF statement export — or a broker activity CSV as lot-carrying entries — into an existing local Beancount ledger. Normalize signs, suggest categories from existing accounts, review duplicates and confirm before writing through bea; a PDF statement must tie out and ends with a balance assertion. Use for recording an export or a statement PDF; skip comparing an account against a statement (beancount-reconcile), full finance-app migrations, reusable importer authoring, individual options trades, single manual entries (beancount-add), ledger option settings, and ledgers hosted on Beancount.io.
Write or repair a reusable Beangulp importer from a sample bank export for a local ledger, with reviewed golden files and a passing test harness. Use when a source needs a tested Python importer or its format changed, e.g. "write a beangulp importer for my bank's CSV" or "my importer broke after the bank renamed its columns". Wire the confirmed runner through bea ingest; keep generate/test in the authoring project. Skip one-off imports, reconciliation, finance-app migration, ledger writes, and ledgers hosted on Beancount.io.
Scaffold a new local Beancount ledger with bea init and validation, with optional Fava browser setup when requested. Use for setting up a new ledger or initializing a bookkeeping repository. Skip importing history (beancount-migrate), bank exports, edits to a populated ledger, or ledgers hosted on Beancount.io.
Migrate full transaction history from Mint, Monarch, QuickBooks Online or another category-tagged finance-app export into a fresh local Beancount ledger. Confirm account/category mappings, pair transfers, preserve source IDs, write through bea and reconcile source counts and balances. Skip ongoing bank imports, populated-ledger merges investment lot reconstruction, and ledgers hosted on Beancount.io.
Record a described options trade or lifecycle event as validated transactions in a local Beancount ledger through bea, after review and confirmation. Use for single-leg or multi-leg opens, closes, rolls, assignment, exercise and expiration, including pasted broker confirmations. Skip options education, pricing/greeks, tax planning, analytics, broker statement imports, other manual entries (beancount-add), share, fund, and crypto trades and realized-gains reports (beancount-trade), ledger option settings such as operating_currency, and ledgers hosted on Beancount.io.
Record buying, holding, and selling a home or rental property in a local Beancount ledger through bea — the property as a priced lot, its mortgage liability, escrow, and closing costs split exactly as the closing statement states; each mortgage payment's split read from the loan statement and tied to its printed new balance; rent and deposits per property; and a sale whose gain the booking produces — proposed first and written only after confirmation. Skip paying rent as a tenant (beancount-add), bank or loan statement files (beancount-import), statement comparison (beancount-reconcile), tax treatment and depreciation advice, and ledgers hosted on Beancount.io.
Reconcile one account in a local Beancount ledger against a CSV or PDF statement. Report missing entries, duplicates, amount mismatches and date drift; confirm missing-entry writes and a passing period-end balance assertion through bea. Use for checking whether an account matches its statement. Skip bulk imports, single manual entries (beancount-add), analytics, multi-account close orchestration, edits to existing entries, and ledgers hosted on Beancount.io.
Explain how one balance-sheet account moved over a period — opening balance, each signed movement, closing balance — with shown, reproducible bea queries for prepaid, loan, and brokerage accounts. Strictly read-only; the closing is computed independently and any gap is reported, never plugged. Skip ledgers hosted on Beancount.io, recording entries (beancount-add), explanations of one transaction (beancount-ask), reconciliation against a statement (beancount-reconcile), investment or tax advice, and general Beancount or BQL questions.
Record a described stock, fund, or crypto trade or investment event in a local Beancount ledger through bea — a buy, a sell with its booking-produced gain, a crypto swap, a cash or reinvested dividend, staking or airdrop receipts, a split, a transfer between the user's own accounts, or an RSU/ESPP vest — with correct lots and cost basis, proposed first and written only after confirmation. Skip options contracts and their lifecycle (beancount-options), broker statement files (beancount-import), statement comparison (beancount-reconcile), performance questions (beancount-ask), everyday one-off entries (beancount-add), tax treatment, and ledgers hosted on Beancount.io.