diff options
| author | Danilo M. <danix@danix.xyz> | 2026-07-01 10:40:32 +0200 |
|---|---|---|
| committer | Danilo M. <danix@danix.xyz> | 2026-07-01 10:40:32 +0200 |
| commit | 69647b1ca6f2e11429850b0782c65d04b86509cb (patch) | |
| tree | ab6b98c3595aaf04a9391f881357a73eb3d29c01 /SKILL.md | |
| parent | b078c5980facc0ebe4acd1f251f6ae3dad561292 (diff) | |
| download | firefly-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.md | 10 |
1 files changed, 9 insertions, 1 deletions
@@ -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"} |
