Visual Design — Image Generation & Editing
Generate new images or edit existing ones via the backend image API.
Be patient, it takes about 2 minutes to generate an image each time.
Prerequisites
API Key Configuration (Required First)
This skill requires a SKYWORK_API_KEY to be configured in OpenClaw.
If you don't have an API key yet, please visit:
https://skywork.ai
For detailed setup instructions, see:
references/apikey-fetch.md
Usage
Run the script using absolute path (do NOT cd to skill directory):
Generate new image:
python3 <SKILL_DIR>/scripts/generate_image.py --prompt "description" --filename "output.png" [--aspect-ratio 3:4] [--resolution 1K|2K|4K]
Edit existing image:
python3 <SKILL_DIR>/scripts/generate_image.py --prompt "edit instructions" --filename "output.png" --input-image "source.png" [--aspect-ratio 3:4] [--resolution 2K]
Edit with multiple reference images:
python3 <SKILL_DIR>/scripts/generate_image.py --prompt "combine these styles" --filename "output.png" -i "ref1.png" -i "ref2.png"
Always run from the user's working directory so images save there.
When to Generate vs Edit
- Generation (
--prompt only): Creating new images from scratch — posters, logos, illustrations, photos, infographics.
- Editing (
--prompt + --input-image): User provides existing image(s) and wants modifications — style changes, element addition/removal, color adjustments, format conversion.
- Notice: Edit api supports character resemblance of up to 4 characters and the fidelity of up to 10 objects in a single workflow
If the user uploads/references images and wants changes, always use --input-image.
Resolution
- 1K — ~1024px, fast drafts
- 2K (default) — ~2048px, good for most deliverables
- 4K — ~4096px, final high-res output
Map user requests: "low/draft" → 1K, "normal/medium/2K" → 2K, "high-res/hi-res/4K/ultra" → 4K.
Aspect Ratio
Supported ratios: 1:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9, 21:9.
Selection guidance:
- 1:1 — Social media avatars, icons, album covers
- 3:4 / 4:3 — General posters, presentations
- 4:5 / 5:4 — Instagram posts, portraits
- 9:16 / 16:9 — Mobile stories / desktop wallpapers, video covers
- 2:3 / 3:2 — Print posters, book covers
- 21:9 — Ultra-wide banners, cinema format
If the user doesn't specify, omit --aspect-ratio and let the API decide.
Filename Convention
Pattern: yyyy-mm-dd-hh-mm-ss-descriptive-name.png
Examples:
- "A serene Japanese garden" →
2026-03-10-14-23-05-japanese-garden.png
- "sunset over mountains" →
2026-03-10-15-30-12-sunset-mountains.png
- Unclear context →
2026-03-10-17-12-48-x9k2.png
Preflight
command -v python3 (must exist)
- If editing: verify each
--input-image file exists
Common Failures
Error: Input image not found: → wrong path; verify --input-image file exists
HTTP error 500 → backend service error; retry or check server status
Request failed: Connection refused → backend service unavailable; ensure the service is running
- Insufficient benefit: The script or log may show a message like
Insufficient benefit. Please upgrade your account at {url}, meaning the user's benefit level does not meet the requirement for this skill.
How to reply when benefit is insufficient
When you detect the above, reply in the user's current language — do not echo the English message. Use this pattern:
- Convey: "Sorry, image generation failed. This skill requires upgrading your Skywork membership to use." then a single call-to-action link.
- Format: One short sentence in the user's language + a link like
[Upgrade now →](url) or the equivalent in their language.
- URL: Extract the upgrade URL from the log/script output (e.g. the
at https://... part).
Note: Only suggest upgrading when the error is Insufficient benefit. For auth errors like NO_TOKEN / INVALID_TOKEN / 401 / “invalid API key”, keep the error code / raw message and guide users to update SKYWORK_API_KEY. Do not suggest upgrading membership.
Output
- Script prints the local file path and the OSS URL.
- Depending on the platform, use the most appropriate way to deliver the image (e.g. send as image message, display inline, or print the URLs). By default, return both the local path and OSS URL to the user. The OSS URL ensures cross-platform accessibility.
Design Scenarios
Match the user's request to a scenario and read the corresponding file for specialized workflow:
- E-commerce product image: See scenarios/e-commerce.md
- Storyboard: See scenarios/storyboard.md
- Infographic: See scenarios/infographic.md
- Logo: See scenarios/logo.md
- Branding / VI: See scenarios/branding.md
- Brochure: See scenarios/brochure.md
- Social media: See scenarios/social-media.md
- Poster: See scenarios/poster.md
Prompt Engineering
Prompts Best Practices
Follow these principles for quality prompts using the image API for generation or editing:
- Describe the scene, don't just list keywords. A narrative, descriptive paragraph produces much better results than disconnected words. The model's core strength is deep language understanding.
- Weak: "cat, sunset, beach"
- Strong: "A ginger tabby cat sitting on a sandy beach at golden hour, facing the camera with soft warm backlighting, shallow depth of field, ocean waves blurred in the background"
- Be hyper-specific. The more detail you provide, the more control you have. Include all visual details: style, colors, composition, lighting, background, textures.
- Provide context and intent. Explain the purpose of the image — the model's understanding of context influences the output.
- Use step-by-step instructions for complex scenes with many elements. Break the prompt into layers: foreground, middle ground, background.
- Use "semantic negative prompts." Instead of "no cars," describe positively: "an empty, deserted street with no signs of traffic."
- Control the camera. Use photographic and cinematic terms: "wide-angle shot", "macro shot", "low-angle perspective", "bird's eye view", "rule of thirds", "shallow depth of field".
- Time perception. If the result needs real-time timeliness, mention the current time context in the prompt.
- Text in images. Place text content within double quotation marks:
A movie poster with the title "INCEPTION" in large silver metallic letters at the top
- Clearly specify and emphasize the elements that require modification. Describe reference images by their order (first image, second image), not by filename.
1---
2name: skywork-design
3description: Generate or edit images via backend Skywork Image API. Use for any image creation, poster design, logo design, visual asset generation, or image modification request. Supports text-to-image and image-to-image editing with aspect ratio and resolution control.
4metadata:
5 openclaw:
6 requires:
7 bins:
8 - python3
9 env:
10 - SKYWORK_API_KEY
11 primaryEnv: SKYWORK_API_KEY
12---1314
15# Visual Design — Image Generation & Editing
16
17Generate new images or edit existing ones via the backend image API.
18Be patient, it takes about 2 minutes to generate an image each time.
19
20---
21
22## Prerequisites
23
24### API Key Configuration (Required First)
25This skill requires a **SKYWORK_API_KEY** to be configured in OpenClaw.
26
27If you don't have an API key yet, please visit:
28**https://skywork.ai**
29
30For detailed setup instructions, see:
31[references/apikey-fetch.md](references/apikey-fetch.md)
32
33## Usage
34
35Run the script using absolute path (do NOT cd to skill directory):
36
37**Generate new image:**
38```bash
39python3 <SKILL_DIR>/scripts/generate_image.py --prompt "description" --filename "output.png" [--aspect-ratio 3:4] [--resolution 1K|2K|4K]
40```
41
42**Edit existing image:**
43```bash
44python3 <SKILL_DIR>/scripts/generate_image.py --prompt "edit instructions" --filename "output.png" --input-image "source.png" [--aspect-ratio 3:4] [--resolution 2K]
45```
46
47**Edit with multiple reference images:**
48```bash
49python3 <SKILL_DIR>/scripts/generate_image.py --prompt "combine these styles" --filename "output.png" -i "ref1.png" -i "ref2.png"
50```
51
52Always run from the user's working directory so images save there.
53
54## When to Generate vs Edit
55
56- **Generation** (`--prompt` only): Creating new images from scratch — posters, logos, illustrations, photos, infographics.
57- **Editing** (`--prompt` + `--input-image`): User provides existing image(s) and wants modifications — style changes, element addition/removal, color adjustments, format conversion.
58 - Notice: Edit api supports character resemblance of up to 4 characters and the fidelity of up to 10 objects in a single workflow
59
60If the user uploads/references images and wants changes, always use `--input-image`.
61
62## Resolution
63
64- **1K** — ~1024px, fast drafts
65- **2K** (default) — ~2048px, good for most deliverables
66- **4K** — ~4096px, final high-res output
67
68Map user requests: "low/draft" → 1K, "normal/medium/2K" → 2K, "high-res/hi-res/4K/ultra" → 4K.
69
70## Aspect Ratio
71
72Supported ratios: `1:1`, `2:3`, `3:2`, `3:4`, `4:3`, `4:5`, `5:4`, `9:16`, `16:9`, `21:9`.
73
74Selection guidance:
75- **1:1** — Social media avatars, icons, album covers
76- **3:4 / 4:3** — General posters, presentations
77- **4:5 / 5:4** — Instagram posts, portraits
78- **9:16 / 16:9** — Mobile stories / desktop wallpapers, video covers
79- **2:3 / 3:2** — Print posters, book covers
80- **21:9** — Ultra-wide banners, cinema format
81
82If the user doesn't specify, omit `--aspect-ratio` and let the API decide.
83
84## Filename Convention
85
86Pattern: `yyyy-mm-dd-hh-mm-ss-descriptive-name.png`
87
88Examples:
89- "A serene Japanese garden" → `2026-03-10-14-23-05-japanese-garden.png`
90- "sunset over mountains" → `2026-03-10-15-30-12-sunset-mountains.png`
91- Unclear context → `2026-03-10-17-12-48-x9k2.png`
92
93## Preflight
94
95- `command -v python3` (must exist)
96- If editing: verify each `--input-image` file exists
97
98## Common Failures
99
100- `Error: Input image not found:` → wrong path; verify `--input-image` file exists
101- `HTTP error 500` → backend service error; retry or check server status
102- `Request failed: Connection refused` → backend service unavailable; ensure the service is running
103- **Insufficient benefit**: The script or log may show a message like `Insufficient benefit. Please upgrade your account at {url}`, meaning the user's benefit level does not meet the requirement for this skill.
104
105### How to reply when benefit is insufficient
106
107When you detect the above, **reply in the user's current language** — do not echo the English message. Use this pattern:
108
109- Convey: "Sorry, image generation failed. This skill requires upgrading your Skywork membership to use." then a single call-to-action link.
110- **Format**: One short sentence in the user's language + a link like `[Upgrade now →](url)` or the equivalent in their language.
111- **URL**: Extract the upgrade URL from the log/script output (e.g. the `at https://...` part).
112
113> Note: Only suggest upgrading when the error is **Insufficient benefit**. For auth errors like `NO_TOKEN` / `INVALID_TOKEN` / `401` / “invalid API key”, keep the error code / raw message and guide users to update `SKYWORK_API_KEY`. **Do not** suggest upgrading membership.
114
115## Output
116
117- Script prints the local file path and the OSS URL.
118- Depending on the platform, use the most appropriate way to deliver the image (e.g. send as image message, display inline, or print the URLs). By default, return both the local path and OSS URL to the user. The OSS URL ensures cross-platform accessibility.
119
120## Design Scenarios
121
122Match the user's request to a scenario and read the corresponding file for specialized workflow:
123
124- **E-commerce product image**: See [scenarios/e-commerce.md](scenarios/e-commerce.md)
125- **Storyboard**: See [scenarios/storyboard.md](scenarios/storyboard.md)
126- **Infographic**: See [scenarios/infographic.md](scenarios/infographic.md)
127- **Logo**: See [scenarios/logo.md](scenarios/logo.md)
128- **Branding / VI**: See [scenarios/branding.md](scenarios/branding.md)
129- **Brochure**: See [scenarios/brochure.md](scenarios/brochure.md)
130- **Social media**: See [scenarios/social-media.md](scenarios/social-media.md)
131- **Poster**: See [scenarios/poster.md](scenarios/poster.md)
132
133## Prompt Engineering
134
135### Prompts Best Practices
136
137Follow these principles for quality prompts using the image API for generation or editing:
138
139- **Describe the scene, don't just list keywords.** A narrative, descriptive paragraph produces much better results than disconnected words. The model's core strength is deep language understanding.
140 - Weak: "cat, sunset, beach"
141 - Strong: "A ginger tabby cat sitting on a sandy beach at golden hour, facing the camera with soft warm backlighting, shallow depth of field, ocean waves blurred in the background"
142- **Be hyper-specific.** The more detail you provide, the more control you have. Include all visual details: style, colors, composition, lighting, background, textures.
143- **Provide context and intent.** Explain the purpose of the image — the model's understanding of context influences the output.
144- **Use step-by-step instructions** for complex scenes with many elements. Break the prompt into layers: foreground, middle ground, background.
145- **Use "semantic negative prompts."** Instead of "no cars," describe positively: "an empty, deserted street with no signs of traffic."
146- **Control the camera.** Use photographic and cinematic terms: "wide-angle shot", "macro shot", "low-angle perspective", "bird's eye view", "rule of thirds", "shallow depth of field".
147- **Time perception.** If the result needs real-time timeliness, mention the current time context in the prompt.
148- **Text in images.** Place text content within double quotation marks:
149 > A movie poster with the title "INCEPTION" in large silver metallic letters at the top
150- Clearly specify and emphasize the elements that require modification. Describe reference images by their order (first image, second image), not by filename.