Getting it into your agent
It runs from inside its repository, so the clone comes first — what it calls does not travel with the file alone.
git clone --depth 1 https://github.com/cynco-labs/ai-accounting-skillsnpx agentmods add skills/cynco-labs/ai-accounting-skills/extract-bank-statementWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/cynco-labs/ai-accounting-skills/extract-bank-statement)<a href="https://agentmods.dev/skills/cynco-labs/ai-accounting-skills/extract-bank-statement"><img src="https://agentmods.dev/badge/skills/cynco-labs/ai-accounting-skills/extract-bank-statement/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/cynco-labs/ai-accounting-skills/extract-bank-statement"><img src="https://agentmods.dev/badge/skills/cynco-labs/ai-accounting-skills/extract-bank-statement.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00037 | $0.00576 |
| Opus 5.5 | $0.00015 | $0.00230 |
| Sonnet 5.5 | $0.00007 | $0.00115 |
| Haiku 4.5 | $0.00004 | $0.00058 |
Grade A, and why
extract-bank-statement scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 81 lines — stays where its author put it; the contents beside it link to each section on GitHub.
/extract-bank-statement
Purpose
Bank lines → structured transactions with proof, not vibes.
pdfplumber / CSV → layout adapter → Decimal balance proof → Excel / JSON
Preconditions
- Read
shared/guardrails.mdandreferences/bank_statement_extraction.md. - Prefer CSV/Excel export from the bank portal when the user can provide it.
- Never invent lines. Fail loud on balance breaks.
Step 1 — Unified extract (required)
python3 scripts/extract_bank.py \
--input /path/to/statements \
--output ./outputs/bank.xlsx \
--also-json ./workpapers/transactions.json \
--client-slug <slug> \
--fail-on-error
# detect only
python3 scripts/extract_bank.py --input /path/to/statements --detect-only
# CLI
npx @cynco/accounting-skills extract ./statements --out ./bank.xlsx --json ./txns.json
| Adapter | Status |
|---|---|
maybank_islamic_pdf |
Production (pdfplumber + line proof) |
cimb_csv |
Production (debit/credit CSV + balance proof) |
generic_csv |
Production (flexible headers) |
| Other PDF brands | Ask CSV — do not freestyle 1000 lines in chat |
Maybank-only direct script (still valid):
python3 scripts/extract_maybank_islamic_pdf.py \
--input /path/to/statements \
--output ./bank.xlsx \
--also-json ./workpapers/transactions.json \
--fail-on-error
Step 2 — Verify
line_balance_ok/ open–close proof in extract meta- Spot-check first/last page against PDF
- Write source register entry
Decision table
| Input | Action |
|---|---|
| Maybank Islamic PDF | extract_bank / Maybank script |
| CIMB / generic CSV | extract_bank CSV adapters |
| Other bank digital PDF | Prefer CSV; else new adapter (copy Maybank pattern) |
| Scanned image PDF | Ask for CSV or OCR pipeline — not vision freestyle |
Completion
Done when: transactions.json (and optional xlsx) written, line/open–close balance proof passes (or must stop recorded), source register updated.
Gates
--fail-on-errormust be set for production extracts- Zero fabricated transactions
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 2mo ago First seen · 81 lines · 37 tokens per session scan A 96e1dad61dc3
extract-bank-statement is a skill published in the GitHub repository cynco-labs/ai-accounting-skills (4 stars, last pushed 3mo ago), licensed MIT. It adds 37 tokens to every session and 576 once invoked, about $0.0001 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
jangbu-import
A data-import workflow for turning bank files, card records, spreadsheets, receipts, tax invoices, and statement PDFs into a standard set of 13 transaction fields. OCR, or optical character recognition, is used to read information from document images and PDFs.
calculators-and-forms
Calculate public what-if estimates or find and prepare Polish forms. Use for VAT/net/gross, JDG PIT/ZUS, depreciation, employment cost, company tax/dividends, payment requests, handover protocols, annual leave requests and payment receipts. Triggers include kalkulator, oblicz, formularz, wezwanie do zapłaty, protokół…
countbean-accounting
Rules for writing correct double-entry Beancount transactions when managing a Countbean cloud book — account naming, how to balance postings, categorisation, and safe ingestion. Use whenever recording, importing, or correcting financial data in a Countbean book.
tax-prep
Organize financial records into tax-ready reports — P&L mapped to Schedule C lines, quarterly breakdowns, 1099 contractor summary, and flagged items requiring special treatment. Does not file taxes or give tax advice. Coordinates with specialized skills for meals, depreciation, home office, vehicle, and 1099 details.…
expense
Dodaje fakturę zakupu (koszt) do rejestru SQLite — zapisuje sprzedawcę, NIP, kwoty, kategorię, datę wpływu. Obsługuje wprowadzanie ręczne ORAZ OCR z pliku (PDF/JPG/PNG) przez lokalny Pixtral 12B z fallbackiem na Claude Haiku 4.5. Na ryczałcie koszty NIE pomniejszają podatku, ale VAT naliczony idzie do JPKV7M jako…
invoice-send
Konwertuje wygenerowaną fakturę DOCX na PDF (LibreOffice headless) i wysyła mailem do kontrahenta z treścią po polsku. Używa SMTP skonfigurowanego w .env. Użyj gdy user mówi "wyślij fakturę mailem", "wyślij PDF fakturę do X", "roześlij fakturę A1/04/2026", "wyślij ostatnią fakturę", "mail do klienta z fakturą".