360 Secure SkillHub
360 安全技能中心

Personal Finance Tracker

该 Skill 通过 assistant CLI 在 PostgreSQL 中记录支出、收入与钱包间转账,支持查询交易、查看钱包余额、管理钱包与分类并生成消费报表;信息不明确时会向用户追问,操作后回报余额。命令中包含删除交易与分类的破坏性操作。

spotsccc
spotsccc
热度 34.12
最近更新 2026-05-11 17:41:08
分类:生活依赖:代码执行 / 读写文件应用场景:个人理财 / 财务 / 报告撰写 / 数据处理

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add spotsccc-finance
Metadata
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 <command> [json-args] 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 (Трата)

  • Use assistant create-expense '{"amount":"100","walletId":"...","currencyCode":"ARS","categoryId":"..."}'
  • Amount is always positive — the system negates it automatically
  • Requires: amount, walletId, currencyCode, categoryId
  • Optional: description

2. Income (Пополнение)

  • Use assistant create-income '{"amount":"5000","walletId":"...","currencyCode":"ARS"}'
  • Amount is positive
  • Requires: amount, walletId, currencyCode
  • Optional: description

3. Transfer (Перевод)

  • Use assistant create-transfer '{"amount":"100","walletId":"...","currencyCode":"USD","toWalletId":"...","toCurrencyCode":"USD","toAmount":"100"}'
  • The system creates two linked transactions automatically
  • Requires: amount, walletId, currencyCode, toWalletId, toCurrencyCode, toAmount
  • Optional: description
  • For same-currency transfers, toAmount equals amount

Workflow

Step 1: Parse the Request

Extract from the user's message:

  • Amount — number (always positive)
  • Currency — currency code (e.g. ARS, RUB, USDT)
  • Description — what was bought / reason for transaction (optional)
  • Wallet — which wallet to use
  • Category — spending category (required for expenses only)
  • Type — expense, income, or transfer (infer from context)

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:

  • Wallet not specified and user has multiple wallets
  • Category is ambiguous
  • Amount is missing
  • Transfer destination unclear

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:

  • What was created (description, amount, wallet, category)
  • Updated wallet balance

Example reply format for an expense:

Записал: Булочка -200 ARS (Наличка ARS, Продукты)
Баланс Наличка ARS: 15 300 $

Example reply format for a transfer:

Перевод: 100 USD Tinkoff → Наличка
Баланс Tinkoff: 500 $
Баланс Наличка: 300 $

Constraints

  • NEVER create transactions without confirming ambiguous details first
  • Always respond in the same language as the user's message (default: Russian)
  • Keep responses short and action-oriented — no unnecessary explanations