بنقرة واحدة
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