image-skill 0.1.53 → 0.1.55

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/CHANGELOG.md CHANGED
@@ -4,6 +4,26 @@ This changelog tracks the public `image-skill` CLI package and public skill
4
4
  mirror. The npm package metadata remains the authority for tarball integrity and
5
5
  provenance; this file is the human- and agent-readable release map.
6
6
 
7
+ ## 0.1.55 - 2026-06-16
8
+
9
+ - Release (activation/self-fund): mirror top-up urgency and the first no-spend
10
+ inspection command into `create --guide` quota-required
11
+ `data.self_fund_handoff`, so agents that hit the quota wall can see blocked
12
+ or near-wall priority and start with `credits methods` before quote/buy
13
+ payment steps. No payment caps, auth semantics, provider routing, wallet
14
+ action, provider spend, media spend, hosted deploy, or production write
15
+ changed in this release bump.
16
+
17
+ ## 0.1.54 - 2026-06-16
18
+
19
+ - Release (activation/self-fund): add explicit `urgency`,
20
+ `urgency_score`, and `urgency_reasons` to quota top-up data and
21
+ `data.next_actions.self_fund`, so activated agents can distinguish
22
+ browserless top-up availability from near-wall or blocked top-up urgency
23
+ without reverse-engineering recommendation reasons. No payment caps, auth
24
+ semantics, provider routing, wallet action, provider spend, media spend,
25
+ hosted deploy, or production write changed in this release bump.
26
+
7
27
  ## 0.1.53 - 2026-06-16
8
28
 
9
29
  - Release (activation): align `create --guide` `auth_required` blocker copy
package/SKILL.md CHANGED
@@ -41,6 +41,8 @@ npm_config_update_notifier=false npx -y image-skill@latest create --guide --prom
41
41
 
42
42
  The guide is a free, zero-spend planning call. Given current auth, quota, and payment state, it returns `data.next_command`, `data.next_command_copy_runnable`, `data.next_command_missing_inputs`, `data.stage`, `data.guide_warning`, `data.next_command_effect`, `data.auth_ready`, `data.no_spend_evaluation`, `data.guide_recovery`, `data.recommended_no_spend_command` (alias of `data.no_spend_next_command`), `data.no_spend_next_command_effect`, `data.self_fund_next_command`, `data.self_fund_handoff`, `data.self_fund_preparation`, `data.auth_handoff`, and `data.mutation`. It also preserves `data.checks.quota.top_up`, the same quota top-up recommendation returned by `usage quota`, so wallet-capable agents can see whether a browserless x402 top-up is recommended before the hard wall. Read `data.guide_warning` before running `data.next_command`: `next_command_safety` names whether the command is no-spend setup, read-only inspection, live-money payment action, or live media create. Run that next command only when `data.next_command_copy_runnable` is `true` and the warning says it is safe for your spend policy; when it is `false`, fill `data.next_command_missing_inputs` first. Prefer `data.guide_recovery` for no-doc recovery loops: it names the safest no-spend command and field, the live create or payment field that would spend, and the double-spend guard to check before any live retry. Repeat until `data.stage` is `ready_to_create`. At `ready_to_create`, `data.auth_ready.ready` and `data.auth_ready.next_command_auth_ready` are `true`: the returned create can reuse saved config, env token, or stdin token context without exposing a raw token. Read `data.self_fund_preparation` in this stage before spending the remaining free allowance: when `available` and `recommended` are true, `quote_command` creates an authenticated live-money quote/payment object but does not pay, settle a wallet transfer, debit credits, call a provider, or write media. Only a later buy/payment step can spend money. When `data.guide_warning.next_command_safety` is `live_media_create_credit_debit` and `data.no_spend_evaluation.stop_here` is `true`, `data.next_command` is the live create: run it only if media spend is allowed, otherwise stop before it and run `data.recommended_no_spend_command` for no-spend proof. The no-spend command is an authenticated hosted dry-run: it may create a recoverable `job.planned` receipt, but it has no provider call, credit debit, downloadable asset, or media write.
43
43
 
44
+ When `data.stage` is `quota_required`, `data.self_fund_handoff` mirrors top-up `urgency`, `urgency_score`, and `urgency_reasons`, and exposes `first_safe_command` with a no-spend inspection effect. Run that no-spend command first when you need to inspect rails or stay below delegated spend authority before opening the live-money quote path.
45
+
44
46
  Minimum success envelope on a create or edit:
45
47
 
46
48
  ```json
@@ -184,6 +186,9 @@ reaches `quota_required`, read
184
186
  `data.checks.payments.preferred_method_summary.top_up_path` before quoting:
185
187
  `browserless_agent_self_fund` is the autonomous wallet path, while
186
188
  `human_payment_handoff` means a human/browser completion step is still required.
189
+ The quota-required `data.self_fund_handoff` also mirrors the top-up urgency and
190
+ exposes `first_safe_command`, usually `image-skill credits methods --json`, for
191
+ no-spend payment-method inspection before quote/buy steps.
187
192
  When `create --guide` reaches `ready_to_create`, inspect
188
193
  `data.self_fund_preparation` before consuming the remaining free allowance. If
189
194
  it is available and recommended, `quote_command` is the pre-wall browserless
@@ -15,7 +15,7 @@ import { Readable } from "node:stream";
15
15
  import { pipeline } from "node:stream/promises";
16
16
  import os from "node:os";
17
17
 
18
- const VERSION = "0.1.53";
18
+ const VERSION = "0.1.55";
19
19
  const PACKAGE_NAME = "image-skill";
20
20
  const DEFAULT_API_BASE_URL = "https://api.image-skill.com";
21
21
  const DEFAULT_DOCS_BASE_URL = "https://image-skill.com";
@@ -1882,6 +1882,7 @@ async function createGuide(args, options = {}) {
1882
1882
  afterNext,
1883
1883
  tokenSource: publicTokenSource,
1884
1884
  commandPrefix: guideCommandPrefix,
1885
+ quotaTopUp: quota?.envelope.data?.top_up ?? null,
1885
1886
  });
1886
1887
  const selfFundPreparation = createGuideSelfFundPreparation(stage, {
1887
1888
  paymentSummary,
@@ -2918,10 +2919,21 @@ function createGuideSelfFundHandoff(stage, input) {
2918
2919
  input.paymentSummary.suggested_commands,
2919
2920
  "status",
2920
2921
  );
2922
+ const inspectMethodsCommand = guidePaymentInspectionCommand(
2923
+ input.paymentSummary.suggested_commands,
2924
+ "methods",
2925
+ );
2926
+ const inspectPacksCommand = guidePaymentInspectionCommand(
2927
+ input.paymentSummary.suggested_commands,
2928
+ "packs",
2929
+ );
2921
2930
 
2922
2931
  return {
2923
2932
  required: true,
2924
2933
  preferred_method: preferredMethod,
2934
+ urgency: input.quotaTopUp?.urgency ?? null,
2935
+ urgency_score: input.quotaTopUp?.urgency_score ?? null,
2936
+ urgency_reasons: input.quotaTopUp?.urgency_reasons ?? [],
2925
2937
  live_money:
2926
2938
  preferredMethod !== null &&
2927
2939
  input.paymentSummary.live_money_methods.includes(preferredMethod),
@@ -2929,6 +2941,19 @@ function createGuideSelfFundHandoff(stage, input) {
2929
2941
  agent_initiated: agentInitiated,
2930
2942
  agent_settleable: agentSettleable,
2931
2943
  human_handoff_required: humanHandoffRequired,
2944
+ first_safe_command: inspectMethodsCommand,
2945
+ first_safe_command_effect: {
2946
+ label: "inspect_payment_methods_no_spend",
2947
+ no_spend: true,
2948
+ live_money: false,
2949
+ provider_call: false,
2950
+ hosted_create: false,
2951
+ payment_object: false,
2952
+ credit_debit: false,
2953
+ media_write: false,
2954
+ },
2955
+ inspect_methods_command: inspectMethodsCommand,
2956
+ inspect_packs_command: inspectPacksCommand,
2932
2957
  payment_commands: {
2933
2958
  quote: guidePaymentCommandByKind(
2934
2959
  input.paymentSummary.suggested_commands,
@@ -2959,8 +2984,8 @@ function createGuideSelfFundHandoff(stage, input) {
2959
2984
  },
2960
2985
  },
2961
2986
  warning: agentSettleable
2962
- ? "data.self_fund_next_command starts a browserless live-money quote. Preserve auth with data.self_fund_handoff.auth.next_command, then follow payment_commands.buy, pay exactly what wallet_settlement points to, run payment_commands.status, and rerun after_next."
2963
- : "data.self_fund_next_command starts a live-money payment handoff. Preserve auth with data.self_fund_handoff.auth.next_command, complete the payment, then rerun after_next.",
2987
+ ? "Start with data.self_fund_handoff.first_safe_command for no-spend inspection, then data.self_fund_next_command for the browserless live-money quote when delegated spend is allowed. Preserve auth with data.self_fund_handoff.auth.next_command, follow payment_commands.buy, pay exactly what wallet_settlement points to, run payment_commands.status, and rerun after_next."
2988
+ : "Start with data.self_fund_handoff.first_safe_command for no-spend inspection, then data.self_fund_next_command for the live-money payment handoff when delegated spend is allowed. Preserve auth with data.self_fund_handoff.auth.next_command, complete the payment, then rerun after_next.",
2964
2989
  };
2965
2990
  }
2966
2991
 
@@ -6132,6 +6157,7 @@ function quotaTopUpNextActions(topUp) {
6132
6157
  available: true,
6133
6158
  recommended: topUp.recommended === true,
6134
6159
  recommendation_reason: topUp.recommendation_reason ?? "available",
6160
+ ...quotaTopUpUrgencyFields(topUp),
6135
6161
  path: topUp.path,
6136
6162
  first_safe_command: commands.inspect_methods,
6137
6163
  first_safe_command_effect: {
@@ -6162,6 +6188,44 @@ function quotaTopUpNextActions(topUp) {
6162
6188
  };
6163
6189
  }
6164
6190
 
6191
+ function quotaTopUpUrgencyFields(topUp) {
6192
+ const reason = topUp?.recommendation_reason ?? "available";
6193
+ const fallback = quotaTopUpUrgencyFromReason(reason);
6194
+ const urgency =
6195
+ typeof topUp?.urgency === "string" && topUp.urgency.length > 0
6196
+ ? topUp.urgency
6197
+ : fallback.urgency;
6198
+ const urgencyScore =
6199
+ typeof topUp?.urgency_score === "number"
6200
+ ? topUp.urgency_score
6201
+ : fallback.score;
6202
+ const urgencyReasons = Array.isArray(topUp?.urgency_reasons)
6203
+ ? topUp.urgency_reasons
6204
+ .filter((entry) => typeof entry === "string" && entry.length > 0)
6205
+ .map((entry) => entry)
6206
+ : reason === "available"
6207
+ ? []
6208
+ : [reason];
6209
+ return {
6210
+ urgency,
6211
+ urgency_score: urgencyScore,
6212
+ urgency_reasons: urgencyReasons,
6213
+ };
6214
+ }
6215
+
6216
+ function quotaTopUpUrgencyFromReason(reason) {
6217
+ if (reason === "credits_depleted" || reason === "daily_job_cap_reached") {
6218
+ return { urgency: "blocked", score: 100 };
6219
+ }
6220
+ if (reason === "low_remaining_credits") {
6221
+ return { urgency: "near_wall", score: 80 };
6222
+ }
6223
+ if (reason === "self_fund_setup_missing") {
6224
+ return { urgency: "setup_recommended", score: 60 };
6225
+ }
6226
+ return { urgency: "available", score: 0 };
6227
+ }
6228
+
6165
6229
  function failure(command, exitCode, code, message, retryable, recovery) {
6166
6230
  return {
6167
6231
  exitCode,
package/cli.md CHANGED
@@ -217,7 +217,11 @@ step.
217
217
  - `quota_required`: fill `data.next_command_missing_inputs` when present, then
218
218
  run `data.self_fund_next_command` to start the top-up.
219
219
  It aliases `data.next_command` and is the first payment command, usually an
220
- x402 or Stripe quote. If the guide authenticated from env or stdin, prefer
220
+ x402 or Stripe quote. First inspect
221
+ `data.self_fund_handoff.urgency`, `urgency_score`, and `urgency_reasons`; run
222
+ `data.self_fund_handoff.first_safe_command` for no-spend payment-method
223
+ inspection when you need rail state before opening a quote. If the guide
224
+ authenticated from env or stdin, prefer
221
225
  `data.self_fund_handoff.auth.next_command.with_env` or
222
226
  `data.self_fund_handoff.auth.next_command.with_stdin` so auth follows the
223
227
  payment command. Then follow `data.self_fund_handoff.payment_commands.buy`
@@ -627,7 +631,9 @@ wallet private keys, seed phrases, x402 payment headers, deposit client
627
631
  secrets, card data, Stripe secrets, or provider receipts to Image Skill.
628
632
  When `create --guide` enters `quota_required` for this rail, it returns
629
633
  `data.self_fund_handoff.wallet_settlement` with the buy/status response fields
630
- to inspect: `data.stripe_x402.payable_instructions` after `credits buy`, or
634
+ to inspect, plus `data.self_fund_handoff.first_safe_command` for no-spend rail
635
+ inspection before quote/buy: `data.stripe_x402.payable_instructions` after
636
+ `credits buy`, or
631
637
  `data.payment_attempt.stripe_x402.payable_instructions` after `credits status`.
632
638
 
633
639
  ```bash
package/llms.txt CHANGED
@@ -63,6 +63,7 @@ First-run guide loop:
63
63
  3. If data.stage is prompt_required, rerun data.next_command with the real prompt.
64
64
  4. If data.stage is auth_required, data.auth_ready.ready is false and data.guide_warning.next_command_safety is hosted_signup_no_spend_setup. Run data.next_command, then rerun the guide once. Hosted signup saves the restricted token to the public CLI config by default with 0600 permissions. If the configured config path is blocked, data.next_command sets IMAGE_SKILL_CONFIG_PATH="$PWD/.image-skill/config.json" and still runs a saved-config signup; do not switch to raw-token handoff unless recovery explicitly requires it. If the runtime intentionally uses --no-save --show-token, store the returned token in the agent runtime secret store, then rerun with IMAGE_SKILL_TOKEN or --token-stdin; data.auth_handoff.rerun_guide.with_env and data.auth_handoff.rerun_guide.with_stdin are copy-safe templates for that mode. Signup is anonymous by default: no contact inbox is required to get a restricted token. The optional --agent-contact flag takes an email-shaped durable contact inbox for the restricted agent identity, not a requirement to find an individual human; attach one later with image-skill claim request --contact INBOX --json when funding or durability makes it worth having. Hosted signup returns the raw restricted token only when --show-token is set, and only once. When providing a contact, use an agent-owned inbox when available; otherwise use an operator, team, or sponsor inbox that can receive future claim, billing, or abuse notices. Never invent an inbox or borrow an unrelated human email just to fill the flag — omit it instead. example.invalid addresses are only appropriate inside documented harness or proof runs. --human-email remains accepted as a compatibility alias, but the guide must not teach it. Anonymous signups mint a fresh agent identity on every call; reuse the saved config instead of re-running signup. --save is accepted as a compatibility no-op for the default save behavior; use --no-save only when the runtime has a separate secret store and does not want local config.
65
65
  5. At any guide stage, read data.checks.quota.top_up. When recommended is true, it includes recommendation_reason, preferred_payment_method, quote_command, quote_command_copy_runnable, quote_command_effect, and quote/buy/status command templates for the browserless x402 top-up path. On quota/payment recovery errors, read error.recovery.top_up: when delegated live-money quoting is allowed, prefer error.recovery.top_up.quote_command to open the top-up path, and use error.recovery.suggested_command for no-spend payment-method inspection. If data.stage is quota_required, data.guide_warning.next_command_safety is live_money_payment_action and data.guide_warning.payment_top_up_path summarizes the live-money path. Run data.self_fund_next_command to start the top-up. It aliases data.next_command and is the first payment command, usually an x402 or Stripe quote. First read data.checks.payments.preferred_method_summary.top_up_path: browserless_agent_self_fund means a wallet-equipped agent can complete the preferred live-money rail without a browser; human_payment_handoff means the agent can create the payment attempt but a human/browser step must complete before credits are granted. If the guide authenticated from env or stdin, prefer data.self_fund_handoff.auth.next_command.with_env or data.self_fund_handoff.auth.next_command.with_stdin so auth follows the payment command. Then follow data.self_fund_handoff.payment_commands.buy and status, and rerun data.self_fund_handoff.after_next once credits are granted. If data.stage is ready_to_create, inspect data.self_fund_preparation before consuming the remaining free allowance. When available and recommended are true, data.self_fund_preparation.quote_command is the pre-wall browserless x402 quote: it creates an authenticated live-money quote/payment object, but data.self_fund_preparation.quote_command_effect must show no provider call, no hosted create, no credit debit, no media write, and no wallet settlement until a later buy/payment step. One Image Skill credit is $0.01. Credit quotes grant prepaid value units; create/edit operations debit model-priced credits reported as cost.credit_pricing. Starter preview currently gives bounded free-preview credits plus a four-job daily cap.
66
+ 5a. When data.stage is quota_required, data.self_fund_handoff mirrors top-up urgency, urgency_score, and urgency_reasons, and exposes first_safe_command plus first_safe_command_effect. Run first_safe_command, usually image-skill credits methods --json, for no-spend rail inspection before quote/buy when delegated spend authority is absent or unclear.
66
67
  6. If data.stage is ready_to_create, data.next_command is the first bounded live create. data.guide_warning.next_command_safety must be live_media_create_credit_debit, data.guide_warning.no_spend_safe must be false, data.guide_warning.spend_required must be true, and data.guide_warning.recommended_command_field must be recommended_no_spend_command. data.auth_ready.ready and data.auth_ready.next_command_auth_ready must be true; data.auth_ready.next_command_requires_auth must be true, and the command can reuse saved config, IMAGE_SKILL_TOKEN, or --token-stdin context without exposing a raw token. data.next_command_effect.label must be live_media_create_credit_debit and its provider_call, hosted_create, credit_debit, and media_write flags are true. data.no_spend_evaluation.stop_here must be true, data.no_spend_evaluation.next_command_is_live_create must be true, and data.no_spend_evaluation.recommended_command_field must be recommended_no_spend_command. Run data.next_command only when media spend is allowed. In no-spend evaluations, or when you only need to prove readiness without media/provider work, stop before data.next_command and run data.recommended_no_spend_command instead. data.recommended_no_spend_command must equal data.no_spend_next_command. data.no_spend_next_command_effect.label must be dry_run_planned_job_no_provider_call_no_credit_debit_no_media_write: no_spend, hosted_create_dry_run, planned_job, and plan_receipt are true; activity_event is job.planned; provider_call, credit_debit, and media_write are false. This dry-run may create a recoverable planned job/activity receipt but no provider execution, debit, downloadable asset, or media write. If the guide authenticated from env or stdin, prefer data.auth_handoff.next_command.with_env or data.auth_handoff.next_command.with_stdin so auth follows the live create. In guide cost output, cost.estimated_usd_per_image and cost.estimated_debit_usd_per_image are the Image Skill debit dollars for one output; cost.estimated_provider_usd_per_image is only the upstream provider estimate. Use the guide's returned max_estimated_usd_per_image because it is sized to the credit debit the agent funds. Add --output-count N only after models show confirms the selected create model supports more than one output; credit_pricing.credits_required is the total debit across outputs, while max_estimated_usd_per_image remains a per-image Image Skill debit guard.
67
68
  7. After create, prefer data.next_actions when present: inspect_job and inspect_asset are copy-runnable no-spend recovery commands, iterate_edit is the reusable-asset edit template, and self_fund is the promoted top-up quote handoff when quota.top_up.recommended is true. self_fund.quote_command is copy-runnable and omits --idempotency-key so the public CLI generates and returns one for retry safety; follow the quote response into buy/status. Otherwise use image-skill jobs show JOB_ID to recover status, cost, safety, timestamps, and final assets; image-skill assets get ASSET_URL_OR_ID --output ./result.png to fetch the generated asset without repeating provider work; and image-skill activity list --subject JOB_ID to find ledger events, trace, usage, and asset links to cite.
68
69
  8. Leave image-skill feedback create if the first-run flow is confusing, blocked, missing an affordance, or easier through a direct provider than through Image Skill. Feedback auth uses saved config from default signup, IMAGE_SKILL_TOKEN, or --token-stdin; if signup or guide already saved config, run feedback create normally and do not copy a raw token. Never paste tokens into feedback title, body, evidence, issues, or logs. Use image-skill activity show FEEDBACK_ID only when you need to confirm the feedback entered the hosted ledger.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "image-skill",
3
- "version": "0.1.53",
3
+ "version": "0.1.55",
4
4
  "description": "Zero-setup durable creative-media CLI for agents (image + video + audio + 3D): guide-first creation, model and cost inspection, owned URLs, JSON recovery, payments, reusable assets, and feedback.",
5
5
  "type": "module",
6
6
  "private": false,
package/skill.md CHANGED
@@ -41,6 +41,8 @@ npm_config_update_notifier=false npx -y image-skill@latest create --guide --prom
41
41
 
42
42
  The guide is a free, zero-spend planning call. Given current auth, quota, and payment state, it returns `data.next_command`, `data.next_command_copy_runnable`, `data.next_command_missing_inputs`, `data.stage`, `data.guide_warning`, `data.next_command_effect`, `data.auth_ready`, `data.no_spend_evaluation`, `data.guide_recovery`, `data.recommended_no_spend_command` (alias of `data.no_spend_next_command`), `data.no_spend_next_command_effect`, `data.self_fund_next_command`, `data.self_fund_handoff`, `data.self_fund_preparation`, `data.auth_handoff`, and `data.mutation`. It also preserves `data.checks.quota.top_up`, the same quota top-up recommendation returned by `usage quota`, so wallet-capable agents can see whether a browserless x402 top-up is recommended before the hard wall. Read `data.guide_warning` before running `data.next_command`: `next_command_safety` names whether the command is no-spend setup, read-only inspection, live-money payment action, or live media create. Run that next command only when `data.next_command_copy_runnable` is `true` and the warning says it is safe for your spend policy; when it is `false`, fill `data.next_command_missing_inputs` first. Prefer `data.guide_recovery` for no-doc recovery loops: it names the safest no-spend command and field, the live create or payment field that would spend, and the double-spend guard to check before any live retry. Repeat until `data.stage` is `ready_to_create`. At `ready_to_create`, `data.auth_ready.ready` and `data.auth_ready.next_command_auth_ready` are `true`: the returned create can reuse saved config, env token, or stdin token context without exposing a raw token. Read `data.self_fund_preparation` in this stage before spending the remaining free allowance: when `available` and `recommended` are true, `quote_command` creates an authenticated live-money quote/payment object but does not pay, settle a wallet transfer, debit credits, call a provider, or write media. Only a later buy/payment step can spend money. When `data.guide_warning.next_command_safety` is `live_media_create_credit_debit` and `data.no_spend_evaluation.stop_here` is `true`, `data.next_command` is the live create: run it only if media spend is allowed, otherwise stop before it and run `data.recommended_no_spend_command` for no-spend proof. The no-spend command is an authenticated hosted dry-run: it may create a recoverable `job.planned` receipt, but it has no provider call, credit debit, downloadable asset, or media write.
43
43
 
44
+ When `data.stage` is `quota_required`, `data.self_fund_handoff` mirrors top-up `urgency`, `urgency_score`, and `urgency_reasons`, and exposes `first_safe_command` with a no-spend inspection effect. Run that no-spend command first when you need to inspect rails or stay below delegated spend authority before opening the live-money quote path.
45
+
44
46
  Minimum success envelope on a create or edit:
45
47
 
46
48
  ```json
@@ -184,6 +186,9 @@ reaches `quota_required`, read
184
186
  `data.checks.payments.preferred_method_summary.top_up_path` before quoting:
185
187
  `browserless_agent_self_fund` is the autonomous wallet path, while
186
188
  `human_payment_handoff` means a human/browser completion step is still required.
189
+ The quota-required `data.self_fund_handoff` also mirrors the top-up urgency and
190
+ exposes `first_safe_command`, usually `image-skill credits methods --json`, for
191
+ no-spend payment-method inspection before quote/buy steps.
187
192
  When `create --guide` reaches `ready_to_create`, inspect
188
193
  `data.self_fund_preparation` before consuming the remaining free allowance. If
189
194
  it is available and recommended, `quote_command` is the pre-wall browserless
@@ -41,6 +41,8 @@ npm_config_update_notifier=false npx -y image-skill@latest create --guide --prom
41
41
 
42
42
  The guide is a free, zero-spend planning call. Given current auth, quota, and payment state, it returns `data.next_command`, `data.next_command_copy_runnable`, `data.next_command_missing_inputs`, `data.stage`, `data.guide_warning`, `data.next_command_effect`, `data.auth_ready`, `data.no_spend_evaluation`, `data.guide_recovery`, `data.recommended_no_spend_command` (alias of `data.no_spend_next_command`), `data.no_spend_next_command_effect`, `data.self_fund_next_command`, `data.self_fund_handoff`, `data.self_fund_preparation`, `data.auth_handoff`, and `data.mutation`. It also preserves `data.checks.quota.top_up`, the same quota top-up recommendation returned by `usage quota`, so wallet-capable agents can see whether a browserless x402 top-up is recommended before the hard wall. Read `data.guide_warning` before running `data.next_command`: `next_command_safety` names whether the command is no-spend setup, read-only inspection, live-money payment action, or live media create. Run that next command only when `data.next_command_copy_runnable` is `true` and the warning says it is safe for your spend policy; when it is `false`, fill `data.next_command_missing_inputs` first. Prefer `data.guide_recovery` for no-doc recovery loops: it names the safest no-spend command and field, the live create or payment field that would spend, and the double-spend guard to check before any live retry. Repeat until `data.stage` is `ready_to_create`. At `ready_to_create`, `data.auth_ready.ready` and `data.auth_ready.next_command_auth_ready` are `true`: the returned create can reuse saved config, env token, or stdin token context without exposing a raw token. Read `data.self_fund_preparation` in this stage before spending the remaining free allowance: when `available` and `recommended` are true, `quote_command` creates an authenticated live-money quote/payment object but does not pay, settle a wallet transfer, debit credits, call a provider, or write media. Only a later buy/payment step can spend money. When `data.guide_warning.next_command_safety` is `live_media_create_credit_debit` and `data.no_spend_evaluation.stop_here` is `true`, `data.next_command` is the live create: run it only if media spend is allowed, otherwise stop before it and run `data.recommended_no_spend_command` for no-spend proof. The no-spend command is an authenticated hosted dry-run: it may create a recoverable `job.planned` receipt, but it has no provider call, credit debit, downloadable asset, or media write.
43
43
 
44
+ When `data.stage` is `quota_required`, `data.self_fund_handoff` mirrors top-up `urgency`, `urgency_score`, and `urgency_reasons`, and exposes `first_safe_command` with a no-spend inspection effect. Run that no-spend command first when you need to inspect rails or stay below delegated spend authority before opening the live-money quote path.
45
+
44
46
  Minimum success envelope on a create or edit:
45
47
 
46
48
  ```json
@@ -184,6 +186,9 @@ reaches `quota_required`, read
184
186
  `data.checks.payments.preferred_method_summary.top_up_path` before quoting:
185
187
  `browserless_agent_self_fund` is the autonomous wallet path, while
186
188
  `human_payment_handoff` means a human/browser completion step is still required.
189
+ The quota-required `data.self_fund_handoff` also mirrors the top-up urgency and
190
+ exposes `first_safe_command`, usually `image-skill credits methods --json`, for
191
+ no-spend payment-method inspection before quote/buy steps.
187
192
  When `create --guide` reaches `ready_to_create`, inspect
188
193
  `data.self_fund_preparation` before consuming the remaining free allowance. If
189
194
  it is available and recommended, `quote_command` is the pre-wall browserless
@@ -217,7 +217,11 @@ step.
217
217
  - `quota_required`: fill `data.next_command_missing_inputs` when present, then
218
218
  run `data.self_fund_next_command` to start the top-up.
219
219
  It aliases `data.next_command` and is the first payment command, usually an
220
- x402 or Stripe quote. If the guide authenticated from env or stdin, prefer
220
+ x402 or Stripe quote. First inspect
221
+ `data.self_fund_handoff.urgency`, `urgency_score`, and `urgency_reasons`; run
222
+ `data.self_fund_handoff.first_safe_command` for no-spend payment-method
223
+ inspection when you need rail state before opening a quote. If the guide
224
+ authenticated from env or stdin, prefer
221
225
  `data.self_fund_handoff.auth.next_command.with_env` or
222
226
  `data.self_fund_handoff.auth.next_command.with_stdin` so auth follows the
223
227
  payment command. Then follow `data.self_fund_handoff.payment_commands.buy`
@@ -627,7 +631,9 @@ wallet private keys, seed phrases, x402 payment headers, deposit client
627
631
  secrets, card data, Stripe secrets, or provider receipts to Image Skill.
628
632
  When `create --guide` enters `quota_required` for this rail, it returns
629
633
  `data.self_fund_handoff.wallet_settlement` with the buy/status response fields
630
- to inspect: `data.stripe_x402.payable_instructions` after `credits buy`, or
634
+ to inspect, plus `data.self_fund_handoff.first_safe_command` for no-spend rail
635
+ inspection before quote/buy: `data.stripe_x402.payable_instructions` after
636
+ `credits buy`, or
631
637
  `data.payment_attempt.stripe_x402.payable_instructions` after `credits status`.
632
638
 
633
639
  ```bash
@@ -63,6 +63,7 @@ First-run guide loop:
63
63
  3. If data.stage is prompt_required, rerun data.next_command with the real prompt.
64
64
  4. If data.stage is auth_required, data.auth_ready.ready is false and data.guide_warning.next_command_safety is hosted_signup_no_spend_setup. Run data.next_command, then rerun the guide once. Hosted signup saves the restricted token to the public CLI config by default with 0600 permissions. If the configured config path is blocked, data.next_command sets IMAGE_SKILL_CONFIG_PATH="$PWD/.image-skill/config.json" and still runs a saved-config signup; do not switch to raw-token handoff unless recovery explicitly requires it. If the runtime intentionally uses --no-save --show-token, store the returned token in the agent runtime secret store, then rerun with IMAGE_SKILL_TOKEN or --token-stdin; data.auth_handoff.rerun_guide.with_env and data.auth_handoff.rerun_guide.with_stdin are copy-safe templates for that mode. Signup is anonymous by default: no contact inbox is required to get a restricted token. The optional --agent-contact flag takes an email-shaped durable contact inbox for the restricted agent identity, not a requirement to find an individual human; attach one later with image-skill claim request --contact INBOX --json when funding or durability makes it worth having. Hosted signup returns the raw restricted token only when --show-token is set, and only once. When providing a contact, use an agent-owned inbox when available; otherwise use an operator, team, or sponsor inbox that can receive future claim, billing, or abuse notices. Never invent an inbox or borrow an unrelated human email just to fill the flag — omit it instead. example.invalid addresses are only appropriate inside documented harness or proof runs. --human-email remains accepted as a compatibility alias, but the guide must not teach it. Anonymous signups mint a fresh agent identity on every call; reuse the saved config instead of re-running signup. --save is accepted as a compatibility no-op for the default save behavior; use --no-save only when the runtime has a separate secret store and does not want local config.
65
65
  5. At any guide stage, read data.checks.quota.top_up. When recommended is true, it includes recommendation_reason, preferred_payment_method, quote_command, quote_command_copy_runnable, quote_command_effect, and quote/buy/status command templates for the browserless x402 top-up path. On quota/payment recovery errors, read error.recovery.top_up: when delegated live-money quoting is allowed, prefer error.recovery.top_up.quote_command to open the top-up path, and use error.recovery.suggested_command for no-spend payment-method inspection. If data.stage is quota_required, data.guide_warning.next_command_safety is live_money_payment_action and data.guide_warning.payment_top_up_path summarizes the live-money path. Run data.self_fund_next_command to start the top-up. It aliases data.next_command and is the first payment command, usually an x402 or Stripe quote. First read data.checks.payments.preferred_method_summary.top_up_path: browserless_agent_self_fund means a wallet-equipped agent can complete the preferred live-money rail without a browser; human_payment_handoff means the agent can create the payment attempt but a human/browser step must complete before credits are granted. If the guide authenticated from env or stdin, prefer data.self_fund_handoff.auth.next_command.with_env or data.self_fund_handoff.auth.next_command.with_stdin so auth follows the payment command. Then follow data.self_fund_handoff.payment_commands.buy and status, and rerun data.self_fund_handoff.after_next once credits are granted. If data.stage is ready_to_create, inspect data.self_fund_preparation before consuming the remaining free allowance. When available and recommended are true, data.self_fund_preparation.quote_command is the pre-wall browserless x402 quote: it creates an authenticated live-money quote/payment object, but data.self_fund_preparation.quote_command_effect must show no provider call, no hosted create, no credit debit, no media write, and no wallet settlement until a later buy/payment step. One Image Skill credit is $0.01. Credit quotes grant prepaid value units; create/edit operations debit model-priced credits reported as cost.credit_pricing. Starter preview currently gives bounded free-preview credits plus a four-job daily cap.
66
+ 5a. When data.stage is quota_required, data.self_fund_handoff mirrors top-up urgency, urgency_score, and urgency_reasons, and exposes first_safe_command plus first_safe_command_effect. Run first_safe_command, usually image-skill credits methods --json, for no-spend rail inspection before quote/buy when delegated spend authority is absent or unclear.
66
67
  6. If data.stage is ready_to_create, data.next_command is the first bounded live create. data.guide_warning.next_command_safety must be live_media_create_credit_debit, data.guide_warning.no_spend_safe must be false, data.guide_warning.spend_required must be true, and data.guide_warning.recommended_command_field must be recommended_no_spend_command. data.auth_ready.ready and data.auth_ready.next_command_auth_ready must be true; data.auth_ready.next_command_requires_auth must be true, and the command can reuse saved config, IMAGE_SKILL_TOKEN, or --token-stdin context without exposing a raw token. data.next_command_effect.label must be live_media_create_credit_debit and its provider_call, hosted_create, credit_debit, and media_write flags are true. data.no_spend_evaluation.stop_here must be true, data.no_spend_evaluation.next_command_is_live_create must be true, and data.no_spend_evaluation.recommended_command_field must be recommended_no_spend_command. Run data.next_command only when media spend is allowed. In no-spend evaluations, or when you only need to prove readiness without media/provider work, stop before data.next_command and run data.recommended_no_spend_command instead. data.recommended_no_spend_command must equal data.no_spend_next_command. data.no_spend_next_command_effect.label must be dry_run_planned_job_no_provider_call_no_credit_debit_no_media_write: no_spend, hosted_create_dry_run, planned_job, and plan_receipt are true; activity_event is job.planned; provider_call, credit_debit, and media_write are false. This dry-run may create a recoverable planned job/activity receipt but no provider execution, debit, downloadable asset, or media write. If the guide authenticated from env or stdin, prefer data.auth_handoff.next_command.with_env or data.auth_handoff.next_command.with_stdin so auth follows the live create. In guide cost output, cost.estimated_usd_per_image and cost.estimated_debit_usd_per_image are the Image Skill debit dollars for one output; cost.estimated_provider_usd_per_image is only the upstream provider estimate. Use the guide's returned max_estimated_usd_per_image because it is sized to the credit debit the agent funds. Add --output-count N only after models show confirms the selected create model supports more than one output; credit_pricing.credits_required is the total debit across outputs, while max_estimated_usd_per_image remains a per-image Image Skill debit guard.
67
68
  7. After create, prefer data.next_actions when present: inspect_job and inspect_asset are copy-runnable no-spend recovery commands, iterate_edit is the reusable-asset edit template, and self_fund is the promoted top-up quote handoff when quota.top_up.recommended is true. self_fund.quote_command is copy-runnable and omits --idempotency-key so the public CLI generates and returns one for retry safety; follow the quote response into buy/status. Otherwise use image-skill jobs show JOB_ID to recover status, cost, safety, timestamps, and final assets; image-skill assets get ASSET_URL_OR_ID --output ./result.png to fetch the generated asset without repeating provider work; and image-skill activity list --subject JOB_ID to find ledger events, trace, usage, and asset links to cite.
68
69
  8. Leave image-skill feedback create if the first-run flow is confusing, blocked, missing an affordance, or easier through a direct provider than through Image Skill. Feedback auth uses saved config from default signup, IMAGE_SKILL_TOKEN, or --token-stdin; if signup or guide already saved config, run feedback create normally and do not copy a raw token. Never paste tokens into feedback title, body, evidence, issues, or logs. Use image-skill activity show FEEDBACK_ID only when you need to confirm the feedback entered the hosted ledger.