aboutsummaryrefslogtreecommitdiffstats
path: root/SKILL.md
diff options
context:
space:
mode:
authorDanilo M. <danix@danix.xyz>2026-07-01 10:40:32 +0200
committerDanilo M. <danix@danix.xyz>2026-07-01 10:40:32 +0200
commit69647b1ca6f2e11429850b0782c65d04b86509cb (patch)
treeab6b98c3595aaf04a9391f881357a73eb3d29c01 /SKILL.md
parentb078c5980facc0ebe4acd1f251f6ae3dad561292 (diff)
downloadfirefly-cli-69647b1ca6f2e11429850b0782c65d04b86509cb.tar.gz
firefly-cli-69647b1ca6f2e11429850b0782c65d04b86509cb.zip
feat: tx add --dry-run to validate before writing (v0.3.3)
An agent importing rows in a loop could fail mid-batch: a --to account that didn't exist yet errored after earlier rows had already been written, leaving a half-applied batch to clean up by hand. --dry-run resolves --from/--to and infers the type but sends nothing, printing {"dry_run": true, "would_send": {...}}. A missing account stays a hard error (exit 1) so the agent can dry-run every row first, create the accounts the errors name, then run the batch for real. No batch input mode: the agent already owns the loop. Verified live read-only: valid accounts emit would_send and write nothing (search confirms []), missing account exits 1 with the candidate list. PATCH: new optional flag, contract unchanged. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Diffstat (limited to 'SKILL.md')
-rw-r--r--SKILL.md10
1 files changed, 9 insertions, 1 deletions
diff --git a/SKILL.md b/SKILL.md
index 672c97e..42d5fb4 100644
--- a/SKILL.md
+++ b/SKILL.md
@@ -56,7 +56,7 @@ firefly account balance <name|id> [--at YYYY-MM-DD]
firefly account create <name> --type asset|expense|revenue
[--opening-balance N] [--currency CODE]
firefly tx add <amount> --from <acct> --to <acct>
- [--desc TEXT] [--date YYYY-MM-DD] [--category NAME] [--tags a,b] [--type T]
+ [--desc TEXT] [--date YYYY-MM-DD] [--category NAME] [--tags a,b] [--type T] [--dry-run]
firefly tx edit <id>
[--amount N] [--date YYYY-MM-DD] [--desc TEXT] [--from <acct>] [--to <acct>]
[--category NAME] [--tags a,b] [--type T] # only fields passed are changed
@@ -102,6 +102,14 @@ Supports asset, expense, revenue. asset accounts get the default role
automatically. Unlike categories/tags, accounts are NOT auto-created by
`tx add`, create them explicitly here first.
+**Validate a batch before writing any of it:** when importing many rows in a
+loop, a mid-batch failure (a `--to` account that doesn't exist yet) leaves the
+earlier rows already written. Dry-run each row first so the whole batch fails
+fast: `tx add ... --dry-run` resolves `--from`/`--to` and infers the type but
+sends nothing, printing `{"dry_run": true, "would_send": {...}}`. A missing
+account is still a hard error (exit 1). Recipe: dry-run every row, create any
+accounts the errors name, then run the batch for real.
+
**Check a balance:**
```bash
firefly account balance test01 # -> {"id","name","current_balance"}