โ† All skills
Tencent SkillHub ยท Communication & Collaboration

Treeline Money

Chat with your finances from Treeline Money. Query balances, spending, budgets, and transactions.

skill openclawclawhub Free
0 Downloads
0 Stars
0 Installs
0 Score
High Signal

Chat with your finances from Treeline Money. Query balances, spending, budgets, and transactions.

โฌ‡ 0 downloads โ˜… 0 stars Unverified but indexed

Install for OpenClaw

Quick setup
  1. Download the package from Yavira.
  2. Extract the archive and review SKILL.md first.
  3. Import or place the package into your OpenClaw setup.

Requirements

Target platform
OpenClaw
Install method
Manual import
Extraction
Extract archive
Prerequisites
OpenClaw
Primary doc
SKILL.md

Package facts

Download mode
Yavira redirect
Package format
ZIP package
Source platform
Tencent SkillHub
What's included
SKILL.md

Validation

  • Use the Yavira download entry.
  • Review SKILL.md after the package is downloaded.
  • Confirm the extracted package contains the expected setup assets.

Install with your agent

Agent handoff

Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.

  1. Download the package from Yavira.
  2. Extract it into a folder your agent can access.
  3. Paste one of the prompts below and point your agent at the extracted folder.
New install

I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.

Upgrade existing

I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.

Trust & source

Release facts

Source
Tencent SkillHub
Verification
Indexed source record
Version
26.3.1401

Documentation

ClawHub primary doc Primary doc: SKILL.md 30 sections Open source page

Treeline Money

Chat with your finances. Ask questions like "What's my net worth?", "How much did I spend on groceries?", or "Am I over budget?" and get instant answers from your own financial data.

Quick Start

# 1. Install the CLI (OpenClaw handles this automatically) # 2. Enable demo mode (sample data) tl demo on # 3. Try it out tl status

First Time Setup

For agents: If tl commands fail with "command not found", the CLI needs to be installed. OpenClaw handles installation automatically via the skill metadata. Start with demo mode so users can try queries immediately. Verify the CLI is available with tl --version. Start with demo mode so users can try queries immediately. Optional: Download the desktop app for visual exploration of your data.

Demo Mode

Demo mode loads sample data so users can try queries without connecting a bank: tl demo on To switch to real data later: tl demo off Demo data is separate from real data.

CLI Behavior Notes

tl demo on prints a success message โ€” if it seems to hang, wait a few seconds (first run initializes the database) Use tl demo status to verify demo mode is enabled Some commands may take a few seconds on first run due to database initialization If you see errors about missing tables, try tl demo on again

Connecting Real Data

When the user is ready to move beyond demo mode, direct them to set up a data source with the guides linked below. Data source options: SimpleFIN ($1.50/month, US & Canada) Lunch Flow (~$3/month, global) CSV Import (free) Setup guides: Bank Sync ยท CSV Import Once set up, use tl sync to pull bank transactions or tl import to load a CSV.

What is Treeline?

Treeline Money is a local-first personal finance app. All your data stays on your device in a local DuckDB database. No cloud accounts, no subscriptions required (sync services are optional), full SQL access to your financial data.

Encrypted Databases

Encrypted databases work automatically when unlocked โ€” the encryption key is stored in the OS keychain. If you see "database is encrypted and locked" errors, tell the user to unlock it themselves before continuing: Open the Treeline desktop app and unlock from there, or Run tl encrypt unlock in their own terminal Do not attempt to unlock the database or handle credentials. Unlocking must be done by the user directly, outside this conversation. Once unlocked, the key persists in the keychain until the user locks it.

Response Formatting

  • Format all responses for mobile/chat:
  • Use bullet points, not markdown tables
  • Round numbers for readability ($1,234 not $1,234.56)
  • Lead with the answer, details second
  • Keep responses concise โ€” chat isn't a spreadsheet
  • Use line breaks to separate sections
  • Example good response:
  • Your net worth is $125k
  • Assets: $180k
  • Retirement: $85k
  • Savings: $25k
  • Checking: $10k
  • Home equity: $60k
  • Liabilities: $55k
  • Mortgage: $52k
  • Credit cards: $3k
  • Example bad response:
  • | Account | Type | Balance |
  • |---------|------|---------|
  • | My 401k Account | asset | 85234.56 |
  • ...

Read commands (run freely)

These commands are read-only and safe to run autonomously: tl status # Quick account summary with balances tl status --json # Same, but JSON output tl query "SQL" --json # Run any SQL query (database opened in read-only mode) tl sql "SQL" --json # Same as tl query (alias) tl backup list # List available backups tl doctor # Check database health tl demo status # Check if demo mode is on/off Note: tl query and tl sql open the database in read-only mode by default. They cannot modify data unless --allow-writes is passed (see write commands below). Use tl status for quick balance checks โ€” it's faster than a SQL query.

Write commands (ask the user first)

These commands modify local data. Always ask the user for confirmation before running them. tl query "SQL" --allow-writes --json # Run a SQL query with write access tl sql "SQL" --allow-writes --json # Same (alias) tl sync # Sync accounts/transactions from bank integrations tl sync --dry-run # Preview what would sync (read-only, safe to run) tl import FILE -a ACCOUNT # Import transactions from CSV tl import FILE -a ACCOUNT --dry-run # Preview import without applying (read-only, safe to run) tl import FILE -a ACCOUNT --json # JSON output for scripting tl backup create # Create a backup tl backup restore NAME # Restore a backup tl compact # Compact database (reclaim space, optimize) tl tag "groceries" --ids ID1,ID2 # Apply tags to transactions tl demo on|off # Toggle demo mode (sample data) Tip: --dry-run variants are read-only and safe to run without confirmation. Use them to preview before asking the user to confirm the actual operation. Use tl compact if the user mentions slow queries โ€” it optimizes the database.

CSV Import Details

tl import auto-detects column mappings from CSV headers. Most bank CSVs work out of the box: tl import bank_export.csv --account "Chase Checking" The --account / -a flag accepts an account name (case-insensitive, substring match) or UUID. Always preview first with --dry-run to verify columns were detected correctly: tl import bank_export.csv -a "Checking" --dry-run --json All import flags (all optional except --account): FlagPurposeExample--date-columnOverride date column--date-column "Post Date"--amount-columnOverride amount column--amount-column "Amt"--description-columnOverride description column--description-column "Memo"--debit-columnUse debit column (instead of amount)--debit-column "Debit"--credit-columnUse credit column (instead of amount)--credit-column "Credit"--balance-columnRunning balance (creates snapshots)--balance-column "Balance"--flip-signsNegate amounts (credit card CSVs)--flip-signs--debit-negativeNegate positive debits--debit-negative--skip-rows NSkip N rows before header--skip-rows 3--number-formatus, eu, or eu_space--number-format eu--profile NAMELoad a saved profile--profile chase--save-profile NAMESave settings as profile--save-profile chase--dry-runPreview without importing--dry-run--jsonJSON output--json Common patterns for agents: # Step 1: Find the account UUID tl status --json # Step 2: Preview import tl import transactions.csv -a "550e8400-e29b-41d4-a716-446655440000" --dry-run --json # Step 3: Execute import tl import transactions.csv -a "550e8400-e29b-41d4-a716-446655440000" --json Duplicate transactions are automatically detected and skipped on re-import via fingerprinting.

User Skills

Treeline supports user-created skills for personal financial knowledge. Use tl skills list --json to discover existing skills and tl skills read <path> to read them. Creating skills: When you learn something reusable about the user's finances โ€” tag conventions, account meanings, tax categories, budget targets โ€” ask if they'd like to save it as a skill for future conversations. To create one, write a SKILL.md file to ~/.treeline/skills/<name>/SKILL.md (use tl skills path to get the directory). Follow the Agent Skills standard (agentskills.io).

Net Worth

tl query " WITH latest AS ( SELECT DISTINCT ON (account_id) account_id, balance FROM sys_balance_snapshots ORDER BY account_id, snapshot_time DESC ) SELECT SUM(CASE WHEN a.classification = 'asset' THEN s.balance ELSE 0 END) as assets, SUM(CASE WHEN a.classification = 'liability' THEN ABS(s.balance) ELSE 0 END) as liabilities, SUM(CASE WHEN a.classification = 'asset' THEN s.balance ELSE -ABS(s.balance) END) as net_worth FROM accounts a JOIN latest s ON a.account_id = s.account_id " --json

Account Balances

tl query " WITH latest AS ( SELECT DISTINCT ON (account_id) account_id, balance FROM sys_balance_snapshots ORDER BY account_id, snapshot_time DESC ) SELECT a.name, a.classification, a.institution_name, s.balance FROM accounts a JOIN latest s ON a.account_id = s.account_id ORDER BY s.balance DESC " --json

True Spending (Excluding Internal Moves)

Default pattern (exclude internal moves): tl query " SELECT SUM(ABS(amount)) as total_spent FROM transactions WHERE amount < 0 AND transaction_date >= date_trunc('month', current_date) AND NOT (tags && ARRAY['transfer', 'savings', 'investment']) " --json

Spending by Tag

tl query " SELECT tags, SUM(ABS(amount)) as spent FROM transactions WHERE amount < 0 AND transaction_date >= '2026-01-01' AND transaction_date < '2026-02-01' AND tags IS NOT NULL AND tags != '[]' GROUP BY tags ORDER BY spent DESC " --json

Recent Transactions

tl query " SELECT t.description, t.amount, t.transaction_date, a.name as account FROM transactions t JOIN accounts a ON t.account_id = a.account_id ORDER BY t.transaction_date DESC LIMIT 10 " --json

Core Tables

accounts ColumnDescriptionaccount_idUUID primary keynameAccount display nameclassificationasset or liabilityaccount_typecredit, investment, Loan, other, or nullinstitution_nameBank/institution namecurrencyCurrency code (e.g., USD)is_manualBoolean โ€” manually added vs synced sys_balance_snapshots โ€” Source of truth for balances ColumnDescriptionsnapshot_idUUID primary keyaccount_idFK to accountsbalanceBalance at snapshot timesnapshot_timeWhen recordedsourcesync, manual, etc. transactions ColumnDescriptiontransaction_idUUID primary keyaccount_idFK to accountsamountSigned (negative = expense)descriptionTransaction descriptiontransaction_dateWhen it occurredposted_dateWhen it clearedtagsArray of tags

Tags vs Categories

Tags are the primary concept in Treeline โ€” transactions can have multiple tags. Categories come from the budget plugin (plugin_budget), which maps tags to budget categories. Not all users have this plugin.

Plugin System

Plugins have their own DuckDB schemas: plugin_<name>.*

Discovering Installed Plugins

tl query " SELECT schema_name FROM information_schema.schemata WHERE schema_name LIKE 'plugin_%' " --json

Common Plugin Schemas

plugin_budget.categories โ€” Budget categories ColumnDescriptioncategory_idUUID primary keymonthYYYY-MM formattypeincome or expensenameCategory nameexpectedBudgeted amounttagsArray of tags to match plugin_goals.goals โ€” Savings goals ColumnDescriptionidUUID primary keynameGoal nametarget_amountTarget amounttarget_dateTarget datecompletedBooleanactiveBoolean plugin_subscriptions โ€” Detected recurring charges plugin_cashflow โ€” Cash flow projections plugin_emergency_fund โ€” Emergency fund tracking Check tl skills list for user-specific plugin preferences.

Getting Current Balances

Always use latest snapshot: WITH latest AS ( SELECT DISTINCT ON (account_id) account_id, balance FROM sys_balance_snapshots ORDER BY account_id, snapshot_time DESC ) SELECT a.name, s.balance FROM accounts a JOIN latest s ON a.account_id = s.account_id

Working with Tags

Tags are arrays: -- Contains a specific tag WHERE tags @> ARRAY['groceries'] -- Contains any of these tags WHERE tags && ARRAY['food', 'dining'] -- Note: UNNEST doesn't work in all contexts in DuckDB -- Instead, GROUP BY tags directly

Date Filters

-- This month WHERE transaction_date >= date_trunc('month', current_date) -- Specific month WHERE transaction_date >= '2026-01-01' AND transaction_date < '2026-02-01'

Budget vs Actual

SELECT c.name, c.expected, COALESCE(SUM(ABS(t.amount)), 0) as actual, c.expected - COALESCE(SUM(ABS(t.amount)), 0) as remaining FROM plugin_budget.categories c LEFT JOIN transactions t ON t.tags && c.tags AND t.amount < 0 AND t.transaction_date >= (c.month || '-01')::DATE AND t.transaction_date < (c.month || '-01')::DATE + INTERVAL '1 month' WHERE c.month = strftime(current_date, '%Y-%m') AND c.type = 'expense' GROUP BY c.category_id, c.name, c.expected

Question Mapping

User asksApproach"Net worth?"Net worth query"Balances?"Account balances query"How much in [X]?"Filter by name ILIKE '%X%'"How much did I spend?"True spending query (exclude internal moves)"Spending on [tag]?"Filter by tag"Am I over budget?"Budget vs actual (requires budget plugin)"Recent transactions"Order by date DESC, limit"Savings?"Filter accounts by name/type"Retirement?"Filter by 401k, IRA, retirement keywords"Import CSV" / "Upload transactions"Guide through tl import โ€” preview first with --dry-run"Import from [bank name]"Use tl import with appropriate flags for that bank's CSV format

Tips

Always use --json for parseable output Amounts are signed โ€” negative = expense Use classification for asset/liability Balances live in snapshots, not the accounts table Check tl skills list for user-specific account meanings and tag conventions

Privacy Note

All data is local (~/.treeline/treeline.duckdb). Never share transaction descriptions or account details outside the conversation unless explicitly asked.

Category context

Messaging, meetings, inboxes, CRM, and teammate communication surfaces.

Source: Tencent SkillHub

Largest current source with strong distribution and engagement signals.

Package contents

Included in package
1 Docs
  • SKILL.md Primary doc