summaryrefslogtreecommitdiffstats
path: root/SKILL.md
diff options
context:
space:
mode:
authorDanilo M. <danix@danix.xyz>2026-06-30 12:53:01 +0200
committerDanilo M. <danix@danix.xyz>2026-06-30 12:53:01 +0200
commit2db11aa5d34766e4d23ccc308c57c470b6aa6dba (patch)
treeaa30c498fc23da90a31c72024146066c7dd8223f /SKILL.md
parenta257b55fe44535af7f8f9197c018154c2441f9ab (diff)
downloadfirefly-cli-2db11aa5d34766e4d23ccc308c57c470b6aa6dba.tar.gz
firefly-cli-2db11aa5d34766e4d23ccc308c57c470b6aa6dba.zip
tx add: auto-create categories instead of requiring them
Pass --category straight to Firefly III as category_name; the API creates the category if it does not exist, matching --tags behavior. Drops the resolver lookup that turned an unknown category into a hard error. Accounts still resolve strictly (real money). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Diffstat (limited to 'SKILL.md')
-rw-r--r--SKILL.md19
1 files changed, 12 insertions, 7 deletions
diff --git a/SKILL.md b/SKILL.md
index 6051321..373e5f4 100644
--- a/SKILL.md
+++ b/SKILL.md
@@ -32,11 +32,15 @@ If `firefly` is not on PATH, run from the repo with `python -m firefly_cli ...`
object. Do not pass `--human` when you intend to parse, it prints tables.
- **Exit code 0 = success, 1 = error.** On error, `{"error": "..."}` goes to
stderr. Always check the exit code before trusting output.
-- **You pass names, not IDs.** `--from test01`, `--category Groceries`. The CLI
- resolves them. An unknown or ambiguous name is a HARD error that lists the
- candidates and exits 1. When that happens, read the candidates, pick the
- right one, and retry. NEVER guess an account, a wrong account moves real
- money.
+- **You pass names, not IDs.** `--from test01`, `--to Groceries`. For
+ **accounts** the CLI resolves the name to an ID; an unknown or ambiguous
+ account is a HARD error that lists the candidates and exits 1. When that
+ happens, read the candidates, pick the right one, and retry. NEVER guess an
+ account, a wrong account moves real money.
+- **Categories and tags auto-create.** `--category NAME` and `--tags a,b` are
+ passed straight to Firefly, which creates the category/tag if it does not
+ exist. No resolution, no error on a new name. Reuse an existing name (see
+ `firefly category list` / `firefly tag list`) to avoid duplicates.
- **`tx add` infers the transaction type** from the account types: asset to
expense = withdrawal, revenue to asset = deposit, asset to asset = transfer.
Override with `--type withdrawal|deposit|transfer` only when inference is
@@ -68,8 +72,9 @@ Global: `--human` (tables, do not use when parsing), `--url`/`--token`
firefly tx add 42.50 --from test01 --to Groceries --desc "weekly shop" --tags food
```
`test01` is an asset account, `Groceries` an expense account, so this is a
-withdrawal. If `Groceries` does not exist, the CLI errors with the available
-expense accounts; pick one or ask the user before creating a new category.
+withdrawal. `Groceries` here is the destination **expense account** and must
+exist (resolved by name). The `--tags food` and any `--category NAME` are
+auto-created by Firefly if new.
**Record income:**
```bash