Agent skill

Beancount Close

by bex-co in 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…

MITAuto-check passedBusiness, Finance & HR

Install Beancount Close

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

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

GitHub CLI
$ gh skill install bex-co/beancount-io beancount-close --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-close .claude/skills/beancount-close && 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-close
GitHub stars
296
Token cost
~1.4k tokens
SKILL.md length
696 words
Files
6 (incl. references)
Skills in repo
27
Repo updated
First seen
Licence
MIT

At a glance

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…

  • Works in 7 steps: Scope → Reconcile → Assert → …
  • Month-end close
  • SKILL.md covers Prefer bea, Scope, Workflow and What NOT to do
  • Calls git

What it does

Beancount Close is an agent skill from 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 the period reports. Use for month-end close or wrapping up the books. Surface incomplete work and require a passing check before a confirmed commit; never push.

Its SKILL.md is about 1.4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 8 other files, including reference files (for example `evals/evals.json` and `references/close-checklist.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

  • Month-end close
  • Wrapping up the books

Example prompts

  • “/beancount-close”

Workflow steps

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

  1. Scope
  2. Reconcile
  3. Assert
  4. Recurring completeness
  5. Flags
  6. Report
  7. Commit

What it can do on your machine

Read from SKILL.md and the folder at commit 5614bc7. 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:

    • git

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

  • Network

    No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.

    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 Close loads about 1.4k tokens when it runs, and up to ~2.5k if it reads all its reference files. Until then it costs about 94 tokens; SKILL.md has 696 words of instructions outside code blocks.

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

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 passed

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.

SKILL.md

The full file from bex-co/beancount-io at commit 5614bc7, republished under its MIT licence (© bex-co). 696 words, ~1,443 tokens.

Download SKILL.mdSave it as .claude/skills/beancount-close/SKILL.md (or your agent's skills folder). This skill also uses 5 other files; get the full folder from GitHub.
name
beancount-close
description
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 the period reports. Use for month-end close or wrapping up the books. Surface incomplete work and require a passing check before a confirmed commit; never push.

beancount-close

Close one month with a fixed, honest checklist — every account either ties out or is explicitly reported as unverified, and the close lands as a git commit whose message is the audit record.

This skill exists because trustworthy books come from ritual, not heroics: the same checks, every month, with nothing silently skipped. Each phase reports its status before the next begins; the final commit encodes the close report so git log reads as a close history.

Prefer bea

Read 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.

Check the root ledger and generate the committed summary with root-scoped report income-statement and report balance-sheet, both using the resolved month. Reconciliation writes still belong to beancount-reconcile.

Scope

Does: one period (default: last complete calendar month) across all active accounts; delegates per-account reconciliation to the beancount-reconcile skill; appends only what that skill's confirm-gated flow appends; produces a close report; makes one confirm-gated git commit.

Does not: fabricate missing entries (a missing subscription charge is reported, not invented); edit existing entries; force a tie-out; push to remotes (/ship is separate); close a period when the check is red — red blocks the commit proposal, always.

Read references/close-checklist.md before running — it defines each phase's procedure and reportable status.

Workflow

Seven phases: Scope → Reconcile → Assert → Recurring → Flags → Report → Commit. Announce the phase status line as each completes (e.g. Reconcile: 2 tied, 1 unverified (no statement)).

1. Scope

Resolve the period (user's words or last complete month — state it). Find the ledger (same discovery as sibling skills). Enumerate active accounts: any Assets/Liabilities account with postings in the period or a nonzero balance at period end (bounded by date < <period-end+1>, so later entries don't count). Run bea --file "$ledger" --json --no-input check first — a ledger that starts red must be fixed (surface the errors) before a close can mean anything.

2. Reconcile

For each active account, ask the user for the period statement (CSV/pasted text). Per account with a statement, run the beancount-reconcile flow (its own confirm gate applies) — outcome tied, or partial when reconcile correctly withholds the assertion over unresolved suspects/mismatches (a reported finding with its residual, not a failure to retry). Per account without one: status unverified — listed in the report, never silently passed. Nothing in this phase writes except through reconcile's confirmed appends.

3. Assert

After reconciliation, every reconciled account has a period-end balance assertion (reconcile appends them). Verify each active account has an assertion dated on/after period end; accounts without one are unpinned in the report.

Show full SKILL.md (269 more words)Show less
4. Recurring completeness

Detect expected-but-missing entries: merchants (payee, or narration when the payee is empty) appearing in each of the prior 2–3 months (steady amount ⇒ subscription-like) but absent this period (query per close-checklist.md). Each gap is a finding ("NETFLIX appeared Apr+May, absent in June — charge missing, subscription cancelled, or card changed?") — the user answers; if a real entry is missing, it arrives via beancount-import/manual entry, never fabricated by this skill.

5. Flags

List every !-flagged entry dated in or before the period. Each is either resolved by the user now (their edit) or carried forward — counted in the report either way.

6. Report

Generate the period's numbers with the shared report recipes, using --file "$ledger" --json --no-input and --time "$month" on both report income-statement and report balance-sheet. Use beancount-ask's BQL recipes for any additional figures. Assemble the close report:

Close: 2026-06 (2026-06-01 … 2026-06-30)
Reconciled: Assets:Bank:Checking ✓ (ties to 7,874.60)     Unverified: Liabilities:CreditCard:Amex (no statement)
Assertions: 1 pinned, 1 unpinned
Recurring gaps: NETFLIX (present Apr, May — absent Jun)   Flags carried: 1 (2026-06-21 ! WHOLE FOODS)
Income: 3,000.00        Expenses: 203.60        Net: +2,796.40
check: PASS (`bea check`)
7. Commit

Re-run bea --file "$ledger" --json --no-input check after all reconciliation writes. Only when it passes, show what will be staged (the ledger files the close touched) and the commit message — subject close: <period> — <n> reconciled, <m> unverified, body = the close report. Commit only on explicit yes. On no: leave the working tree exactly as it is, report stays in the conversation. Never push.

What NOT to do

  • Don't skip or hide anything: unverified accounts, unpinned assertions, recurring gaps, and carried flags all appear in the report with counts.
  • Don't fabricate entries to fill gaps or force assertions to pass.
  • Don't propose the commit while the check is red.
  • Don't commit or push without explicit confirmation (and never push at all).
  • Don't re-implement reconciliation — delegate to beancount-reconcile per account.

© 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 5 other files (references) in skills/.claude/skills/beancount-close of bex-co/beancount-io.

  • SKILL.md
  • evals/evals.json
  • evals/files/eval1_ledger.beancount
  • evals/files/eval1_statement.csv
  • evals/files/eval5_ledger.beancount
  • references/close-checklist.md

Open the folder on GitHubat commit 5614bc7

Compare with similar skills

Beancount Close 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 Close compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Beancount Close this skillbex-co/beancount-io296—~1.4kAutomated safety check: PassMIT
Sync Upstreamnyaruka/phonenumbers1.6k—~2.8kAutomated safety check: PassMIT
Radiology Tablehuang-sir1/radiology-skills1.9k—~1.3kAutomated safety check: PassCustom licence
ERPClaw ERP Controlleravansaber/erpclaw114—~18kAutomated safety check: PassGPL-3.0
Odoo Agency Fleet Reviewerpipe-org/mcp-odoo421—~699Automated safety check: PassMIT
Forward Implementation FirstVuk97/forward-implementation-first176—~1.8kAutomated safety check: PassMIT

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 7 days ago
    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 18 days 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~18k tokensUpdated today
    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…

    421 GitHub stars~699 tokensUpdated 1 mo 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
  • Codify Jumbo Goal

    jumbocontext/cli

    A skill your agent uses when a Jumbo goal has been approved by QA review and needs architectural reconciliation before closing.

    276 GitHub stars~1.2k tokensUpdated 15 days ago
    Business, Finance & HRAuto-check passed

More from bex-co/beancount-io

All 27 skills in this repo
  • Beancount Import

    bex-co/beancount-io

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

    296 GitHub stars~3k tokensUpdated today
    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.

    296 GitHub stars~2k tokensUpdated today
    Auto-check passed
  • Beancount Init

    bex-co/beancount-io

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

    296 GitHub stars~1.2k tokensUpdated today
    Auto-check: notes
  • Beancount Options

    bex-co/beancount-io

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

    296 GitHub stars~3.7k tokensUpdated today
    Auto-check passed
  • Beancount Reconcile

    bex-co/beancount-io

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

    296 GitHub stars~4.1k tokensUpdated today
    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.

    296 GitHub stars~3.5k tokensUpdated today
    Auto-check passed

Questions about Beancount Close

What does Beancount Close do?

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…. Beancount Close is an agent skill from 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 the period reports.

When should I use Beancount Close?

Beancount Close fits situations like: month-end close; wrapping up the books.

How do I install Beancount Close in Claude Code?

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

How do I install Beancount Close in Codex?

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

Can I use Beancount Close 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-close -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-close, .gemini/skills/beancount-close, .github/skills/beancount-close and .opencode/skills/beancount-close in your project.

What does Beancount Close need to run?

Going by SKILL.md and its folder, Beancount Close needs the command-line tools its instructions call (git).

Does Beancount Close access the network?

SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Beancount Close safe to install?

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.

What licence does Beancount Close use?

Beancount Close 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 Close use?

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

What are the alternatives to Beancount Close?

Skills that share tags, products or a category with Beancount Close: Sync Upstream (nyaruka/phonenumbers, 1.6k stars), Radiology Table (huang-sir1/radiology-skills, 1.9k stars), ERPClaw ERP Controller (avansaber/erpclaw, 114 stars) and Odoo Agency Fleet Review (erpipe-org/mcp-odoo, 421 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Beancount Close?

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.