원클릭으로
budgetclaw
Personal finance tracker — track transactions, budgets, portfolio, and net worth locally in SQLite
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Personal finance tracker — track transactions, budgets, portfolio, and net worth locally in SQLite
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
| name | budgetclaw |
| description | Personal finance tracker — track transactions, budgets, portfolio, and net worth locally in SQLite |
| version | 0.1.0 |
| user-invocable | true |
| emoji | 💰 |
| metadata | {"openclaw":{"always":false}} |
BudgetClaw stores all financial data locally in a SQLite database at ~/.budgetclaw/budget.db. No cloud, no accounts, no syncing required.
Activate BudgetClaw tools whenever the user mentions:
| User says | Action |
|---|---|
| "I spent $45 at Whole Foods" | budgetclaw_add_transaction amount=-45, merchant="Whole Foods", category="Food & Dining", subcategory="Groceries" |
| "Got paid $3,200 salary today" | budgetclaw_add_transaction amount=3200, category="Income", subcategory="Salary" |
| "Paid $1,500 rent" | budgetclaw_add_transaction amount=-1500, category="Housing", subcategory="Rent/Mortgage" |
| "Coffee at Starbucks, $6.50" | budgetclaw_add_transaction amount=-6.50, merchant="Starbucks", category="Food & Dining", subcategory="Coffee" |
| "Netflix charged me $15.99" | budgetclaw_add_transaction amount=-15.99, merchant="Netflix", category="Entertainment", subcategory="Streaming" |
| "Transferred $500 to savings" | budgetclaw_add_transaction amount=-500, category="Transfers" (in checking), amount=+500, category="Transfers" (in savings) |
Amount convention: negative = money out (expenses), positive = money in (income/deposits).
Always use today's date (YYYY-MM-DD) unless the user specifies otherwise. If no account is mentioned, call budgetclaw_get_accounts and use the most appropriate one (e.g., default to checking for everyday purchases).
| User says | Action |
|---|---|
| "How much did I spend this month?" | budgetclaw_get_spending_summary with current month date range |
| "Show my recent transactions" | budgetclaw_get_transactions with default limit |
| "What did I spend on food in January?" | budgetclaw_get_transactions category="Food & Dining", from_date/to_date set to January |
| "Find my Uber charges" | budgetclaw_get_transactions search="Uber" |
| "How much did I spend on subscriptions?" | budgetclaw_get_transactions category="Entertainment", subcategory="Streaming" |
| User says | Action |
|---|---|
| "Set a $500 grocery budget" | budgetclaw_set_budget category="Food & Dining", amount=500 |
| "How am I doing on my budget?" | budgetclaw_get_budgets — shows actual vs. budgeted with % used |
| "Remove my transport budget" | budgetclaw_delete_budget with the budget's ID |
After setting a budget, immediately call budgetclaw_get_budgets and show the user their budget with actuals.
| User says | Action |
|---|---|
| "I have 10 shares of AAPL" | budgetclaw_upsert_holding symbol="AAPL", quantity=10, asset_type="stock" |
| "I bought 0.5 BTC" | budgetclaw_upsert_holding symbol="BTC", quantity=0.5, asset_type="crypto" |
| "Show my portfolio" | budgetclaw_refresh_prices then budgetclaw_get_portfolio |
| "Update my stock prices" | budgetclaw_refresh_prices |
| "I sold all my MSFT" | budgetclaw_delete_holding with the holding's ID |
Always refresh prices before showing portfolio value or net worth.
| User says | Action |
|---|---|
| "What's my net worth?" | budgetclaw_refresh_prices → budgetclaw_snapshot_net_worth → display result |
| "How has my net worth changed?" | budgetclaw_get_net_worth_history limit=12 — show trend |
| "Take a net worth snapshot" | budgetclaw_snapshot_net_worth with optional notes |
When a user is new to BudgetClaw (no accounts exist), walk them through setup:
Create accounts — call budgetclaw_add_account for each:
checking)savings)credit)investment)crypto)Set opening balances — budgetclaw_update_account_balance for each account
Import past transactions — budgetclaw_import_csv if the user has a CSV export from their bank, or enter manually
Set monthly budgets — budgetclaw_set_budget for the categories they care about
First net worth snapshot — budgetclaw_refresh_prices then budgetclaw_snapshot_net_worth
budgetclaw_get_accounts silently and pick the right one.Always confirm before deleting. When a user asks to delete an account:
budgetclaw_get_accounts to find the account.budgetclaw_delete_account. Tell them exactly what will be deleted:
budgetclaw_delete_account after the user confirms.To delete ALL accounts and start fresh:
budgetclaw_get_accounts to list all accounts.budgetclaw_delete_account for each account one at a time. It handles Plaid item removal, credential cleanup, and cascade-deletes transactions and holdings."I paid my credit card" — this is a transfer, not spending:
amount=-500, category="Transfers"amount=500, category="Transfers""I deposited a check" — income or transfer depending on context:
category="Income", subcategory="Salary"category="Income", subcategory="Freelance"category="Transfers""I refunded X" — a positive transaction in the same category as the original purchase.
Built-in categories (use budgetclaw_get_categories for the full list):
| Category | Subcategories |
|---|---|
| Food & Dining | Groceries, Restaurants, Coffee |
| Transport | Gas, Parking, Public Transit, Rideshare |
| Housing | Rent/Mortgage, Utilities, Internet, Insurance |
| Health | Medical, Pharmacy, Fitness |
| Entertainment | Streaming, Games, Movies |
| Shopping | Clothing, Electronics, Home Goods |
| Personal Care | Haircut, Beauty |
| Education | Tuition, Books, Courses |
| Income | Salary, Freelance, Investment Income, Gifts |
| Savings & Investments | Savings Transfer, Brokerage Deposit |
| Transfers | Between Own Accounts |
| Other | — |
For uncategorized transactions, use "Other". Suggest budgetclaw_add_category if a user repeatedly uses a category that doesn't exist.
{
"file_path": "/path/to/transactions.csv",
"account_id": "<account-id>"
}
The importer auto-detects common column names (date, amount, description, merchant, category). For custom columns:
{
"mapping": {
"date": "Transaction Date",
"amount": "Debit Amount",
"description": "Memo"
}
}
Re-importing is safe — duplicates are automatically skipped.
Activate this workflow when the user says things like:
Workflow:
| Step | Tool | Notes |
|---|---|---|
| 1 | budgetclaw_get_accounts | Identify the right account to import into |
| 2 | budgetclaw_read_statement { file_path } | Extract full text from ALL pages — never skip this |
| 3 | (parse internally) | Identify each transaction: date, merchant/description, amount |
| 4 | (categorize internally) | Map to BudgetClaw categories using the taxonomy above |
| 5 | budgetclaw_import_transactions { account_id, transactions: [...] } | Bulk insert all at once |
Key notes:
budgetclaw_read_statement first — PDF channel previews are truncated; this tool extracts all pages.external_id are silently skipped. Supply external_id on each transaction (e.g. "stmt-{date}-{amount}-{description_hash}") to enable reliable deduplication.imported / skipped counts in the result confirm what happened.Connect real bank accounts to automatically sync transactions and balances.
Plaid is not free in production. For live bank connections, a paid Plaid plan is required.
PLAID_CLIENT_ID and PLAID_SECRET from the dashboardPLAID_CLIENT_ID — your client IDPLAID_SECRET — your secret key (production)This is a two-step flow:
budgetclaw_plaid_link — returns a link_url and link_token immediately.link_url to the user and tell them to let you know when they're done.budgetclaw_plaid_link_complete { link_token } — confirms completion with Plaid, then automatically syncs accounts, transactions, and holdings.If budgetclaw_plaid_link_complete returns {status:"waiting"}, Plaid hasn't received the completion yet — ask the user to try again or wait a moment, then retry.
The first sync happens automatically when Plaid Link completes. For subsequent syncs:
| Step | Tool | Notes |
|---|---|---|
| 1 | budgetclaw_sync_connection { id: connection_id } | Pull new/modified/removed transactions |
| 2 | budgetclaw_get_transactions | View synced transactions |
Subsequent syncs use cursor-based pagination — only new, modified, or removed transactions are fetched. No duplicates.
After syncing, budgetclaw_get_accounts shows the latest balances pulled from Plaid.
Plaid access tokens are stored in an encrypted file at ~/.budgetclaw/credentials.json.enc (AES-256-GCM).
Track your crypto portfolio and fiat balances from Coinbase.
This is a single-step flow:
budgetclaw_coinbase_link { api_key, api_secret } — validates the credentials, then automatically syncs all crypto wallets, fiat balances, and transaction history.If budgetclaw_coinbase_link returns {status:"duplicate"}, Coinbase is already connected.
crypto) with individual holdings per coin (BTC, ETH, etc.)checking accountsThe first sync happens automatically when Coinbase is linked. For subsequent syncs:
| Step | Tool | Notes |
|---|---|---|
| 1 | budgetclaw_sync_connection { id: connection_id } | Pull new transactions and update balances |
| 2 | budgetclaw_get_portfolio | View crypto holdings with prices |
Call budgetclaw_delete_account with any Coinbase account ID. This removes all connected Coinbase accounts, transactions, holdings, and the stored API credentials.
YYYY-MM-DDbudgetclaw_refresh_prices before any net worth snapshotbudgetclaw_get_spending_summary only counts negative amounts (expenses), income is excluded