Travel Expense Reimbursement
Foxtailsss-Andy/Anna-Agent
Create, validate, submit, and verify employee travel and expense reimbursements through Anna Cowork and MCP.
Write or repair a reusable Beangulp importer from a sample bank export, with reviewed golden files and a passing test harness.
$ npx skills add bex-co/beancount-io --skill beancount-importer-author -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install bex-co/beancount-io beancount-importer-author --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-importer-author .claude/skills/beancount-importer-author && 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-importer-author" agent skill from https://github.com/bex-co/beancount-io/tree/main/skills/.claude/skills/beancount-importer-author into .claude/skills/beancount-importer-author/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "beancount-importer-author", 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-importer-authorType 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-importer-author -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install bex-co/beancount-io beancount-importer-author --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-importer-author .agents/skills/beancount-importer-author && 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-importer-author" agent skill from https://github.com/bex-co/beancount-io/tree/main/skills/.claude/skills/beancount-importer-author into .agents/skills/beancount-importer-author/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "beancount-importer-author", 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-importer-author -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install bex-co/beancount-io beancount-importer-author --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-importer-author .cursor/skills/beancount-importer-author && 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-importer-author" agent skill from https://github.com/bex-co/beancount-io/tree/main/skills/.claude/skills/beancount-importer-author into .cursor/skills/beancount-importer-author/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "beancount-importer-author", 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-importer-author--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-importer-author -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install bex-co/beancount-io beancount-importer-author --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-importer-author .gemini/skills/beancount-importer-author && 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-importer-author" agent skill from https://github.com/bex-co/beancount-io/tree/main/skills/.claude/skills/beancount-importer-author into .gemini/skills/beancount-importer-author/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "beancount-importer-author", 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-importer-authorInstalls 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-importer-author -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-importer-author .github/skills/beancount-importer-author && 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-importer-author" agent skill from https://github.com/bex-co/beancount-io/tree/main/skills/.claude/skills/beancount-importer-author into .github/skills/beancount-importer-author/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "beancount-importer-author", 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-importer-author -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-importer-author --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-importer-author .opencode/skills/beancount-importer-author && 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-importer-author" agent skill from https://github.com/bex-co/beancount-io/tree/main/skills/.claude/skills/beancount-importer-author into .opencode/skills/beancount-importer-author/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "beancount-importer-author", 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-importer-authorWrite or repair a reusable Beangulp importer from a sample bank export, with reviewed golden files and a passing test harness.
Beancount Importer Author is an agent skill from 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. Use when a source needs a tested Python importer or its format changed. Wire the confirmed runner through bea ingest; keep generate/test in the authoring project. Skip one-off imports, reconciliation, finance-app migration and ledger writes.
Its SKILL.md is about 2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 14 other files, including reference files (for example `evals/evals.json`, `evals/files/eval3_importer.py` and `evals/files/eval6_import.py`).
It sits in Business, Finance & HR, covering Accounting and bookkeeping and Test generation. It works with Python. 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.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 0227141. 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.
Ships script files (Python), which the agent can run.
Shell commands in SKILL.md call:
pythonpipFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use pip, which can reach the network depending on how they are called.
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 Importer Author loads about 2k tokens when it runs, and up to ~3.6k if it reads all its reference files. Until then it costs about 99 tokens; SKILL.md has 975 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 0227141, republished under its MIT licence (© bex-co). 975 words, ~1,959 tokens.
.claude/skills/beancount-importer-author/SKILL.md (or your agent's skills folder). This skill also uses 11 other files; get the full folder from GitHub.Produce a tested beangulp importer from a sample export file — or repair one the bank's format drift broke — and never hand over anything whose harness isn't green.
This skill exists because importers are the most-complained-about chore in beancount: every bank's export is different, formats drift, and a subtly wrong importer silently corrupts data for months. beangulp ships a golden-file test harness that makes correctness checkable — the skill's job is to drive that loop: draft → generate golden → eyeball → test → iterate. The deterministic artifact then does the weekly work for free; the agent is only needed again when the format changes.
Does: author one importer per run (Python file), with golden-file tests, from a sample export; repair an existing importer against a new sample; wire the importer into the user's import.py (confirm-gated).
Does not: import transactions into the ledger (that's running the importer, or beancount-import); categorize (beangulp extraction posts the source leg; categorization stays with smart_importer or beancount-import — don't hardcode guessed counter-accounts); scrape banks; edit the ledger.
bea for the wired importerRead 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.
Read references/beangulp-api.md before writing any code. Prefer enabling
Beangulp in the managed engine when bea is installed:
bea engine enable beangulp # once; needs system libmagic
bea engine statusDo not pip install beangulp into the agent/frontend process or into bea's
frontend environment. Authoring still needs a project that can import beangulp
for the golden harness — use a local uv/venv in the ledger repo (developer
path). bea ingest exposes identify/extract/archive, not generate/test,
so it does not replace the golden harness. Match the authoring Beangulp
version to the managed engine and verify the wired runner through bea ingest. Verify the
installed API before trusting it or this reference:
python -c "import beangulp, inspect; help(beangulp.Importer)" inside that
project venv — beangulp's API has sharp edges and versions differ.
Five phases: Intake → Draft → Test → Wire → (or) Repair.
Need three things:
account()'s return). If a ;; beancount-import config block exists for this source (the graduation path), read it as the spec — schema defined in beancount-import's SKILL.md Discover section: it already holds the confirmed column mapping, sign convention, date format, and account — do not re-ask what the user already confirmed there.import.py / importers/ layout in the user's ledger repo; match its conventions. None yet? Propose importers/<source>.py + a minimal import.py.Inspect the sample's header + rows. Anything the config block doesn't already answer and the data can't prove (sign convention, MDY/DMY): ask, never guess — a guessed sign becomes a silently wrong importer.
beangulp.importers.csvbase.Importer (declarative column mapping — less code, fewer bugs). Raw beangulp.Importer subclass only when csvbase can't express it (OFX, multi-table files, weird encodings).identify() must be narrow: match the header signature and/or filename pattern, not just .csv — over-matching importers claim other sources' files, a classic footgun.import-id metadata to every extracted transaction, per beancount-import's references/dedup.md grammar: the row's native ID when the format has one (OFX FITID), else csv:sha256: recomputed deterministically per row with that reference's exact normalization — never read from config, never random. This keeps the graduated importer's output dedup-compatible with history the beancount-import skill already wrote.if __name__ == '__main__': from beangulp.testing import main; main(Importer(...)) so the importer file is its own test CLI.mkdir -p importers/tests/<source> && cp <sample> importers/tests/<source>/
python importers/<source>.py generate importers/tests/<source> # writes golden .beancount next to sample
# eyeball the golden file WITH THE USER — dates, signs, payees, amounts against the sample
python importers/<source>.py test importers/tests/<source> # must be greenThe golden-file eyeball is the human gate: generated goldens encode whatever the importer does, right or wrong — confirm a few rows against the raw sample before blessing them. Iterate draft ↔ test until green. A red harness is never handed over as done — if it can't be made green, say exactly what's unresolved.
After wiring, run bea --file "$ledger" ingest identify --config "$runner" SAMPLE
and bea --file "$ledger" ingest extract --config "$runner" SAMPLE, where
runner is the actual file just wired (import.py in this skill's default
layout). Do not point at a nonexistent ingest.py. Extraction usually has
only the source posting, so its raw output alone is not a balanced ledger.
bea ingest uses native output and rejects --json. Inspect identification
and extracted entries: an unclaimed file can be skipped with exit status 0.
For an end-to-end check, categorize and validate a complete scratch ledger
through bea --file "$scratch_ledger" check; leave the user's ledger alone.
Show the diff to import.py (adding the importer to the list) and any new files; write only on explicit yes. Suggest committing the importer + tests together so drift-repairs have a baseline.
When an existing importer fails on a new file:
identify/extract on the new sample, capture the exact failure (or the silent mis-extraction — diff extract output against a few hand-read rows).identify().import.py without explicit confirmation.© 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 11 other files (references) in skills/.claude/skills/beancount-importer-author of bex-co/beancount-io.
Open the folder on GitHubat commit 0227141
Beancount Importer Author 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 Importer Author this skillbex-co/beancount-io | 297 | — | ~2k | Automated safety check: Pass | MIT | |
| Travel Expense ReimbursementFoxtailsss-Andy/Anna-Agent | 147 | — | ~812 | Automated safety check: Pass | MIT | |
| SQL Server Table Reconciliationgithub/awesome-copilot | 40k | 1 repos | ~1.4k | Automated safety check: Pass | MIT | |
| Bio Copy Number Cnvkit AnalysisGPTomics/bioSkills | 1.2k | 2 repos | ~4.1k | Automated safety check: Pass | MIT | |
| Bio Proteomics Data ImportGPTomics/bioSkills | 1.2k | 1 repos | ~4.5k | Automated safety check: Pass | MIT | |
| Financial Data EntrySerein-81/financial_rag | 148 | — | ~1.5k | Automated safety check: Notes | None |
Foxtailsss-Andy/Anna-Agent
Create, validate, submit, and verify employee travel and expense reimbursements through Anna Cowork and MCP.
github/awesome-copilot
A skill your agent uses when: comparing SQL Server tables across instances, data migration validation, ETL verification, row mismatch detection, schema drift, reconciliation report, production vs…
GPTomics/bioSkills
Detect somatic and germline copy number variants from targeted, exome, and whole-genome sequencing with CNVkit, a read-depth caller that combines on-target and off-target (antitarget) coverage.
GPTomics/bioSkills
Loads mass-spectrometry data into Python/R and strips the search engine's bookkeeping before any number is trusted -- removes decoys (REV/Reverse), contaminants (CON/Potential contaminant)…
Serein-81/financial_rag
Guides entry of a single financial record by collecting fiscal-year figures, validating them with a script and confirming before submitting to the financial-data API.
nigo81/nigo-skills
Looks up Chinese company registration data in the CICPA industry knowledge base, from a quick search to a full 61-dimension export, subsidiary discovery and Excel output.
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
Import a bank or card CSV, OFX/QFX, or QIF export into an existing Beancount ledger.
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.
Works with
Categories
Write or repair a reusable Beangulp importer from a sample bank export, with reviewed golden files and a passing test harness. Beancount Importer Author is an agent skill from 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.
Beancount Importer Author fits situations like: A source needs a tested Python importer; its format changed.
Run `npx skills add bex-co/beancount-io --skill beancount-importer-author -a claude-code`. Or copy the skill folder (skills/.claude/skills/beancount-importer-author in bex-co/beancount-io) into .claude/skills/beancount-importer-author in your project. Claude Code loads it when a task matches its description.
Run `npx skills add bex-co/beancount-io --skill beancount-importer-author -a codex`. Or copy the skill folder (skills/.claude/skills/beancount-importer-author in bex-co/beancount-io) into .agents/skills/beancount-importer-author 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-importer-author -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-importer-author, .gemini/skills/beancount-importer-author, .github/skills/beancount-importer-author and .opencode/skills/beancount-importer-author in your project.
Going by SKILL.md and its folder, Beancount Importer Author needs Python for the scripts in its folder and the command-line tools its instructions call (python and pip). Our summary lists: Python 3.
SKILL.md contains no URLs. Its commands use pip, which can reach the network depending on how they are called. 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 Importer Author is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2k tokens (SKILL.md is roughly 7.8k 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 1.6k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Beancount Importer Author: Travel Expense Reimbursement (Foxtailsss-Andy/Anna-Agent, 147 stars), SQL Server Table Reconciliation (github/awesome-copilot, 40k stars), Bio Copy Number Cnvkit Analysis (GPTomics/bioSkills, 1.2k stars) and Bio Proteomics Data Import (GPTomics/bioSkills, 1.2k 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 297 GitHub stars. The repository holds 27 skills in this directory. The repository was last updated on October 11, 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.