Image Generation Studio
Generate or edit images with the image-generation-studio CLI through supported adapters (`gemini`, `openai_images`, `openai_responses`) and user-configured p...
Rank
62
Safety
84
Downloads
1.2k
Updated
Oct 11, 2026
Version
1.2.0
Source
CLAWHUB
About
What it does, and when to use it.
Capability contract not published. No trust telemetry is available yet. 1.2K downloads reported by the source. Last updated 10/11/2026.
Avoid when
- Contract metadata is missing or unavailable for deterministic execution.
Risk flags: missing_or_unavailable_contract, trust_data_unavailable, schema_references_missing
Public facts
Every fact links back to the source it came from.
- Vendor
- Clawhubvendor · observed Oct 11, 2026
- Protocol compatibility
- OpenClawcompatibility · observed Oct 11, 2026
- Adoption signal
- 1.2K downloadsadoption · observed Oct 11, 2026
- Latest release
- 1.2.0release · observed Jun 14, 2026
- Handshake status
- UNKNOWNsecurity
Install and run
Setup complexity: low.
clawhub skill install s1738hrzcd8fdsws4q1ms1dgsn85ke0q:image-generation-studio- Install using `clawhub skill install s1738hrzcd8fdsws4q1ms1dgsn85ke0q:image-generation-studio` in an isolated environment before connecting it to live workloads.
- No published capability contract is available yet, so validate auth and request/response behavior manually.
- Review the upstream CLAWHUB listing at https://clawhub.ai/limkim0530/image-generation-studio before using production credentials.
Contract: missing
curl -s "https://www.xpersona.co/api/v1/agents/clawhub-limkim0530-image-generation-studio/snapshot"
Documentation
CLAWHUB
147,566 characters of source documentation, loaded on request.
Extracted files
5 files captured from the source.
SKILL.md
---
name: image-generation-studio
description: Generate or edit images with the image-generation-studio CLI through supported adapters (`gemini`, `openai_images`, `openai_responses`) and user-configured providers, endpoints, models, and aliases. Use this skill whenever the user wants to create, edit, compose, or restyle images — including prompts like "make an image", "generate a picture", "edit this photo", "combine these images", "4K poster", or mentions of configured image providers/models such as "Gemini image", "Grok image", "xAI image", "OpenAI image", "OpenAI Responses", "custom image provider", or "gpt-image".
version: 1.2.0
requires:
bins: ["uv"]
---
# Image Generation Studio
Use this skill by running `uv run {baseDir}/scripts/generate.py`. Treat `{baseDir}/config.json` as local runtime state: it may be missing in a distributed skill, the CLI treats a missing file as empty config, and users can create it locally for their own provider names, API endpoints, default models, and aliases.
Do not read `{baseDir}/config.json` directly — it may contain plaintext API keys, and pulling them into context is a credential leak. To discover what is configured, run `uv run {baseDir}/scripts/generate.py --list-config`, which prints providers, the default provider, aliases, and each provider's credential source (env / config / none) with key values redacted. The only time you touch `config.json` directly is when the user explicitly asks you to write or change configuration (see `references/configuration.md`).
## Prerequisites
- Python 3.10+
- `uv` available in PATH
- Python dependencies declared in `scripts/generate.py` and installed by `uv run` as needed:
- `google-genai>=1.52.0`
- `pillow>=10.0.0`
**Note:** In this documentation, `{baseDir}` refers to the root directory of this skill repository.
## Credentials
This skill needs an API key for the provider selected at runtime, but environment variables are optional. The key can come from per-call `--api-key`, a provider-specific environment variable, or `config.json` if the user explicitly accepts local secret storage.
Built-in provider environment variables are `GEMINI_API_KEY` for `gemini`, `XAI_API_KEY` for `xai`, and `OPENAI_API_KEY` for `openai`. Custom providers use `<PROVIDER_NAME>_API_KEY` after uppercasing the provider name and replacing `-` with `_`, they are all optional.
## First step
Before building any command, run config discovery so you target the right provider, model, and credential source instead of guessing:
```bash
uv run {baseDir}/scripts/generate.py --list-config
```
This prints the default provider, every provider's adapter/default_model/api_url, all aliases, and where each provider's API key comes from (env var, config, or none) — without revealing key values. Pick a provider that reports a usable key source. If the default provider's key source is `none`, do not rely on the implicit default; pass `--provider <name>` or `-_meta.json
{
"ownerId": "kn7831kmyakk4nc334nw8krav585kv3f",
"slug": "image-generation-studio",
"version": "1.2.0",
"publishedAt": 1781428629000
}references/adapter-gemini.md
# Gemini adapter
Use this reference when the selected provider uses `adapter: "gemini"`, or when the user mentions Gemini, Google GenAI, Nano Banana, `gemini-*` image models, search grounding, thinking, streaming, or multi-image composition.
The implementation lives in `{baseDir}/scripts/generate.py` under `gemini_generate`.
## Request shape
The adapter uses the Google GenAI SDK:
- client: `google.genai.Client`
- method: `client.models.generate_content(...)` or `generate_content_stream(...)`
- custom endpoint: `--api-url` / provider `api_url` is passed as `types.HttpOptions(base_url=..., api_version="v1beta")`
- API key: required through `--api-key`, env var, or provider config
For text-to-image, `contents` is the prompt string. For edits/composition, `contents` is all input images followed by the prompt.
## Supported operations
- Text-to-image generation.
- Image editing with input images.
- Multi-image composition with up to 14 input images.
- Native aspect ratio control.
- Native image size control via `1K`, `2K`, `4K`.
- Optional streaming text output.
- Nano 2-only search grounding and thinking controls.
## Relevant CLI options
| Option | Behavior |
| --- | --- |
| `--provider` | Selects a config provider whose adapter is `gemini`. |
| `-m`, `--model` | Gemini model ID or user-defined alias from `config.json`. |
| `-p`, `--prompt` | Required prompt or edit instruction. |
| `-f`, `--filename` | Required output path. Extension controls final file format; parent directories are created automatically. |
| `-i`, `--input` | Repeatable input image path. Up to 14 images. Enables edit/composition. |
| `-r`, `--resolution` | Passed as native `image_size`; valid values are `1K`, `2K`, `4K`. |
| `--aspect-ratio` | Passed as native image aspect ratio. |
| `--system-prompt`, `--system` | Passed as native `system_instruction`. |
| `--search` | Nano 2 only. Adds Google Search grounding. Values: `web`, `image`, `both`. |
| `--thinking` | Nano 2 only. `minimal` maps to thinking budget `0`; `high` maps to `-1`. |
| `--stream` | Uses `generate_content_stream`; prints text chunks live, saves image at the end. |
## Ignored or irrelevant options
The script warns and ignores OpenAI-compatible image fields for this adapter: `--size`, `--number`, `--quality`, `--output-format`, `--output-compression`, `--background`, `--moderation`, `--response-format`, and `--action`.
Do not recommend them for Gemini unless the user is intentionally passing provider-specific flags through a custom wrapper, which this script does not do.
## Advanced features (search and thinking)
`--search` and `--thinking` require the model alias to declare the corresponding capabilities in `config.json`:
```json
{
"models": {
"my-nano2": {
"provider": "gemini",
"model": "gemini-3.1-flash-image-preview",
"capabilities": ["search", "thinking"]
}
}
}
```
If the user requests search groundinreferences/adapter-openai-images.md
# OpenAI Images-compatible adapter
Use this reference when the selected provider uses `adapter: "openai_images"`, or when the user mentions OpenAI Images, `/v1/images/generations`, `/v1/images/edits`, `gpt-image-*`, Grok Imagine, xAI image generation, image edits through OpenAI-style endpoints, `response_format`, or temporary image URLs.
The implementation lives in `{baseDir}/scripts/generate.py` under `openai_images_generate`.
## Request shape
The adapter uses stdlib HTTP calls to OpenAI Images-compatible endpoints:
- text-to-image: `POST {base}/v1/images/generations` with JSON
- image edit: `POST {base}/v1/images/edits` with multipart form data
- base URL: `--api-url` / provider `api_url`, defaulting to `https://api.openai.com`
- authorization: `Authorization: Bearer <api_key>`
For edits, each input is sent as a repeated multipart field named `image[]`.
## Supported operations
- Text-to-image generation.
- Image editing when one or more `-i / --input` images are provided.
- Multiple edit input images at the wrapper level, although provider/model support varies.
- OpenAI Images-style size, quality, output format, moderation, compression, response format, and image count fields.
- URL image download with browser-like headers. Provider API credentials are only sent to API endpoints, never to returned image URLs.
## Relevant CLI options
| Option | Behavior |
| --- | --- |
| `--provider` | Selects a config provider whose adapter is `openai_images`. |
| `-m`, `--model` | Model ID or alias. |
| `-p`, `--prompt` | Required prompt or edit instruction. |
| `-f`, `--filename` | Required output path. Extension controls final saved format; parent directories are created automatically. |
| `-i`, `--input` | Switches from generations to edits and sends each input as `image[]`. |
| `-n`, `--number` | Sent as `n`; defaults to `1`. Multiple response images are saved as `file`, `file-2`, `file-3`, etc. |
| `-r`, `--resolution` | Maps to sizes when `--size` is not provided: `1K` → `1920x1088`, `1K-portrait` → `1088x1920`, `2K` → `2560x1440`, `2K-portrait` → `1440x2560`, `4K` → `3840x2160`, `4K-portrait` → `2160x3840`. |
| `--size` | Overrides resolution mapping. Examples: `auto`, `1920x1088`, `1088x1920`, `2560x1440`, `1440x2560`, `3840x2160`, `2160x3840`. |
| `--quality` | Sent as `quality`; values: `auto`, `low`, `medium`, `high`. |
| `--output-format` | Sent as `output_format`; defaults from `-f` extension when possible (`jpg` becomes `jpeg`). |
| `--output-compression` | Sent only when output format is not `png`. |
| `--moderation` | Sent as `moderation`; values: `auto`, `low`. |
| `--response-format` | Sent as `response_format`; values: `url`, `b64_json`. |
| `--system-prompt`, `--system` | Prepended to the user prompt with a blank line, because OpenAI Images has no system role. |
## Ignored or irrelevant options
The script warns and ignores `--aspect-ratio`, `--background`, `--action`, `--search`, `--references/adapter-openai-responses.md
# OpenAI Responses adapter
Use this reference when the selected provider uses `adapter: "openai_responses"`, or when the user mentions OpenAI Responses, `/v1/responses`, the `image_generation` tool, or image generation through a Responses-compatible proxy.
The implementation lives in `{baseDir}/scripts/generate.py` under `openai_responses_generate`.
## Request shape
The adapter uses stdlib HTTP JSON calls:
- endpoint: `POST {base}/v1/responses`
- base URL: `--api-url` / provider `api_url`, defaulting to `https://api.openai.com`
- authorization: `Authorization: Bearer <api_key>`
- payload includes `model`, `input`, and `tools: [{"type": "image_generation", "action": ..., "size": ..., "background": ...}]`
The prompt is sent as the top-level `input` string for text-to-image. When `-i / --input` images are provided, the adapter sends Responses content blocks with `input_text` followed by `input_image` data URLs. If a system prompt is configured, it is prepended to the user prompt with a blank line.
## Supported operations
- Text-to-image generation through the Responses API image generation tool.
- Image editing/redraw with one or more `-i / --input` images sent as `input_image` content.
- Action control through the image generation tool's `action` field.
- Size control through the image generation tool's `size` field.
- Quality and moderation control through the image generation tool's `quality` and `moderation` fields.
- Output format control through the tool's `output_format` field.
- Background control through the image generation tool's `background` field.
- Optional local JPEG/WebP saved-file quality control via `--output-compression`; this is not sent to the Responses API.
- Flexible image extraction from several possible response shapes.
## Unsupported operations in this wrapper
- Streaming is not implemented for this adapter.
- Search grounding and thinking flags are not implemented for this adapter.
- `--aspect-ratio` is not sent; use `--size` for shape control.
- OpenAI Images-specific fields other than `--size`, `--quality`, `--moderation`, and `--output-format` are not sent.
## Relevant CLI options
| Option | Behavior |
| --- | --- |
| `--provider` | Selects a config provider whose adapter is `openai_responses`. |
| `-m`, `--model` | Model ID or alias for the Responses-compatible provider. |
| `-p`, `--prompt` | Required prompt. |
| `-f`, `--filename` | Required output path. Extension controls final saved format; parent directories are created automatically. |
| `-i`, `--input` | Repeatable input image path. Sends each image as an `input_image` data URL and defaults action to `edit`. |
| `--action` | Sent into the image generation tool as `action`; values: `auto`, `generate`, `edit`. Defaults to `edit` with inputs, otherwise `generate`. |
| `-r`, `--resolution` | Maps to tool `size` when `--size` is not provided: `1K` → `1920x1088`, `1K-portrait` → `1088x1920`, `2K` → `2560x1440`,AionUi
Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!
activepieces
AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents
cherry-studio
AI productivity studio with smart chat, autonomous agents, and 300+ assistants.
CopilotKit
The Frontend for Agents & Generative UI. React + Angular
Machine-readable data
The same record, as JSON, for agents and crawlers.
{
"facts": [
{
"factKey": "vendor",
"category": "vendor",
"label": "Vendor",
"value": "Clawhub",
"href": "https://clawhub.ai/limkim0530/skills/image-generation-studio",
"sourceUrl": "https://clawhub.ai/limkim0530/skills/image-generation-studio",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-11T04:31:23.087Z",
"isPublic": true
},
{
"factKey": "protocols",
"category": "compatibility",
"label": "Protocol compatibility",
"value": "OpenClaw",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-limkim0530-image-generation-studio/contract",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-limkim0530-image-generation-studio/contract",
"sourceType": "contract",
"confidence": "medium",
"observedAt": "2026-10-11T04:31:23.087Z",
"isPublic": true
},
{
"factKey": "traction",
"category": "adoption",
"label": "Adoption signal",
"value": "1.2K downloads",
"href": "https://clawhub.ai/limkim0530/image-generation-studio",
"sourceUrl": "https://clawhub.ai/limkim0530/image-generation-studio",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-11T04:31:23.087Z",
"isPublic": true
},
{
"factKey": "latest_release",
"category": "release",
"label": "Latest release",
"value": "1.2.0",
"href": "https://clawhub.ai/limkim0530/image-generation-studio",
"sourceUrl": "https://clawhub.ai/limkim0530/image-generation-studio",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-06-14T09:17:09.000Z",
"isPublic": true
},
{
"factKey": "handshake_status",
"category": "security",
"label": "Handshake status",
"value": "UNKNOWN",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-limkim0530-image-generation-studio/trust",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-limkim0530-image-generation-studio/trust",
"sourceType": "trust",
"confidence": "medium",
"observedAt": null,
"isPublic": true
}
],
"events": [
{
"eventType": "release",
"title": "Release 1.2.0",
"description": "**Enhanced configuration discovery and security in CLI usage.** - Added instructions to use `--list-config` for discovering providers, aliases, and credential sources instead of reading `config.json` directly. - Updated operating rules to prevent direct access to `config.json` except when editing at user request. - Expanded troubleshooting section with common error explanations and solutions. - Documentation improvements: clarified usage of provider selection, credential setup, and CLI help options. - Removed the `skill-card.md` file.",
"href": "https://clawhub.ai/limkim0530/image-generation-studio",
"sourceUrl": "https://clawhub.ai/limkim0530/image-generation-studio",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-06-14T09:17:09.000Z",
"isPublic": true
}
]
}Record generated Oct 11, 2026.
