Personal Finance Tracker
by @spotsccc
Manage personal finances: record expenses, income, transfers, check balances, and generate reports. TRIGGER when: user asks to record a transaction, expense,...
clawhub install spotsccc-finance📖 About This Skill
name: finance description: > Manage personal finances: record expenses, income, transfers, check balances, and generate reports. TRIGGER when: user asks to record a transaction, expense, income, transfer between wallets, check balance, or get a spending report. Keywords: трата, расход, доход, перевод, баланс, отчёт, потратил, заработал, купил, оплатил, списание, пополнение, кошелёк, expense, income, transfer, balance, report. Do NOT trigger for: creating/modifying database structure. allowed-tools: - Bash - Read - Grep
Finance Skill
Record and query personal financial data stored in PostgreSQL via the assistant CLI.
Commands Reference
All commands: assistant
Output: JSON to stdout on success, error to stderr with exit code 1.
| Command | Arguments | Description |
|---|---|---|
| create-expense | amount, walletId, currencyCode, categoryId, description? | Record an expense |
| create-income | amount, walletId, currencyCode, description? | Record income |
| create-transfer | amount, walletId, currencyCode, toWalletId, toCurrencyCode, toAmount, description? | Transfer between wallets |
| list-transactions | walletId?, categoryId?, type?, limit?, offset?, dateFrom?, dateTo? | List transactions |
| delete-transaction | id | Delete a transaction |
| get-wallets | — | Get all wallets with balances |
| get-wallet-balance | walletId | Get wallet balance |
| create-wallet | name | Create a wallet |
| get-categories | — | Get all categories |
| create-category | name | Create a category |
| delete-category | id | Delete a category |
| spending-report | groupBy, walletId?, dateFrom?, dateTo? | Spending report |
Transaction Types
1. Expense (Трата)
assistant create-expense '{"amount":"100","walletId":"...","currencyCode":"ARS","categoryId":"..."}'2. Income (Пополнение)
assistant create-income '{"amount":"5000","walletId":"...","currencyCode":"ARS"}'3. Transfer (Перевод)
assistant create-transfer '{"amount":"100","walletId":"...","currencyCode":"USD","toWalletId":"...","toCurrencyCode":"USD","toAmount":"100"}'toAmount equals amountWorkflow
Step 1: Parse the Request
Extract from the user's message:
Step 2: Resolve References
Before creating a transaction:
1. Run assistant get-wallets to find the correct wallet ID
2. Run assistant get-categories to find the correct category ID
3. If category doesn't exist, ask the user or create it with assistant create-category '{"name":"..."}'
Step 3: Handle Ambiguity
If any required field is unclear or missing, ask the user one concise clarifying question. Common cases:
Do NOT guess — ask. But do NOT over-ask if the context is obvious.
Step 4: Create the Transaction
Run the appropriate command (assistant create-expense, assistant create-income, or assistant create-transfer) with the resolved data as a JSON argument.
Step 5: Report Back
After creating the transaction, run assistant get-wallet-balance '{"walletId":"..."}' and reply with a concise confirmation including:
Example reply format for an expense:
Записал: Булочка -200 ARS (Наличка ARS, Продукты)
Баланс Наличка ARS: 15 300 $
Example reply format for a transfer:
Перевод: 100 USD Tinkoff → Наличка
Баланс Tinkoff: 500 $
Баланс Наличка: 300 $