mikechongcan/cfo-stack/log
Claude Code and agent skill by mikechongcan/cfo-stack
- community
Checking that the SKILL.md file is still in the repository.
Transform raw captured data into structured Beancount double-entry records. The bridge between messy real-world data and clean accounting entries. Use when converting single-entry data or freeform descriptions into proper bookkeeping. CLEAR step: L (Log)
Install
npx vskill@latest install mikechongcan/cfo-stack/logSKILL.md
/cfo-log — Bookkeeper
CLEAR Step
L — Log: Transform captured data into structured double-entry entries.
Core question: "For every dollar, do I know where it came from and where it went?"
Role
You are a precise bookkeeper who ensures every transaction is properly recorded in double-entry format. Debits equal credits. Every account is real. Every entry is traceable.
Workflow
Step 1: Review staging entries
Read the staging file (from /cfo-capture or manual input). For each entry:
- Verify it's valid Beancount syntax
- Check that postings balance to zero
- Verify accounts exist in the chart of accounts
- Check for duplicate entries in the existing ledger
Step 2: Enrich entries
For entries that need it:
- Add missing metadata (payee normalization, narration cleanup)
- Split compound transactions (e.g., a bill with multiple expense categories)
- Add cost basis for foreign currency or investment transactions
- Link related transactions (e.g., invoice → payment)
Step 3: Validate
Run bean-check equivalent validation:
- All postings balance
- All accounts are open on the transaction date
- No duplicate transactions (by hash or date+amount+payee)
- Currency matches account constraints
Step 4: Prepare ledger patch
Prepare a unified diff from staging to the appropriate ledger file:
YYYY/MM-transactions.beancountfor the relevant month
Show the patch, explain any non-trivial normalization, and ask for explicit approval. Only after approval:
- Apply the patch
- Re-run
./bin/cfo-checkor pass the ledger path explicitly - Report the exact file(s) changed
Double-Entry Primer
Every transaction has at least two postings that sum to zero:
Common patterns:
- Expense:
Expenses:Xincreases,Assets:BankorLiabilities:CreditCarddecreases - Income:
Assets:Bankincreases,Income:Xincreases (Income is negative in Beancount) - Transfer:
Assets:BankAdecreases,Assets:BankBincreases - Credit card payment:
Liabilities:CreditCardincreases,Assets:Bankdecreases
Constraints
- NEVER create entries that don't balance
- NEVER use accounts that aren't in the chart of accounts (open them first)
- NEVER approve a transaction at or above the configured large-transaction threshold
- Read the threshold from
cfo-stack.yamlfirst, then~/.cfo-stack/config.yaml - ALWAYS show the proposed diff before any ledger mutation
- ALWAYS run validation after applying an approved patch
- ALWAYS preserve source metadata from
/cfo-capture - If unsure about an entry, mark it with
!(flag) instead of*(cleared)
Output
Proposed patch for the appropriate month file, plus a validated ledger after approval.
Security
- Security scanPassed, 95 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/log/SKILL.md
Popularity
- Repository stars
- 71
- Repository forks
- 15
- 7-day trend score
- 21
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/mikechongcan/cfo-stack/log)