بنقرة واحدة
treeline
Chat with your finances from Treeline Money. Query balances, spending, budgets, and transactions.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Chat with your finances from Treeline Money. Query balances, spending, budgets, and transactions.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
BIM应用与图纸会审智能助手。支持BIM模型应用策划、图纸会审问题梳理、碰撞检查分析、 施工深化设计协调。 适用场景: (1) 用户说"帮我做图纸会审"、"BIM怎么用"、"图纸有问题" (2) 图纸会审问题清单整理与分类 (3) BIM应用策划(LOD等级/应用点/交付标准) (4) 碰撞检查报告编写与问题分类 (5) 施工深化设计协调(机电综合/钢结构/幕墙) (6) 工程量提取与复核 (7) 施工模拟(4D进度/5D造价)策划 (8) BIM交付标准与模型质量审查 (9) 竣工BIM模型移交要求
施工方案智能生成助手。根据工程类型、规模、地质条件、工期要求等信息,自动生成结构化施工方案。 适用场景: (1) 用户说"帮我写施工方案"、"生成施工组织设计"、"编制专项施工方案" (2) 涉及土建、市政、装饰装修、机电安装、桥梁、隧道等各类工程施工方案编制 (3) 需要生成安全专项方案(高支模、深基坑、脚手架、起重吊装等危大工程) (4) 施工方案审查、优化、补充完善 (5) 施工工序策划、资源配置计划、质量控制措施编制
工程合同智能审查助手。对建设工程合同进行专业审查,识别风险条款、不平等条款、缺失条款, 提供修改建议和谈判策略。 适用场景: (1) 用户说"帮我审查合同"、"看看这个合同有没有问题"、"合同条款怎么改" (2) 建设工程施工合同(EPC/总包/分包/劳务)审查 (3) 工程咨询、监理、设计合同审查 (4) 采购合同、设备租赁合同审查 (5) 合同谈判策略建议 (6) 合同条款起草与完善 (7) 合同履行过程中的条款解读 (8) 索赔条款、违约责任条款分析
工程造价估算与清单编制助手。提供工程量计算、清单编制、定额套用、造价分析全流程支持。 适用场景: (1) 用户说"帮我估算造价"、"编制工程量清单"、"这个工程大概多少钱" (2) 投资估算、设计概算、施工图预算编制 (3) 工程量清单(GB 50500)编制与复核 (4) 综合单价分析、定额套用咨询 (5) 竣工结算审核要点梳理 (6) 材料价格信息查询与调差计算 (7) 暂列金额、暂估价、计日工处理 (8) 造价纠纷分析与鉴定配合
工程技术咨询顾问。提供专业的工程技术问题解答、方案比选、技术可行性分析和工程造价咨询。 适用场景: (1) 用户问"这个方案技术上可行吗"、"有没有更好的方案"、"这个做法对不对" (2) 结构选型、基础形式、施工工艺的技术咨询 (3) 工程造价估算、清单编制、定额套用咨询 (4) 工程质量问题诊断与处理建议 (5) 新技术、新材料、新工艺的适用性分析 (6) 工程验收标准、检测要求咨询 (7) 设计图纸审查、技术交底要点梳理 (8) 工程事故分析与处理建议
工程诉讼风险评估助手。对工程纠纷进行法律风险分析,评估胜诉概率,提供诉讼策略和非诉解决建议。 适用场景: (1) 用户说"我们要打官司了"、"对方违约了怎么办"、"这个纠纷能赢吗" (2) 工程款追讨(拖欠工程款、结算纠纷) (3) 工期延误纠纷(索赔/反索赔) (4) 工程质量纠纷(缺陷修复/损失赔偿) (5) 合同解除纠纷 (6) 分包/劳务纠纷 (7) 工程保险理赔纠纷 (8) 建设工程优先受偿权行使 (9) 诉前保全、证据保全建议 (10) 仲裁vs诉讼路径选择
| name | treeline |
| description | Chat with your finances from Treeline Money. Query balances, spending, budgets, and transactions. |
| version | 26.2.605 |
| user-invocable | true |
| homepage | https://treeline.money |
| metadata | {"clawdbot":{"emoji":"🌲","requires":{"bins":["tl"]},"install":[{"id":"tl-mac","kind":"download","url":"https://github.com/treeline-money/treeline/releases/latest/download/tl-macos-arm64","bins":["tl"],"label":"Install Treeline CLI (macOS)","os":["darwin"]},{"id":"tl-linux","kind":"download","url":"https://github.com/treeline-money/treeline/releases/latest/download/tl-linux-x64","bins":["tl"],"label":"Install Treeline CLI (Linux)","os":["linux"]},{"id":"tl-win","kind":"download","url":"https://github.com/treeline-money/treeline/releases/latest/download/tl-windows-x64.exe","bins":["tl.exe"],"label":"Install Treeline CLI (Windows)","os":["win32"]}]}} |
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.
# 1. Install the CLI (OpenClaw handles this automatically)
# 2. Enable demo mode (sample data)
tl demo on
# 3. Try it out
tl status
For agents: If
tlcommands 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.
The Treeline CLI is installed automatically by OpenClaw when this skill is added. The binary is downloaded directly from GitHub releases.
Verify with tl --version.
Optional: Download the desktop app for visual exploration of your data.
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.
tl demo on prints a success message — if it seems to hang, wait a few seconds (first run initializes the database)tl demo status to verify demo mode is enabledtl demo on againSimpleFIN ($1.50/month, US & Canada)
tl setup simplefin <setup-token>tl syncLunch Flow (~$3/month, global: US, Canada, Brazil, EU, UK, Asia)
tl setup lunchflow <api-key>tl syncCSV Import (free, CLI or desktop app)
tl status --json (grab the account name or UUID)tl import export.csv --account "Checking" --dry-runtl import export.csv --account "Checking"Auto-detection handles most CSVs. If columns don't match, specify them:
tl import export.csv --account "Checking" \
--date-column "Trans Date" \
--amount-column "Amount" \
--description-column "Memo"
For European formats: --number-format eu (1.234,56) or --number-format eu_space (1 234,56).
For credit cards where charges are positive: --flip-signs.
For CSVs with separate debit/credit columns: --debit-column "Debit" --credit-column "Credit".
For CSVs with bank letterhead rows before the header: --skip-rows 3.
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 not supported. If the user has enabled database encryption in Treeline, CLI commands will fail. They'll need to either:
If you see "database is encrypted" errors, explain this limitation.
Format all responses for mobile/chat:
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 |
...
The tl CLI can do more than just queries:
tl status # Quick account summary with balances
tl status --json # Same, but JSON output
tl query "SQL" --json # Run any SQL query (read-only by default)
tl sql "SQL" --json # Same as tl query (alias)
tl query "SQL" --allow-writes # Enable write operations (INSERT, UPDATE, DELETE)
tl sync # Sync accounts/transactions from bank integrations
tl sync --dry-run # Preview what would sync
tl import FILE -a ACCOUNT # Import transactions from CSV
tl import FILE -a ACCOUNT --dry-run # Preview import without applying
tl import FILE -a ACCOUNT --json # JSON output for scripting
tl backup create # Create a backup
tl backup list # List available backups
tl backup restore NAME # Restore a backup
tl doctor # Check database health
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)
Note:
tl queryandtl sqlare identical — use whichever you prefer. The database is opened read-only by default. Use--allow-writesto enable write operations.
Use tl status for quick balance checks — it's faster than a SQL query.
Use tl compact if the user mentions slow queries — it optimizes the database.
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):
| Flag | Purpose | Example |
|---|---|---|
--date-column | Override date column | --date-column "Post Date" |
--amount-column | Override amount column | --amount-column "Amt" |
--description-column | Override description column | --description-column "Memo" |
--debit-column | Use debit column (instead of amount) | --debit-column "Debit" |
--credit-column | Use credit column (instead of amount) | --credit-column "Credit" |
--balance-column | Running balance (creates snapshots) | --balance-column "Balance" |
--flip-signs | Negate amounts (credit card CSVs) | --flip-signs |
--debit-negative | Negate positive debits | --debit-negative |
--skip-rows N | Skip N rows before header | --skip-rows 3 |
--number-format | us, eu, or eu_space | --number-format eu |
--profile NAME | Load a saved profile | --profile chase |
--save-profile NAME | Save settings as profile | --save-profile chase |
--dry-run | Preview without importing | --dry-run |
--json | JSON 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.
Before answering finance questions, check for CONTEXT.md in this skill directory.
If it exists, read it first — it contains user-specific knowledge:
Learning new context: When you discover something about the user's setup:
See the User Context Pattern section at the end for the template.
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
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
Check CONTEXT.md for internal_transfer_tags. Default pattern:
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
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
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
accounts
| Column | Description |
|---|---|
account_id | UUID primary key |
name | Account display name |
classification | asset or liability |
account_type | credit, investment, Loan, other, or null |
institution_name | Bank/institution name |
currency | Currency code (e.g., USD) |
is_manual | Boolean — manually added vs synced |
sys_balance_snapshots — Source of truth for balances
| Column | Description |
|---|---|
snapshot_id | UUID primary key |
account_id | FK to accounts |
balance | Balance at snapshot time |
snapshot_time | When recorded |
source | sync, manual, etc. |
transactions
| Column | Description |
|---|---|
transaction_id | UUID primary key |
account_id | FK to accounts |
amount | Signed (negative = expense) |
description | Transaction description |
transaction_date | When it occurred |
posted_date | When it cleared |
tags | Array of tags |
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.
Plugins have their own DuckDB schemas: plugin_<name>.*
tl query "
SELECT schema_name
FROM information_schema.schemata
WHERE schema_name LIKE 'plugin_%'
" --json
plugin_budget.categories — Budget categories
| Column | Description |
|---|---|
category_id | UUID primary key |
month | YYYY-MM format |
type | income or expense |
name | Category name |
expected | Budgeted amount |
tags | Array of tags to match |
plugin_goals.goals — Savings goals
| Column | Description |
|---|---|
id | UUID primary key |
name | Goal name |
target_amount | Target amount |
target_date | Target date |
completed | Boolean |
active | Boolean |
plugin_subscriptions — Detected recurring charges
plugin_cashflow — Cash flow projections
plugin_emergency_fund — Emergency fund tracking
Check CONTEXT.md for which plugins the user has and cares about.
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
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
-- This month
WHERE transaction_date >= date_trunc('month', current_date)
-- Specific month
WHERE transaction_date >= '2026-01-01'
AND transaction_date < '2026-02-01'
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
| User asks | Approach |
|---|---|
| "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 |
--json for parseable outputclassification for asset/liabilityWhen this skill is installed, create CONTEXT.md alongside it to store user-specific knowledge. This keeps the skill generic/shareable while personalizing behavior.
Template for CONTEXT.md:
# Treeline User Context
*Auto-updated by your assistant as it learns your setup*
## Account Notes
<!-- What specific accounts mean, e.g.: -->
<!-- - "Company 401k" = retirement account -->
<!-- - "Home Equity" = home value estimate (manual) -->
## Tag Conventions
<!-- How the user uses tags -->
## Cash Flow Rules
<!-- Tags to exclude from "true spending" calculations -->
internal_transfer_tags: [transfer, savings, investment]
## Income Sources
<!-- Known income sources for better reporting -->
## Active Plugins
<!-- Which plugins are installed and relevant -->
## Preferences
<!-- Reporting style, rounding, spouse-friendly mode, etc. -->
## Learned Facts
<!-- Anything else discovered about the user's financial setup -->
Maintenance:
All data is local (~/.treeline/treeline.duckdb). Never share transaction descriptions or account details outside the conversation unless explicitly asked.