Excel Model Audit Skill
Find #REF!, numbers typed over formulas, inconsistent formulas, SUM gaps and circular refs before a model ships. Read-only, runs locally.
View Excel Model Audit Skill
Month-end close stalls on the same twenty lines: a deposit that’s three invoices, a Stripe payout net of fees, a check that cleared in a different month. This skill matches what it can, explains the rest in priority order, and proves the balance.

With the two closing balances it proves the reconciliation: statement balance plus timing items must equal ledger balance plus suggested corrections. If they don’t, it says so and exits 1 instead of hiding the difference.
| Situation | Code | Side |
|---|---|---|
| Same amount, dates a few days apart | matched exact | |
| A check that clears weeks later | matched check (by check number) | |
| One bank deposit = several invoices/cash sales | matched batched (exact subset sum) | |
| One bill paid in two bank payments | matched split | |
| Stripe/PayPal/Square payout net of fees | net_of_fees with the exact fee | books |
| 543.20 in the books, 453.20 at the bank | possible_transposition | books |
| Same payee, slightly different amount (surcharge, FX) | amount_mismatch | books |
| The same bill entered twice | possible_duplicate_entry | books |
| Card spend / transfers nobody recorded | unrecorded_in_books (+ a client question) | books |
| Bank fees, interest | bank_fee, interest_income | books |
| Bounced customer payment, chargeback | returned_item (+ a client question) | books |
| Deposit recorded on the 30th, banked on the 2nd | deposit_in_transit | bank |
| Check written, not yet cashed | outstanding_payment | bank |
| Check outstanding for 60+ days | stale_outstanding (+ a client question) | bank |
| Receipt recorded weeks ago that never reached the bank | missing_deposit (+ a client question) | bank |
| Ledger lines dated after the period | after_period (excluded) |
examples/acme-october/ is a fictional design studio's October: 20 statement lines and 22 ledger lines with 24 planted situations (every row above, plus same-amount payments on different dates, a late check and a prior-month stale check). Every row is labeled with the outcome a careful bookkeeper would reach (expected.json), and the tests assert the tool reaches exactly that, in any row order, with a zero unexplained difference. 17 tests.

./run_tests.sh
python3 -m bankrec --bank examples/acme-october/bank.csv --books examples/acme-october/ledger.csv \
--period-end 2026-10-31 --bank-closing 9573.78 --book-closing 12625.82 --name "Acme Design Studio" --out out/Python 3.9+ (tested on 3.10 and 3.13), no dependencies, no AI calls, no network. Works with Claude Code, Codex, Cursor or any agent that reads SKILL.md.
Zip, 22 KB, v1.0, 14 files. Use and modify it for yourself and for your clients; no resale or redistribution of the kit itself. Full terms in LICENSE.txt.
Reconcile a bank CSV against your ledger: ranked exceptions, a balance proof, suggested (never posted) entries. Offline CLI + agent skill.
Find #REF!, numbers typed over formulas, inconsistent formulas, SUM gaps and circular refs before a model ships. Read-only, runs locally.
View Excel Model Audit SkillReconcile Stripe payouts to your bank: missing deposits, disputes, double charges and fees, plus proposed entries. Offline CLI + agent skill. $29.
View Stripe Payout Reconciliation SkillReconcile Shopify Payments payouts to your bank: missing deposits, disputes, double charges and fees, plus proposed entries. Offline CLI + agent skill. $29.
View Shopify Payments Payout Reconciliation Skill