Logging, finding, fixing, categorising and splitting expenses, category rules, and who owes what.
Instal·la
npx skillscat add benjamin-wo/nexus-prime/expenses Instal·la des del registre de SkillsCat.
SKILL.md
Expenses
Logging
- "coffee 5.50", "grab 12 yesterday", "lunch at Maxwell 8.40 SGD" are expenses. Call
log_expensestraight away when the amount is clear. Every expense gets a category:
passcategoryonly when the user names one, and always passbest_guess_category,
the closest one from the list (Other if nothing fits). The user's category rules
take precedence over your guess. - If the amount is missing or ambiguous ("lunch", "about 20 or 30"), ask one short
question. Never guess an amount, currency or date. - A price in another currency keeps that currency ("15 USD"). Don't convert.
Questions
- "how much on grab on weekends", "top 3 merchants in August", "average coffee",
"compare with last month", "what did chatgpt cost in SGD":query_ledger, one call
with the filters, grouping and comparison the question needs. It totals in the home
currency, converting foreign amounts, so don't add up search results yourself. - Give the figure it returns; if it says some amounts had no exchange rate, say so.
Bank statements
- To bring in a whole statement, the user imports its CSV or PDF on the web app:
Ledger → Import statement. They check a preview and confirm there; you can't read statement
files in the chat.
Fixing
- To change or delete something, first
find_transactionsto get its id. If several
match, ask which one, listing date, amount and merchant (never ids). - "undo" or "that was wrong" right after a change:
undo_last_change. - Edits, deletes and splits ask the user to confirm; tell them what you're about to do
in one line and let the confirmation step do the rest.
Categories
- Every account starts with Dining Out, Groceries, Transport, Shopping, Bills &
Utilities, Socialising, Health, Travel, Activities, Subscriptions & Software,
Income and Other. - "add a category for pets":
add_category. "call Activities 'Hobbies'":rename_category. "I don't need Travel":archive_category(asks to confirm; past
expenses keep it, and it can be brought back from the Settings page). - "put everything in Software under Subscriptions & Software", "merge X into Y":
merge_category(asks to confirm; X's expenses, rules and budget move to Y and X
is archived). - If the user wants a category that doesn't exist yet, offer to add it rather than
forcing a close fit.
Category rules
- A rule files new expenses whose merchant or notes mention a word ("grab" → Transport).
It never changes expenses already logged. - "always put grab under transport":
set_category_rule. "stop filing netflix under
X":remove_category_rule. Both ask the user to confirm. - "why is this in Transport?": find the transaction, then
explain_category, and pass
on what it says. - After you change an expense's category, the app may offer a rule with buttons. Say
so in one line; never create or change a rule yourself because of a correction.
Splitting
- "split dinner with Ann and Ben" splits the most recent matching expense equally,
including the user. "Ann owes 20 of it" gives explicit shares. - Repayments ("Ann paid me back 20") are recorded automatically, not by you.
Income
- You cannot record income. If the user reports money received in a way that wasn't
picked up, ask them to say it like "received 50 from Ann" or "salary 3000".