image-skill 0.1.28 → 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,34 +128,76 @@ 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 primary `data.next_command` plus
132
- machine-readable `data.next_command_effect`. Guide mode does not create a
133
- signup, provider job, dry-run job, payment object, credit debit, or asset.
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
134
+ mode does not create a signup, provider job, dry-run job, payment object,
135
+ credit debit, or asset.
134
136
 
135
137
  ```bash
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
+ `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.
152
174
  - `ready_to_create`: `data.next_command` is a live media create. Its
153
175
  `data.next_command_effect.label` is `live_media_create_credit_debit`, with
154
176
  `provider_call`, `hosted_create`, `credit_debit`, and `media_write` all true.
155
- Run it for the first bounded create when media spend is allowed. If you are
156
- in a no-spend evaluation or only need proof that the path is ready, run
157
- `data.no_spend_next_command` instead; it is the dry-run plan command with no
158
- provider call, credit debit, or media write. If the guide authenticated from
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
159
201
  env or stdin, prefer
160
202
  `data.auth_handoff.next_command.with_env` or
161
203
  `data.auth_handoff.next_command.with_stdin` so auth follows the create.
@@ -187,7 +229,7 @@ same auth context.
187
229
  Prefer package execution in fresh agent sandboxes:
188
230
 
189
231
  ```bash
190
- 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
191
233
  ```
192
234
 
193
235
  Global install is optional, not the primary path. If `npm install -g image-skill`
@@ -198,7 +240,21 @@ package-manager paths instead of cloning private source:
198
240
  export npm_config_cache="${npm_config_cache:-$PWD/.npm-cache}"
199
241
  export npm_config_prefix="${npm_config_prefix:-$PWD/.npm-global}"
200
242
  export PATH="$npm_config_prefix/bin:$PATH"
201
- 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
202
258
  ```
203
259
 
204
260
  Hosted signup saves auth state to the public CLI config by default. If the
@@ -207,7 +263,7 @@ runtime needs a writable compatibility config path, set
207
263
 
208
264
  ```bash
209
265
  export IMAGE_SKILL_CONFIG_PATH="$PWD/.image-skill/config.json"
210
- npx -y image-skill@latest signup --agent \
266
+ npm_config_update_notifier=false npx -y image-skill@latest signup --agent \
211
267
  --agent-contact agent-inbox@example.com \
212
268
  --agent-name creative-agent \
213
269
  --runtime codex \
@@ -218,19 +274,37 @@ Config write failures return `PUBLIC_CLI_CONFIG_WRITE_FAILED` with a structured
218
274
  `error.recovery.suggested_command`. Agents should follow that recovery field,
219
275
  then rerun `create --guide` for the requested creative flow.
220
276
  When `create --guide` reaches `auth_required`, it probes the configured auth
221
- path first. If local config cannot be written, `data.next_command` uses
222
- `--show-token --no-save` and `data.auth_handoff.rerun_guide.with_stdin` shows
223
- the token-stdin rerun path instead of asking the agent to try a doomed saved
224
- 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.
225
284
 
226
285
  ### `image-skill whoami`
227
286
 
228
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`.
229
292
 
230
293
  ```bash
231
294
  image-skill whoami --json
232
295
  ```
233
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
+
234
308
  ### `image-skill usage quota`
235
309
 
236
310
  Canonical pre-spend check. Shows remaining credits, job limits, model limits,
@@ -343,8 +417,11 @@ Minimum success data:
343
417
  {
344
418
  "pack_id": "starter-500",
345
419
  "name": "Starter",
420
+ "display_name": "Starter (500 credits)",
346
421
  "credits": 500,
347
422
  "amount_cents": 500,
423
+ "amount_usd": "5.00",
424
+ "price_usd": "5.00",
348
425
  "currency": "USD"
349
426
  }
350
427
  ],
@@ -375,14 +452,17 @@ model's provider cost and Image Skill's margin policy; inspect
375
452
  debit before spending.
376
453
 
377
454
  ```bash
378
- 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
379
456
  ```
380
457
 
381
- 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:
382
461
 
383
462
  ```bash
384
463
  image-skill credits quote \
385
464
  --credits 10 \
465
+ --payment-method stripe_x402.exact.usdc \
386
466
  --idempotency-key quote-run-001 \
387
467
  --json
388
468
  ```
@@ -413,8 +493,9 @@ image-skill credits quote \
413
493
  --json
414
494
  ```
415
495
 
416
- For exact custom Stripe Checkout terms, request the provider and bounded credit
417
- 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:
418
499
 
419
500
  ```bash
420
501
  image-skill credits quote \
@@ -470,6 +551,10 @@ settlement and webhook fulfillment succeeds. Deposit challenge creation itself
470
551
  must not mutate credit balances. Stay within the delegated cap and never pass
471
552
  wallet private keys, seed phrases, x402 payment headers, deposit client
472
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`.
473
558
 
474
559
  ```bash
475
560
  image-skill credits buy \
@@ -600,18 +685,23 @@ curl -sS https://api.image-skill.com/v1/credit-purchases/stripe-x402-deposits \
600
685
 
601
686
  ### `image-skill credits status`
602
687
 
603
- Shows the durable state of a quote, x402 deposit attempt, Stripe Checkout
604
- attempt, Checkout Session, or receipt. Use this after `credits buy` so agents
605
- 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.
606
694
 
607
695
  ```bash
696
+ image-skill credits status --json
608
697
  image-skill credits status \
609
698
  --payment-attempt-id payatt_... \
610
699
  --json
611
700
  ```
612
701
 
613
- Exactly one reference flag is required: `--quote-id`,
614
- `--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.
615
705
 
616
706
  Minimum action-required data:
617
707
 
@@ -672,16 +762,20 @@ capability-preserving schema for one model.
672
762
  ```bash
673
763
  image-skill models --json
674
764
  image-skill models list --json
765
+ image-skill models list --summary --json
675
766
  image-skill models list --available --operation image.generate --json
676
767
  image-skill models list --available --operation image.edit --json
768
+ image-skill models list --available --modality video --operation video.generate --json
677
769
  image-skill models list --catalog-only --provider fal --json
678
770
  image-skill models show MODEL_ID --json
771
+ image-skill models show default --json
679
772
  ```
680
773
 
681
774
  Hosted API equivalents:
682
775
 
683
776
  ```bash
684
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'
685
779
  curl -sS https://api.image-skill.com/v1/models/xai.grok-imagine-image
686
780
  ```
687
781
 
@@ -692,17 +786,27 @@ seeds, masks, reference images, transparent backgrounds, arbitrary aspect
692
786
  ratios, image-size presets, output counts, resolution controls, safety
693
787
  controls, or provider-native options.
694
788
 
695
- `models list` is executable-first by default and returns `summary` with total,
696
- 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,
697
795
  `execution_availability`, first actionable model ids, recommended filter
698
796
  commands, and catalog-inclusion flags. Default list output excludes
699
797
  catalog-only rows so fresh agents see executable candidates first. Use
700
- `--available` for currently usable executable rows, `--operation
701
- image.generate` or `--operation image.edit` for the task, `--provider fal|xai|openai`
702
- to narrow by provider, and `--catalog-only` when you intentionally want
703
- source-backed rows that are inspectable but not runnable yet. Provider-level
704
- availability is not the same thing as model executability; for runnable
705
- 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
706
810
  `execution.model_execution_status:"executable"`. If a reachable provider has no
707
811
  runnable model for the requested operation, `summary.execution_availability`
708
812
  says so directly and includes the fastest `--available --operation ...`
@@ -790,10 +894,23 @@ image-skill create --guide --prompt "A compact field camera on a stainless workb
790
894
  ```
791
895
 
792
896
  `create --guide` returns `schema: image-skill.create-guide.v1`,
793
- `stage`, `next_command`, `escape_hatches`, selected executable model and cost,
794
- auth/quota/payment blockers, and mutation flags. All mutation flags must be
795
- false in guide mode: no provider call, hosted create, signup, payment object,
796
- 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.
797
914
  In guide cost output, `cost.estimated_usd_per_image` is the estimated Image
798
915
  Skill debit in dollars for one output, matching
799
916
  `cost.estimated_debit_usd_per_image` and
@@ -846,9 +963,12 @@ operation debits across all requested outputs. `--max-estimated-usd-per-image`
846
963
  and raw API `max_estimated_usd_per_image` are per-image Image Skill debit
847
964
  budget guards.
848
965
 
849
- Generate video through the same `create` command and durable-media loop. Because
850
- the no-model default selects an image model, request a video model by id; the
851
- 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
852
972
  `cost.credit_pricing` receipt just like an image create.
853
973
 
854
974
  ```bash
@@ -859,10 +979,12 @@ image-skill create \
859
979
  --json
860
980
  ```
861
981
 
862
- Inspect parameters, output media type, and cost first with `image-skill models
863
- show fal.ltx-video-13b-distilled --json`. Video runs synchronously through the
864
- same create call and can take longer than an image; the returned `assets[].url`
865
- 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`.
866
988
 
867
989
  Generate audio (music, sound) through the same `create` command and
868
990
  durable-media loop. Request an audio model by id; the response returns a durable
@@ -964,17 +1086,23 @@ for concrete quality/size requests; GPT Image 2 edit still requires
964
1086
  unknown-cost acceptance before execution, but records usage-priced provider cost
965
1087
  after execution when OpenAI returns token usage. Provider-native controls remain
966
1088
  visible for planning and fail closed until their capability schema marks them
967
- executable. Hosted
968
- `create --dry-run` validates `model_parameters` against the selected model,
969
- returns accepted keys/provenance and request-aware credit pricing for planning,
970
- 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.
971
1095
  For dry-run responses, `cost.credit_pricing.credits_required` is the planned
972
1096
  live execution debit for the selected model. The actual debit for the dry run is
973
1097
  `quota.consumed_credits: 0`.
974
- Authenticated hosted create dry-runs also create a recoverable planned job:
1098
+ Authenticated hosted dry-runs also create a recoverable planned job:
975
1099
  `jobs show` returns `status: "planned"` with `plan_receipt`, and `activity`
976
1100
  emits `job.planned`. Planned receipts do not create downloadable media assets or
977
- 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`.
978
1106
 
979
1107
  Minimum success data:
980
1108
 
@@ -1145,6 +1273,10 @@ If `--input` is a local path or external URL, the public CLI first normalizes it
1145
1273
  through the same upload resolver as `image-skill upload`, then sends only the
1146
1274
  resulting `asset_id` to `POST /v1/edit`. If `--input` is an Image Skill asset id
1147
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.
1148
1280
  For models with wired mask support, `--mask` follows the same upload/asset-id
1149
1281
  resolver and sends only `mask_asset_id`; never pass provider-native `mask_url`
1150
1282
  through `model_parameters`.
@@ -1213,6 +1345,10 @@ Direct `/v1/edit` callers use the same owned-asset contract:
1213
1345
  }
1214
1346
  ```
1215
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
+
1216
1352
  Create a 3D asset from an image through the same `edit` command and
1217
1353
  durable-media loop. Image-to-3D is promptless and image-conditioned, so it ships
1218
1354
  as a variation transform: pass exactly one owned input image (no prompt) to a 3D
@@ -1352,11 +1488,39 @@ image-skill jobs show job_... --json
1352
1488
  ```
1353
1489
 
1354
1490
  Output includes public job status, trace id, timestamps, capability id, cost
1355
- summary, safety status, and Image Skill-owned asset metadata. Provider/model
1356
- provenance is available only through explicit provenance/debug affordances for
1357
- 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
1358
1496
  credentials, DB/storage keys, bucket names, or local paths.
1359
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
+
1360
1524
  ### `image-skill jobs wait`
1361
1525
 
1362
1526
  Waits for a hosted Image Skill job to reach a terminal status.
@@ -1366,7 +1530,9 @@ image-skill jobs wait job_... --timeout-ms 30000 --poll-interval-ms 1000 --json
1366
1530
  ```
1367
1531
 
1368
1532
  Completed jobs return immediately. Non-terminal jobs poll until completion,
1369
- 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.
1370
1536
 
1371
1537
  ### `image-skill activity list`
1372
1538
 
@@ -1456,7 +1622,7 @@ below.
1456
1622
  | Event type | Subject | Operation | Emitted when | Stable links |
1457
1623
  | ------------------------------------------ | ---------- | ----------- | ------------------------------------------------------------------ | ------------------------------------------------------------------ |
1458
1624
  | `job.completed` | `job` | create/edit | A hosted create or edit job reaches a terminal state. | `job_id`, `asset_ids`, `usage_event_id` |
1459
- | `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` |
1460
1626
  | `asset.created` | `asset` | create/edit | A hosted create or edit produces an output asset. | `job_id`, `asset_ids`, `usage_event_id` |
1461
1627
  | `asset.uploaded` | `asset` | upload | A public edit workflow uploads or imports input media. | `job_id`, `asset_ids`, `usage_event_id` |
1462
1628
  | `usage.credit_consumed` | `usage` | usage | A creative operation records a preview-credit entry. | `job_id`, `usage_event_id` |
@@ -1475,7 +1641,7 @@ machine-readable lifecycle fields such as `state`, `reason`, `issue_urls`,
1475
1641
  `issue_numbers`, `mode`, and `github_mutation`. Agents should use it to learn
1476
1642
  whether submitted feedback was promoted, skipped, deduped, blocked, or already
1477
1643
  mirrored without reading private repository artifacts.
1478
- `job.planned` includes `details.plan_receipt` for authenticated hosted create
1644
+ `job.planned` includes `details.plan_receipt` for authenticated hosted
1479
1645
  dry-runs. It is a recoverable planning receipt, not completed media work:
1480
1646
  planned outputs do not have durable asset IDs, download URLs, usage debits, or
1481
1647
  provider execution.
@@ -1508,7 +1674,12 @@ image-skill feedback create \
1508
1674
  --json
1509
1675
  ```
1510
1676
 
1511
- 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
1512
1683
  `https://api.image-skill.com/v1/feedback`. The hosted API fails closed if
1513
1684
  durable hosted feedback storage is unavailable.
1514
1685
 
@@ -1524,8 +1695,8 @@ example, `BUDGET_REQUIRES_CONFIRMATION` returns
1524
1695
  secret handoff.
1525
1696
  `credits methods` and `credits packs list` do not require auth.
1526
1697
 
1527
- Feedback should avoid raw prompts, provider keys, generated image bytes, source
1528
- 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.
1529
1700
 
1530
1701
  Hosted API equivalent:
1531
1702