synabun 1.3.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/CHANGELOG.md +665 -0
- package/LICENSE +191 -0
- package/README.md +853 -0
- package/hooks/claude-code/post-plan.mjs +391 -0
- package/hooks/claude-code/post-remember.mjs +239 -0
- package/hooks/claude-code/pre-compact.mjs +241 -0
- package/hooks/claude-code/pre-websearch.mjs +90 -0
- package/hooks/claude-code/prompt-submit.mjs +861 -0
- package/hooks/claude-code/session-start.mjs +494 -0
- package/hooks/claude-code/shared.mjs +368 -0
- package/hooks/claude-code/stop.mjs +646 -0
- package/hooks/claude-code/test-user-learning.mjs +531 -0
- package/mcp-server/package.json +38 -0
- package/mcp-server/run.mjs +10 -0
- package/mcp-server/src/config.ts +70 -0
- package/mcp-server/src/http.ts +93 -0
- package/mcp-server/src/index.ts +203 -0
- package/mcp-server/src/preload-http.ts +25 -0
- package/mcp-server/src/preload.ts +29 -0
- package/mcp-server/src/scripts/migrate-qdrant-to-sqlite.ts +506 -0
- package/mcp-server/src/services/categories.ts +429 -0
- package/mcp-server/src/services/discord.ts +702 -0
- package/mcp-server/src/services/file-checksums.ts +33 -0
- package/mcp-server/src/services/local-embeddings.ts +77 -0
- package/mcp-server/src/services/neural-interface.ts +344 -0
- package/mcp-server/src/services/sqlite.ts +823 -0
- package/mcp-server/src/tools/browser-advanced.ts +123 -0
- package/mcp-server/src/tools/browser-interact.ts +255 -0
- package/mcp-server/src/tools/browser-navigate.ts +77 -0
- package/mcp-server/src/tools/browser-observe.ts +1330 -0
- package/mcp-server/src/tools/browser.ts +107 -0
- package/mcp-server/src/tools/card-tools.ts +193 -0
- package/mcp-server/src/tools/card.ts +22 -0
- package/mcp-server/src/tools/category.ts +379 -0
- package/mcp-server/src/tools/discord-channel.ts +274 -0
- package/mcp-server/src/tools/discord-guild.ts +188 -0
- package/mcp-server/src/tools/discord-member.ts +158 -0
- package/mcp-server/src/tools/discord-message.ts +231 -0
- package/mcp-server/src/tools/discord-onboarding.ts +228 -0
- package/mcp-server/src/tools/discord-role.ts +209 -0
- package/mcp-server/src/tools/discord-thread.ts +110 -0
- package/mcp-server/src/tools/discord-webhook.ts +176 -0
- package/mcp-server/src/tools/discord.ts +40 -0
- package/mcp-server/src/tools/forget.ts +38 -0
- package/mcp-server/src/tools/git-tools.ts +141 -0
- package/mcp-server/src/tools/git.ts +13 -0
- package/mcp-server/src/tools/image-tools.ts +98 -0
- package/mcp-server/src/tools/image.ts +17 -0
- package/mcp-server/src/tools/leonardo-browser-tools.ts +281 -0
- package/mcp-server/src/tools/leonardo.ts +28 -0
- package/mcp-server/src/tools/loop.ts +348 -0
- package/mcp-server/src/tools/memories.ts +118 -0
- package/mcp-server/src/tools/recall.ts +323 -0
- package/mcp-server/src/tools/reflect.ts +145 -0
- package/mcp-server/src/tools/remember.ts +115 -0
- package/mcp-server/src/tools/response.ts +26 -0
- package/mcp-server/src/tools/restore.ts +34 -0
- package/mcp-server/src/tools/sync.ts +114 -0
- package/mcp-server/src/tools/tictactoe-tools.ts +98 -0
- package/mcp-server/src/tools/tictactoe.ts +13 -0
- package/mcp-server/src/tools/utils.ts +25 -0
- package/mcp-server/src/tools/whiteboard-tools.ts +260 -0
- package/mcp-server/src/tools/whiteboard.ts +22 -0
- package/mcp-server/src/tui.ts +940 -0
- package/mcp-server/src/types.ts +85 -0
- package/mcp-server/tsconfig.json +19 -0
- package/neural-interface/package.json +27 -0
- package/neural-interface/public/apple-touch-icon.png +0 -0
- package/neural-interface/public/category-logos/claude.svg +1 -0
- package/neural-interface/public/category-logos/gemini-color.svg +1 -0
- package/neural-interface/public/category-logos/openai.svg +1 -0
- package/neural-interface/public/category-logos/synabun.png +0 -0
- package/neural-interface/public/claude-chat.css +878 -0
- package/neural-interface/public/claude-chat.html +92 -0
- package/neural-interface/public/claude-chat.js +1168 -0
- package/neural-interface/public/favicon-16x16.png +0 -0
- package/neural-interface/public/favicon-32x32.png +0 -0
- package/neural-interface/public/gallery.svg +6 -0
- package/neural-interface/public/icon-192.png +0 -0
- package/neural-interface/public/icon-512.png +0 -0
- package/neural-interface/public/index-legacy.html +14677 -0
- package/neural-interface/public/index.html +212 -0
- package/neural-interface/public/index2d-legacy.html +8193 -0
- package/neural-interface/public/index2d.html +127 -0
- package/neural-interface/public/invite.html +351 -0
- package/neural-interface/public/leonardoai.svg +1 -0
- package/neural-interface/public/logo-synabun.png +0 -0
- package/neural-interface/public/logoHD.png +0 -0
- package/neural-interface/public/manifest.json +14 -0
- package/neural-interface/public/offline.html +299 -0
- package/neural-interface/public/onboarding.html +2335 -0
- package/neural-interface/public/openclaw-logo-text.png +0 -0
- package/neural-interface/public/pin-svgrepo-com.svg +25 -0
- package/neural-interface/public/sessionicon.svg +8 -0
- package/neural-interface/public/shared/ansi-parser.js +305 -0
- package/neural-interface/public/shared/api.js +1043 -0
- package/neural-interface/public/shared/colors.js +153 -0
- package/neural-interface/public/shared/constants.js +141 -0
- package/neural-interface/public/shared/html-shell.js +777 -0
- package/neural-interface/public/shared/html-term-renderer.js +1022 -0
- package/neural-interface/public/shared/i18n.js +147 -0
- package/neural-interface/public/shared/registry.js +82 -0
- package/neural-interface/public/shared/state.js +86 -0
- package/neural-interface/public/shared/storage.js +150 -0
- package/neural-interface/public/shared/styles.css +21212 -0
- package/neural-interface/public/shared/ui-automation-studio.js +3573 -0
- package/neural-interface/public/shared/ui-bookmarks.js +231 -0
- package/neural-interface/public/shared/ui-claude-panel.js +6333 -0
- package/neural-interface/public/shared/ui-command-runner.js +534 -0
- package/neural-interface/public/shared/ui-cost-widget.js +602 -0
- package/neural-interface/public/shared/ui-detail.js +1454 -0
- package/neural-interface/public/shared/ui-explorer.js +1356 -0
- package/neural-interface/public/shared/ui-file-explorer.js +2750 -0
- package/neural-interface/public/shared/ui-games.js +411 -0
- package/neural-interface/public/shared/ui-help.js +107 -0
- package/neural-interface/public/shared/ui-image-gallery.js +461 -0
- package/neural-interface/public/shared/ui-invite.js +519 -0
- package/neural-interface/public/shared/ui-keybinds.js +452 -0
- package/neural-interface/public/shared/ui-layouts.js +297 -0
- package/neural-interface/public/shared/ui-link.js +731 -0
- package/neural-interface/public/shared/ui-loading.js +255 -0
- package/neural-interface/public/shared/ui-menubar.js +499 -0
- package/neural-interface/public/shared/ui-multiselect.js +93 -0
- package/neural-interface/public/shared/ui-navbar.js +222 -0
- package/neural-interface/public/shared/ui-notifications.js +287 -0
- package/neural-interface/public/shared/ui-panels.js +309 -0
- package/neural-interface/public/shared/ui-resume.js +653 -0
- package/neural-interface/public/shared/ui-search.js +145 -0
- package/neural-interface/public/shared/ui-sessions.js +531 -0
- package/neural-interface/public/shared/ui-settings.js +5987 -0
- package/neural-interface/public/shared/ui-sidebar.js +1905 -0
- package/neural-interface/public/shared/ui-skills.js +2805 -0
- package/neural-interface/public/shared/ui-stats.js +38 -0
- package/neural-interface/public/shared/ui-sync.js +201 -0
- package/neural-interface/public/shared/ui-terminal.js +6385 -0
- package/neural-interface/public/shared/ui-tooltip.js +123 -0
- package/neural-interface/public/shared/ui-trash.js +439 -0
- package/neural-interface/public/shared/ui-tutorial-draw.js +875 -0
- package/neural-interface/public/shared/ui-tutorial-steps.js +2276 -0
- package/neural-interface/public/shared/ui-tutorial.js +1117 -0
- package/neural-interface/public/shared/ui-update.js +244 -0
- package/neural-interface/public/shared/ui-whiteboard.js +3262 -0
- package/neural-interface/public/shared/ui-workspaces.js +722 -0
- package/neural-interface/public/shared/utils.js +360 -0
- package/neural-interface/public/shared/vterm-buffer.js +1102 -0
- package/neural-interface/public/sw.js +52 -0
- package/neural-interface/public/synabun.png +0 -0
- package/neural-interface/public/toolbar-album.svg +8 -0
- package/neural-interface/public/toolbar-question.svg +6 -0
- package/neural-interface/public/toolbar-sessions.svg +6 -0
- package/neural-interface/public/variant/2d/background.js +113 -0
- package/neural-interface/public/variant/2d/context-menu.js +133 -0
- package/neural-interface/public/variant/2d/gfx.js +45 -0
- package/neural-interface/public/variant/2d/graph.js +1635 -0
- package/neural-interface/public/variant/2d/hulls.js +207 -0
- package/neural-interface/public/variant/2d/lasso.js +135 -0
- package/neural-interface/public/variant/2d/layout.js +594 -0
- package/neural-interface/public/variant/2d/main.js +521 -0
- package/neural-interface/public/variant/2d/minimap.js +312 -0
- package/neural-interface/public/variant/2d/settings-gfx.js +98 -0
- package/neural-interface/public/variant/3d/background.js +884 -0
- package/neural-interface/public/variant/3d/camera.js +661 -0
- package/neural-interface/public/variant/3d/gfx.js +116 -0
- package/neural-interface/public/variant/3d/graph.js +2399 -0
- package/neural-interface/public/variant/3d/main.js +500 -0
- package/neural-interface/public/variant/3d/settings-gfx.js +228 -0
- package/neural-interface/scripts/rebuild-pty.js +100 -0
- package/neural-interface/server.js +15000 -0
- package/neural-interface/templates/CLAUDE-template.md +211 -0
- package/package.json +53 -0
- package/postinstall.js +135 -0
- package/setup.js +260 -0
- package/skills/leonardo/SKILL.md +159 -0
- package/skills/leonardo/icon.svg +1 -0
- package/skills/leonardo/modules/browser-guide.md +378 -0
- package/skills/leonardo/modules/image-prompter.md +277 -0
- package/skills/leonardo/modules/model-advisor.md +100 -0
- package/skills/leonardo/modules/prompt-library.md +110 -0
- package/skills/leonardo/modules/style-guide.md +186 -0
- package/skills/leonardo/modules/video-prompter.md +311 -0
- package/skills/synabun/SKILL.md +185 -0
- package/skills/synabun/icon.png +0 -0
- package/skills/synabun/modules/audit.md +374 -0
- package/skills/synabun/modules/changelog.md +194 -0
- package/skills/synabun/modules/idea.md +144 -0
- package/skills/synabun/modules/memorize.md +188 -0
- package/skills/synabun/synabunicon.png +0 -0
|
@@ -0,0 +1,378 @@
|
|
|
1
|
+
# Leonardo.ai Browser Navigation Guide
|
|
2
|
+
|
|
3
|
+
This module maps every Leonardo.ai UI control to browser automation instructions. Use this to configure settings before generating.
|
|
4
|
+
|
|
5
|
+
**Important:** Leonardo.ai is a React app. Some elements don't respond to standard CSS selector clicks. When `browser_click` fails, use `browser_evaluate` with JavaScript to click elements directly.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## General Patterns
|
|
10
|
+
|
|
11
|
+
### Clicking buttons that contain multi-line text
|
|
12
|
+
Leonardo buttons often contain nested elements. Use `browser_evaluate`:
|
|
13
|
+
```javascript
|
|
14
|
+
(() => {
|
|
15
|
+
const btns = document.querySelectorAll('button');
|
|
16
|
+
for (const b of btns) {
|
|
17
|
+
if (b.textContent.includes('TARGET_TEXT')) { b.click(); return 'clicked'; }
|
|
18
|
+
}
|
|
19
|
+
return 'not found';
|
|
20
|
+
})()
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
### Closing dialogs/panels
|
|
24
|
+
- Press `Escape` via `browser_press key: "Escape"`
|
|
25
|
+
- Or click the close button if visible
|
|
26
|
+
|
|
27
|
+
### Waiting after actions
|
|
28
|
+
After clicking buttons that open panels/dialogs, wait 1-2 seconds before taking a snapshot:
|
|
29
|
+
```
|
|
30
|
+
browser_wait timeout: 2000
|
|
31
|
+
browser_snapshot
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## IMAGE GENERATION PAGE
|
|
37
|
+
|
|
38
|
+
**URL:** `https://app.leonardo.ai/image-generation`
|
|
39
|
+
|
|
40
|
+
### Model Selection
|
|
41
|
+
1. Click the Model button:
|
|
42
|
+
```javascript
|
|
43
|
+
(() => { const b = Array.from(document.querySelectorAll('button')).find(b => b.textContent.includes('Model')); if (b) { b.click(); return 'opened'; } return 'not found'; })()
|
|
44
|
+
```
|
|
45
|
+
2. A dialog opens with tabs: **Image** | **Video** | **Legacy**. Image tab is selected by default.
|
|
46
|
+
3. Click the desired model button (each model is a button with an article inside):
|
|
47
|
+
```javascript
|
|
48
|
+
(() => { const b = Array.from(document.querySelectorAll('button')).find(b => b.textContent.includes('MODEL_NAME')); if (b) { b.click(); return 'selected'; } return 'not found'; })()
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
**Available Image Models (March 2026):**
|
|
52
|
+
| Model | Best For | Cost | Capabilities |
|
|
53
|
+
|-------|----------|------|-------------|
|
|
54
|
+
| Auto | Let Leonardo pick | Varies | — |
|
|
55
|
+
| Nano Banana 2 | Fast, sharp details, editing | Paid | Image Ref |
|
|
56
|
+
| Seedream 4.5 | Posters, logos, text-heavy | Paid | Image Ref |
|
|
57
|
+
| Lucid Origin | Prompt adherence, text, HD | Unlimited | Style Ref, Content Ref |
|
|
58
|
+
| FLUX.2 Pro | High-fidelity, prompt adherence | Paid | Image Guidance |
|
|
59
|
+
| GPT Image-1.5 | Editing control, detail preservation | Paid | Image Ref |
|
|
60
|
+
| Nano Banana Pro | Consistency, infographics | Paid | Image Ref |
|
|
61
|
+
| Seedream 4.0 | Ultra quality, consistency | Paid | Image Ref |
|
|
62
|
+
| Nano Banana | Context-aware edits, consistency | Paid | Image Ref |
|
|
63
|
+
| Lucid Realism | Cinematic, pairs w/ video gen | Unlimited | Style Ref, Content Ref |
|
|
64
|
+
| Ideogram 3.0 | Text rendering, consistency | Paid | — |
|
|
65
|
+
| GPT-Image-1 | State-of-the-art generation | Paid | Image Ref |
|
|
66
|
+
| FLUX.1 Kontext Max | Maximum quality output | Paid | Image Ref |
|
|
67
|
+
| FLUX.1 Kontext | Precise, controllable generation | Paid | Image Ref |
|
|
68
|
+
| FLUX Dev | Detailed, realistic images | Unlimited | Style Ref, Content Ref, Elements |
|
|
69
|
+
| FLUX Schnell | Fast, quality outputs | Unlimited | Style Ref, Content Ref |
|
|
70
|
+
| Phoenix 1.0 | Prompt adherence, text rendering | Unlimited | Image to Image, Style/Content/Character Ref |
|
|
71
|
+
| Phoenix 0.9 | Foundational model preview | Unlimited | Image to Image, Style/Content/Character Ref |
|
|
72
|
+
|
|
73
|
+
### Style Preset
|
|
74
|
+
Click the Style combobox (shows current style, default "Dynamic"):
|
|
75
|
+
```javascript
|
|
76
|
+
(() => { const c = document.querySelector('[role="combobox"]'); if (c) { c.click(); return 'opened'; } return 'not found'; })()
|
|
77
|
+
```
|
|
78
|
+
Then click the desired option from the listbox:
|
|
79
|
+
```
|
|
80
|
+
browser_click selector: "option:has-text('STYLE_NAME')"
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
**Available Styles:** Dynamic (default), Cinematic, Creative, Fashion, None, Portrait, Stock Photo, Vibrant
|
|
84
|
+
|
|
85
|
+
### Image Dimensions
|
|
86
|
+
Click the aspect ratio radio buttons:
|
|
87
|
+
```
|
|
88
|
+
browser_click selector: "[role='radio']:has-text('RATIO')"
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
**Preset Options:** 2:3, 1:1 (default), 16:9, Custom
|
|
92
|
+
|
|
93
|
+
**Custom Dimensions** — clicking "Custom" opens a dialog with:
|
|
94
|
+
- Aspect ratio slider (Wide ↔ Tall, centered at 1:1)
|
|
95
|
+
- Social presets: Twitter/X (4:3), Instagram (4:5), TikTok (9:16)
|
|
96
|
+
- Device presets: Desktop (16:9), Square (1:1)
|
|
97
|
+
|
|
98
|
+
Click presets:
|
|
99
|
+
```
|
|
100
|
+
browser_click selector: "[role='radio']:has-text('Instagram (4:5)')"
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### Number of Images
|
|
104
|
+
Click the count radio:
|
|
105
|
+
```
|
|
106
|
+
browser_click selector: "[role='radio']:has-text('NUMBER')"
|
|
107
|
+
```
|
|
108
|
+
**Options:** 1 (default), 2, 3, 4
|
|
109
|
+
|
|
110
|
+
### Add Elements / Reference Images
|
|
111
|
+
Click the "Add elements" button near the prompt to access image-to-image, style reference, content reference, and other advanced features (availability depends on selected model).
|
|
112
|
+
|
|
113
|
+
**Preferred method — use the dedicated tool:**
|
|
114
|
+
```
|
|
115
|
+
leonardo_browser_reference type: "style_ref" filePaths: ["/path/to/image.png"] autoClear: true
|
|
116
|
+
```
|
|
117
|
+
This automates the full flow: opens the panel, selects the reference type, uploads the file(s), and auto-clears from the SynaBun image store.
|
|
118
|
+
|
|
119
|
+
**Manual method (fallback):**
|
|
120
|
+
1. Click "Add elements":
|
|
121
|
+
```javascript
|
|
122
|
+
(() => {
|
|
123
|
+
const btns = document.querySelectorAll('button');
|
|
124
|
+
for (const b of btns) {
|
|
125
|
+
if (b.textContent.includes('Add elements')) { b.click(); return 'opened'; }
|
|
126
|
+
}
|
|
127
|
+
return 'not found';
|
|
128
|
+
})()
|
|
129
|
+
```
|
|
130
|
+
2. Wait for panel to open, then `browser_snapshot` to see available reference types.
|
|
131
|
+
3. Click the desired reference type (e.g., "Style Reference", "Image Reference", "Content Reference").
|
|
132
|
+
4. Upload the image file:
|
|
133
|
+
```
|
|
134
|
+
browser_upload selector: "input[type='file']" filePaths: ["/path/to/image.png"]
|
|
135
|
+
```
|
|
136
|
+
5. Optionally adjust the strength slider if visible.
|
|
137
|
+
6. Close the panel with Escape or continue to prompt.
|
|
138
|
+
|
|
139
|
+
**Reference type availability by model:**
|
|
140
|
+
| Model | Image Ref | Style Ref | Content Ref | Character Ref | Image-to-Image |
|
|
141
|
+
|-------|-----------|-----------|-------------|---------------|----------------|
|
|
142
|
+
| Lucid Origin | — | Yes | Yes | — | — |
|
|
143
|
+
| Lucid Realism | — | Yes | Yes | — | — |
|
|
144
|
+
| FLUX Dev | — | Yes | Yes | — | — |
|
|
145
|
+
| FLUX Schnell | — | Yes | Yes | — | — |
|
|
146
|
+
| Phoenix 1.0 | — | Yes | Yes | Yes | Yes |
|
|
147
|
+
| Phoenix 0.9 | — | Yes | Yes | Yes | Yes |
|
|
148
|
+
| Nano Banana 2 | Yes | — | — | — | — |
|
|
149
|
+
| Seedream 4.5 | Yes | — | — | — | — |
|
|
150
|
+
| GPT Image-1.5 | Yes | — | — | — | — |
|
|
151
|
+
| Nano Banana Pro | Yes | — | — | — | — |
|
|
152
|
+
| FLUX.1 Kontext | Yes | — | — | — | — |
|
|
153
|
+
| Ideogram 3.0 | — | — | — | — | — |
|
|
154
|
+
|
|
155
|
+
### Prompt
|
|
156
|
+
The prompt textbox has `aria-label="Prompt"`. Use `leonardo_browser_generate` to fill it and click Generate, or fill manually:
|
|
157
|
+
```
|
|
158
|
+
browser_fill selector: "[aria-label='Prompt']" value: "your prompt here"
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
## VIDEO GENERATION PAGE
|
|
164
|
+
|
|
165
|
+
**URL:** `https://app.leonardo.ai/image-generation/video`
|
|
166
|
+
|
|
167
|
+
### Model Selection
|
|
168
|
+
Same pattern as image — click the Model button, but the Video tab is auto-selected on the video page.
|
|
169
|
+
|
|
170
|
+
**Available Video Models (March 2026):**
|
|
171
|
+
| Model | Best For | Cost | Capabilities |
|
|
172
|
+
|-------|----------|------|-------------|
|
|
173
|
+
| Kling Video 3.0 | Longer videos, audio, consistency | Paid | Start/End Frame, Audio |
|
|
174
|
+
| Kling Video O3 Omni | Longer videos, audio, image ref | Paid | Start/End Frame, Image Ref, Audio |
|
|
175
|
+
| Veo 3.1 Fast | Fast video concepts | Paid | Fast, Start/End Frame, Audio |
|
|
176
|
+
| Hailuo 2.3 | Affordable, high-quality, style | Paid | Start Frame |
|
|
177
|
+
| Kling 2.6 | Visuals, voiceovers, sound | Paid | Start Frame, Audio |
|
|
178
|
+
| Seedance 1.0 Pro Fast | Prompt following, details | Paid | Start Frame, Fast |
|
|
179
|
+
| Kling O1 Video Model | Accuracy, multi-instruction prompts | Paid | Start/End Frame, Image Ref |
|
|
180
|
+
| Hailuo 2.3 Fast | Fast, lifelike motion | Paid | Start Frame |
|
|
181
|
+
| Sora 2 Pro | Smooth cinematic, refined detail | Paid | Start Frame, Audio |
|
|
182
|
+
| Sora 2 | Multi-shot continuity, audio | Paid | Start Frame, Audio |
|
|
183
|
+
| Veo 3.1 | Cinematic storytelling | Paid | Start/End Frame, Image Ref, Audio |
|
|
184
|
+
| Kling 2.5 Turbo | Narrative control, start frames | Paid | Start/End Frame |
|
|
185
|
+
| Kling 2.5 Turbo Standard | Fast, lower cost | Paid | Start Frame |
|
|
186
|
+
| Seedance 1.0 Pro | Precise motion, consistency | Paid | Start/End Frame |
|
|
187
|
+
| Kling 2.1 Pro | Seamless video transitions | Paid | Start/End Frame |
|
|
188
|
+
| LTX-2 Pro | Polished visuals, quick | Paid | Start Frame, Audio |
|
|
189
|
+
| Seedance 1.0 Lite | Fast, camera shots, expressions | Paid | Start/End Frame, Image Ref |
|
|
190
|
+
| LTX-2 Fast | Enhanced textures, industry speed | Paid | Fast, Start Frame, Audio |
|
|
191
|
+
| Veo 3 | Realistic cinematic, audio | Paid | Start Frame, Audio |
|
|
192
|
+
| Veo 3 Fast | Quick concepts, fast viz | Paid | Fast, Start Frame, Audio |
|
|
193
|
+
| Motion 2.0 | High-quality, fine-tuned controls | **Unlimited** | Start Frame, Controls, Elements, Styles |
|
|
194
|
+
| Motion 2.0 Fast | Fast preview, high quality | **Unlimited** | Fast, Start Frame, Controls, Elements, Styles |
|
|
195
|
+
| Motion 1.0 | Basic, subtle motion | **Unlimited** | Start Frame |
|
|
196
|
+
|
|
197
|
+
**Note:** Only Motion 2.0 and Motion 2.0 Fast support Motion Controls, Motion Elements, and Style Stacking. Other models use their own built-in styles.
|
|
198
|
+
|
|
199
|
+
### Motion Control
|
|
200
|
+
Click the "Motion Control" button to open the motion control dialog:
|
|
201
|
+
```javascript
|
|
202
|
+
(() => { const b = Array.from(document.querySelectorAll('button')).find(b => b.textContent.includes('Motion Control') && !b.textContent.includes('Elements')); if (b) { b.click(); return 'opened'; } return 'not found'; })()
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
Select a motion control from the dialog:
|
|
206
|
+
```javascript
|
|
207
|
+
(() => { const b = Array.from(document.querySelectorAll('button')).find(b => b.textContent.trim() === 'CONTROL_NAME'); if (b) { b.click(); return 'selected'; } return 'not found'; })()
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
**39 Motion Controls:**
|
|
211
|
+
**Camera Movement:** Dolly In, Dolly Out, Dolly Left, Dolly Right, Crane Up, Crane Down, Crane Over Head, Tilt Up, Tilt Down, Orbit Left, Orbit Right, Rotate, Dutch Angle, Snorricam, Robo Arm, Lazy Susan
|
|
212
|
+
**Zoom:** Crash Zoom In, Crash Zoom Out, Medium Zoom In, Super Dolly In, Super Dolly Out, YoYo Zoom, Bullet Time
|
|
213
|
+
**Effects:** Explosion, Disintegration, Freezing, Flood, Set on Fire, Thunder God, Night, Metal, Light Morph, Ripple Morph, Lens Crack, Touch Glass, Tattoo Motion, Handheld, Eyes In, Mouth In
|
|
214
|
+
**None:** Removes any motion control
|
|
215
|
+
|
|
216
|
+
### Motion Elements
|
|
217
|
+
Click the "Motion Elements" button:
|
|
218
|
+
```javascript
|
|
219
|
+
(() => { const b = Array.from(document.querySelectorAll('button')).find(b => b.textContent.includes('Motion Elements') ); if (b) { b.click(); return 'opened'; } return 'not found'; })()
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
**27 Motion Elements (creative style overlays):**
|
|
223
|
+
90s Retro Anime, CGI Noir, Claynimation, Dark Fantasy, Digital Painting, Dreamcore, Editorial Blur, Felted, Glowwave, Golden Age Cinema, Inkflow, Moody Realism, Oldschool Comic, Old VHS, Pixel Art, Quiet Blue Hour, Retro Line Art, Silver Hue Analog, Simple Flat Animation, Soft Infrared, Stylized 3Dtoon, Sunny Nostalgia, Synthwave, Vintage Black & White, Watercolor, Whimsy Animation, Y2K Analog, None
|
|
224
|
+
|
|
225
|
+
### Style Stacking (Vibe + Lighting + Color Theme)
|
|
226
|
+
The Style section has three layers. Click each button to open its panel, then select from the options. You can stack one from each layer.
|
|
227
|
+
|
|
228
|
+
**Opening style panels:**
|
|
229
|
+
Click the Vibe/Lighting/Color Theme button in the sidebar. A panel opens with tabs for the other two layers.
|
|
230
|
+
|
|
231
|
+
**Vibe options (9):** Clay, Color Sketch, Logo, Papercraft, Pro Photo, Sci-Fi, Sketch, Stock Footage, None
|
|
232
|
+
|
|
233
|
+
**Lighting options (16):** Backlight, Candle Lit, Chiaroscuro, Film Haze, Foggy, Golden Hour, Hardlight, Lens Flare, Light Art, Low Key, Luminous, Mystical, Rainy, Soft Light, Volumetric, None
|
|
234
|
+
|
|
235
|
+
**Color Theme options (14):** Autumn, Complimentary, Cool, Dark, Earthy, Electric, Iridescent, Pastel, Split, Terracotta Teal, Ultraviolet, Vibrant, Warm, None
|
|
236
|
+
|
|
237
|
+
**To select a style from any layer:**
|
|
238
|
+
1. Click the layer button (Vibe/Lighting/Color Theme) to open the panel
|
|
239
|
+
2. If needed, click the tab to switch between layers
|
|
240
|
+
3. Click the style button:
|
|
241
|
+
```javascript
|
|
242
|
+
(() => { const b = Array.from(document.querySelectorAll('button')).find(b => b.textContent.trim() === 'STYLE_NAME'); if (b) { b.click(); return 'selected'; } return 'not found'; })()
|
|
243
|
+
```
|
|
244
|
+
4. Close the panel with Escape or click the close button
|
|
245
|
+
|
|
246
|
+
**To clear all styles:** Click "Clear all" button in the Style section.
|
|
247
|
+
|
|
248
|
+
### Prompt Enhance
|
|
249
|
+
Click the Prompt Enhance combobox:
|
|
250
|
+
```javascript
|
|
251
|
+
(() => { const c = document.querySelector('[role="combobox"]'); if (c) { c.click(); return 'opened'; } return 'not found'; })()
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
**Options:**
|
|
255
|
+
- **Auto** (default) — Short prompts expanded, long prompts left as-is
|
|
256
|
+
- **On** — Always refine prompts
|
|
257
|
+
- **Off** — Never modify prompts
|
|
258
|
+
|
|
259
|
+
**Recommendation:** Set to "Off" when using carefully engineered prompts from the prompter modules. Set to "Auto" for quick/casual generation.
|
|
260
|
+
|
|
261
|
+
### Generation Mode / Resolution
|
|
262
|
+
The Generation Mode section shows resolution options. These change depending on the selected model.
|
|
263
|
+
- For Motion 2.0 Fast: shows "Quality 720p" as a radio option
|
|
264
|
+
- Other models may show different options (480p, 720p, 1080p)
|
|
265
|
+
|
|
266
|
+
### Video Dimensions
|
|
267
|
+
```
|
|
268
|
+
browser_click selector: "[role='radio']:has-text('RATIO')"
|
|
269
|
+
```
|
|
270
|
+
**Options:** Auto (default), 2:3, 4:5, 9:16
|
|
271
|
+
|
|
272
|
+
### Number of Generations
|
|
273
|
+
```
|
|
274
|
+
browser_click selector: "[role='radio']:has-text('NUMBER')"
|
|
275
|
+
```
|
|
276
|
+
**Options:** 1 (default), 2, 3, 4
|
|
277
|
+
|
|
278
|
+
### Advanced Settings
|
|
279
|
+
Click the "Advanced Settings" button to expand:
|
|
280
|
+
```javascript
|
|
281
|
+
(() => { const b = Array.from(document.querySelectorAll('button')).find(b => b.textContent.includes('Advanced Settings')); if (b) { b.click(); return 'expanded'; } return 'not found'; })()
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
**Reveals:**
|
|
285
|
+
- **Smooth Video** — toggle for smoother frame interpolation
|
|
286
|
+
- **Negative Prompt** — toggle on to reveal a text input for negative prompts
|
|
287
|
+
- **Use Fixed Seed** — toggle for reproducible results
|
|
288
|
+
|
|
289
|
+
To toggle a switch, find and click it:
|
|
290
|
+
```javascript
|
|
291
|
+
(() => {
|
|
292
|
+
const switches = document.querySelectorAll('[role="switch"]');
|
|
293
|
+
// Toggle Negative Prompt has aria-label
|
|
294
|
+
const np = Array.from(switches).find(s => s.getAttribute('aria-label') === 'Toggle Negative Prompt');
|
|
295
|
+
if (np) { np.click(); return 'toggled'; }
|
|
296
|
+
return 'not found';
|
|
297
|
+
})()
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
### Image Guidance (Start/End Frame & Reference)
|
|
301
|
+
|
|
302
|
+
**Preferred method — use the dedicated tool:**
|
|
303
|
+
```
|
|
304
|
+
leonardo_browser_reference type: "start_frame" filePaths: ["/path/to/image.png"] autoClear: true
|
|
305
|
+
```
|
|
306
|
+
For end frames (supported models only):
|
|
307
|
+
```
|
|
308
|
+
leonardo_browser_reference type: "end_frame" filePaths: ["/path/to/image.png"] autoClear: true
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
**Manual method (fallback):**
|
|
312
|
+
1. Click "Add Image Guidance to generation" button near the prompt:
|
|
313
|
+
```javascript
|
|
314
|
+
(() => {
|
|
315
|
+
const btns = document.querySelectorAll('button');
|
|
316
|
+
for (const b of btns) {
|
|
317
|
+
if (b.textContent.includes('Image Guidance') || b.textContent.includes('Add Image')) {
|
|
318
|
+
b.click(); return 'opened';
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
return 'not found';
|
|
322
|
+
})()
|
|
323
|
+
```
|
|
324
|
+
2. Upload the image:
|
|
325
|
+
```
|
|
326
|
+
browser_upload selector: "input[type='file']" filePaths: ["/path/to/image.png"]
|
|
327
|
+
```
|
|
328
|
+
3. For end frame, look for an "End Frame" tab or toggle after uploading the start frame.
|
|
329
|
+
|
|
330
|
+
**Video reference capabilities by model:**
|
|
331
|
+
| Model | Start Frame | End Frame | Image Ref |
|
|
332
|
+
|-------|-------------|-----------|-----------|
|
|
333
|
+
| All video models | Yes | — | — |
|
|
334
|
+
| Kling Video 3.0 | Yes | Yes | — |
|
|
335
|
+
| Kling Video O3 Omni | Yes | Yes | Yes |
|
|
336
|
+
| Veo 3.1 | Yes | Yes | Yes |
|
|
337
|
+
| Kling O1 | Yes | Yes | Yes |
|
|
338
|
+
| Seedance 1.0 Lite | Yes | Yes | Yes |
|
|
339
|
+
| Kling 2.5 Turbo | Yes | Yes | — |
|
|
340
|
+
| Kling 2.1 Pro | Yes | Yes | — |
|
|
341
|
+
| Seedance 1.0 Pro | Yes | Yes | — |
|
|
342
|
+
|
|
343
|
+
### Prompt & Generate
|
|
344
|
+
Same as image page — use `leonardo_browser_generate` to fill prompt and click Generate.
|
|
345
|
+
|
|
346
|
+
---
|
|
347
|
+
|
|
348
|
+
## LIBRARY PAGE
|
|
349
|
+
|
|
350
|
+
**URL:** `https://app.leonardo.ai/library`
|
|
351
|
+
|
|
352
|
+
Use `leonardo_browser_library` to navigate here. Use `browser_snapshot` to see generations.
|
|
353
|
+
|
|
354
|
+
**Actions on generations:**
|
|
355
|
+
- Copy prompt: click "Copy prompt" button
|
|
356
|
+
- Reuse prompt: click "Reuse prompt" button
|
|
357
|
+
- Iterate: click "Iterate" button to refine
|
|
358
|
+
- Download: click "Download All" button
|
|
359
|
+
- Delete: click "Delete All" button
|
|
360
|
+
|
|
361
|
+
---
|
|
362
|
+
|
|
363
|
+
## UPSCALER PAGE
|
|
364
|
+
|
|
365
|
+
**URL:** `https://app.leonardo.ai/universal-upscaler`
|
|
366
|
+
|
|
367
|
+
Navigate via `leonardo_browser_navigate page: "upscaler"`. Use `browser_snapshot` to see the UI, then interact with the available controls.
|
|
368
|
+
|
|
369
|
+
---
|
|
370
|
+
|
|
371
|
+
## Error Recovery
|
|
372
|
+
|
|
373
|
+
If a click fails:
|
|
374
|
+
1. Take a `browser_snapshot` to see current page state
|
|
375
|
+
2. Look for the element in the snapshot output
|
|
376
|
+
3. Try alternative selectors or `browser_evaluate` with JavaScript
|
|
377
|
+
4. If a dialog is blocking, press Escape first
|
|
378
|
+
5. If the page hasn't loaded, `browser_wait loadState: "load" timeout: 10000`
|
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
# Image Prompter — Guided Questionnaire
|
|
2
|
+
|
|
3
|
+
Guide the user through creating the perfect image on Leonardo.ai. Ask questions using `AskUserQuestion`, then engineer the optimal prompt and configure all browser settings.
|
|
4
|
+
|
|
5
|
+
**Important:** This is a browser-based workflow. After the questionnaire, you'll set all parameters in the Leonardo.ai UI using browser tools, then fill the prompt and click Generate.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Phase 1 — Vision (What do you want to create?)
|
|
10
|
+
|
|
11
|
+
Ask the user to describe their image concept. If `$TOPIC` was set by the router, use it as the starting point and skip asking — but still categorize it.
|
|
12
|
+
|
|
13
|
+
**Do NOT use AskUserQuestion here** — this requires free-text input. Output a natural chat message:
|
|
14
|
+
|
|
15
|
+
> **What kind of image do you want to create?**
|
|
16
|
+
> Describe your vision — subject, scene, mood, purpose. You can also paste or drag reference images for inspiration.
|
|
17
|
+
|
|
18
|
+
Wait for the user's typed response. After they respond, categorize into one of:
|
|
19
|
+
- **Portrait/People** — headshots, characters, fashion, editorial
|
|
20
|
+
- **Landscape/Architecture** — environments, buildings, scenery
|
|
21
|
+
- **Product/Commercial** — product shots, e-commerce, branding
|
|
22
|
+
- **Illustration/Art** — concept art, digital painting, fantasy
|
|
23
|
+
- **Abstract** — patterns, textures, experimental
|
|
24
|
+
- **Photography** — street, documentary, lifestyle
|
|
25
|
+
- **Logo/Design** — logos, icons, typography, posters
|
|
26
|
+
- **Anime/Manga** — anime-style characters, manga illustrations
|
|
27
|
+
- **Sci-Fi/Fantasy** — futuristic, otherworldly, imaginative
|
|
28
|
+
|
|
29
|
+
Store as `$CATEGORY`.
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## Phase 2 — Model Selection
|
|
34
|
+
|
|
35
|
+
Present model options based on `$CATEGORY`. Use `AskUserQuestion`:
|
|
36
|
+
|
|
37
|
+
> **Which image model should we use?**
|
|
38
|
+
|
|
39
|
+
- **Auto (Recommended)** — "I'll pick the best model for your concept"
|
|
40
|
+
- **Lucid Origin** — "Free, unlimited. Excellent prompt adherence and text rendering, HD output"
|
|
41
|
+
- **Lucid Realism** — "Free, unlimited. Best for cinematic shots, pairs great with video generation"
|
|
42
|
+
- **FLUX Dev** — "Free, unlimited. Detailed, realistic images with style/content reference support"
|
|
43
|
+
- **FLUX Schnell** — "Free, unlimited. Fast, quality outputs"
|
|
44
|
+
- **Phoenix 1.0** — "Free, unlimited. Great prompt adherence, text rendering, image-to-image support"
|
|
45
|
+
- **Seedream 4.5** — "Premium. Best for posters, logos, and text-heavy designs"
|
|
46
|
+
- **FLUX.2 Pro** — "Premium. Advanced prompt adherence with high-fidelity results"
|
|
47
|
+
- **GPT Image-1.5** — "Premium. Superior editing control and detail preservation"
|
|
48
|
+
- **Ideogram 3.0** — "Premium. Best text rendering and consistent generation"
|
|
49
|
+
- **Let me choose from all models** — "Show me the full list"
|
|
50
|
+
|
|
51
|
+
If **Auto**, select based on category:
|
|
52
|
+
| Category | Recommended Model | Why |
|
|
53
|
+
|----------|------------------|-----|
|
|
54
|
+
| Portrait/People | Lucid Realism | Cinematic realism, free |
|
|
55
|
+
| Landscape/Architecture | FLUX.2 Pro or FLUX Dev | High fidelity |
|
|
56
|
+
| Product/Commercial | GPT Image-1.5 | Editing control |
|
|
57
|
+
| Illustration/Art | FLUX Dev or Phoenix 1.0 | Creative flexibility |
|
|
58
|
+
| Abstract | FLUX Dev | Style/content ref support |
|
|
59
|
+
| Photography | Lucid Realism | Photorealistic |
|
|
60
|
+
| Logo/Design | Seedream 4.5 or Ideogram 3.0 | Text rendering |
|
|
61
|
+
| Anime/Manga | Phoenix 1.0 | Preset support |
|
|
62
|
+
| Sci-Fi/Fantasy | FLUX.2 Pro | High fidelity |
|
|
63
|
+
|
|
64
|
+
Store as `$MODEL`.
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## Phase 2.5 — Reference Images (Optional)
|
|
69
|
+
|
|
70
|
+
Check if the user attached images with their **current message** (file paths appear at the top of the prompt). Do NOT check `image_staged` here — old staged images are not reference candidates.
|
|
71
|
+
|
|
72
|
+
**If images are attached to the current message**, present options based on the selected model's capabilities. Use `AskUserQuestion`:
|
|
73
|
+
|
|
74
|
+
> **You have N reference image(s) available. How should Leonardo use them?**
|
|
75
|
+
|
|
76
|
+
Options — show ONLY those supported by `$MODEL` (see model-advisor.md capability table):
|
|
77
|
+
|
|
78
|
+
| Reference Type | Supported By | What It Does |
|
|
79
|
+
|----------------|-------------|--------------|
|
|
80
|
+
| **Image Reference** | Nano Banana 2, Seedream 4.5, GPT Image-1.5, Nano Banana Pro, FLUX.1 Kontext | Use image as direct visual reference |
|
|
81
|
+
| **Style Reference** | Lucid Origin, Lucid Realism, FLUX Dev, FLUX Schnell, Phoenix 1.0/0.9 | Extract and apply the visual style |
|
|
82
|
+
| **Content Reference** | Lucid Origin, Lucid Realism, FLUX Dev, FLUX Schnell, Phoenix 1.0/0.9 | Extract and match the content/composition |
|
|
83
|
+
| **Character Reference** | Phoenix 1.0, Phoenix 0.9 | Maintain character consistency |
|
|
84
|
+
| **Image-to-Image** | Phoenix 1.0, Phoenix 0.9 | Transform the reference into a new image |
|
|
85
|
+
| **Skip** | — | "Don't use reference images" |
|
|
86
|
+
|
|
87
|
+
If the selected model supports NONE of the reference types, inform the user and skip: *"[Model] doesn't support reference images. Continuing without."*
|
|
88
|
+
|
|
89
|
+
Store as `$REFERENCE_TYPE` and `$REFERENCE_PATHS`.
|
|
90
|
+
|
|
91
|
+
**If no images are attached**, ask the user if they'd like to use reference images. First check if `$MODEL` supports any reference types from the table above — if it supports NONE, skip this phase silently.
|
|
92
|
+
|
|
93
|
+
If the model supports at least one reference type, use `AskUserQuestion`:
|
|
94
|
+
|
|
95
|
+
> **Would you like to use reference images?**
|
|
96
|
+
> Reference images let Leonardo match a style, composition, or visual from an existing image.
|
|
97
|
+
|
|
98
|
+
- **Yes** — "I have images I'd like to use as reference"
|
|
99
|
+
- **No** — "Continue without reference images"
|
|
100
|
+
|
|
101
|
+
If **Yes**, respond with this message (plain text, not AskUserQuestion):
|
|
102
|
+
|
|
103
|
+
> **Attach your reference image(s) to the chat.**
|
|
104
|
+
> Copy the message below, paste it in the input box, attach your images, and send:
|
|
105
|
+
> ```
|
|
106
|
+
> Here are my reference images
|
|
107
|
+
> ```
|
|
108
|
+
|
|
109
|
+
Then wait for the user's next message. Check for file paths at the top of their message and also check `image_staged` (action: "list", type: "attachment") for newly attached images. If images are found, proceed with the reference type selection above (the "If images are attached" flow). If no images were found, inform the user no images were detected and ask them to try again or skip.
|
|
110
|
+
|
|
111
|
+
If **No**, continue to Phase 3.
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
## Phase 3 — Style Preset
|
|
116
|
+
|
|
117
|
+
Use `AskUserQuestion`:
|
|
118
|
+
|
|
119
|
+
> **What visual style do you want?**
|
|
120
|
+
|
|
121
|
+
- **Dynamic** (default) — "Balanced, versatile style for most subjects"
|
|
122
|
+
- **Cinematic** — "Film-like quality with dramatic lighting and depth"
|
|
123
|
+
- **Creative** — "Artistic, painterly, experimental"
|
|
124
|
+
- **Vibrant** — "Bold colors, high saturation, punchy"
|
|
125
|
+
- **Portrait** — "Optimized for faces and people"
|
|
126
|
+
- **Fashion** — "Editorial, high-fashion aesthetic"
|
|
127
|
+
- **Stock Photo** — "Clean, commercial, stock photography look"
|
|
128
|
+
- **None** — "No style preset — full prompt control"
|
|
129
|
+
|
|
130
|
+
**Auto-recommendation by category:**
|
|
131
|
+
| Category | Recommended Style |
|
|
132
|
+
|----------|------------------|
|
|
133
|
+
| Portrait/People | Portrait or Cinematic |
|
|
134
|
+
| Landscape/Architecture | Dynamic or Cinematic |
|
|
135
|
+
| Product/Commercial | Stock Photo or Dynamic |
|
|
136
|
+
| Illustration/Art | Creative |
|
|
137
|
+
| Abstract | Creative or None |
|
|
138
|
+
| Photography | Dynamic or Cinematic |
|
|
139
|
+
| Logo/Design | None or Dynamic |
|
|
140
|
+
| Anime/Manga | Dynamic or Creative |
|
|
141
|
+
| Sci-Fi/Fantasy | Cinematic or Creative |
|
|
142
|
+
|
|
143
|
+
Present the recommendation but let them choose.
|
|
144
|
+
|
|
145
|
+
Store as `$STYLE`.
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
## Phase 4 — Dimensions & Composition
|
|
150
|
+
|
|
151
|
+
Use `AskUserQuestion`:
|
|
152
|
+
|
|
153
|
+
> **What dimensions/aspect ratio?**
|
|
154
|
+
|
|
155
|
+
- **Square (1:1)** — "1024x1024. Versatile, social media, profile pictures"
|
|
156
|
+
- **Portrait (2:3)** — "Tall format. People, Pinterest, posters"
|
|
157
|
+
- **Landscape (16:9)** — "Wide format. Wallpapers, headers, cinematic"
|
|
158
|
+
- **Custom** — "Choose from social presets or set a custom ratio"
|
|
159
|
+
|
|
160
|
+
If **Custom**, offer social/device presets:
|
|
161
|
+
- **Twitter/X (4:3)** — "Timeline-optimized"
|
|
162
|
+
- **Instagram (4:5)** — "Feed-optimized, tall"
|
|
163
|
+
- **TikTok (9:16)** — "Vertical, full-screen"
|
|
164
|
+
- **Desktop (16:9)** — "Widescreen wallpaper"
|
|
165
|
+
|
|
166
|
+
Store as `$DIMENSIONS`.
|
|
167
|
+
|
|
168
|
+
---
|
|
169
|
+
|
|
170
|
+
## Phase 5 — Quantity & Details
|
|
171
|
+
|
|
172
|
+
Use `AskUserQuestion`:
|
|
173
|
+
|
|
174
|
+
> **How many images do you want?**
|
|
175
|
+
|
|
176
|
+
- **1** — "Single image, fastest"
|
|
177
|
+
- **2** — "Two variations to compare"
|
|
178
|
+
- **3** — "Three options"
|
|
179
|
+
- **4** — "Four variations, maximum choice"
|
|
180
|
+
|
|
181
|
+
Store as `$NUM_IMAGES`.
|
|
182
|
+
|
|
183
|
+
---
|
|
184
|
+
|
|
185
|
+
## Phase 5.5 — Creative Brief
|
|
186
|
+
|
|
187
|
+
You've gathered all the technical settings. Now get the user's **detailed creative vision** before engineering the prompt.
|
|
188
|
+
|
|
189
|
+
**Do NOT use AskUserQuestion here** — this requires free-text input. Output a natural chat message summarizing the config and asking for the detailed description:
|
|
190
|
+
|
|
191
|
+
> **Here's your setup:**
|
|
192
|
+
> - **Model:** $MODEL
|
|
193
|
+
> - **Style:** $STYLE
|
|
194
|
+
> - **Dimensions:** $DIMENSIONS
|
|
195
|
+
> - **Images:** $NUM_IMAGES
|
|
196
|
+
> [If reference images: **Reference:** $REFERENCE_TYPE with N image(s)]
|
|
197
|
+
>
|
|
198
|
+
> **Now describe your image in detail.**
|
|
199
|
+
> What's the subject? The scene, composition, lighting, mood, colors? Any specific elements you want included or avoided? The more detail you give, the better I can craft the prompt.
|
|
200
|
+
|
|
201
|
+
Wait for the user's typed response. Store their detailed description as `$CREATIVE_BRIEF`. This replaces the brief Phase 1 concept as the **primary input** for prompt engineering below.
|
|
202
|
+
|
|
203
|
+
---
|
|
204
|
+
|
|
205
|
+
## Phase 6 — Prompt Engineering
|
|
206
|
+
|
|
207
|
+
Now engineer the optimal prompt using `$CREATIVE_BRIEF` (the user's detailed description from Phase 5.5) combined with the style context from earlier phases. Follow these rules:
|
|
208
|
+
|
|
209
|
+
### Image Prompt Rules
|
|
210
|
+
1. **Subject first** — the main focus of the image
|
|
211
|
+
2. **Materials & texture** — "brushed aluminum", "weathered oak", "silk fabric"
|
|
212
|
+
3. **Lighting is critical** — "rim lighting", "soft diffused north-facing window", "dramatic chiaroscuro"
|
|
213
|
+
4. **Camera language for photorealistic** — "85mm f/1.4", "wide-angle 24mm", "macro close-up"
|
|
214
|
+
5. **Art medium for illustrations** — "oil painting", "watercolor wash", "digital concept art"
|
|
215
|
+
6. **Color palette** — "muted earth tones", "neon pink and teal", "monochromatic blue"
|
|
216
|
+
7. **Avoid vague words** — never "beautiful", "stunning", "amazing", "nice"
|
|
217
|
+
8. **1-3 sentences** — concise, every word counts
|
|
218
|
+
9. **Negative prompt for realism** — remove unwanted elements
|
|
219
|
+
|
|
220
|
+
### Prompt Structure Template
|
|
221
|
+
```
|
|
222
|
+
[Subject and action], [environment/setting], [lighting description], [camera/art style], [color and mood]
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
### Example Transformations
|
|
226
|
+
**User says:** "A portrait of a woman"
|
|
227
|
+
**Engineered:** "Editorial portrait of a woman in her 30s with natural curly hair, wearing a charcoal linen blazer against a blurred urban backdrop, shot at 85mm f/1.4 with soft window light from the left creating gentle catchlights, muted warm tones with shallow depth of field"
|
|
228
|
+
|
|
229
|
+
**User says:** "A fantasy castle"
|
|
230
|
+
**Engineered:** "Towering Gothic castle carved into a sea cliff face, waves crashing against dark volcanic rock below, twilight sky with scattered cirrus clouds catching the last amber light, ravens circling the highest tower, painted in the style of detailed fantasy concept art, deep blues and warm amber highlights"
|
|
231
|
+
|
|
232
|
+
**User says:** "A product shot of sneakers"
|
|
233
|
+
**Engineered:** "Pair of white minimalist sneakers floating on a clean gradient background, studio lighting with soft shadows, 3/4 angle view showing sole detail, crisp commercial photography with even diffused lighting, neutral tones with bright white product pop"
|
|
234
|
+
|
|
235
|
+
### Build the prompt
|
|
236
|
+
Using `$CREATIVE_BRIEF` from Phase 5.5 and all style context, craft the perfect prompt.
|
|
237
|
+
|
|
238
|
+
**You MUST display the engineered prompt before asking for review.** Show it in a formatted block:
|
|
239
|
+
|
|
240
|
+
> **Engineered Prompt:**
|
|
241
|
+
> ```
|
|
242
|
+
> [your engineered prompt here]
|
|
243
|
+
> ```
|
|
244
|
+
> [If negative prompt: **Negative:** `[negative prompt]`]
|
|
245
|
+
|
|
246
|
+
Then use `AskUserQuestion` for review:
|
|
247
|
+
> **How does this prompt look?**
|
|
248
|
+
- **Looks good — generate** — "Use this prompt as-is and proceed to generation"
|
|
249
|
+
- **Tweak it** — "I want to adjust the prompt before generating"
|
|
250
|
+
- **Rewrite it** — "Start the prompt from scratch with different direction"
|
|
251
|
+
|
|
252
|
+
If **Tweak it**: ask what they want changed (plain text, not AskUserQuestion), apply changes, show the updated prompt, and ask again.
|
|
253
|
+
If **Rewrite it**: ask for new direction (plain text), re-engineer from scratch, show the new prompt, and ask again.
|
|
254
|
+
|
|
255
|
+
### Build negative prompt (if applicable)
|
|
256
|
+
For photorealistic images: "blurry, low quality, deformed, distorted, extra limbs, text, watermark, signature, cropped"
|
|
257
|
+
For illustration/art: "photographic, hyperrealistic, 3D render" (if you want to stay painterly)
|
|
258
|
+
For product shots: "busy background, shadows, reflections, text, hands, people"
|
|
259
|
+
|
|
260
|
+
---
|
|
261
|
+
|
|
262
|
+
## Output
|
|
263
|
+
|
|
264
|
+
Once all phases complete, output the final configuration:
|
|
265
|
+
|
|
266
|
+
```
|
|
267
|
+
$IMAGE_PARAMS:
|
|
268
|
+
type: image
|
|
269
|
+
model: $MODEL
|
|
270
|
+
style: $STYLE
|
|
271
|
+
dimensions: $DIMENSIONS
|
|
272
|
+
num_images: $NUM_IMAGES
|
|
273
|
+
prompt: "[engineered prompt]"
|
|
274
|
+
negative_prompt: "[if any]"
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
Return to SKILL.md Step 3 for browser execution.
|