Agent skill

Beancount Init

by bex-co in bex-co/beancount-io

Scaffold a new Beancount ledger with bea init and validation, with optional Fava browser setup when requested.

MITAuto-check: notesBusiness, Finance & HR

Install Beancount Init

skills CLI
$ npx skills add bex-co/beancount-io --skill beancount-init -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install bex-co/beancount-io beancount-init --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ 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-init .claude/skills/beancount-init && rm -rf skills-src

Use ~/.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/

Facts

Skill name
beancount-init
GitHub stars
295
Token cost
~1.2k tokens
SKILL.md length
574 words
Files
4 (incl. references)
Skills in repo
27
Repo updated
First seen
Licence
MIT

At a glance

Scaffold a new Beancount ledger with bea init and validation, with optional Fava browser setup when requested.

  • Works in 6 steps: Preflight → Resolve the opening date → Write main.bean → …
  • Setting up a new ledger
  • SKILL.md covers Prefer bea, Step 1 — Preflight, Step 2 — Resolve the opening… and Step 3 — Write main.bean, plus 3 more sections
  • Calls uv, make and git; reaches astral.sh

What it does

Beancount Init is an agent skill from bex-co/beancount-io. Scaffold a new 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, or edits to a populated ledger.

Its SKILL.md is about 1.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 5 other files, including reference files (for example `evals/evals.json`, `references/bea-cli.md` and `references/compatibility.md`).

It sits in Business, Finance & HR, covering Accounting and bookkeeping. 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.

When your agent uses it

  • Setting up a new ledger
  • Initializing a bookkeeping repository

Example prompts

  • “/beancount-init”

Requirements

  • Python 3

Workflow steps

6 steps, taken from the step headings in SKILL.md.

  1. Preflight
  2. Resolve the opening date
  3. Write main.bean
  4. Optional Fava browser setup
  5. git init (only if needed)
  6. Report

What it can do on your machine

Read from SKILL.md and the folder at commit 2103ca1. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    Shell commands in SKILL.md call:

    • uv
    • make
    • git
    • python3
    • brew
    • curl
    • sh

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • astral.sh

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Beancount Init loads about 1.2k tokens when it runs, and up to ~4k if it reads all its reference files. Until then it costs about 72 tokens; SKILL.md has 574 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~72
When it runs · the whole SKILL.md, loaded when a task matches
~1.2k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~4k

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.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NotePipes a well-known installer script into a shellSKILL.md:41
    `curl -LsSf https://astral.sh/uv/install.sh | sh`).

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.

SKILL.md

The full file from bex-co/beancount-io at commit 2103ca1, republished under its MIT licence (© bex-co). 574 words, ~1,247 tokens.

Download SKILL.mdSave it as .claude/skills/beancount-init/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.
name
beancount-init
description
Scaffold a new 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, or edits to a populated ledger.

beancount-init

Scaffold a fresh ledger in the current working directory. Prefer a single bea installation for create + validate. Fava's browser UI is optional and has its own runtime — it is not a prerequisite for bea ledger work.

Run the steps in order. Stop if a preflight check fails — partial scaffolding is worse than no scaffolding.

Prefer bea

Read references/bea-cli.md for the shared command contract. Create and validate the ledger through bea init and bea check. If bea is absent, use the explicit template and developer path in references/compatibility.md. Fava is a separate, optional browser runtime; run Step 4 only when requested.

Step 1 — Preflight

Run pwd && ls -A to see the working directory.

Hard-refuse if any of these already exist: main.bean, pyproject.toml, Makefile. Print which ones are present and stop. Do not overwrite.

If the directory contains other files but none of those markers, warn once and ask for confirmation before continuing.

Check command -v bea and remember BEA (yes/no). Ask for the operating currency (default USD) and an optional checking opening balance; call the answers CURRENCY and OPENING (empty when none). Detect FAVA: yes when the user asked for Fava / make start / "bootstrap fava", otherwise ask once (default no when BEA is yes; default yes only when BEA is no and they still want a browser — otherwise they can install bea later).

When FAVA is yes, verify uv with command -v uv. If missing, stop and tell them to install it (brew install uv on macOS, or curl -LsSf https://astral.sh/uv/install.sh | sh).

Step 2 — Resolve the opening date

Use the historical start date supplied by the user or beancount-migrate when present. It must be on/before the earliest entry, including any opening-balance transaction. Otherwise run date +%Y-%m-%d and use today. Call it OPEN_DATE. Do not scaffold with today's opens and then rewrite them for old history.

Show full SKILL.md (271 more words)Show less

Step 3 — Write main.bean

When BEA is yes, set directory to the current directory, currency to CURRENCY, and open_date to OPEN_DATE:

<!-- recipe: init -->
sh
bea --json --no-input init "$directory" --currency "$currency" --date "$open_date"

Add --opening-balance "Assets:Checking OPENING" to that command only when OPENING is non-empty. Then bind ledger to the new root's absolute path and run the check recipe in references/bea-cli.md.

bea init . writes ./main.bean. Do not write any template on this path — the file equals bea init byte-for-byte. Skip to Step 4 when FAVA is yes; otherwise Step 5.

When BEA is no, use the fourteen-account template in references/compatibility.md, with the same currency, open date and optional opening balance. Validate through the explicit developer path there; report an unvalidated result if no checker is available.

Step 4 — Optional Fava browser setup

Skip this entire step when FAVA is no.

Port
python3 -c "import random; bad={50000,55555,60000,65000}; ps=[p for p in range(49152,65536) if p not in bad and p%1000]; print(random.choice(ps))"

Call the integer PORT. If python3 is missing: awk 'BEGIN{srand(); print 49152 + int(rand()*16384)}'.

uv project + Fava
uv init --bare
uv add fava

--bare skips hello-world boilerplate. uv add fava pulls Fava's own runtime deps (including Beancount for the browser) into .venv/ — that is Fava's environment, not a second customer CLI. Do not also uv add beancount for bea operations.

Makefile

Tab-indent the recipe line. Substitute {{PORT}}:

.PHONY: start
PORT ?= {{PORT}}

start:
	uv run fava main.bean -p $(PORT)
.gitignore

Overwrite whatever uv init --bare wrote:

# Python
__pycache__/
*.py[cod]
*$py.class
*.so
.Python
build/
dist/
*.egg-info/
.eggs/
.pytest_cache/
.mypy_cache/
.ruff_cache/
.coverage
htmlcov/
.tox/
.venv/
venv/
env/

# macOS
.DS_Store
.AppleDouble
.LSOverride
._*
.Spotlight-V100
.Trashes

# Linux
*~
.fuse_hidden*
.directory
.Trash-*
.nfs*

# JetBrains
.idea/
*.iml
*.iws
*.ipr
out/

# VS Code
.vscode/
*.code-workspace
.history/

# Fava
.fava/

Step 5 — git init (only if needed)

If .git/ does not already exist, run git init. Don't stage anything.

Step 6 — Report

Print:

  • Files created (main.bean; plus Makefile, .gitignore, pyproject.toml, uv.lock, .venv/ when FAVA ran).
  • When BEA validated: bea check passed.
  • When FAVA: the port and make start → http://localhost:<PORT>.
  • When BEA only: next steps such as bea check, bea import, or bea --json query.

Keep the report tight — one short line per item.

© 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

Files

SKILL.md and 3 other files (references) in skills/.claude/skills/beancount-init of bex-co/beancount-io.

  • SKILL.md
  • evals/evals.json
  • references/bea-cli.md
  • references/compatibility.md

Open the folder on GitHubat commit 2103ca1

Compare with similar skills

Beancount Init 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.

Beancount Init compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Beancount Init this skillbex-co/beancount-io295—~1.2kAutomated safety check: NotesMIT
Sync Upstreamnyaruka/phonenumbers1.6k—~2.8kAutomated safety check: PassMIT
Longbridge Value Investinghelsome/folio2692 repos~1.2kAutomated safety check: PassMIT
Radiology Tablehuang-sir1/radiology-skills1.9k—~1.3kAutomated safety check: PassCustom licence
Odoo Agency Fleet Reviewerpipe-org/mcp-odoo420—~699Automated safety check: PassMIT
ERPClaw ERP Controlleravansaber/erpclaw114—~15kAutomated safety check: PassGPL-3.0

Similar skills

  • Sync Upstream

    nyaruka/phonenumbers

    Sync this Go port with a new upstream google/libphonenumber release — regenerate the embedded metadata and reconcile the ported Java logic.

    1.6k GitHub stars~2.8k tokensUpdated 6 days ago
    Business, Finance & HRAuto-check passed
  • Value investing analysis using Graham (NCAV/net-net/defensive-investor) and Buffett (economic moat/ROE/FCF) methodologies.

    269 GitHub starsUsed in 2 repos~1.2k tokens
    Business, Finance & HRAuto-check passed
  • Radiology Table

    huang-sir1/radiology-skills

    Create/audit editable publication tables with source reconciliation; not figures or statistical inference.

    1.9k GitHub stars~1.3k tokensUpdated 17 days ago
    Business, Finance & HRAuto-check passed
  • Odoo Agency Fleet Review

    erpipe-org/mcp-odoo

    Review many client Odoo databases at once through odoo-mcp's cross-instance tools — fleet-wide accounting health, per-client aging, partial-failure triage — for agencies and partners managing 5–50…

    420 GitHub stars~699 tokensUpdated 1 mo ago
    Business, Finance & HRAuto-check passed
  • ERPClaw ERP Controller

    avansaber/erpclaw

    Operates the ERPClaw self-hosted ERP in plain language: accounting, invoicing, inventory, purchasing, tax, HR, payroll and reports, treating the ERP as the single source of truth.

    114 GitHub stars~15k tokensUpdated 2 days ago
    Business, Finance & HRAuto-check passed
  • Forward Implementation First

    Vuk97/forward-implementation-first

    Keeps an agent building and validating real output instead of servicing its own bookkeeping.

    176 GitHub stars~1.8k tokensUpdated 1 mo ago
    Business, Finance & HRAuto-check passed

More from bex-co/beancount-io

All 27 skills in this repo
  • Beancount Close

    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…

    295 GitHub stars~1.4k tokensUpdated yesterday
    Auto-check passed
  • Beancount Import

    bex-co/beancount-io

    Import a bank or card CSV, OFX/QFX, or QIF export into an existing Beancount ledger.

    295 GitHub stars~3k tokensUpdated yesterday
    Auto-check passed
  • Beancount Importer Author

    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.

    295 GitHub stars~2k tokensUpdated yesterday
    Auto-check passed
  • Beancount Options

    bex-co/beancount-io

    Record a described options trade or lifecycle event as validated Beancount transactions through bea, after review and confirmation.

    295 GitHub stars~3.7k tokensUpdated yesterday
    Auto-check passed
  • Beancount Reconcile

    bex-co/beancount-io

    Reconcile one Beancount account against a CSV statement or pasted PDF text.

    295 GitHub stars~4.1k tokensUpdated yesterday
    Auto-check passed
  • Mobile Release

    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.

    295 GitHub stars~3.5k tokensUpdated yesterday
    Auto-check passed

Questions about Beancount Init

What does Beancount Init do?

Scaffold a new Beancount ledger with bea init and validation, with optional Fava browser setup when requested. Beancount Init is an agent skill from bex-co/beancount-io. Scaffold a new Beancount ledger with bea init and validation, with optional Fava browser setup when requested.

When should I use Beancount Init?

Beancount Init fits situations like: setting up a new ledger; initializing a bookkeeping repository.

How do I install Beancount Init in Claude Code?

Run `npx skills add bex-co/beancount-io --skill beancount-init -a claude-code`. Or copy the skill folder (skills/.claude/skills/beancount-init in bex-co/beancount-io) into .claude/skills/beancount-init in your project. Claude Code loads it when a task matches its description.

How do I install Beancount Init in Codex?

Run `npx skills add bex-co/beancount-io --skill beancount-init -a codex`. Or copy the skill folder (skills/.claude/skills/beancount-init in bex-co/beancount-io) into .agents/skills/beancount-init in your project. Codex loads it when a task matches its description.

Can I use Beancount Init in Cursor, Gemini CLI or GitHub Copilot?

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-init -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-init, .gemini/skills/beancount-init, .github/skills/beancount-init and .opencode/skills/beancount-init in your project.

What does Beancount Init need to run?

Going by SKILL.md and its folder, Beancount Init needs the command-line tools its instructions call (uv, make, git, python3, brew and curl). Our summary lists: Python 3.

Does Beancount Init access the network?

SKILL.md names 1 domain. In commands or code: astral.sh; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.

Is Beancount Init safe to install?

Our automated static check of SKILL.md found notes only (pipes a well-known installer script into a shell), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does Beancount Init use?

Beancount Init is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Beancount Init use?

About 1.2k tokens (SKILL.md is roughly 5k 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 2.8k tokens, read only when the agent opens those files.

What are the alternatives to Beancount Init?

Skills that share tags, products or a category with Beancount Init: Sync Upstream (nyaruka/phonenumbers, 1.6k stars), Longbridge Value Investing (helsome/folio, 269 stars), Radiology Table (huang-sir1/radiology-skills, 1.9k stars) and Odoo Agency Fleet Review (erpipe-org/mcp-odoo, 420 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Beancount Init?

bex-co (a GitHub organization) maintains it in bex-co/beancount-io, which has 295 GitHub stars. The repository holds 27 skills in this directory. The repository was last updated on October 7, 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.