Install
$ agentstack add skill-weklund-fiduciary-finance-query ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
Instructions
Answer the user's financial question using the unified SQLite ledger.
Data source
Primary: data/finance.db (SQLite — unified ledger of all transactions from Plaid + CSVs)
Query with: sqlite3 data/finance.db "SELECT ..."
Fallback (if DB missing): data/latest/*.json
Schema
transactions (
id TEXT PRIMARY KEY,
date TEXT, -- ISO format YYYY-MM-DD
description TEXT,
amount REAL, -- POSITIVE = debit (money spent), NEGATIVE = credit (income/refund)
merchant TEXT,
category TEXT, -- Plaid category (may be empty for CSV-sourced)
account_name TEXT,
account_mask TEXT, -- last 4 digits
account_type TEXT, -- depository, credit, loan, investment
institution TEXT,
source TEXT, -- 'plaid' or 'csv'
source_file TEXT
);
accounts (
account_id TEXT PRIMARY KEY,
name TEXT,
type TEXT,
subtype TEXT,
mask TEXT,
institution_id TEXT,
balance_current REAL,
balance_available REAL,
balance_limit REAL,
last_updated TEXT
);
Steps
- Check if
data/finance.dbexists. If not, suggest runningpython3 scripts/ingest.pyfirst. - Query the database using sqlite3 to answer the user's question.
- Present results clearly with specific numbers, dates, and merchant names.
Query patterns
# Date range spending
sqlite3 data/finance.db "SELECT description, amount, date FROM transactions WHERE date >= '2026-06-01' AND amount > 0 ORDER BY amount DESC LIMIT 20"
# Spending by merchant
sqlite3 data/finance.db "SELECT description, SUM(amount), COUNT(*) FROM transactions WHERE amount > 0 GROUP BY description ORDER BY SUM(amount) DESC LIMIT 20"
# Monthly totals
sqlite3 data/finance.db "SELECT substr(date,1,7) as month, SUM(CASE WHEN amount > 0 THEN amount ELSE 0 END) as spent, SUM(CASE WHEN amount 100 ORDER BY date DESC LIMIT 20"
Conventions
- amount > 0 = money spent (debit)
- amount < 0 = money received (credit/income)
- Dates are ISO format (YYYY-MM-DD)
- Always clarify the time period in your response
- Round dollar amounts to 2 decimal places
- Use
-header -columnfor readable output:sqlite3 -header -column data/finance.db "..."
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: weklund
- Source: weklund/fiduciary
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.