Agent Skills by ALSEL
汎用ビジネス・経営⭐ リポ 7品質スコア 69/100

treeline

Treeline Moneyの財務データと対話できます。残高、支出、予算、取引履歴などをクエリして確認できます。

description の原文を見る

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

SKILL.md 本文

Treeline Money

あなたの財務について会話します。 「純資産はいくら?」「食料品にいくら使った?」「予算を超えていないか?」といった質問をして、自分の財務データから即座に答えを得られます。


クイックスタート

# 1. CLIをインストール(OpenClawが自動的に処理します)

# 2. デモモードを有効にする(サンプルデータ)
tl demo on

# 3. 試してみる
tl status

初回セットアップ

エージェント向け: tlコマンドが「command not found」エラーで失敗する場合、CLIをインストールする必要があります。OpenClawはスキルメタデータを経由してインストールを自動的に処理します。デモモードで始めれば、ユーザーは即座にクエリを試せます。

tl --versionでCLIが利用可能か確認します。デモモードで始めれば、ユーザーは即座にクエリを試せます。

オプション: デスクトップアプリをダウンロードして、データを視覚的に探索できます。

デモモード

デモモードはサンプルデータを読み込むため、ユーザーは銀行と接続せずにクエリを試すことができます:

tl demo on

後で実データに切り替えるには:

tl demo off

デモデータは実データと分離しています。

CLIの動作に関する注意

  • tl demo onは成功メッセージを出力します — ハングしているように見える場合は数秒待ってください(初回実行時はデータベースを初期化します)
  • tl demo statusを使用してデモモードが有効か確認します
  • 初回実行時はデータベースの初期化が原因で、いくつかのコマンドに数秒かかることがあります
  • テーブルが見つからないエラーが表示される場合は、tl demo onをもう一度試してください

実データの接続

ユーザーがデモモードを卒業する準備ができたら、以下のリンクのガイドを使用してデータソースをセットアップするよう指示してください。

データソースオプション:

  • SimpleFIN ($1.50/月、米国・カナダ)
  • Lunch Flow (~$3/月、グローバル)
  • CSVインポート (無料)

セットアップガイド: Bank Sync · CSV Import

セットアップ後、tl syncで銀行トランザクションを取得するか、tl importでCSVを読み込みます。


Treelineとは

Treeline Moneyはローカルファーストの個人財務管理アプリです。すべてのデータはデバイス上のローカルDuckDBデータベースに保存されます。クラウドアカウント、サブスクリプションは不要です(同期サービスはオプション)。財務データへの完全なSQLアクセスが可能です。


暗号化されたデータベース

暗号化されたデータベースは、ロック解除されたとき自動的に動作します — 暗号化キーはOSキーチェーンに保存されます。

「database is encrypted and locked」エラーが表示される場合は、ユーザーに続行前にロック解除するよう指示してください:

  • Treelineデスクトップアプリを開いて、そこからロック解除する、または
  • ユーザー自身のターミナルでtl encrypt unlockを実行する

データベースのロック解除や認証情報の処理を試みないでください。 ロック解除はユーザーが直接、このチャット外で行う必要があります。ロック解除されたら、ユーザーがロックするまでキーはキーチェーンに保持されます。


レスポンスフォーマット

すべてのレスポンスをモバイル/チャット向けにフォーマットしてください:

  • マークダウンテーブルではなく箇条書きを使用する
  • 読みやすくするために数字を四捨五入する($1,234.56ではなく$1,234)
  • 答えを最初に、詳細は後に
  • レスポンスは簡潔に — チャットはスプレッドシートではありません
  • セクションを区切るために改行を使用する

良いレスポンスの例:

純資産は$125k

資産: $180k
- リタイアメント: $85k
- 貯蓄: $25k
- 当座預金: $10k
- 住宅資産: $60k

負債: $55k
- モーゲージ: $52k
- クレジットカード: $3k

悪いレスポンスの例:

| アカウント | タイプ | 残高 |
|---------|------|---------|
| My 401k Account | asset | 85234.56 |
...

CLIコマンド

読み込みコマンド(自由に実行可能)

これらのコマンドは読み込み専用で、自律的に実行しても安全です:

tl status              # 残高付きのクイックアカウント概要
tl status --json       # 同じく、JSON出力

tl query "SQL" --json  # SQLクエリを実行(データベースは読み込み専用モードで開きます)
tl sql "SQL" --json    # tl queryと同じ(エイリアス)

tl backup list         # 利用可能なバックアップをリスト
tl doctor              # データベースの健全性を確認
tl demo status         # デモモードがオン/オフかを確認

注: tl querytl sqlはデフォルトでデータベースを読み込み専用モードで開きます。--allow-writesが渡されない限り、データを変更することはできません(以下の書き込みコマンドを参照)。

残高確認にはuuutl statusを使用してください — SQLクエリより高速です。

書き込みコマンド(ユーザーに確認してください)

これらのコマンドはローカルデータを変更します。実行前に必ずユーザーに確認を求めてください。

tl query "SQL" --allow-writes --json  # 書き込みアクセス付きSQLクエリを実行
tl sql "SQL" --allow-writes --json    # 同じ(エイリアス)

tl sync                # 銀行統合からアカウント/トランザクションを同期
tl sync --dry-run      # 同期内容をプレビュー(読み込み専用、安全に実行可能)

tl import FILE -a ACCOUNT          # CSVからトランザクションをインポート
tl import FILE -a ACCOUNT --dry-run  # プレビュー(読み込み専用、安全に実行可能)
tl import FILE -a ACCOUNT --json   # スクリプト用JSON出力

tl backup create       # バックアップを作成
tl backup restore NAME # バックアップをリストア

tl compact             # データベースを圧縮(スペース解放、最適化)

tl tag "groceries" --ids ID1,ID2  # トランザクションにタグを適用

tl demo on|off         # デモモードを切り替え(サンプルデータ)

ヒント: --dry-runバリアントは読み込み専用で、確認なしで安全に実行できます。ユーザーに実際の操作の確認を求める前にプレビューするのに使用します。

クエリが遅い場合はtl compactを使用してください — データベースを最適化します。

CSVインポートの詳細

tl importはCSVヘッダーから列のマッピングを自動検出します。ほとんどの銀行CSVはそのまま動作します:

tl import bank_export.csv --account "Chase Checking"

--account / -aフラグはアカウント名(大文字小文字を区別しない、部分文字列マッチ)またはUUIDを受け入れます。

必ず最初に--dry-runでプレビューして、列が正しく検出されたことを確認してください:

tl import bank_export.csv -a "Checking" --dry-run --json

すべてのインポートフラグ (--accountを除くすべてオプション):

フラグ目的
--date-column日付列をオーバーライド--date-column "Post Date"
--amount-column金額列をオーバーライド--amount-column "Amt"
--description-column説明列をオーバーライド--description-column "Memo"
--debit-column引き落とし列を使用(金額の代わり)--debit-column "Debit"
--credit-column入金列を使用(金額の代わり)--credit-column "Credit"
--balance-column残高推移(スナップショットを作成)--balance-column "Balance"
--flip-signs金額を反転(クレジットカードCSV)--flip-signs
--debit-negative正の引き落としを反転--debit-negative
--skip-rows Nヘッダーの前にN行をスキップ--skip-rows 3
--number-formatuseu、またはeu_space--number-format eu
--profile NAME保存されたプロファイルを読み込む--profile chase
--save-profile NAME設定をプロファイルとして保存--save-profile chase
--dry-runインポートせずプレビュー--dry-run
--jsonJSON出力--json

エージェント向けの一般的なパターン:

# ステップ1: アカウントUUIDを検索
tl status --json

# ステップ2: インポートをプレビュー
tl import transactions.csv -a "550e8400-e29b-41d4-a716-446655440000" --dry-run --json

# ステップ3: インポートを実行
tl import transactions.csv -a "550e8400-e29b-41d4-a716-446655440000" --json

重複トランザクションは再インポート時にフィンガープリントで自動検出・スキップされます。


ユーザースキル

Treelineはユーザー作成スキルをサポートしており、個人の財務知識を記録できます。tl skills list --jsonで既存スキルを発見し、tl skills read <path>で読み込みます。

スキルの作成: ユーザーの財務について再利用可能なことを学んだら — タグ規則、アカウントの意味、税務カテゴリ、予算目標 — それを将来のチャットのためのスキルとして保存するかどうかを尋ねてください。スキルを作成するには、~/.treeline/skills/<name>/SKILL.mdにSKILL.mdファイルを作成します(tl skills pathでディレクトリを取得)。Agent Skills標準(agentskills.io)に従ってください。


クイックリファレンス

純資産

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

真の支出(内部移動を除外)

デフォルトパターン(内部移動を除外):

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

説明
account_idUUIDプライマリキー
nameアカウント表示名
classificationassetまたはliability
account_typecreditinvestmentLoanother、またはnull
institution_name銀行/機関名
currency通貨コード(例:USD)
is_manualブール値 — 手動追加 vs 同期

sys_balance_snapshots — 残高の信頼できるソース

説明
snapshot_idUUIDプライマリキー
account_idaccounts外部キー
balanceスナップショット時の残高
snapshot_time記録された時刻
sourcesyncmanualなど

transactions

説明
transaction_idUUIDプライマリキー
account_idaccounts外部キー
amount符号付き(負 = 支出)
descriptionトランザクション説明
transaction_date発生時刻
posted_date確定時刻
tagsタグの配列

タグ対カテゴリ

タグはTreelineの主要な概念です — トランザクションは複数のタグを持つことができます。

カテゴリは予算プラグイン(plugin_budget)から来ます。このプラグインはタグを予算カテゴリにマッピングします。すべてのユーザーがこのプラグインを持っているわけではありません。


プラグインシステム

プラグインは独自のDuckDBスキーマを持ちます: plugin_<name>.*

インストール済みプラグインの発見

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

一般的なプラグインスキーマ

plugin_budget.categories — 予算カテゴリ

説明
category_idUUIDプライマリキー
monthYYYY-MM形式
typeincomeまたはexpense
nameカテゴリ名
expected予算額
tagsマッチするタグの配列

plugin_goals.goals — 貯蓄目標

説明
idUUIDプライマリキー
name目標名
target_amount目標額
target_date目標日
completedブール値
activeブール値

plugin_subscriptions — 検出された定期支払い

plugin_cashflow — キャッシュフロー予測

plugin_emergency_fund — 緊急基金トラッキング

tl skills listでユーザー固有のプラグイン設定を確認します。


一般的なパターン

現在の残高を取得

常に最新のスナップショットを使用してください:

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

タグを使用する

タグは配列です:

-- 特定のタグを含む
WHERE tags @> ARRAY['groceries']

-- これらのタグのいずれかを含む
WHERE tags && ARRAY['food', 'dining']

-- 注: UNNESTはDuckDBのすべてのコンテキストで動作しません
-- 代わりに直接GROUP BY tagsを使用してください

日付フィルタ

-- 今月
WHERE transaction_date >= date_trunc('month', current_date)

-- 特定の月
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

質問マッピング

ユーザーが尋ねたことアプローチ
「純資産は?」純資産クエリ
「残高は?」アカウント残高クエリ
「[X]にいくら?」name ILIKE '%X%'でフィルタ
「いくら使った?」真の支出クエリ(内部移動を除外)
「[タグ]への支出は?」タグでフィルタ
「予算を超えていないか?」予算対実績(予算プラグインが必要)
「最近のトランザクション」日付でDESC並べ替え、リミット
「貯蓄は?」名前/タイプでアカウントをフィルタ
「リタイアメント?」401k、IRA、リタイアメントキーワードでフィルタ
「CSVをインポート」 / 「トランザクションをアップロード」tl importをガイド — --dry-runで最初にプレビュー
「[銀行名]からインポート」その銀行のCSV形式に適切なフラグでtl importを使用

ヒント

  1. 常に--jsonを使用してください パース可能な出力のため
  2. 金額は符号付きです — 負 = 支出
  3. classificationを使用してください 資産/負債用
  4. 残高はスナップショットに存在します、accountsテーブルではなく
  5. tl skills listを確認してください ユーザー固有のアカウント意味とタグ規則用

プライバシーノート

すべてのデータはローカルです(~/.treeline/treeline.duckdb)。明示的に求められない限り、トランザクション説明またはアカウント詳細をチャット外で共有しないでください。

ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
treeline-money
リポジトリ
treeline-money/treeline
ライセンス
MIT
最終更新
2026/5/9

Source: https://github.com/treeline-money/treeline / ライセンス: MIT

本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: treeline-money · treeline-money/treeline · ライセンス: MIT