Journal
kazukinagata/shinkoku
This skill should be used when the user wants to record bookkeeping entries (仕訳), import transaction data from CSV files, receipts, or invoices, or manage their general ledger.
Import a bank or card CSV, OFX/QFX, or QIF export into an existing Beancount ledger.
$ npx skills add bex-co/beancount-io --skill beancount-import -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install bex-co/beancount-io beancount-import --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/bex-co/beancount-io.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/.claude/skills/beancount-import .claude/skills/beancount-import && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "beancount-import" agent skill from https://github.com/bex-co/beancount-io/tree/main/skills/.claude/skills/beancount-import into .claude/skills/beancount-import/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "beancount-import", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/bex-co/beancount-io/tree/main/skills/.claude/skills/beancount-importType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add bex-co/beancount-io --skill beancount-import -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install bex-co/beancount-io beancount-import --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/bex-co/beancount-io.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/.claude/skills/beancount-import .agents/skills/beancount-import && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "beancount-import" agent skill from https://github.com/bex-co/beancount-io/tree/main/skills/.claude/skills/beancount-import into .agents/skills/beancount-import/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "beancount-import", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add bex-co/beancount-io --skill beancount-import -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install bex-co/beancount-io beancount-import --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/bex-co/beancount-io.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/.claude/skills/beancount-import .cursor/skills/beancount-import && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "beancount-import" agent skill from https://github.com/bex-co/beancount-io/tree/main/skills/.claude/skills/beancount-import into .cursor/skills/beancount-import/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "beancount-import", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/bex-co/beancount-io.git --path skills/.claude/skills/beancount-import--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add bex-co/beancount-io --skill beancount-import -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install bex-co/beancount-io beancount-import --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/bex-co/beancount-io.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/.claude/skills/beancount-import .gemini/skills/beancount-import && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "beancount-import" agent skill from https://github.com/bex-co/beancount-io/tree/main/skills/.claude/skills/beancount-import into .gemini/skills/beancount-import/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "beancount-import", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install bex-co/beancount-io beancount-importInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add bex-co/beancount-io --skill beancount-import -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/bex-co/beancount-io.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/.claude/skills/beancount-import .github/skills/beancount-import && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "beancount-import" agent skill from https://github.com/bex-co/beancount-io/tree/main/skills/.claude/skills/beancount-import into .github/skills/beancount-import/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "beancount-import", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add bex-co/beancount-io --skill beancount-import -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install bex-co/beancount-io beancount-import --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/bex-co/beancount-io.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/.claude/skills/beancount-import .opencode/skills/beancount-import && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "beancount-import" agent skill from https://github.com/bex-co/beancount-io/tree/main/skills/.claude/skills/beancount-import into .opencode/skills/beancount-import/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "beancount-import", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
beancount-importImport a bank or card CSV, OFX/QFX, or QIF export into an existing Beancount ledger.
Beancount Import is an agent skill from bex-co/beancount-io. Import a bank or card CSV, OFX/QFX, or QIF export into an existing Beancount ledger. Normalize signs, suggest categories from existing accounts, review duplicates and confirm before writing through bea. Use for recording an export; skip statement reconciliation, full finance-app migrations, reusable importer authoring, and individual options trades.
Its SKILL.md is about 3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 24 other files, including reference files (for example `evals/evals.json` and `references/bea-import.md`).
It sits in Business, Finance & HR, covering Accounting and bookkeeping and CSV and tabular files. The repository describes itself as: 💰 Double-entry bookkeeping made easy — plain-text accounting for humans and AI agents. Polished iOS & Android app built with React Native + Expo. The licence is MIT.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 5614bc7. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are bash).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Beancount Import loads about 3k tokens when it runs, and up to ~9k if it reads all its reference files. Until then it costs about 92 tokens; SKILL.md has 1,358 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from bex-co/beancount-io at commit 5614bc7, republished under its MIT licence (© bex-co). 1,358 words, ~3,049 tokens.
.claude/skills/beancount-import/SKILL.md (or your agent's skills folder). This skill also uses 21 other files; get the full folder from GitHub.Turn a bank/card export file into categorized, deduplicated ledger entries — staged first, written only after explicit confirmation, idempotent on re-import.
This skill exists because the weekly export-to-ledger chore has three silent failure modes: a flipped sign convention corrupts every amount, a re-imported file double-books everything, and a guessed category buries mistakes the user won't find until tax time. The skill defuses all three the same way: it never guesses (ask once, persist the answer), it stamps every entry with an import-id so re-imports are no-ops, and it only ever suggests accounts that already exist in the ledger.
beaRead beancount-init's references/bea-cli.md before running ledger commands: it defines explicit root/destination paths, JSON batches, checks, and safe retries. Without bea, use beancount-init's references/compatibility.md.
references/bea-import.md. Pass the
confirmed sign, mapping, account, rules and destination on every preview
and apply. Keep rules in the ledger repository after confirmation. Run the
additional ±3-day manual-entry duplicate review; CLI duplicate detection
alone does not cover it.import-id and flags. This also handles mixed per-row
duplicate decisions that a single --duplicates policy cannot express.bea engine enable beangulp
(requires system libmagic), then bea ingest identify|extract|archive with
the actual runner supplied via --config. Ordinary CSV needs no Beangulp.The agent interprets the source and reviews the rows; bea validates and
writes the approved directives. Do not append directive text on this path.
Does: parse one export file per run; stage, dedup, and categorize its rows; append confirmed transactions (with import-id metadata) and any needed open directives to one existing file.
Does not: edit or delete existing entries; create the target file (it must already exist and be reachable from the main file — a file nothing includes silently swallows entries); fetch data from banks (see references/getting-data.md for how users export, incl. SimpleFIN); reconcile balances (that is beancount-reconcile — suggest running it after a large import); touch option, plugin, or include directives.
Read references/formats.md before parsing any new or format-changed source (repeat imports with a stored config stanza apply the stored mapping directly) and references/dedup.md before the dedup pass. Both encode edge cases that are easy to get wrong.
Seven stages, in order: Discover → Normalize → Stage → Dedup → Suggest → Confirm → Write + Verify.
Find beancount files in the working directory:
fd -e beancount -e bean . | head -20
# fallback: find . -maxdepth 4 \( -name '*.beancount' -o -name '*.bean' \)The "main" file has option/plugin/include directives at the top, or is the largest with open directives. Then establish:
Assets:Bank:Checking, Liabilities:CreditCard:Amex). Map from the user's words or the file's contents; if ambiguous, ask — never guess which account an export feeds.bea, a comment block at the top of the main file starting with ;; beancount-import config. It records, per source, everything learned on the first import so repeat imports ask zero questions. Re-read it rather than re-detecting.Config block format — one source stanza per export source:
;; beancount-import config
;; source: chase-checking
;; account: Assets:Bank:Checking
;; format: csv columns: date=1,desc=2,amount=3 date_format: MDY sign: negative=outflow
;; append_target: ./transactions/2026.beancount
;; imports: 3
;; source: amex-card
;; account: Liabilities:CreditCard:Amex
;; format: csv columns: date=1,desc=2,debit=3,credit=4 date_format: MDY sign: debit=outflow
;; append_target: ./transactions/2026.beancount
;; imports: 1
;; source: other-bank
;; account: Assets:Bank:Savings
;; format: csv columns: date=1,desc=2,amount=3,type=4 date_format: MDY sign: type=D|W=outflow,C=inflow
;; append_target: ./transactions/2026.beancount
;; imports: 1Bump imports: only when entries are written (a fully-deduped no-op changes nothing). For sources requiring custom normalization, when it reaches 3+, suggest once: "you've imported this source N times — want me to codify it as a tested beangulp importer via beancount-importer-author?" Simple CSV mappings already provide repeatable imports and need no graduation nudge. For CSV, also record the exact csv_mapping: including sign=bank|ledger, date_format: as a strptime format, and durable rules: path. These supplement the human-readable source settings; bea's cache does not preserve sign.
Turn the file into normalized rows: date, amount (ledger sign), payee/description, pending?, native-id?. Read references/formats.md first. In brief:
FITID (the native ID — feeds dedup); CSV/QIF usually don't.references/formats.md (canonical; same convention as beancount-reconcile). Debit/credit split columns, all-positive amounts with a type column, DMY vs MDY — when ambiguous, ask, never guess. A wrong guess here corrupts every row.Build candidate transactions in memory — nothing touches the ledger yet. One candidate per normalized row: date, flag (! if the source marks it pending, else *), payee, source-account posting at the exact row amount, counter-account left for Suggest, import-id computed per references/dedup.md.
Read references/dedup.md first. Two layers, in order:
import-id metadata matching a candidate's ID. Match → drop the candidate, count it as already imported.Use the same confirmed sign, account, and source identities on every run. Exact reimports yield zero new entries; unresolved or previously skipped fuzzy matches still need review. Read references/bea-import.md before treating a CLI preview as complete deduplication.
Categorize each candidate's counter-account from the ledger's own history. Read references/categorization.md first. The hard rules:
Expenses:Uncategorized (propose its open if missing) and flag for refinement.Show the user everything, then ask. Never write before an explicit yes.
Nothing to import (every row already imported, no suspected-duplicate decisions open): skip the review table and the yes/no prompt entirely — report the no-op ("4 already imported, 0 new — nothing to do") and write nothing, not even the config block.
open directives — only if needed (typically Expenses:Uncategorized).Example:
Target file: ./transactions/2026.beancount
Source: chase-checking → Assets:Bank:Checking (May 2026 export, 12 rows)
Already imported (skipped): 4
Suspected duplicates: 1 → 2026-05-03 "ACME REFUND" 25.00 may duplicate the manual
entry dated 2026-05-04 — import anyway, or skip? (skip/import)
To import: 7
New account opens:
2026-05-01 open Expenses:Uncategorized
| date | payee | amount | account | conf | reason |
|------------|--------------------|---------|--------------------------|------|----------------------------|
| 2026-05-07 | TRADER JOES #123 | -54.20 | Expenses:Food:Groceries | high | 6 prior TRADER JOES entries|
| 2026-05-22 | CITY PARKING AUTH | -12.00 | Expenses:Uncategorized | low | no prior match — refine |
| … | | | | | |
Append these 7 transactions to ./transactions/2026.beancount? (yes/no)After the user's yes:
add open recipe.references/bea-import.md, or write the approved normalized
batch with the shared add transactions recipe and explicit --into.
Preserve every external row's import-id; batch writes do not deduplicate.bea --file "$ledger" --json --no-input check on the root.On success report imported/skipped counts, duplicate decisions, and flagged uncategorized rows. Suggest beancount-reconcile after a large import. On failure surface the exact error and any earlier successful steps. Inspect current IDs before retrying; a failed assertion or later command does not undo a successful transaction batch. Never report an unvalidated success.
The no-bea write/check procedure is in beancount-init's
references/compatibility.md; keep the same proposal and dedup semantics.
Expenses:Uncategorized, nothing else.beancount-reconcile, beancount-migrate, beancount-importer-author.© bex-co, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 21 other files (references) in skills/.claude/skills/beancount-import of bex-co/beancount-io.
Open the folder on GitHubat commit 5614bc7
Beancount Import next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Beancount Import this skillbex-co/beancount-io | 296 | — | ~3k | Automated safety check: Pass | MIT | |
| Journalkazukinagata/shinkoku | 365 | — | ~2.3k | Automated safety check: Pass | MIT | |
| Mx Macro Datahiboys/ExploreFinance | 364 | — | ~1.7k | Automated safety check: Pass | None | |
| Map Tokenreportazalio/map-framework | 156 | — | ~2.5k | Automated safety check: Pass | MIT | |
| Remofirst Local Dev Loopjeremylongshore/tons-of-skills-marketplace | 2.8k | — | ~1.1k | Automated safety check: Pass | MIT | |
| Remofirst Upgrade Migrationjeremylongshore/tons-of-skills-marketplace | 2.8k | — | ~1.2k | Automated safety check: Pass | MIT |
kazukinagata/shinkoku
This skill should be used when the user wants to record bookkeeping entries (仕訳), import transaction data from CSV files, receipts, or invoices, or manage their general ledger.
hiboys/ExploreFinance
基于东方财富数据库,支持自然语言查询全球宏观经济数据,涵盖国民经济核算、价格指数、货币金融、财政收支、对外贸易、就业民生、产业运行等多个领域,适配各类宏观经济研究、市场分析、政策解读等多元专业场景需求。返回结果包含数据说明及 csv 文件。Natural language query for macroeconomic data from financial databases…
azalio/map-framework
Show per-subtask/agent token accounting (input, output, cache read/creation, cost, cache-hit ratio) for the current branch.
jeremylongshore/tons-of-skills-marketplace
Rehearse RemoFirst imports, report reconciliation, and operator controls offline with synthetic fixtures before touching a client account.
jeremylongshore/tons-of-skills-marketplace
Control a RemoFirst workflow cutover to supported Workday, ADP, report, or CSV exchange with reconciliation and rollback.
jeremylongshore/tons-of-skills-marketplace
Migrate external or cross-site content into Webflow CMS with schema mapping, staged batches, reconciliation, and controlled publication.
bex-co/beancount-io
Close an accounting period in a Beancount ledger by reconciling each active account through beancount-reconcile, checking assertions and recurring gaps, reviewing flags, then proposing a commit with…
bex-co/beancount-io
Write or repair a reusable Beangulp importer from a sample bank export, with reviewed golden files and a passing test harness.
bex-co/beancount-io
Scaffold a new Beancount ledger with bea init and validation, with optional Fava browser setup when requested.
bex-co/beancount-io
Record a described options trade or lifecycle event as validated Beancount transactions through bea, after review and confirmation.
bex-co/beancount-io
Reconcile one Beancount account against a CSV statement or pasted PDF text.
bex-co/beancount-io
Summarize mobile changes since the previous release, bump the Beancount mobile version, prepare localized release notes and listings, and release to the Apple App Store and Google Play.
Categories
Import a bank or card CSV, OFX/QFX, or QIF export into an existing Beancount ledger. Beancount Import is an agent skill from bex-co/beancount-io. Import a bank or card CSV, OFX/QFX, or QIF export into an existing Beancount ledger.
Beancount Import fits situations like: recording an export; skip statement reconciliation; full finance-app migrations; reusable importer authoring.
Run `npx skills add bex-co/beancount-io --skill beancount-import -a claude-code`. Or copy the skill folder (skills/.claude/skills/beancount-import in bex-co/beancount-io) into .claude/skills/beancount-import in your project. Claude Code loads it when a task matches its description.
Run `npx skills add bex-co/beancount-io --skill beancount-import -a codex`. Or copy the skill folder (skills/.claude/skills/beancount-import in bex-co/beancount-io) into .agents/skills/beancount-import in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add bex-co/beancount-io --skill beancount-import -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/beancount-import, .gemini/skills/beancount-import, .github/skills/beancount-import and .opencode/skills/beancount-import in your project.
SKILL.md names no scripts, command-line tools or credentials: Beancount Import is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Beancount Import is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 6k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Beancount Import: Journal (kazukinagata/shinkoku, 365 stars), Mx Macro Data (hiboys/ExploreFinance, 364 stars), Map Tokenreport (azalio/map-framework, 156 stars) and Remofirst Local Dev Loop (jeremylongshore/tons-of-skills-marketplace, 2.8k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
bex-co (a GitHub organization) maintains it in bex-co/beancount-io, which has 296 GitHub stars. The repository holds 27 skills in this directory. The repository was last updated on October 9, 2026.
Source: bex-co/beancount-io on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.