image-skill 0.1.0

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/llms.txt ADDED
@@ -0,0 +1,221 @@
1
+ # Image Skill LLM Contract
2
+
3
+ Status: preview hosted-product contract
4
+ Canonical homepage: https://image-skill.com
5
+ Canonical skill URL: https://image-skill.com/skill.md
6
+ Canonical LLM URL: https://image-skill.com/llms.txt
7
+ Canonical CLI URL: https://image-skill.com/cli.md
8
+ Canonical hosted API URL: https://api.image-skill.com
9
+
10
+ Purpose:
11
+ Image Skill is a CLI-first hosted creative runtime for agents. Agents use it to create, edit, inspect, iterate on, and reuse generated images through a thin CLI/client and hosted API.
12
+
13
+ Product thesis:
14
+ Created by agents, for agents to create.
15
+
16
+ Capability-preserving pillar:
17
+ Do not handicap agent capability by reducing rich model/provider controls into
18
+ coarse universal categories. Image Skill standardizes common controls for
19
+ legibility and exposes introspection for model-specific controls. Agents should
20
+ use capabilities, model parameter schemas, explicit budget/latency/output
21
+ constraints, and validated model_parameters rather than guessing or treating
22
+ quality tiers as a universal model abstraction.
23
+
24
+ Primary public surfaces:
25
+ - Homepage: https://image-skill.com
26
+ - Skill: https://image-skill.com/skill.md
27
+ - LLM contract: https://image-skill.com/llms.txt
28
+ - CLI contract: https://image-skill.com/cli.md
29
+ - Thin CLI/client: image-skill
30
+ - Hosted API: https://api.image-skill.com for generation, editing, jobs, activity, storage, telemetry, identity, quota, and feedback
31
+ - Hosted artifacts: prefer Image Skill-owned asset URLs such as https://media.image-skill.com/... when returned in assets[].url
32
+
33
+ Actor types:
34
+ - human: sponsor, admin, billing, or claim actor
35
+ - agent: durable agent identity
36
+ - session: ephemeral agent run
37
+ - system: service automation
38
+
39
+ Claim states:
40
+ - unclaimed: restricted agent identity, tiny quota, low-risk workflows only
41
+ - payment_backed_unclaimed: future capped paid state with receipts but no org/admin authority
42
+ - claimed: human sponsor attached, scoped grants available
43
+ - revoked: token or agent disabled
44
+
45
+ First-run flow:
46
+ 1. image-skill doctor --json
47
+ 2. image-skill signup --agent --human-email EMAIL --agent-name NAME --runtime RUNTIME --save --json. The preview hosted signup path currently requires human_email; future payment-backed and agent-contact-backed signup paths are planned. Use --show-token only when the runtime has a separate secret store and needs the raw token once.
48
+ 3. Reuse the saved CLI auth for later commands, or store the returned data.token from --show-token in the agent runtime secret store and expose it as IMAGE_SKILL_TOKEN.
49
+ 4. image-skill whoami --json
50
+ 5. image-skill usage quota --json
51
+ 5-credit-note. 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 two-job daily cap.
52
+ 5a. image-skill credits packs list --json to inspect recommended live-money packs.
53
+ 5b. image-skill credits quote --pack starter-500 --payment-method stripe_checkout --idempotency-key KEY --json for the default Stripe Checkout top-up path. Use --credits CREDITS instead of --pack only when the required exact budget is already known.
54
+ 5c. image-skill credits buy --provider stripe --quote-id QUOTE_ID --idempotency-key KEY --json when the agent has a stripe_checkout quote and needs a Stripe-hosted checkout_url. Credits are granted only after verified Stripe webhook fulfillment succeeds.
55
+ 5d. image-skill credits status --payment-attempt-id PAYMENT_ATTEMPT_ID --json after buy or checkout completion to read durable payment state, receipt, credit_event, limits, and retry guidance without inferring from quota text.
56
+ 5e. image-skill credits quote --credits 10 --json and image-skill credits fake-purchase --quote-id QUOTE_ID --idempotency-key KEY --json only for fake/test credit-ledger proof. This moves no live money, accepts no payment credential, and returns live_money:false.
57
+ 6. image-skill create --dry-run --prompt PROMPT --json for zero-cost planning.
58
+ 7. image-skill models list --json, then image-skill models show MODEL_ID --json to inspect available creative models, operations, media inputs/outputs, model parameters, fixed controls, cost/latency class, safety behavior, and migration hints.
59
+ 8. image-skill create --prompt PROMPT --intent explore --max-estimated-usd-per-image 0.05 --json for the first bounded free-preview operation when quota allows.
60
+ 9. image-skill jobs show JOB_ID --json to recover status, cost, safety, timestamps, and final assets.
61
+ 10. image-skill assets get ASSET_URL_OR_ID --output ./result.png --json to fetch the generated asset without repeating provider work.
62
+ 11. image-skill activity list --subject JOB_ID --json to find the ledger event, trace, usage, and asset links to cite.
63
+ 12. image-skill edit --input ASSET_URL_OR_ID --prompt PROMPT --accept-unknown-cost --json for the second bounded free-preview operation when the task needs an edit.
64
+ 13. Leave image-skill feedback create --json if the first-run flow is confusing, blocked, or missing an affordance.
65
+ 14. image-skill activity show FEEDBACK_ID --json to confirm the feedback entered the hosted ledger.
66
+
67
+ Core commands:
68
+ - image-skill doctor --json
69
+ - image-skill signup --agent --human-email EMAIL --agent-name NAME --runtime RUNTIME --save --json
70
+ - image-skill whoami --json
71
+ - image-skill usage quota --json
72
+ - image-skill quota --json (compatibility alias)
73
+ - image-skill credits packs list --json
74
+ - image-skill credits quote --pack PACK_ID --payment-method fake|stripe_checkout --idempotency-key KEY --json
75
+ - image-skill credits quote --credits CREDITS --payment-method fake|stripe_checkout --idempotency-key KEY --json
76
+ - image-skill credits buy --provider stripe --quote-id QUOTE_ID --idempotency-key KEY --json
77
+ - image-skill credits status --payment-attempt-id PAYMENT_ATTEMPT_ID --json
78
+ - image-skill credits fake-purchase --quote-id QUOTE_ID --idempotency-key KEY --json
79
+ - image-skill capabilities --json
80
+ - image-skill capabilities list --json
81
+ - image-skill capabilities show CAPABILITY_ID --json
82
+ - image-skill models --json
83
+ - image-skill models list --json
84
+ - image-skill models show MODEL_ID --json
85
+ - image-skill create --prompt PROMPT --json
86
+ - image-skill create --dry-run --prompt PROMPT --json
87
+ - image-skill upload PATH_OR_URL --json
88
+ - image-skill edit --input ASSET_ID_OR_PATH_OR_URL --prompt PROMPT --accept-unknown-cost --json
89
+ - image-skill assets show ASSET_ID_OR_URL --json
90
+ - image-skill assets get ASSET_ID_OR_URL --output PATH --json
91
+ - image-skill jobs show JOB_ID --json
92
+ - image-skill jobs wait JOB_ID --timeout-ms 30000 --poll-interval-ms 1000 --json
93
+ - image-skill activity list --limit 20 --json
94
+ - image-skill activity list --subject JOB_OR_ASSET_OR_FEEDBACK_OR_TRACE --json
95
+ - image-skill activity show EVENT_OR_JOB_OR_ASSET_OR_FEEDBACK_OR_TRACE --json
96
+ - image-skill feedback create --type TYPE --title TITLE --body BODY --command COMMAND --expected EXPECTED --actual ACTUAL --proof-needed PROOF --surface cli,docs --evidence trace:TRACE_ID --severity medium --confidence high --next-state watch --json
97
+
98
+ Hosted API endpoints:
99
+ - POST https://api.image-skill.com/v1/agent-signups creates or rotates a restricted unclaimed agent token. The response returns the token once as data.token. Store it in the agent runtime secret store; never put it in prompts, logs, issue text, or feedback.
100
+ - GET https://api.image-skill.com/v1/whoami returns durable hosted identity for Authorization: Bearer TOKEN.
101
+ - GET https://api.image-skill.com/v1/quota returns durable hosted quota for Authorization: Bearer TOKEN.
102
+ - GET https://api.image-skill.com/v1/credit-packs returns the public pack catalog. Recommended live-money packs include starter-500, builder-2000, and studio-5000. Packs are the default Stripe Checkout UX; exact quotes remain supported for agents that already know the required credit budget.
103
+ - POST https://api.image-skill.com/v1/credit-quotes returns a fake/test or stripe_checkout credit quote for Authorization: Bearer TOKEN. Request JSON: either credits or pack_id, optional payment_method, idempotency_key. Response includes quote_id, credits, price_amount_cents, currency, accepted_payment_method, pack_id, pack, and live_money. One credit equals $0.01, so price_amount_cents equals credits. This does not grant credits.
104
+ - POST https://api.image-skill.com/v1/credit-purchases/stripe-checkout-sessions creates a Stripe Checkout Session for a stripe_checkout quote. Request JSON: quote_id, idempotency_key. Response includes state: action_required, payment_attempt_id, checkout_session_id, checkout_url, accepted_payment_method: stripe_checkout, and next.human_action: open_checkout_url. This does not grant credits; verified Stripe webhook fulfillment grants paid credits exactly once.
105
+ - GET https://api.image-skill.com/v1/credit-purchases/status returns durable payment state for Authorization: Bearer TOKEN. Query with exactly one of quote_id, payment_attempt_id, checkout_session_id, or receipt_id. Response includes state, quote, payment_attempt, receipt, credit_event, provider_event, limits, and next.
106
+ - POST https://api.image-skill.com/v1/credit-purchases confirms a fake/test quote for Authorization: Bearer TOKEN. Request JSON: quote_id, idempotency_key. Response includes receipt_id, credit_event_id, credits_granted, accepted_payment_method: fake, balance_after, and live_money:false. This grants bounded payment-backed credits without moving live money.
107
+ - GET https://api.image-skill.com/v1/models returns the public model registry. GET https://api.image-skill.com/v1/models/MODEL_ID returns one model's capability-preserving schema.
108
+ - GET https://api.image-skill.com/v1/capabilities returns the hosted capability catalog, normalized controls, model-parameter schemas, auth requirements, and deprecation notices.
109
+ - POST https://api.image-skill.com/v1/create creates or dry-runs one bounded free-preview image when Authorization: Bearer TOKEN has quota and the relevant preview grant. Request JSON: prompt, optional model, optional intent, optional aspect_ratio, optional output constraints, optional model_parameters, optional dry_run, optional max_estimated_usd_per_image, optional max_usd, optional accept_unknown_cost. Success responses include cost.credit_pricing; agents should read credits_required instead of assuming one credit per operation.
110
+ - POST https://api.image-skill.com/v1/upload accepts client-normalized base64 raster image bytes when Authorization: Bearer TOKEN has asset.upload. Request JSON: source_kind, filename, remote_origin, mime_type, content_length, sha256, bytes_base64. Do not send local paths, full remote URLs, prompts, tokens, or provider credentials.
111
+ - POST https://api.image-skill.com/v1/edit edits an Image Skill-owned input asset when Authorization: Bearer TOKEN has quota and the relevant preview grant. Request JSON: input_asset_id, prompt, optional model, optional intent, optional aspect_ratio, optional output constraints, optional model_parameters, optional max_estimated_usd_per_image, optional max_usd, optional accept_unknown_cost. The public CLI uploads local paths or external URLs first; do not send source bytes or external URLs to /v1/edit.
112
+ - GET https://api.image-skill.com/v1/assets/ASSET_ID returns hosted asset metadata for Authorization: Bearer TOKEN when the asset belongs to the actor organization.
113
+ - GET https://api.image-skill.com/v1/jobs/JOB_ID returns hosted job metadata for Authorization: Bearer TOKEN when the job belongs to the actor organization.
114
+ - GET https://api.image-skill.com/v1/activity returns hosted activity ledger events for Authorization: Bearer TOKEN. Optional query: limit, subject. Activity is for ledger context, not job recovery.
115
+ - GET https://api.image-skill.com/v1/activity/REFERENCE returns hosted activity events related to one event, job, asset, usage, feedback, or trace reference.
116
+ - Public activity event types are: job.completed, asset.created, asset.uploaded, usage.credit_consumed, feedback.created, payment.checkout_session.created, credits.payment_backed_granted. Treat any other activity type as a contract bug and leave feedback with event ID plus trace ID.
117
+ - POST https://api.image-skill.com/v1/cli runs public CLI-compatible commands over JSON argv.
118
+ - GET https://api.image-skill.com/healthz checks API readiness.
119
+
120
+ Expected JSON envelope:
121
+ {
122
+ "ok": true,
123
+ "command": "string",
124
+ "trace_id": "trace_...",
125
+ "actor": {
126
+ "actor_type": "agent",
127
+ "actor_id": "agt_...",
128
+ "organization_id": "org_...",
129
+ "claim_state": "unclaimed"
130
+ },
131
+ "data": {},
132
+ "warnings": [],
133
+ "error": null
134
+ }
135
+
136
+ Expected error envelope:
137
+ {
138
+ "ok": false,
139
+ "command": "string",
140
+ "trace_id": "trace_...",
141
+ "actor": null,
142
+ "data": null,
143
+ "warnings": [],
144
+ "error": {
145
+ "code": "string",
146
+ "message": "redacted human-readable message",
147
+ "retryable": false
148
+ }
149
+ }
150
+
151
+ Standard exit codes:
152
+ - 0 success
153
+ - 1 generic failure
154
+ - 2 invalid arguments
155
+ - 3 auth required or invalid token
156
+ - 4 capability denied
157
+ - 5 quota exceeded
158
+ - 6 content policy denied
159
+ - 7 provider failure
160
+ - 8 timeout
161
+ - 9 filesystem failure
162
+
163
+ Unclaimed agents may:
164
+ - inspect docs, capabilities, models, identity, and quota
165
+ - request human claim
166
+ - create product feedback
167
+ - inspect fake/test or Stripe Checkout credit quotes, create Stripe-hosted checkout sessions for stripe_checkout quotes, and, when explicitly asked to exercise the preview credit ledger, confirm fake/test quotes
168
+ - run only bounded free-preview workflows when quota, artifact storage, budget guard, and policy allow
169
+
170
+ Unclaimed agents may not:
171
+ - run high-cost or bulk jobs
172
+ - publish publicly
173
+ - create arbitrary webhooks
174
+ - import provider keys
175
+ - change billing plans, saved payment methods, team settings, or organization settings
176
+ - access assets outside their organization
177
+ - disable telemetry or audit logging
178
+ - send card data, wallet secrets, provider receipts, Stripe secrets, MPP tokens, SPTs, or any payment credential to Image Skill; Stripe payment details must be entered only on Stripe-hosted checkout pages
179
+
180
+ Credits:
181
+ One Image Skill credit is $0.01. Use image-skill credits packs list --json to inspect recommended Stripe Checkout packs. Use image-skill credits quote --pack PACK_ID --payment-method stripe_checkout --json for the default live-money top-up path. Use image-skill credits quote --credits CREDITS --json for exact bounded custom top-ups when the required budget is already known. The default payment_method is fake. Use image-skill credits buy --provider stripe --json to create a hosted Stripe Checkout Session for a stripe_checkout quote; this returns checkout_url and does not grant credits. Use image-skill credits status --payment-attempt-id PAYMENT_ATTEMPT_ID --json after buy and after checkout completion to read state, receipt, credit_event, limits, and retry guidance. Use image-skill credits fake-purchase --json only to exercise the quote, receipt, credit-ledger, and activity-audit contract before live settlement rails are enabled. Create/edit debit model-priced credits after provider success; inspect models show and operation cost.credit_pricing for credits_required and pricing_confidence. Credits buy and fake-purchase require explicit --idempotency-key. Never send payment credentials to Image Skill; Stripe collects payment details on Stripe-hosted pages. Public request fields are credits, pack_id, payment_method, quote_id, status reference IDs, and idempotency_key.
182
+
183
+ Telemetry:
184
+ - command or endpoint name
185
+ - CLI, skill, and API version
186
+ - actor class
187
+ - capability id and, when explicitly authorized, model/provider provenance
188
+ - status
189
+ - duration
190
+ - cost estimate
191
+ - output count
192
+ - error class
193
+ - retry state
194
+ - job ID or trace ID
195
+
196
+ Telemetry must not include raw prompts, source images, generated images, provider keys, tokens, or sensitive payloads by default.
197
+
198
+ Activity:
199
+ Use image-skill activity list/show when an agent needs recent ledger context,
200
+ auditable event IDs, feedback confirmation, usage links, job/asset links, or
201
+ trace references. Activity is broader than jobs and can include completed
202
+ outputs, uploads, usage events, and feedback. Activity does not replace jobs
203
+ show/wait for polling, recovery, retry judgment, or final job state.
204
+ Current activity event registry: job.completed, asset.created, asset.uploaded,
205
+ usage.credit_consumed, feedback.created, payment.checkout_session.created,
206
+ credits.payment_backed_granted.
207
+
208
+ Feedback:
209
+ Use image-skill feedback create --json when the workflow fails, succeeds with friction, reveals confusing behavior, or suggests a missing feature. Feedback should include command, expected behavior, actual behavior, proof needed, surface, evidence, severity, confidence, and next state.
210
+
211
+ Artifact retry rule:
212
+ If create returns ARTIFACT_STORAGE_WRITE_FAILED, do not retry the whole create blindly. The provider may have already generated an image. Leave feedback or wait for storage/job repair.
213
+
214
+ Asset fetch rule:
215
+ Use image-skill assets get on Image Skill-owned URLs or asset ids. Do not use Image Skill as a generic external URL downloader.
216
+
217
+ Reference:
218
+ - https://image-skill.com
219
+ - https://image-skill.com/skill.md
220
+ - https://image-skill.com/cli.md
221
+ - https://image-skill.com/llms.txt
package/package.json ADDED
@@ -0,0 +1,24 @@
1
+ {
2
+ "name": "image-skill",
3
+ "version": "0.1.0",
4
+ "description": "Thin hosted CLI for Image Skill, a creative runtime for agents.",
5
+ "type": "module",
6
+ "private": false,
7
+ "bin": {
8
+ "image-skill": "bin/image-skill.mjs"
9
+ },
10
+ "files": [
11
+ "bin",
12
+ "README.md",
13
+ "skill.md",
14
+ "llms.txt",
15
+ "cli.md"
16
+ ],
17
+ "engines": {
18
+ "node": ">=22.0.0"
19
+ },
20
+ "publishConfig": {
21
+ "access": "public"
22
+ },
23
+ "license": "UNLICENSED"
24
+ }
package/skill.md ADDED
@@ -0,0 +1,318 @@
1
+ ---
2
+ name: image-skill
3
+ description: Use Image Skill when an agent needs to create, edit, inspect, iterate on, or manage generated images through the hosted image-skill service and thin CLI/client. Also use it when an agent needs to bootstrap restricted access, check quota, request human claim, or leave product feedback.
4
+ homepage: https://image-skill.com
5
+ docs: https://image-skill.com/llms.txt
6
+ metadata:
7
+ {
8
+ "status": "preview-contract",
9
+ "cli": "image-skill",
10
+ "canonical_skill_url": "https://image-skill.com/skill.md",
11
+ "canonical_api_url": "https://api.image-skill.com",
12
+ }
13
+ ---
14
+
15
+ # Image Skill
16
+
17
+ Status: preview hosted-product contract.
18
+
19
+ Image Skill is a CLI-first hosted creative runtime for agents. Use it to create, edit, inspect, iterate on, and reuse generated images.
20
+
21
+ Public agents should depend on the hosted contract, a thin CLI/client, stable JSON outputs, trace IDs, job IDs, artifact references, quota/cost state, and feedback commands.
22
+
23
+ Core rule: Image Skill should preserve model capability, not flatten it away.
24
+ Use capability introspection and model parameter schemas before assuming what a
25
+ model can do. Normalized controls are for common paths; model parameters are
26
+ how rare or provider-native capabilities remain available without turning the
27
+ whole CLI into a lowest-common-denominator interface.
28
+
29
+ ## First Run
30
+
31
+ Install the agent-facing skill from the public mirror repo when the runtime
32
+ supports skills.sh-compatible installation:
33
+
34
+ ```bash
35
+ npx skills add danielgwilson/image-skill-cli --skill image-skill -g -a codex -y
36
+ ```
37
+
38
+ Install the executable CLI from npm:
39
+
40
+ ```bash
41
+ npm install -g image-skill
42
+ ```
43
+
44
+ Check service and client health:
45
+
46
+ ```bash
47
+ image-skill doctor --json
48
+ ```
49
+
50
+ Bootstrap restricted agent access:
51
+
52
+ ```bash
53
+ image-skill signup --agent \
54
+ --human-email HUMAN_EMAIL \
55
+ --agent-name AGENT_NAME \
56
+ --runtime RUNTIME_NAME \
57
+ --save \
58
+ --json
59
+ ```
60
+
61
+ `--save` stores the returned hosted token in the public CLI config with 0600
62
+ permissions and redacts it from stdout. Use `--show-token` only when the agent
63
+ runtime has a separate secret store and needs the raw token once.
64
+
65
+ If the runtime supports stdin secret handoff, prefer `--token-stdin` for
66
+ `whoami`, `usage quota`, `quota`, `create`, and `feedback create` instead of
67
+ placing the token in command args.
68
+
69
+ Inspect identity and quota:
70
+
71
+ ```bash
72
+ image-skill whoami --json
73
+ image-skill usage quota --json
74
+ ```
75
+
76
+ The preview hosted signup path currently uses a human sponsor email. Future
77
+ payment-backed and agent-contact-backed signup paths are planned so capable
78
+ agents can become bounded paying users without making human claim the only
79
+ path to meaningful usage.
80
+
81
+ Credit quote and buy flow:
82
+
83
+ ```bash
84
+ image-skill credits packs list --json
85
+ image-skill credits quote \
86
+ --pack starter-500 \
87
+ --payment-method stripe_checkout \
88
+ --idempotency-key stripe-pack-quote-run-001 \
89
+ --json
90
+ image-skill credits quote --credits 137 --json
91
+ image-skill credits buy \
92
+ --provider stripe \
93
+ --quote-id QUOTE_ID \
94
+ --idempotency-key stripe-buy-run-001 \
95
+ --json
96
+ image-skill credits fake-purchase \
97
+ --quote-id QUOTE_ID \
98
+ --idempotency-key purchase-run-001 \
99
+ --json
100
+ ```
101
+
102
+ This is the agent-facing precursor to future MPP, Stripe, wallet, or
103
+ delegated-card adapters. Packs are the default Stripe Checkout UX; exact
104
+ `--credits` quotes remain available when an agent already knows the required
105
+ budget. `credits buy --provider stripe` returns a
106
+ Stripe-hosted `checkout_url` for a `stripe_checkout` quote and does not grant
107
+ credits until verified webhook fulfillment succeeds. `credits fake-purchase`
108
+ returns `live_money:false`, moves no live money, accepts no payment credential,
109
+ and exists so agents can exercise the quote, receipt, credit-ledger, and
110
+ activity-audit contract safely.
111
+ One Image Skill credit is `$0.01`. Creative operations debit model-priced
112
+ credits, not a flat one-credit unit. Use `models show MODEL_ID --json` and the
113
+ operation response `cost.credit_pricing` to see `credits_required`,
114
+ `estimated_provider_cost_usd`, and pricing confidence.
115
+
116
+ ## Create An Image
117
+
118
+ Inspect models first:
119
+
120
+ ```bash
121
+ image-skill models --json
122
+ image-skill models list --json
123
+ image-skill models show openai.gpt-image-2 --json
124
+ ```
125
+
126
+ `models show` is the first detailed discovery surface for agents. It exposes
127
+ operations, media inputs/outputs, model-parameter schemas, fixed and wired
128
+ controls, cost/latency class, safety behavior, and migration hints. Use
129
+ `capabilities` when you need the schema language directly.
130
+
131
+ Create with hosted artifact URLs and JSON:
132
+
133
+ ```bash
134
+ image-skill create \
135
+ --prompt "A product mockup of a compact field camera on a stainless workbench" \
136
+ --intent explore \
137
+ --aspect-ratio 1:1 \
138
+ --max-estimated-usd-per-image 0.05 \
139
+ --json
140
+ ```
141
+
142
+ For model-specific controls that are advertised by models/capabilities, use a
143
+ validated JSON parameter payload instead of inventing coarse global categories:
144
+
145
+ ```bash
146
+ image-skill create \
147
+ --prompt-file ./prompt.md \
148
+ --intent finalize \
149
+ --model MODEL_ID \
150
+ --model-parameters-json '{"seed":1234}' \
151
+ --max-usd 0.25 \
152
+ --json
153
+ ```
154
+
155
+ In the current preview, Fal create/edit expose executable `seed`, while OpenAI
156
+ GPT Image 2 exposes documented provider-native controls such as size, output
157
+ format, compression, background, moderation, and its provider-native quality
158
+ parameter through validated `model_parameters`. These are model-specific
159
+ controls, not universal Image Skill tiers.
160
+
161
+ Hosted free-preview API:
162
+
163
+ ```bash
164
+ curl -sS https://api.image-skill.com/v1/create \
165
+ -H "authorization: Bearer $IMAGE_SKILL_TOKEN" \
166
+ -H "content-type: application/json" \
167
+ -d '{"prompt":"A product mockup of a compact field camera on a stainless workbench","intent":"explore","aspect_ratio":"1:1","max_estimated_usd_per_image":0.05,"model_parameters":{"seed":1234}}'
168
+ ```
169
+
170
+ Expected behavior:
171
+
172
+ - returns `job_id`, `trace_id`, `asset_ids`, artifact references, cost estimate, and safety status;
173
+ - returns Image Skill-owned artifact references under `assets[].url`;
174
+ - emits service telemetry;
175
+ - refuses when quota, claim state, scopes, content policy, budget guard, provider availability, or safety rules do not allow the job.
176
+
177
+ ## Fetch Generated Assets
178
+
179
+ Upload an existing image into an Image Skill-owned input asset:
180
+
181
+ ```bash
182
+ image-skill upload PATH_OR_URL --json
183
+ ```
184
+
185
+ Use upload before edit workflows. The CLI normalizes local paths and remote
186
+ URLs client-side; public responses include `asset_id`, `job_id`, hosted URL,
187
+ MIME type, byte length, and SHA-256 hash, but never local paths, full remote
188
+ URLs, raw bytes, base64 payloads, buckets, or object keys.
189
+
190
+ Edit an owned input asset, local path, or remote URL:
191
+
192
+ ```bash
193
+ image-skill edit \
194
+ --input ASSET_ID_OR_PATH_OR_URL \
195
+ --prompt "Remove the background and keep natural object shadows" \
196
+ --accept-unknown-cost \
197
+ --json
198
+ ```
199
+
200
+ For local paths and external URLs, the public CLI uploads the input first and
201
+ then edits the resulting Image Skill-owned asset id. Preview hosted edit uses
202
+ Fal Nano Banana 2 Edit and consumes model-priced restricted free-preview
203
+ credits after provider success.
204
+
205
+ Inspect an Image Skill-owned asset:
206
+
207
+ ```bash
208
+ image-skill assets show ASSET_ID_OR_URL --json
209
+ ```
210
+
211
+ Download it without repeating provider work:
212
+
213
+ ```bash
214
+ image-skill assets get ASSET_ID_OR_URL --output ./result.png --json
215
+ ```
216
+
217
+ `assets get` refuses to overwrite existing files unless `--overwrite` is
218
+ explicit. Use only Image Skill-owned asset URLs or asset ids returned by
219
+ Image Skill.
220
+
221
+ ## Inspect Generated Jobs
222
+
223
+ Inspect a hosted job:
224
+
225
+ ```bash
226
+ image-skill jobs show JOB_ID --json
227
+ ```
228
+
229
+ Wait for a hosted job to complete:
230
+
231
+ ```bash
232
+ image-skill jobs wait JOB_ID --json
233
+ ```
234
+
235
+ Use `jobs show` or `jobs wait` instead of telemetry or history files when you
236
+ need status, cost, safety, public capability id, timestamps, and reusable assets
237
+ for a hosted create.
238
+
239
+ ## Inspect Activity
240
+
241
+ List recent ledger events:
242
+
243
+ ```bash
244
+ image-skill activity list --limit 20 --json
245
+ ```
246
+
247
+ Show one event or subject:
248
+
249
+ ```bash
250
+ image-skill activity show EVENT_OR_JOB_OR_ASSET_OR_FEEDBACK --json
251
+ ```
252
+
253
+ Use `activity` when you need an audit trail: recent jobs, assets, usage events,
254
+ feedback acceptance, trace IDs, and status changes that can be cited in product
255
+ feedback. Do not use `activity` as a wait or recovery command. Use `jobs show`
256
+ or `jobs wait` for operational job state, final assets, and retry judgment.
257
+
258
+ ## Feedback
259
+
260
+ If a workflow fails, is confusing, succeeds with friction, or suggests a missing feature, leave product feedback:
261
+
262
+ ```bash
263
+ image-skill feedback create \
264
+ --type user_feedback \
265
+ --title "Short concrete title" \
266
+ --body "What happened, what was expected, and why it matters" \
267
+ --command "Command or workflow observed" \
268
+ --expected "Expected result" \
269
+ --actual "Actual result" \
270
+ --proof-needed "What would prove this is handled" \
271
+ --surface cli,docs \
272
+ --evidence trace:TRACE_ID \
273
+ --severity medium \
274
+ --confidence high \
275
+ --next-state watch \
276
+ --json
277
+ ```
278
+
279
+ Good feedback includes the command, trace ID, expected result, actual result, and whether the issue is CLI affordance, model output, auth/quota, docs, provider reliability, or product judgment.
280
+ If the agent cannot fill every structured field, still submit `--title` and
281
+ `--body`; narrative feedback is accepted, and quality warnings remain available
282
+ when the signal lacks enough triage evidence.
283
+
284
+ When a JSON command fails, inspect `error.recovery` before retrying. Recovery
285
+ may include `required_flag`, `suggested_command`, `docs_url`, or
286
+ `retry_after_seconds`; use these fields instead of scraping prose messages.
287
+
288
+ Public feedback is hosted by default. With `IMAGE_SKILL_TOKEN` set, the CLI
289
+ submits to `https://api.image-skill.com/v1/feedback` and the service fails
290
+ closed if durable hosted feedback storage is unavailable.
291
+
292
+ ## Safety And Cost
293
+
294
+ - Check `usage quota --json` before costly workflows. `quota --json` remains a
295
+ compatibility alias.
296
+ - Use `credits packs list --json` to inspect recommended live-money packs.
297
+ - Use `credits quote --pack PACK_ID --payment-method stripe_checkout --json`
298
+ for the default Stripe Checkout path.
299
+ - Use `credits quote --credits CREDITS --json` for exact bounded custom
300
+ top-ups when the required budget is already known.
301
+ - Use `credits buy --provider stripe --json` only to create a Stripe-hosted
302
+ checkout action. Session creation itself does not grant credits.
303
+ - Use `credits fake-purchase --json` only for preview credit-ledger proof; it
304
+ is not live settlement and must not receive payment credentials.
305
+ - Treat credits as prepaid cents of Image Skill value. Operation debits are
306
+ model-aware and appear in `cost.credit_pricing`.
307
+ - Use dry-run modes and explicit budget caps for exploration.
308
+ - Do not mistake quota limits or free-preview policy for creative quality
309
+ labels. Ask capabilities what a capability supports.
310
+ - Do not bypass claim state, scopes, policy checks, or telemetry.
311
+ - Do not create deceptive, harassing, infringing, or unsafe media.
312
+ - Escalate to the human when a workflow needs spend, identity, legal judgment, or external publishing.
313
+
314
+ ## Reference
315
+
316
+ - Full machine-readable contract: `https://image-skill.com/llms.txt`
317
+ - CLI command contract: `https://image-skill.com/cli.md`
318
+ - Product homepage: `https://image-skill.com`