← 返回 Skills 市场
pushp1997

Firefly III

作者 pushp1997 · GitHub ↗ · v1.0.0
cross-platform ⚠ suspicious
1342
总下载
2
收藏
4
当前安装
1
版本数
在 OpenClaw 中安装
/install firefly-iii
功能描述
Manage personal finances via Firefly III API. Use when user asks about budgets, transactions, accounts, categories, piggy banks, subscriptions, recurring transactions, or financial reports. Supports creating, listing, updating transactions; managing accounts and balances; setting budgets; tracking savings goals.
使用说明 (SKILL.md)

Firefly III

Firefly III is a self-hosted personal finance manager. This skill provides API access for managing finances.

Configuration

Required environment:

  • FIREFLY_URL: Base URL (e.g., https://budget.example.com)
  • FIREFLY_TOKEN: Personal Access Token (stored at ~/.firefly_token)

Get token: Profile → OAuth → Personal Access Tokens → Create new token

API Basics

TOKEN=$(cat ~/.firefly_token)
BASE="$FIREFLY_URL/api/v1"
curl -s "$BASE/endpoint" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json"

Core Endpoints

Accounts

# List accounts
curl "$BASE/accounts?type=asset" # asset|expense|revenue|liability
# Create account
curl -X POST "$BASE/accounts" -d '{
  "name": "Bank Account",
  "type": "asset",
  "account_role": "defaultAsset",
  "currency_code": "EUR"
}'

Account types: asset, expense, revenue, liability Asset roles: defaultAsset, savingAsset, sharedAsset, ccAsset

Transactions

# List transactions
curl "$BASE/transactions?type=withdrawal&start=2026-01-01&end=2026-01-31"
# Create withdrawal (expense)
curl -X POST "$BASE/transactions" -d '{
  "transactions": [{
    "type": "withdrawal",
    "date": "2026-01-15",
    "amount": "50.00",
    "description": "Groceries",
    "source_name": "Bank Account",
    "destination_name": "Supermarket",
    "category_name": "Groceries"
  }]
}'
# Create deposit (income)
curl -X POST "$BASE/transactions" -d '{
  "transactions": [{
    "type": "deposit",
    "date": "2026-01-01",
    "amount": "3000.00",
    "description": "Salary",
    "source_name": "Employer",
    "destination_name": "Bank Account",
    "category_name": "Salary"
  }]
}'
# Create transfer
curl -X POST "$BASE/transactions" -d '{
  "transactions": [{
    "type": "transfer",
    "date": "2026-01-05",
    "amount": "500.00",
    "description": "Savings",
    "source_name": "Bank Account",
    "destination_name": "Savings Account"
  }]
}'

Transaction types: withdrawal, deposit, transfer

Categories

# List categories
curl "$BASE/categories"
# Create category
curl -X POST "$BASE/categories" -d '{"name": "Groceries"}'

Budgets

# List budgets
curl "$BASE/budgets"
# Create budget
curl -X POST "$BASE/budgets" -d '{"name": "Food", "active": true}'
# Set budget limit for period
curl -X POST "$BASE/budgets/{id}/limits" -d '{
  "start": "2026-01-01",
  "end": "2026-01-31",
  "amount": "500.00"
}'

Piggy Banks (Savings Goals)

# List piggy banks
curl "$BASE/piggy-banks"
# Create piggy bank
curl -X POST "$BASE/piggy-banks" -d '{
  "name": "Vacation Fund",
  "target_amount": "2000.00",
  "accounts": [{"account_id": "1"}],
  "start_date": "2026-01-01",
  "target_date": "2026-12-31",
  "transaction_currency_code": "EUR"
}'
# Add money to piggy bank
curl -X POST "$BASE/piggy-banks/{id}/events" -d '{"amount": "100.00"}'

Subscriptions (Bills)

# List subscriptions
curl "$BASE/subscriptions"
# Create subscription
curl -X POST "$BASE/subscriptions" -d '{
  "name": "Netflix",
  "amount_min": "12.99",
  "amount_max": "12.99",
  "date": "2026-01-15",
  "repeat_freq": "monthly",
  "currency_code": "EUR"
}'

Repeat frequencies: weekly, monthly, quarterly, half-year, yearly

Recurring Transactions

# List recurring transactions
curl "$BASE/recurrences"
# Create recurring transaction
curl -X POST "$BASE/recurrences" -d '{
  "type": "withdrawal",
  "title": "Rent",
  "first_date": "2026-01-01",
  "repeat_until": "2026-12-31",
  "repetitions": [{
    "type": "monthly",
    "moment": "1"
  }],
  "transactions": [{
    "amount": "1000.00",
    "description": "Monthly rent",
    "source_id": "1",
    "destination_name": "Landlord",
    "category_name": "Rent"
  }]
}'

Rules (Auto-categorization)

# List rules
curl "$BASE/rules"
# Create rule
curl -X POST "$BASE/rules" -d '{
  "title": "Categorize groceries",
  "trigger": "store-journal",
  "active": true,
  "strict": false,
  "triggers": [
    {"type": "description_contains", "value": "ALDI"}
  ],
  "actions": [
    {"type": "set_category", "value": "Groceries"}
  ]
}'

Trigger types: description_contains, description_starts, description_ends, amount_less, amount_more, source_account_is, etc. Action types: set_category, set_budget, add_tag, set_description, etc.

Tags

# List tags
curl "$BASE/tags"
# Create tag
curl -X POST "$BASE/tags" -d '{"tag": "vacation"}'

Reports & Summary

# Account balance over time
curl "$BASE/accounts/{id}/transactions?start=2026-01-01&end=2026-01-31"
# Get current balances
curl "$BASE/accounts" | jq '.data[] | {name: .attributes.name, balance: .attributes.current_balance}'

Common Tasks

Get spending by category

curl "$BASE/categories" | jq '.data[] | {name: .attributes.name, spent: .attributes.spent}'

Get budget progress

curl "$BASE/budgets" | jq '.data[] | {name: .attributes.name, spent: .attributes.spent}'

Search transactions

curl "$BASE/search/transactions?query=groceries&limit=25"

Error Handling

  • 422 Unprocessable Entity: Check required fields in error response
  • 401 Unauthorized: Token expired or invalid
  • 404 Not Found: Resource doesn't exist

Tips

  • Use source_name/destination_name to auto-create expense/revenue accounts
  • Categories are different from budgets (categories for classification, budgets for limits)
  • Piggy banks require linking to an asset account
  • Use rules to auto-categorize transactions on creation
安全使用建议
The SKILL.md expects FIREFLY_URL and a FIREFLY_TOKEN (it even reads ~/.firefly_token) but the registry metadata declares none — that's a red flag. Before installing: 1) Confirm the skill owner/source (homepage is missing); 2) Don’t store long-lived tokens in plaintext in your home directory if you can avoid it — prefer a scoped personal access token and store it in a secure secret store or set FIREFLY_TOKEN as an env var for the agent runtime; 3) Ensure the Firefly instance URL is HTTPS and is one you control; 4) Verify your agent environment has curl/jq (the SKILL.md uses them) and that you are comfortable the agent will read the token file; 5) If you need stricter control, request the publisher update registry metadata to declare required env vars and config paths (so consent is explicit) or ask for a version that accepts the token at call-time rather than reading ~/.firefly_token. The mismatch could be a benign oversight, but treat it as suspicious until clarified.
功能分析
Type: OpenClaw Skill Name: firefly-iii Version: 1.0.0 The skill is classified as suspicious due to its explicit instruction in `SKILL.md` to read a sensitive file (`~/.firefly_token`) using a shell command (`cat ~/.firefly_token`). While this action is necessary for the skill's stated purpose of authenticating with the Firefly III API, it represents a significant capability for local file access and shell command execution. All subsequent network calls are directed to the user-configured `FIREFLY_URL`, and there is no evidence of intentional data exfiltration to unrelated third parties, persistence mechanisms, or malicious prompt injection against the agent itself. The primary risk lies in the potential for shell injection if the agent does not adequately sanitize user input before interpolating it into the provided `curl` commands.
能力评估
Purpose & Capability
The SKILL.md implements Firefly III API actions (accounts, transactions, budgets, etc.) which align with the description. However, the registry metadata lists no required environment variables, credentials, or binaries while the SKILL.md clearly requires FIREFLY_URL and a FIREFLY_TOKEN (and references ~/.firefly_token). This discrepancy suggests incomplete or incorrect metadata.
Instruction Scope
Runtime instructions are explicit curl commands against the user-provided FIREFLY_URL using a bearer token. That's within scope for a Firefly API skill. But the skill instructs the agent to read the user's file (~/.firefly_token) to obtain the token — this file access is sensitive and the registry did not declare any required config paths. No other unrelated system files or vague 'gather context' steps appear in the instructions.
Install Mechanism
No install spec and no code files (instruction-only). This is low-risk from an installation/download perspective — nothing is being written to disk by an installer as part of the skill package.
Credentials
The credentials requested by the SKILL.md (FIREFLY_URL and FIREFLY_TOKEN / ~/.firefly_token) are proportionate to the stated purpose. However, the package metadata declares no required env vars or primary credential, and it fails to declare the ~/.firefly_token path. The omission means the platform and user might not be aware the skill will access a sensitive token file.
Persistence & Privilege
Skill is not marked always:true and has default invocation settings. It does not request persistent system-wide privileges or modify other skills' configs according to the manifest. Autonomous invocation is allowed (platform default) but not combined with other elevated privileges here.
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install firefly-iii
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /firefly-iii 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v1.0.0
Initial release: Full API coverage for accounts, transactions, categories, budgets, piggy banks, subscriptions, recurring transactions, rules, and tags.
元数据
Slug firefly-iii
版本 1.0.0
许可证
累计安装 4
当前安装数 4
历史版本数 1
常见问题

Firefly III 是什么?

Manage personal finances via Firefly III API. Use when user asks about budgets, transactions, accounts, categories, piggy banks, subscriptions, recurring transactions, or financial reports. Supports creating, listing, updating transactions; managing accounts and balances; setting budgets; tracking savings goals. 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 1342 次。

如何安装 Firefly III?

在 OpenClaw 或 Claude Code 对话框中运行命令「/install firefly-iii」即可一键安装,无需额外配置。

Firefly III 是免费的吗?

是的,Firefly III 完全免费(开源免费),可自由下载、安装和使用。

Firefly III 支持哪些平台?

Firefly III 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。

谁开发了 Firefly III?

由 pushp1997(@pushp1997)开发并维护,当前版本 v1.0.0。

💬 留言讨论