image-skill 0.1.27 → 0.1.29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/cli.md CHANGED
@@ -128,7 +128,9 @@ should omit it.
128
128
 
129
129
  Use the no-spend guide first. It is the only required first command for a fresh
130
130
  agent. It checks health, executable model availability, auth/quota when a token
131
- already exists, and payment rails, then returns one `data.next_command`. Guide
131
+ already exists, and payment rails, then returns one primary
132
+ `data.next_command` plus machine-readable `data.next_command_effect`,
133
+ `data.guide_warning`, `data.auth_ready`, and `data.no_spend_evaluation`. Guide
132
134
  mode does not create a signup, provider job, dry-run job, payment object,
133
135
  credit debit, or asset.
134
136
 
@@ -136,21 +138,67 @@ credit debit, or asset.
136
138
  image-skill create --guide --prompt "a compact field camera on a stainless workbench"
137
139
  ```
138
140
 
139
- Read `data.stage`, run `data.next_command`, and rerun the guide only after
140
- auth or payment state changes. Do not run `doctor`, `models list`, `signup`,
141
- `whoami`, `usage quota`, `create --dry-run`, or payment commands as a setup
142
- checklist before the guide asks for them.
141
+ Read `data.stage` and `data.guide_warning`, run `data.next_command` when
142
+ `data.guide_warning.next_command_safety` is safe for the current spend policy,
143
+ and rerun the guide only after auth or payment state changes. Do not run
144
+ `doctor`, `models list`, `signup`, `whoami`, `usage quota`, `create --dry-run`,
145
+ or payment commands as a setup checklist before the guide asks for them.
143
146
 
144
147
  - `prompt_required`: rerun `data.next_command` with the real prompt.
145
148
  - `auth_required`: run `data.next_command`, then rerun guide once. Hosted
146
149
  signup saves auth to config by default. If the runtime intentionally used
147
150
  `--no-save --show-token`, store the returned token and use
148
151
  `data.auth_handoff.rerun_guide.with_env` or
149
- `data.auth_handoff.rerun_guide.with_stdin`.
150
- - `quota_required`: follow the payment commands in
151
- `data.checks.payments.suggested_commands`, then rerun guide once.
152
- - `ready_to_create`: run `data.next_command` for the first bounded create. If
153
- the guide authenticated from env or stdin, prefer
152
+ `data.auth_handoff.rerun_guide.with_stdin`. In this stage,
153
+ `data.auth_ready.ready` is `false`, and
154
+ `data.guide_warning.next_command_safety` is
155
+ `hosted_signup_no_spend_setup`.
156
+ - `quota_required`: run `data.self_fund_next_command` to start the top-up.
157
+ It aliases `data.next_command` and is the first payment command, usually an
158
+ x402 or Stripe quote. If the guide authenticated from env or stdin, prefer
159
+ `data.self_fund_handoff.auth.next_command.with_env` or
160
+ `data.self_fund_handoff.auth.next_command.with_stdin` so auth follows the
161
+ payment command. Then follow `data.self_fund_handoff.payment_commands.buy`
162
+ and `status`, and rerun `data.self_fund_handoff.after_next` once credits are
163
+ granted. If `data.self_fund_handoff.wallet_settlement` is non-null, pay the
164
+ exact amount in the returned `payable_instructions` field from a delegated
165
+ wallet before polling status; the handoff names the response fields and the
166
+ credential boundary. `data.guide_warning.next_command_safety` is
167
+ `live_money_payment_action`, and
168
+ `data.guide_warning.payment_top_up_path` summarizes the same path as
169
+ `data.checks.payments.preferred_method_summary.top_up_path`. Read that path
170
+ before the quote: `browserless_agent_self_fund` means a wallet-equipped agent
171
+ can complete the preferred live-money rail without a browser;
172
+ `human_payment_handoff` means the agent can create the payment attempt but a
173
+ human/browser step must complete before credits are granted.
174
+ - `ready_to_create`: `data.next_command` is a live media create. Its
175
+ `data.next_command_effect.label` is `live_media_create_credit_debit`, with
176
+ `provider_call`, `hosted_create`, `credit_debit`, and `media_write` all true.
177
+ `data.guide_warning.next_command_safety` is
178
+ `live_media_create_credit_debit`, `data.guide_warning.no_spend_safe` is
179
+ `false`, `data.guide_warning.spend_required` is `true`, and
180
+ `data.guide_warning.recommended_command_field` is
181
+ `recommended_no_spend_command`.
182
+ `data.auth_ready.ready` is `true`,
183
+ `data.auth_ready.next_command_requires_auth` is `true`, and
184
+ `data.auth_ready.next_command_auth_ready` is `true`; the returned
185
+ `data.next_command` can reuse the current saved config, env token, or stdin
186
+ token context without exposing a raw token.
187
+ `data.no_spend_evaluation.stop_here` is `true`,
188
+ `data.no_spend_evaluation.next_command_is_live_create` is `true`, and
189
+ `data.no_spend_evaluation.recommended_command_field` is
190
+ `recommended_no_spend_command`. Run `data.next_command` for the first bounded
191
+ create only when media spend is allowed. If you are in a no-spend evaluation
192
+ or only need proof that the path is ready, stop before `data.next_command` and
193
+ run `data.recommended_no_spend_command` instead; it aliases
194
+ `data.no_spend_next_command` and is the dry-run plan command. Its
195
+ `data.no_spend_next_command_effect.label` is
196
+ `dry_run_planned_job_no_provider_call_no_credit_debit_no_media_write`, with
197
+ `no_spend`, `hosted_create_dry_run`, `planned_job`, and `plan_receipt` true,
198
+ `activity_event: "job.planned"`, and provider call, credit debit, and media
199
+ write false. It may create a recoverable planned job/activity receipt, but no
200
+ provider execution, debit, downloadable asset, or media write. If the guide authenticated from
201
+ env or stdin, prefer
154
202
  `data.auth_handoff.next_command.with_env` or
155
203
  `data.auth_handoff.next_command.with_stdin` so auth follows the create.
156
204
 
@@ -181,7 +229,7 @@ same auth context.
181
229
  Prefer package execution in fresh agent sandboxes:
182
230
 
183
231
  ```bash
184
- npx -y image-skill@latest create --guide --prompt "a compact field camera on a stainless workbench" --json
232
+ npm_config_update_notifier=false npx -y image-skill@latest create --guide --prompt "a compact field camera on a stainless workbench" --json
185
233
  ```
186
234
 
187
235
  Global install is optional, not the primary path. If `npm install -g image-skill`
@@ -192,7 +240,21 @@ package-manager paths instead of cloning private source:
192
240
  export npm_config_cache="${npm_config_cache:-$PWD/.npm-cache}"
193
241
  export npm_config_prefix="${npm_config_prefix:-$PWD/.npm-global}"
194
242
  export PATH="$npm_config_prefix/bin:$PATH"
195
- npx -y image-skill@latest create --guide --prompt "a compact field camera on a stainless workbench" --json
243
+ npm_config_update_notifier=false npx -y image-skill@latest create --guide --prompt "a compact field camera on a stainless workbench" --json
244
+ ```
245
+
246
+ For `npx skills add ... -g -a codex` installs, the writable target is Codex
247
+ agent home rather than the npm prefix. If the Codex/global skill target is
248
+ read-only or cannot create its default directory, keep the tracked slug install
249
+ and point agent skill state at a writable workspace home. The skills.sh Codex
250
+ adapter writes to `$HOME/.agents`; `CODEX_HOME` keeps Codex profile state on the
251
+ same writable path:
252
+
253
+ ```bash
254
+ export HOME="$PWD/.agent-home"
255
+ export CODEX_HOME="$HOME/.codex"
256
+ mkdir -p "$HOME" "$CODEX_HOME"
257
+ npx skills add danielgwilson/image-skill-cli --skill image-skill -g -a codex -y
196
258
  ```
197
259
 
198
260
  Hosted signup saves auth state to the public CLI config by default. If the
@@ -201,7 +263,7 @@ runtime needs a writable compatibility config path, set
201
263
 
202
264
  ```bash
203
265
  export IMAGE_SKILL_CONFIG_PATH="$PWD/.image-skill/config.json"
204
- npx -y image-skill@latest signup --agent \
266
+ npm_config_update_notifier=false npx -y image-skill@latest signup --agent \
205
267
  --agent-contact agent-inbox@example.com \
206
268
  --agent-name creative-agent \
207
269
  --runtime codex \
@@ -212,19 +274,37 @@ Config write failures return `PUBLIC_CLI_CONFIG_WRITE_FAILED` with a structured
212
274
  `error.recovery.suggested_command`. Agents should follow that recovery field,
213
275
  then rerun `create --guide` for the requested creative flow.
214
276
  When `create --guide` reaches `auth_required`, it probes the configured auth
215
- path first. If local config cannot be written, `data.next_command` uses
216
- `--show-token --no-save` and `data.auth_handoff.rerun_guide.with_stdin` shows
217
- the token-stdin rerun path instead of asking the agent to try a doomed saved
218
- signup.
277
+ path first. If local config cannot be written, `data.next_command` prefixes the
278
+ normal saved-config signup with
279
+ `IMAGE_SKILL_CONFIG_PATH="$PWD/.image-skill/config.json"`, so the first recovery
280
+ step still saves auth locally without exposing the one-time token.
281
+ `--show-token --no-save` and `data.auth_handoff.rerun_guide.with_stdin` remain
282
+ structured fallback paths for runtimes that intentionally use a separate secret
283
+ store.
219
284
 
220
285
  ### `image-skill whoami`
221
286
 
222
287
  Shows current actor, organization, claim state, token class, and grants.
288
+ The JSON includes `session_origin` so a fresh agent can tell whether it is
289
+ unauthenticated, loaded a saved config, created the token in this process, or
290
+ is using hosted-session auth. `token_created_at` is the active token creation
291
+ timestamp when Image Skill can prove it, otherwise `null`.
223
292
 
224
293
  ```bash
225
294
  image-skill whoami --json
226
295
  ```
227
296
 
297
+ Minimum success data:
298
+
299
+ ```json
300
+ {
301
+ "authenticated": true,
302
+ "session_origin": "loaded_from_config",
303
+ "token_status": "active",
304
+ "token_created_at": "2026-05-08T12:00:00.000Z"
305
+ }
306
+ ```
307
+
228
308
  ### `image-skill usage quota`
229
309
 
230
310
  Canonical pre-spend check. Shows remaining credits, job limits, model limits,
@@ -337,8 +417,11 @@ Minimum success data:
337
417
  {
338
418
  "pack_id": "starter-500",
339
419
  "name": "Starter",
420
+ "display_name": "Starter (500 credits)",
340
421
  "credits": 500,
341
422
  "amount_cents": 500,
423
+ "amount_usd": "5.00",
424
+ "price_usd": "5.00",
342
425
  "currency": "USD"
343
426
  }
344
427
  ],
@@ -369,14 +452,17 @@ model's provider cost and Image Skill's margin policy; inspect
369
452
  debit before spending.
370
453
 
371
454
  ```bash
372
- image-skill credits quote --credits 10 --payment-method stripe_checkout --json
455
+ image-skill credits quote --credits 10 --payment-method stripe_x402.exact.usdc --json
373
456
  ```
374
457
 
375
- For retry-stable automation, provide an explicit non-secret idempotency key:
458
+ Always pass the payment method from `credits methods --json`; the public CLI
459
+ does not infer one. For retry-stable automation, provide an explicit non-secret
460
+ idempotency key:
376
461
 
377
462
  ```bash
378
463
  image-skill credits quote \
379
464
  --credits 10 \
465
+ --payment-method stripe_x402.exact.usdc \
380
466
  --idempotency-key quote-run-001 \
381
467
  --json
382
468
  ```
@@ -407,8 +493,9 @@ image-skill credits quote \
407
493
  --json
408
494
  ```
409
495
 
410
- For exact custom Stripe Checkout terms, request the provider and bounded credit
411
- amount explicitly:
496
+ For exact custom terms, keep the same rail choice. Use
497
+ `stripe_x402.exact.usdc` for an agent-settleable browserless rail, or use
498
+ `stripe_checkout` only for a human Checkout fallback:
412
499
 
413
500
  ```bash
414
501
  image-skill credits quote \
@@ -464,6 +551,10 @@ settlement and webhook fulfillment succeeds. Deposit challenge creation itself
464
551
  must not mutate credit balances. Stay within the delegated cap and never pass
465
552
  wallet private keys, seed phrases, x402 payment headers, deposit client
466
553
  secrets, card data, Stripe secrets, or provider receipts to Image Skill.
554
+ When `create --guide` enters `quota_required` for this rail, it returns
555
+ `data.self_fund_handoff.wallet_settlement` with the buy/status response fields
556
+ to inspect: `data.stripe_x402.payable_instructions` after `credits buy`, or
557
+ `data.payment_attempt.stripe_x402.payable_instructions` after `credits status`.
467
558
 
468
559
  ```bash
469
560
  image-skill credits buy \
@@ -594,18 +685,23 @@ curl -sS https://api.image-skill.com/v1/credit-purchases/stripe-x402-deposits \
594
685
 
595
686
  ### `image-skill credits status`
596
687
 
597
- Shows the durable state of a quote, x402 deposit attempt, Stripe Checkout
598
- attempt, Checkout Session, or receipt. Use this after `credits buy` so agents
599
- do not have to infer payment state from quota deltas or activity text.
688
+ Without a payment reference, shows the current credit balance using the same
689
+ quota data as `image-skill usage quota --json`. With a payment reference,
690
+ shows the durable state of a quote, x402 deposit attempt, Stripe Checkout
691
+ attempt, Checkout Session, or receipt. Use the referenced form after
692
+ `credits buy` so agents do not have to infer payment state from quota deltas
693
+ or activity text.
600
694
 
601
695
  ```bash
696
+ image-skill credits status --json
602
697
  image-skill credits status \
603
698
  --payment-attempt-id payatt_... \
604
699
  --json
605
700
  ```
606
701
 
607
- Exactly one reference flag is required: `--quote-id`,
608
- `--payment-attempt-id`, `--checkout-session-id`, or `--receipt-id`.
702
+ At most one reference flag is allowed: `--quote-id`,
703
+ `--payment-attempt-id`, `--checkout-session-id`, or `--receipt-id`. Passing no
704
+ reference returns the balance/quota state.
609
705
 
610
706
  Minimum action-required data:
611
707
 
@@ -666,16 +762,20 @@ capability-preserving schema for one model.
666
762
  ```bash
667
763
  image-skill models --json
668
764
  image-skill models list --json
765
+ image-skill models list --summary --json
669
766
  image-skill models list --available --operation image.generate --json
670
767
  image-skill models list --available --operation image.edit --json
768
+ image-skill models list --available --modality video --operation video.generate --json
671
769
  image-skill models list --catalog-only --provider fal --json
672
770
  image-skill models show MODEL_ID --json
771
+ image-skill models show default --json
673
772
  ```
674
773
 
675
774
  Hosted API equivalents:
676
775
 
677
776
  ```bash
678
777
  curl -sS https://api.image-skill.com/v1/models
778
+ curl -sS 'https://api.image-skill.com/v1/models?available=true&modality=video&operation=video.generate'
679
779
  curl -sS https://api.image-skill.com/v1/models/xai.grok-imagine-image
680
780
  ```
681
781
 
@@ -686,17 +786,27 @@ seeds, masks, reference images, transparent backgrounds, arbitrary aspect
686
786
  ratios, image-size presets, output counts, resolution controls, safety
687
787
  controls, or provider-native options.
688
788
 
689
- `models list` is executable-first by default and returns `summary` with total,
690
- returned, available, executable, catalog-only, provider split,
789
+ `models list` is executable-first by default and returns one
790
+ `default: true` row when the default executable create model is included.
791
+ `models show default --json` resolves to that model so first-run agents can
792
+ inspect the recommended create surface without knowing a provider-specific
793
+ model id. The list response also returns `summary` with total, returned,
794
+ available, executable, catalog-only, provider split,
691
795
  `execution_availability`, first actionable model ids, recommended filter
692
796
  commands, and catalog-inclusion flags. Default list output excludes
693
797
  catalog-only rows so fresh agents see executable candidates first. Use
694
- `--available` for currently usable executable rows, `--operation
695
- image.generate` or `--operation image.edit` for the task, `--provider fal|xai|openai`
696
- to narrow by provider, and `--catalog-only` when you intentionally want
697
- source-backed rows that are inspectable but not runnable yet. Provider-level
698
- availability is not the same thing as model executability; for runnable
699
- choices require both `status:"available"` and
798
+ `--summary` when you need a compact, sortable model menu: each row keeps the
799
+ model id, flat `estimated_usd_per_image`, `credits_required`, lightweight
800
+ `task_tags`, status, provider, max output count/resolution, storage, and
801
+ `show_command`, while omitting full parameter schemas. Use `--available` for
802
+ currently usable executable rows, `--modality image|video|audio|3d` for media
803
+ type, `--operation image.generate`, `--operation image.edit`,
804
+ `--operation video.generate`, `--operation audio.generate`, or
805
+ `--operation 3d.generate` for the task, `--provider fal|xai|openai` to narrow by
806
+ provider, and `--catalog-only` when you intentionally want source-backed rows
807
+ that are inspectable but not runnable yet. Provider-level availability is not
808
+ the same thing as model executability; for runnable choices require both
809
+ `status:"available"` and
700
810
  `execution.model_execution_status:"executable"`. If a reachable provider has no
701
811
  runnable model for the requested operation, `summary.execution_availability`
702
812
  says so directly and includes the fastest `--available --operation ...`
@@ -784,10 +894,23 @@ image-skill create --guide --prompt "A compact field camera on a stainless workb
784
894
  ```
785
895
 
786
896
  `create --guide` returns `schema: image-skill.create-guide.v1`,
787
- `stage`, `next_command`, `escape_hatches`, selected executable model and cost,
788
- auth/quota/payment blockers, and mutation flags. All mutation flags must be
789
- false in guide mode: no provider call, hosted create, signup, payment object,
790
- credit debit, or media write.
897
+ `stage`, `next_command`, `guide_warning`, `auth_ready`, `no_spend_evaluation`,
898
+ `recommended_no_spend_command`,
899
+ `self_fund_next_command`, `self_fund_handoff`, `escape_hatches`, selected
900
+ executable model and cost, auth/quota/payment blockers, and mutation flags. All
901
+ mutation flags must be false in guide mode: no provider call, hosted create,
902
+ signup, payment object, credit debit, or media write.
903
+ For next-command safety, read `guide_warning.next_command_safety` before
904
+ acting: `hosted_signup_no_spend_setup` is no-spend auth setup,
905
+ `live_money_payment_action` is top-up/payment work, and
906
+ `live_media_create_credit_debit` is a live create that can call a provider,
907
+ debit credits, and write media.
908
+ For payment state, read
909
+ `checks.payments.preferred_method_summary.top_up_path` instead of inferring
910
+ from several arrays. It is `browserless_agent_self_fund` when the preferred
911
+ rail is live money, browserless, agent initiated, and agent settleable;
912
+ `human_payment_handoff` when a human/browser completion step is required; and
913
+ `payment_method_inspection` when the guide cannot classify a direct top-up path.
791
914
  In guide cost output, `cost.estimated_usd_per_image` is the estimated Image
792
915
  Skill debit in dollars for one output, matching
793
916
  `cost.estimated_debit_usd_per_image` and
@@ -840,9 +963,12 @@ operation debits across all requested outputs. `--max-estimated-usd-per-image`
840
963
  and raw API `max_estimated_usd_per_image` are per-image Image Skill debit
841
964
  budget guards.
842
965
 
843
- Generate video through the same `create` command and durable-media loop. Because
844
- the no-model default selects an image model, request a video model by id; the
845
- response returns a durable owned `video_...` mp4 asset URL, a `job_id`, and a
966
+ Generate video through the same `create` command and durable-media loop. For
967
+ video prompts, run `image-skill create --guide --prompt "..." --json`; the guide
968
+ can select the executable video model, suggest `--aspect-ratio 16:9`, and emit
969
+ the next create command. Plain `create` without a model still defaults to an
970
+ image model, so use the guide or pass the video model id directly. The response
971
+ returns a durable owned `video_...` mp4 asset URL, a `job_id`, and a
846
972
  `cost.credit_pricing` receipt just like an image create.
847
973
 
848
974
  ```bash
@@ -853,10 +979,12 @@ image-skill create \
853
979
  --json
854
980
  ```
855
981
 
856
- Inspect parameters, output media type, and cost first with `image-skill models
857
- show fal.ltx-video-13b-distilled --json`. Video runs synchronously through the
858
- same create call and can take longer than an image; the returned `assets[].url`
859
- is an owned `video/mp4`.
982
+ Discover runnable video models with `image-skill models list --available
983
+ --modality video --operation video.generate --json`. Inspect parameters, output
984
+ media type, and cost first with `image-skill models show
985
+ fal.ltx-video-13b-distilled --json`. Video runs synchronously through the same
986
+ create call and can take longer than an image; the returned `assets[].url` is an
987
+ owned `video/mp4`.
860
988
 
861
989
  Generate audio (music, sound) through the same `create` command and
862
990
  durable-media loop. Request an audio model by id; the response returns a durable
@@ -958,17 +1086,23 @@ for concrete quality/size requests; GPT Image 2 edit still requires
958
1086
  unknown-cost acceptance before execution, but records usage-priced provider cost
959
1087
  after execution when OpenAI returns token usage. Provider-native controls remain
960
1088
  visible for planning and fail closed until their capability schema marks them
961
- executable. Hosted
962
- `create --dry-run` validates `model_parameters` against the selected model,
963
- returns accepted keys/provenance and request-aware credit pricing for planning,
964
- and never executes provider controls or consumes credits.
1089
+ executable. Hosted `create --dry-run` validates `model_parameters` against the
1090
+ selected model, returns accepted keys/provenance and request-aware credit
1091
+ pricing for planning, and never executes provider controls or consumes credits.
1092
+ Hosted `edit --dry-run` validates the same owned input, mask/reference,
1093
+ prompt-policy, budget, and `model_parameters` checks as a live edit, then
1094
+ returns planned outputs without storage, provider, or billing side effects.
965
1095
  For dry-run responses, `cost.credit_pricing.credits_required` is the planned
966
1096
  live execution debit for the selected model. The actual debit for the dry run is
967
1097
  `quota.consumed_credits: 0`.
968
- Authenticated hosted create dry-runs also create a recoverable planned job:
1098
+ Authenticated hosted dry-runs also create a recoverable planned job:
969
1099
  `jobs show` returns `status: "planned"` with `plan_receipt`, and `activity`
970
1100
  emits `job.planned`. Planned receipts do not create downloadable media assets or
971
- usage debits.
1101
+ usage debits, media writes, or provider execution. In the first-run guide, this
1102
+ exact no-spend command behavior is exposed as
1103
+ `data.no_spend_next_command_effect` and
1104
+ `data.recommended_no_spend_command_effect`; the evaluator stop policy is exposed
1105
+ as `data.no_spend_evaluation`.
972
1106
 
973
1107
  Minimum success data:
974
1108
 
@@ -1139,6 +1273,10 @@ If `--input` is a local path or external URL, the public CLI first normalizes it
1139
1273
  through the same upload resolver as `image-skill upload`, then sends only the
1140
1274
  resulting `asset_id` to `POST /v1/edit`. If `--input` is an Image Skill asset id
1141
1275
  or owned asset URL, edit uses that owned asset directly.
1276
+ Add `--dry-run` to plan the edit after owned-asset, prompt-policy,
1277
+ `model_parameters`, and budget validation. Dry-run edit responses return planned
1278
+ assets and `quota.consumed_credits: 0`, store a recoverable `job.planned`
1279
+ receipt, and do not call the provider, debit credits, or write media.
1142
1280
  For models with wired mask support, `--mask` follows the same upload/asset-id
1143
1281
  resolver and sends only `mask_asset_id`; never pass provider-native `mask_url`
1144
1282
  through `model_parameters`.
@@ -1207,6 +1345,10 @@ Direct `/v1/edit` callers use the same owned-asset contract:
1207
1345
  }
1208
1346
  ```
1209
1347
 
1348
+ Set `dry_run: true` on `/v1/edit` to get the same no-spend plan the CLI returns.
1349
+ The server still validates ownership, prompt policy, references, masks,
1350
+ `model_parameters`, and budget guards before returning the planned job.
1351
+
1210
1352
  Create a 3D asset from an image through the same `edit` command and
1211
1353
  durable-media loop. Image-to-3D is promptless and image-conditioned, so it ships
1212
1354
  as a variation transform: pass exactly one owned input image (no prompt) to a 3D
@@ -1346,11 +1488,39 @@ image-skill jobs show job_... --json
1346
1488
  ```
1347
1489
 
1348
1490
  Output includes public job status, trace id, timestamps, capability id, cost
1349
- summary, safety status, and Image Skill-owned asset metadata. Provider/model
1350
- provenance is available only through explicit provenance/debug affordances for
1351
- authorized actors. Default output does not include raw prompts, generated bytes, provider
1491
+ summary, safety status, and Image Skill-owned asset metadata. For fresh-agent
1492
+ parsing, `status`, `state`, `assets`, and `cost` are mirrored at top level and
1493
+ match `job.status`, `job.assets`, and `job.cost`. Provider/model provenance is
1494
+ available only through explicit provenance/debug affordances for authorized
1495
+ actors. Default output does not include raw prompts, generated bytes, provider
1352
1496
  credentials, DB/storage keys, bucket names, or local paths.
1353
1497
 
1498
+ Minimum success data:
1499
+
1500
+ ```json
1501
+ {
1502
+ "request": {
1503
+ "job_id": "job_..."
1504
+ },
1505
+ "status": "completed",
1506
+ "state": "completed",
1507
+ "assets": [],
1508
+ "cost": {
1509
+ "estimated_usd": 0.05,
1510
+ "provider_reported_usd_ticks": null
1511
+ },
1512
+ "job": {
1513
+ "job_id": "job_...",
1514
+ "status": "completed",
1515
+ "assets": [],
1516
+ "cost": {
1517
+ "estimated_usd": 0.05,
1518
+ "provider_reported_usd_ticks": null
1519
+ }
1520
+ }
1521
+ }
1522
+ ```
1523
+
1354
1524
  ### `image-skill jobs wait`
1355
1525
 
1356
1526
  Waits for a hosted Image Skill job to reach a terminal status.
@@ -1360,7 +1530,9 @@ image-skill jobs wait job_... --timeout-ms 30000 --poll-interval-ms 1000 --json
1360
1530
  ```
1361
1531
 
1362
1532
  Completed jobs return immediately. Non-terminal jobs poll until completion,
1363
- failure, cancellation, or deterministic timeout.
1533
+ failure, cancellation, or deterministic timeout. Terminal success uses the same
1534
+ top-level `status`, `state`, `assets`, and `cost` mirrors as `jobs show`, with
1535
+ `request.timeout_ms` and `request.poll_interval_ms` added for provenance.
1364
1536
 
1365
1537
  ### `image-skill activity list`
1366
1538
 
@@ -1450,7 +1622,7 @@ below.
1450
1622
  | Event type | Subject | Operation | Emitted when | Stable links |
1451
1623
  | ------------------------------------------ | ---------- | ----------- | ------------------------------------------------------------------ | ------------------------------------------------------------------ |
1452
1624
  | `job.completed` | `job` | create/edit | A hosted create or edit job reaches a terminal state. | `job_id`, `asset_ids`, `usage_event_id` |
1453
- | `job.planned` | `job` | create | An authenticated create dry-run stores a recoverable plan receipt. | `job_id` |
1625
+ | `job.planned` | `job` | create/edit | An authenticated hosted dry-run stores a recoverable plan receipt. | `job_id` |
1454
1626
  | `asset.created` | `asset` | create/edit | A hosted create or edit produces an output asset. | `job_id`, `asset_ids`, `usage_event_id` |
1455
1627
  | `asset.uploaded` | `asset` | upload | A public edit workflow uploads or imports input media. | `job_id`, `asset_ids`, `usage_event_id` |
1456
1628
  | `usage.credit_consumed` | `usage` | usage | A creative operation records a preview-credit entry. | `job_id`, `usage_event_id` |
@@ -1469,7 +1641,7 @@ machine-readable lifecycle fields such as `state`, `reason`, `issue_urls`,
1469
1641
  `issue_numbers`, `mode`, and `github_mutation`. Agents should use it to learn
1470
1642
  whether submitted feedback was promoted, skipped, deduped, blocked, or already
1471
1643
  mirrored without reading private repository artifacts.
1472
- `job.planned` includes `details.plan_receipt` for authenticated hosted create
1644
+ `job.planned` includes `details.plan_receipt` for authenticated hosted
1473
1645
  dry-runs. It is a recoverable planning receipt, not completed media work:
1474
1646
  planned outputs do not have durable asset IDs, download URLs, usage debits, or
1475
1647
  provider execution.
@@ -1502,7 +1674,12 @@ image-skill feedback create \
1502
1674
  --json
1503
1675
  ```
1504
1676
 
1505
- Hosted feedback requires `IMAGE_SKILL_TOKEN` and persists through
1677
+ Hosted feedback authenticates the same way as other hosted commands: saved
1678
+ public CLI config from default signup, `IMAGE_SKILL_TOKEN`, or
1679
+ `--token-stdin`. If guide/signup already saved config, run `feedback create`
1680
+ normally; no raw token copy step is required. If the runtime uses its own
1681
+ secret store, prefer `IMAGE_SKILL_TOKEN` or `--token-stdin`. Do not paste tokens
1682
+ into feedback title, body, evidence, issues, or logs. Feedback persists through
1506
1683
  `https://api.image-skill.com/v1/feedback`. The hosted API fails closed if
1507
1684
  durable hosted feedback storage is unavailable.
1508
1685
 
@@ -1518,8 +1695,8 @@ example, `BUDGET_REQUIRES_CONFIRMATION` returns
1518
1695
  secret handoff.
1519
1696
  `credits methods` and `credits packs list` do not require auth.
1520
1697
 
1521
- Feedback should avoid raw prompts, provider keys, generated image bytes, source
1522
- image bytes, and private user data.
1698
+ Feedback should avoid raw prompts, hosted tokens, provider keys, generated
1699
+ image bytes, source image bytes, and private user data.
1523
1700
 
1524
1701
  Hosted API equivalent:
1525
1702