@kolbo/mcp 1.81.0 → 1.81.2
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/package.json +1 -1
- package/skill/GENERATED.md +1 -1
- package/skill/SKILL.md +60 -13
- package/skill/VERSION +1 -1
- package/skill/references/models/seedance.md +35 -5
- package/skill/references/models/seedance25.md +29 -5
- package/skill/references/workflows/production-log.md +3 -1
- package/skill/references/workflows/production-planning.md +11 -0
- package/skill/references/workflows/troubleshooting.md +6 -0
- package/skill/references/workflows/visual-dna.md +39 -5
package/package.json
CHANGED
package/skill/GENERATED.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# AUTO-GENERATED — do not edit
|
|
2
2
|
|
|
3
|
-
This tree is mirrored from kolbo-code@
|
|
3
|
+
This tree is mirrored from kolbo-code@6836af5, the single source of truth.
|
|
4
4
|
Canonical source: packages/opencode/skills/kolbo/
|
|
5
5
|
Distribution: .github/workflows/sync-skill-to-plugin.yml
|
|
6
6
|
|
package/skill/SKILL.md
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
version: 0.9.
|
|
2
|
+
version: 0.9.6
|
|
3
3
|
name: kolbo
|
|
4
4
|
description: |
|
|
5
5
|
Generate, edit, analyze, and direct creative media through Kolbo AI: images,
|
|
@@ -20,7 +20,29 @@ allowed-tools: Bash, Read, Write, Edit
|
|
|
20
20
|
|
|
21
21
|
You have direct access to the Kolbo AI creative platform via MCP tools (auto-configured by `kolbo auth login`). Use them to generate and deliver real content — do NOT just describe what you would create.
|
|
22
22
|
|
|
23
|
-
> 🚫 **Don't dump generated URLs as bare text or markdown links in chat** — the UI already
|
|
23
|
+
> 🚫 **Don't dump generated URLs as bare text or markdown links in chat** — the UI already shows results in **Library** (right panel) and on the generation card. Refer by description ("the rainy scene"), store URLs in `.kolbo/production.md`. INLINE `` images ARE allowed for catalog-style replies (per-item thumbs in numbered lists).
|
|
24
|
+
|
|
25
|
+
## ⚠️ Source of truth for generations (HARD RULE — read this)
|
|
26
|
+
|
|
27
|
+
Agents keep getting confused because three UIs show the same job. Use this map — never invent a fourth:
|
|
28
|
+
|
|
29
|
+
| Surface | What it is | Trust it for |
|
|
30
|
+
|---|---|---|
|
|
31
|
+
| **Library** (right panel — "This session" / "All media") | User-facing gallery of **completed** media | "Is the user's output there?" Point humans here. Finished clips/images land automatically — do **not** `list_media` / `get_media` just to verify a `generate_*` you just ran. |
|
|
32
|
+
| **Chat generation card** | Progress chrome while a job is in flight | Status badge only (`Generating` / done). A **black / empty preview while Generating is NORMAL** — the iframe has nothing to paint yet. It is **not** failure, not "lost", not a reason to re-fire. |
|
|
33
|
+
| **`get_generation_status`** (MCP) | Agent API for job state | Whether the server job is `completed` / `failed` / still running, and the final `urls`. This is your SoT for in-flight work — **not** the card pixels. |
|
|
34
|
+
| **`.kolbo/production.md`** | Your private log across turns | Ids + URLs after success. Compaction-safe memory — not the user gallery. |
|
|
35
|
+
|
|
36
|
+
**Do NOT:**
|
|
37
|
+
- Treat an empty/black chat card as "generation failed" or "nothing produced".
|
|
38
|
+
- Re-call `generate_*` because Library still shows a K/logo spinner tile while the job is running — that tile **is** the in-progress placeholder for the same job.
|
|
39
|
+
- Call `list_media` / `get_media` / `list_session_generations` to "check if it worked" after a generate you already submitted — that burns credits/context and can pollute the session.
|
|
40
|
+
- Tell the user to look at chat history for finals — tell them **Library → This session**.
|
|
41
|
+
|
|
42
|
+
**Do:**
|
|
43
|
+
- After `submitted` / `_timed_out`: end the turn, or one `get_generation_status(..., wait=true)`.
|
|
44
|
+
- When done: say the result is in Library; log URLs to `.kolbo/production.md`.
|
|
45
|
+
- If the user asks "where is it?" → Library (This session). If they ask "is it done?" and you don't have urls yet → `get_generation_status` once.
|
|
24
46
|
|
|
25
47
|
This file is the **always-loaded core**: tool inventory + universal hard rules + routing index. For any model-specific prompt rules, Visual DNA workflow, production log format, marketing workflow, cost validation, etc., **Read the matching `references/` file from the index below**. Don't try to remember the rules — load the file when you need them.
|
|
26
48
|
|
|
@@ -117,23 +139,41 @@ Each `references/models/*.md` mirrors the matching skill prompt in `kolbo-api/sr
|
|
|
117
139
|
|------|---------|
|
|
118
140
|
| `list_models` / `list_voices` / `check_credits` / `get_generation_status` / `cancel_generation` / `get_session_usage` | Discovery + status. `list_models` with no args returns the recommended shortlist out of ~428 — pass `type` for a full category with per-model caps. `cancel_generation` stops an in-flight job and refunds what it can: use it when the user changes their mind mid-generation instead of letting it run. |
|
|
119
141
|
| `upload_media` / `create_upload_ticket` / `list_media` / `get_media` / `get_media_stats` / `favorite_media` / `unfavorite_media` / `delete_media` / `restore_media` / `permanently_delete_media` / `move_media` / `bulk_*_media` / `*_media_folder` | Media library — see `workflows/media-library.md`. Getting a LOCAL file in depends on where the server runs: `upload_media` with a path only works on a local (stdio) install; over a remote connector use `create_upload_ticket` and POST the file yourself. |
|
|
120
|
-
| `create_visual_dna` / `generate_character_sheet` / `list_visual_dnas` / `get_visual_dna` / `delete_visual_dna` / `*_visual_dna_folder` (5 folder tools) | Visual DNA (+ character sheet, character folders) — see `workflows/visual-dna.md` |
|
|
142
|
+
| `create_visual_dna` / `update_visual_dna` / `generate_character_sheet` / `list_visual_dnas` / `get_visual_dna` / `delete_visual_dna` / `*_visual_dna_folder` (5 folder tools) | Visual DNA (+ character sheet, character folders) — see `workflows/visual-dna.md`. Edit with `update_visual_dna`; never delete+recreate. |
|
|
121
143
|
| `list_moodboards` / `get_moodboard` / `list_presets` | Style overlays + sheet presets. Always pass `search` when you know the name — that is a silent id lookup, not a catalog to show. Never omit `preset_id` after claiming a preset was used. |
|
|
122
144
|
| `list_color_palettes` / `analyze_color_palette` / `create_color_palette` / `update_color_palette` / `delete_color_palette` / `activate_color_palette` / `deactivate_color_palette` | **Color DNA — sticky and account-wide.** At most one palette is active at a time; while it is, it strict-grades **every** image and video generation automatically, with no per-call argument. `analyze_color_palette` pulls colors out of 1-5 image URLs for free and does NOT save. `create_color_palette` defaults `is_active: true`, which activates it and deactivates any other. Per-generation opt-out: `skip_color_palette: true` on `generate_image` / `generate_image_edit` / `generate_video` / `generate_video_from_image`. |
|
|
123
145
|
| `list_agents` / `create_agent` / `update_agent` / `delete_agent` | Custom chat agents — reusable named personas for `chat_send_message`. The agent's `description` IS the system instruction. Resolve a name the user mentions ("use my SEO agent") to an id with `list_agents`, then pass `agent_id`. Global/preset agents are read-only; only the user's own can be updated or deleted. |
|
|
124
146
|
| `search_stock_media` / `get_stock_sources` / `get_stock_categories` / `get_stock_collections` / `get_stock_asset` / `analyze_script_for_stock` / `import_stock_asset` | Stock library (free, no credits) — EXISTING photos / videos / 3D / SFX / music. For stock **music** use `search_stock_media` with `mediaType: "music"` (semantic vibe query, e.g. "uplifting corporate background") → `get_stock_asset` for downloads. The older `*_music_library` tools are deprecated adapters over this — prefer the stock tools, except for the licensed-catalog tools in the next row. |
|
|
125
147
|
| `search_music_library` / `browse_music_library` / `get_music_library_facets` / `get_music_track_audio` / `get_music_track_lyrics` / `get_music_track_related` / `analyze_script_for_music` / `acquire_clean_music_track` / `import_music_track_to_library` | **SYNCI licensed music** — a commercially licensed catalog, not free stock. Discovery and previews are free but **watermarked**; there is no unwatermarked URL until you pay. `acquire_clean_music_track` (or `import_music_track_to_library`, which also copies it to the media library) **CHARGES CREDITS** for the clean master — confirm with the user first, and pass a stable `requestId` so a retry doesn't buy it twice. `analyze_script_for_music` turns a script into search terms for `search_music_library`. Use this family when the user needs music cleared for commercial use; use `search_stock_media` with `mediaType: "music"` when free stock will do. |
|
|
126
|
-
| `list_projects` / `move_session` | Projects: resolve a project NAME → the `project_id` you pass on generation/upload/doc calls; `move_session` relocates a whole session + its media when work landed in the wrong project. See "Projects — Where Work Lands" below. |
|
|
127
|
-
| `create_project` / `update_project` / `archive_project` / `unarchive_project` / `list_sessions` / `rename_session` / `delete_session` / `restore_session` | Project lifecycle + session inventory. `list_sessions` returns `project_id` + `types[]` on every row. Soft-delete leftover empty sessions after a move; `restore_session` undoes trash. Create a project when the user starts new work, then pass its id on EVERY call. |
|
|
148
|
+
| `list_projects` / `get_project` / `move_session` | Projects: resolve a project NAME → the `project_id` you pass on generation/upload/doc calls; `get_project` returns the full description (list clips it). `move_session` relocates a whole session + its media when work landed in the wrong project. See "Projects — Where Work Lands" below. |
|
|
149
|
+
| `create_project` / `update_project` / `archive_project` / `unarchive_project` / `list_sessions` / `rename_session` / `delete_session` / `restore_session` | Project lifecycle + session inventory. Edit name/description with `update_project` (read via `get_project` first). Rename sessions with `rename_session` — never delete+recreate. `list_sessions` returns `project_id` + `types[]` on every row. Soft-delete leftover empty sessions after a move; `restore_session` undoes trash. Create a project when the user starts new work, then pass its id on EVERY call. |
|
|
128
150
|
| `bulk_move_sessions` / `list_session_generations` / `move_generations_to_session` / `split_session` / `undo_session_organization` | Reorganize many sessions or generations. `list_session_generations` is an inventory (not a live generation card). |
|
|
129
151
|
| `add_project_context` / `list_project_context` / `delete_project_context` / `get_project_profile` / `regenerate_project_profile` | Project knowledge base (RAG): feed scripts/URLs/notes; `get_project_profile` = the living brief — read it to ground work in the project |
|
|
130
|
-
| `
|
|
152
|
+
| `list_project_assets` / `link_project_asset` / `unlink_project_asset` / `update_project_asset` | Project CAST roster: the Visual DNAs and moodboards tagged onto a project (`@Name` / `#Name`). `update_project_asset` writes each tagged DNA's identity description and/or its project-scoped purpose note. Never unlink+relink to edit. |
|
|
153
|
+
| `create_moodboard` / `update_moodboard` / `delete_moodboard` | Moodboards from image URLs → AI master style prompt → pass `moodboard_id` to generation tools. Edit with `update_moodboard`; never delete+recreate. |
|
|
131
154
|
| `clone_voice` / `import_elevenlabs_voice` / `delete_voice` | Custom voices (clone CHARGES CREDITS — confirm first; new voices show in `list_voices`) |
|
|
132
155
|
| `trim_video` | Frame-accurate trim of a Kolbo-hosted video (tool waits and returns the URL). `edit_video` also gained `remove_background`. |
|
|
133
156
|
| `create_doc` / `list_docs` / `get_doc` / `update_doc` / `share_doc` / `delete_doc` | AI Docs (Magic Pad): YOU author full HTML documents (plans, briefs, scripts, research) saved into the user's project, editable in the Kolbo app. `share_doc` returns a public link. `update_doc` content replaces the WHOLE doc — `get_doc` first. |
|
|
134
157
|
| `chat_send_message` / `chat_list_conversations` / `chat_get_messages` | Kolbo chat with optional `media_urls` (up to 10 per call) |
|
|
135
158
|
| `publish_html_artifact` | Publish HTML / SVG / Mermaid to `sites.kolbo.ai`. Server dedupes by content hash. Strict CSP. |
|
|
136
159
|
|
|
160
|
+
## ⚠️ Edit in place — never delete+recreate (HARD RULE — always on)
|
|
161
|
+
|
|
162
|
+
Existing Kolbo objects keep a stable id. Generations, `@Name` / `#Name` bindings, share links, and teammates already point at that id. Deleting and making a new one orphans those links and throws away the stored analysis.
|
|
163
|
+
|
|
164
|
+
| What changed | Tool |
|
|
165
|
+
|---|---|
|
|
166
|
+
| Visual DNA name, description, stills, sheet, type, attributes | `update_visual_dna` |
|
|
167
|
+
| Project-cast DNA description or purpose note | `update_project_asset` |
|
|
168
|
+
| Moodboard name, style notes, images | `update_moodboard` |
|
|
169
|
+
| Project name or description | `get_project` then `update_project` |
|
|
170
|
+
| Project cast membership | `link_project_asset` / `unlink_project_asset` (list first) |
|
|
171
|
+
| Session title | `rename_session` |
|
|
172
|
+
| Custom agent name / persona | `update_agent` |
|
|
173
|
+
| AI Doc title / content | `get_doc` then `update_doc` |
|
|
174
|
+
|
|
175
|
+
`delete_*` is only for objects the user asked to remove.
|
|
176
|
+
|
|
137
177
|
## ⚠️ Visual DNA `@Name` in the prompt (HARD RULE — always on)
|
|
138
178
|
|
|
139
179
|
Passing `visual_dna_ids` is **not enough**. For every DNA in that array you MUST also write `@ExactStoredName` in the prompt text (the `name` from `list_visual_dnas` / `create_visual_dna`). The engine binds identity by parsing `@tags`. No `@tag` → the DNA is wasted.
|
|
@@ -149,6 +189,8 @@ Before `generate_elements` / any DNA video: for each id in `visual_dna_ids`, con
|
|
|
149
189
|
|
|
150
190
|
Resolve names with `list_visual_dnas` first. Full binding rules: `references/workflows/visual-dna.md`.
|
|
151
191
|
|
|
192
|
+
**Every still on a DNA can reach the model.** Kolbo now sends all of a DNA's reference images that fit the model's image-slot cap (user uploads first, then one still per DNA, then leftovers round-robin). If a DNA only gets one leftover slot and has no real character sheet, unused stills become a white grid. Mixed-vibe stills or environment photos that contain a main character will confuse the generation — keep each DNA surgically clean. Create-and-pack rules: `references/workflows/visual-dna.md`.
|
|
193
|
+
|
|
152
194
|
## ⚠️ `enhance_prompt` — leave it OFF (HARD RULE)
|
|
153
195
|
|
|
154
196
|
**Never pass `enhance_prompt: true` unless the user asked for it in words.** It is
|
|
@@ -198,7 +240,7 @@ Do **not** call `generate_*` / `generate_elements` / `generate_image_edit` until
|
|
|
198
240
|
|
|
199
241
|
`generate_elements`, Seedance 2 / 2.5, WAN, MiniMax H3, Gemini, and any Visual DNA video share **one** compile shape — the Locked Intro in `references/models/seedance.md`. Load `elements-prompting` first (craft, `@Image N` mapping, eight elements), then compile:
|
|
200
242
|
|
|
201
|
-
`Total: Xs / N shots / AR` → `[GLOBAL LOOK – LOCKED, APPLIES TO EVERY SHOT]` → `[CAST – IDENTICAL IN EVERY SHOT]` (each person is `@DNAName`) → `[LOCATION]` → `SHOT N — 0:00–0:02 — …`
|
|
243
|
+
`N connected cinematic shots, Xs total, AR, Multishot ON` → `Total: Xs / N shots / AR` → `[GLOBAL LOOK – LOCKED, APPLIES TO EVERY SHOT]` → `[CAST – IDENTICAL IN EVERY SHOT]` (each person is `@DNAName`) → `[LOCATION]` → LOCATION MAP / CONTINUITY / PHYSICS → `SHOT N — 0:00–0:02 — …` (ranges sum to Xs) → closing `Total: Xs / N shots / AR`. Pass MCP `duration: X` matching that Total. Omitting Total / Multishot is a failed compile — same contract as the Kolbo help widget.
|
|
202
244
|
|
|
203
245
|
Write the beats at FULL DEPTH. The cap is 15,000 characters on Seedance 2.5 (10,000 on 2.0) — a 30s / 8+ shot compile should land around 4k–9k, and every beat carries its own camera move, a performance task for the speaker AND the listeners, prop/hand state, and the sound in that beat. A one-line shot beat is under-written; the structure alone is not the craft. Read `references/models/seedance25.md` before compiling.
|
|
204
246
|
|
|
@@ -248,9 +290,13 @@ A user-named tool — in any language — overrides every other rule. Recognized
|
|
|
248
290
|
- Auto-select → **only when no model was named on this task**. Then pick from "Auto-selectable" (models with a `summary`). Cheapest fit. Prefer `[RECOMMENDED]` when cost is similar.
|
|
249
291
|
- Never auto-select from "Named-only" section.
|
|
250
292
|
5. **Validate inputs** against model caps — see `references/workflows/cost-and-validation.md`.
|
|
251
|
-
6. **How calls work**: each tool blocks until generation is fully complete. Images: seconds. Video: minutes. Multiple tool calls in one response run concurrently. On hosts with live widgets the tool instead returns `submitted` instantly — the card updates on its own
|
|
252
|
-
7.
|
|
253
|
-
|
|
293
|
+
6. **How calls work**: each tool blocks until generation is fully complete. Images: seconds. Video: minutes. Multiple tool calls in one response run concurrently. On hosts with live widgets the tool instead returns `submitted` (or `_timed_out`) instantly — the card updates on its own.
|
|
294
|
+
7. **🛑 After `submitted` / `_timed_out` — END THE TURN (credit guard)**: Do **not** keep thinking, writing skills, editing files, or planning "next steps" while a generation is still running. That burns the user's coding/chat credits for nothing. Either:
|
|
295
|
+
- **Stop immediately** after telling the user it's generating in Library / the card above (preferred when you do not need the output URLs yet), OR
|
|
296
|
+
- If the **next** required step needs those URLs, call `get_generation_status` **once** with `wait=true` (and `generation_ids` for a batch) as the **only** follow-up — no parallel Write/Edit/Think while it waits.
|
|
297
|
+
- A black preview on the chat card is expected until URLs exist — not a signal to retry.
|
|
298
|
+
8. **Checking status — NEVER poll in a loop**: `get_generation_status` takes `wait=true` (blocks server-side until done, ~3 min) and `generation_ids` (check MANY generations in ONE call — returns `all_done` + which are still running). One `wait=true` call replaces any polling loop. If it comes back with some still processing, call it ONCE more with `wait=true` and the remaining ids.
|
|
299
|
+
9. **Share the URL** after success. Never fabricate URLs.
|
|
254
300
|
|
|
255
301
|
Model types for `list_models`: `text_to_img`, `image_editing`, `text_to_video`, `img_to_video`, `draw_to_video`, `video_to_video`, `elements`, `firstlastgenerations`, `lipsync-image`, `lipsync-video`, `music_gen`, `text_to_speech`, `text_to_sound`, `stt`, `text`, `3d_text_to_model`, `3d_image_to_model`, `3d_multi_image_to_model`, `3d_world`.
|
|
256
302
|
|
|
@@ -298,7 +344,8 @@ Full tables + formulas in `references/workflows/cost-and-validation.md`. Quick r
|
|
|
298
344
|
## Rate Limiting & Batch Generation
|
|
299
345
|
|
|
300
346
|
- `generate_image`: 30/min. All other generation tools: 10/min per type. 300/min global. `upload_media`: 300/min, no credit cost.
|
|
301
|
-
- **⚠️ NEVER re-fire a generation you already called.** Aborted / timed-out calls still process server-side.
|
|
347
|
+
- **⚠️ NEVER re-fire a generation you already called.** Aborted / timed-out / `submitted` calls still process server-side. Finish with `get_generation_status` (`wait=true`) — never a second `generate_*`. A black chat card or Library K-tile is not a missing job.
|
|
348
|
+
- **⚠️ NEVER keep working while a generation is in flight.** After `submitted` / `_timed_out`, end the turn or block on one `wait=true` status call. Writing production.md / skills / "merge decisions" while the card spins wastes coding credits.
|
|
302
349
|
- **Tracking a batch**: check ALL in-flight ids in ONE `get_generation_status` call with `generation_ids` + `wait=true`. Read `all_done` / `still_processing` from the response — do not check ids one by one, and never re-call without `wait`.
|
|
303
350
|
- **Batch ≤10 items**: output ALL tool calls in one response — they run concurrently.
|
|
304
351
|
- **Bulk >10 items**: real-world ceilings — `generate_image` 8–10 in-flight, image-edit 5–8, video tools 3–5, `generate_video_from_video` 3, music/speech/sound 5–8. Fire one batch → wait → fire next. Persist every `generation_id` in `.kolbo/production.md`.
|
|
@@ -367,9 +414,9 @@ A generation can fail three ways. Treat ALL as failure:
|
|
|
367
414
|
Chat renders markdown natively. `` = inline image. `[label](url)` = labeled link with preview.
|
|
368
415
|
|
|
369
416
|
- **Catalog-style replies** (numbered lists of characters / scenes / products): embed `` so each item shows inline.
|
|
370
|
-
- **Conversational replies** ("4 shots ready"): keep prose short;
|
|
417
|
+
- **Conversational replies** ("4 shots ready"): keep prose short; Library already shows the gallery.
|
|
371
418
|
|
|
372
|
-
Avoid bare URL dumps and HTML `<table>` grids —
|
|
419
|
+
Avoid bare URL dumps and HTML `<table>` grids — Library already provides a gallery.
|
|
373
420
|
|
|
374
421
|
**After `generate_creative_director` completes** — share results as individual URLs, one per scene. Do NOT create an HTML grid artifact.
|
|
375
422
|
|
package/skill/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.9.
|
|
1
|
+
0.9.6
|
|
@@ -15,8 +15,15 @@ Load this file when the user wants a **Seedance 2 / Seedance 2.0** (ByteDance) v
|
|
|
15
15
|
|
|
16
16
|
- **Visual DNA names are immutable anchors:** when `visual_dna_ids` is passed, every DNA MUST appear in the prompt as the exact literal `@DNA_name` (CAST + every shot it is in). Never "Zohar's", "the left man", "the man on the LEFT", a nickname, or a Visual DNA anchors paragraph without `@tags`.
|
|
17
17
|
- **Rewrites never thin out or rename anchors.** "`@X anchors Odysseus`" is NOT a reference line, and `Odysseus` must never replace `@X` later. Every referenced asset keeps its exact literal tag plus a full role line on every rewrite. Re-use the exact DNA tag in every shot it participates in. A compile that dropped `@gal_suit` / `@yonatan` / `#Board` is a failed turn.
|
|
18
|
-
- **
|
|
19
|
-
|
|
18
|
+
- **DURATION + SHOT STRUCTURE (HARD — same as help widget):** every text-to-video / Elements prompt MUST open AND close with total duration, shot count, and aspect. Omit only for video-edit tasks (source duration is locked). Required first lines:
|
|
19
|
+
1. `N connected cinematic shots, Xs total, AR, Multishot ON`
|
|
20
|
+
2. `Total: Xs / N shots / AR`
|
|
21
|
+
Then Locked Intro, then `SHOT N — 0:00–0:02 — Size / camera` beats whose ranges **sum exactly to Xs**. Last line repeats `Total: Xs / N shots / AR`.
|
|
22
|
+
- Example (15s / 6 shots): `6 connected cinematic shots, 15 seconds total, 16:9, Multishot ON` + `Total: 15s / 6 shots / 16:9`
|
|
23
|
+
- UGC / phone vertical: `N connected phone shots, Xs total, 9:16, Multishot ON` (never the word "cinematic").
|
|
24
|
+
- A prompt with only shot body and no Total / Multishot header is a **failed turn** — rewrite before calling `generate_*`.
|
|
25
|
+
- **MCP `duration` must match the Total line.** Pass `duration: X` (whole seconds) on `generate_video` / `generate_elements` / `generate_video_from_image` equal to the `Xs` in `Total: Xs / …`. Mismatch = wrong-length clip.
|
|
26
|
+
- **Then the Locked Intro** — `[GLOBAL LOOK]` / `[CAST]` / `[LOCATION]` (+ LOCATION MAP / CONTINUITY / PHYSICS for multi-shot) — before any shot. A one-liner `same character throughout` is not a character lock.
|
|
20
27
|
- **Order inside each shot**: Subject → Action → Camera → Constraints → (Audio/SFX if relevant). Do NOT restack GLOBAL LOOK style inside the shot.
|
|
21
28
|
- **Prompt length**: simple single-idea pieces ~120–280 words. Locked-intro cinematic typically 400–900 words. Shorter than ~120 words = random output. The 8000-char cap below always wins.
|
|
22
29
|
- **Shot count is user-directed.** If the user asks for N shots, deliver exactly N in one prompt unless they ask to split.
|
|
@@ -32,11 +39,11 @@ Load this file when the user wants a **Seedance 2 / Seedance 2.0** (ByteDance) v
|
|
|
32
39
|
|
|
33
40
|
## Locked Intro (DEFAULT for any multi-shot cinematic — including Elements)
|
|
34
41
|
|
|
35
|
-
After the Total
|
|
42
|
+
After the Total lines, every multi-shot prompt — and any piece with recurring people or a recurring place — opens with the locked blocks. Skip only for: true single-shot POV/orb, 3×3 grid-panel mode, or video-edit tasks.
|
|
36
43
|
|
|
37
44
|
```
|
|
38
|
-
Total: Xs / N shots / AR
|
|
39
45
|
N connected cinematic shots, Xs total, AR, Multishot ON
|
|
46
|
+
Total: Xs / N shots / AR
|
|
40
47
|
|
|
41
48
|
[GLOBAL LOOK – LOCKED, APPLIES TO EVERY SHOT]
|
|
42
49
|
<body>, <lens family>, <film stock>, <aspect> spherical, <stop>. <DoF, grain, grade as law>. <movement grammar>. <performance + audio law>.
|
|
@@ -48,14 +55,37 @@ PROP: recurring object.
|
|
|
48
55
|
[LOCATION]
|
|
49
56
|
Place in materials + light + color field. Blocking. Background LIFE.
|
|
50
57
|
|
|
58
|
+
[LOCATION MAP]
|
|
59
|
+
Named seats / sides in SCREEN language (screen-left armchair, center couch, door camera-left).
|
|
60
|
+
|
|
61
|
+
[CONTINUITY – LOCKED ACROSS EVERY CUT]
|
|
62
|
+
Axis / camera side of the line. Screen direction. Eyelines. Floor props stay. Which hand holds what. No teleport.
|
|
63
|
+
|
|
64
|
+
[PHYSICS]
|
|
65
|
+
Weight into furniture, props resting, cloth/hair settle, no float.
|
|
66
|
+
|
|
51
67
|
SHOT 1 — 0:00–0:02 — Medium / camera position
|
|
52
68
|
(physical verbs, timed acting, quoted dialogue)
|
|
53
|
-
…
|
|
69
|
+
SHOT 2 — 0:02–0:05 — …
|
|
70
|
+
… (ranges MUST sum to Xs)
|
|
54
71
|
Total: Xs / N shots / AR
|
|
72
|
+
POSITIVE LOCKS: <2–4 sentences restating positions / mouth / optical signature>
|
|
55
73
|
```
|
|
56
74
|
|
|
57
75
|
When a Visual DNA exists, its exact `@DNA_name` IS the cast name — never place a nickname before it or substitute one later. For plain image refs use `@ImageN`.
|
|
58
76
|
|
|
77
|
+
## OUTPUT CONTRACT (WINS — same as help widget)
|
|
78
|
+
|
|
79
|
+
ONE fenced prompt. Required shape or the turn failed:
|
|
80
|
+
1. `N connected cinematic shots, Xs total, AR, Multishot ON`
|
|
81
|
+
2. `Total: Xs / N shots / AR`
|
|
82
|
+
3. GLOBAL LOOK → CAST → LOCATION → LOCATION MAP → CONTINUITY → PHYSICS (dense, before any shot)
|
|
83
|
+
4. `SHOT 1 — 0:00–0:02 — …` through SHOT N; timecodes sum to Xs; continuity bridge after SHOT 1
|
|
84
|
+
5. Closing `Total: Xs / N shots / AR` + short POSITIVE LOCKS
|
|
85
|
+
6. Tool call `duration` = Xs
|
|
86
|
+
|
|
87
|
+
FORBIDDEN: omitting Total / Multishot; "same character throughout" as the only lock; one fence per shot; `[0s]`/`[3s]` stubs; splitting a ≤15s story into multiple generations unless the user asks.
|
|
88
|
+
|
|
59
89
|
## The 5 Formats
|
|
60
90
|
|
|
61
91
|
### 1. Transformations (highest-performing format)
|
|
@@ -23,21 +23,45 @@ Load this file when the user wants a **Seedance 2.5** video (they said "2.5" / "
|
|
|
23
23
|
- **Up to 50 reference medias / Visual DNA mentions** (`@Name`, `@ImageN`, `#Moodboard`). Every referenced asset must be tagged in the prompt text. A rewrite that drops or renames a tag ( `@doron_fauda_1` → `DORON` / `the hero` ) is a failed turn — put the exact tag back.
|
|
24
24
|
- **Multimodal refs:** images + video clips + audio can all anchor one generation.
|
|
25
25
|
|
|
26
|
-
##
|
|
26
|
+
## Universal Rules (HARD — same as help widget OUTPUT CONTRACT)
|
|
27
|
+
|
|
28
|
+
- **First lines ALWAYS declare shot structure** (text-to-video / Elements / reference gen — NOT video-edit):
|
|
29
|
+
1. `N connected cinematic shots, Xs total, AR, Multishot ON`
|
|
30
|
+
2. `Total: Xs / N shots / AR`
|
|
31
|
+
Example: `12 connected cinematic shots, 30 seconds total, 16:9, Multishot ON` + `Total: 30s / 12 shots / 16:9`
|
|
32
|
+
UGC phone: `N connected phone shots, Xs total, 9:16, Multishot ON` — never the word "cinematic"; restate `9:16 vertical phone frame` in every shot.
|
|
33
|
+
- **Last line repeats** `Total: Xs / N shots / AR` + short POSITIVE LOCKS.
|
|
34
|
+
- **Shot timecodes MUST sum to Xs.** `SHOT 1 — 0:00–0:02` … through SHOT N ending at Xs. Never `[0s]` / `[3s]` stubs.
|
|
35
|
+
- **MCP `duration` = Xs** on the generate call. Mismatch is a failed turn.
|
|
36
|
+
- Duration range **4–30s**; shot count **≤30** in one generation. Do not split a ≤30s story into multiple 10s clips unless the user asks.
|
|
37
|
+
- Omit Total / Multishot / shot-count headers only for **video editing** (source duration locked) — use Edit Goal blocks instead.
|
|
27
38
|
|
|
28
|
-
|
|
39
|
+
## Locked Intro (DEFAULT — same shape as Seedance 2)
|
|
29
40
|
|
|
30
41
|
```
|
|
42
|
+
N connected cinematic shots, Xs total, AR, Multishot ON
|
|
43
|
+
Total: Xs / N shots / AR
|
|
44
|
+
|
|
31
45
|
[GLOBAL LOOK – LOCKED, APPLIES TO EVERY SHOT]
|
|
32
46
|
[CAST – IDENTICAL IN EVERY SHOT]
|
|
33
47
|
[LOCATION]
|
|
48
|
+
[LOCATION MAP]
|
|
49
|
+
[CONTINUITY – LOCKED ACROSS EVERY CUT]
|
|
50
|
+
[PHYSICS]
|
|
51
|
+
|
|
52
|
+
SHOT 1 — 0:00–0:02 — Medium / camera position
|
|
53
|
+
…
|
|
54
|
+
Total: Xs / N shots / AR
|
|
34
55
|
```
|
|
35
56
|
|
|
36
|
-
|
|
57
|
+
Full acting / continuity craft: `models/seedance.md`. Do not skip the Total lines or the three look/cast/location blocks. Do not restack GLOBAL LOOK inside shots.
|
|
58
|
+
|
|
59
|
+
2.5 is where this format earns its keep: 15 shots timed to 30s, ~5k characters, one locked look so every cut matches camera / grade / cast.
|
|
37
60
|
|
|
38
|
-
|
|
61
|
+
## OUTPUT CONTRACT (WINS — mirror of help widget)
|
|
39
62
|
|
|
40
|
-
|
|
63
|
+
ONE fenced prompt. Missing Total / Multishot / summing timecodes / matching `duration` = failed skill turn.
|
|
64
|
+
FORBIDDEN: "same character throughout" as the only lock; one fence per shot; claiming you followed the skill while omitting GLOBAL LOOK / CAST / LOCATION / Multishot ON.
|
|
41
65
|
|
|
42
66
|
## Prompt length
|
|
43
67
|
|
|
@@ -4,7 +4,9 @@ Load this file when starting a multi-step production, or before any continuation
|
|
|
4
4
|
|
|
5
5
|
## Why It Exists
|
|
6
6
|
|
|
7
|
-
Every URL, id, and brief produced by a Kolbo MCP tool MUST be recorded in `.kolbo/production.md` in the user's workspace. This file — not chat history
|
|
7
|
+
Every URL, id, and brief produced by a Kolbo MCP tool MUST be recorded in `.kolbo/production.md` in the user's workspace. This file is **your** (agent) source of truth for prior artifacts across turns — not chat history (unreliable / compacted) and not a substitute for the user's **Library** gallery. URLs scattered across `tool_result` blobs are unreliable to re-scan and disappear entirely on context compaction. If the user named a model, write that name into `## 🎯 Now` and keep using that family on every follow-up — compaction is not permission to cheapest-swap.
|
|
8
|
+
|
|
9
|
+
**User vs agent SoT:** finished media for the human → **Library → This session**. Job state while in flight → `get_generation_status`. Your memory → this file. Chat cards are progress UI only.
|
|
8
10
|
|
|
9
11
|
## When to READ it
|
|
10
12
|
|
|
@@ -98,8 +98,19 @@ the user names 4K or GPT Image 2.
|
|
|
98
98
|
Do not skip the sheet and `create_visual_dna` from a portrait. The sheet is the
|
|
99
99
|
asset; the DNA stores it.
|
|
100
100
|
|
|
101
|
+
**Purity (HARD).** Every still on a DNA is packed into later generations (all
|
|
102
|
+
slots the model has, or a white grid if only one slot is left). Keep each
|
|
103
|
+
profile surgically clean: one identity, one vibe. Environment / location
|
|
104
|
+
stills must not contain a main character or recognizable hero face (anonymous
|
|
105
|
+
crowd is OK). Character stills must not contain a second lead. Separate
|
|
106
|
+
states (day/night, clean/bloody) are separate DNAs. Full pack + purity
|
|
107
|
+
rules: `references/workflows/visual-dna.md`.
|
|
108
|
+
|
|
101
109
|
Then `create_visual_dna` with the sheet as the reference and the matching
|
|
102
110
|
`dna_type`. Name each DNA in the exact form it will be tagged with later.
|
|
111
|
+
Immediately `link_project_asset` it onto the working project and
|
|
112
|
+
`update_project_asset` with the identity `description` plus a purpose `note`.
|
|
113
|
+
Do not leave a cast DNA undescribed on the project roster.
|
|
103
114
|
|
|
104
115
|
## 3. Confirm — a labeled GATE, then wait
|
|
105
116
|
|
|
@@ -26,6 +26,10 @@ If Kolbo tools timeout or aren't listed, the MCP server may not be wired. Tell t
|
|
|
26
26
|
```
|
|
27
27
|
This re-wires the MCP configuration automatically. Then restart the session.
|
|
28
28
|
|
|
29
|
+
## Black / empty chat card while "Generating"
|
|
30
|
+
|
|
31
|
+
**Not a bug and not a failure.** The chat generation card's preview stays dark until the job has media. Library shows a K/logo placeholder tile for the same in-flight job. Do **not** re-fire `generate_*`, do **not** `list_media` to "find" it. Wait, or call `get_generation_status` once with `wait=true`. When complete, the result appears in Library (This session) — that is the user-facing source of truth.
|
|
32
|
+
|
|
29
33
|
## "Rate limited" (429 errors)
|
|
30
34
|
|
|
31
35
|
Wait 60s for the window to reset, retry only the failed calls. For batch image work prefer `generate_creative_director` over multiple `generate_image` calls. Full rate-limit details + retry sequence: see SKILL.md "Rate Limiting & Batch Generation".
|
|
@@ -47,6 +51,8 @@ prompt loses.
|
|
|
47
51
|
|
|
48
52
|
`get_generation_status` supports `wait=true` (blocks server-side until the generation reaches a final state, up to ~3 min) and `generation_ids` (many ids in one call → returns `all_done`, `still_processing`, and per-generation results). **Never call it repeatedly in a loop** — one `wait=true` call replaces the loop. If some generations are still running after the wait window, call it ONCE more with `wait=true` and only the `still_processing` ids.
|
|
49
53
|
|
|
54
|
+
**Credit guard:** after a generate tool returns `submitted` / `_timed_out`, do not keep thinking or editing files while the card spins — that burns coding credits. End the turn, or make **one** `wait=true` status call if you need the URLs next.
|
|
55
|
+
|
|
50
56
|
## Failure envelope from `get_generation_status`
|
|
51
57
|
|
|
52
58
|
When a generation fails, `get_generation_status` returns a structured `failure` field alongside `error`:
|
|
@@ -8,13 +8,40 @@ Visual DNA profiles capture the visual "identity" of a character, style, product
|
|
|
8
8
|
|
|
9
9
|
## Workflow
|
|
10
10
|
|
|
11
|
-
1. **Sheet first, then DNA.** For any production asset (character / location / prop), resolve the sheet **preset** (`list_presets` with `search`) and `generate_image` with that `preset_id` — custom instructions live on the preset. Then `create_visual_dna` with the sheet as `character_sheet_url` (max 4 extra images — if the user gives more, pick the 4 most representative
|
|
11
|
+
1. **Sheet first, then DNA.** For any production asset (character / location / prop), resolve the sheet **preset** (`list_presets` with `search`) and `generate_image` with that `preset_id` — custom instructions live on the preset. Then `create_visual_dna` with the sheet as `character_sheet_url` (max 4 extra images — if the user gives more, pick the 4 most representative **that share the same identity and vibe**; never pass 5+). Optionally video and audio. See **Purity** above before you generate those stills.
|
|
12
12
|
2. **Types**: `character` (default), `style`, `product`, `scene`, `environment`.
|
|
13
13
|
3. **Use** the profile by passing its `id` in `visual_dna_ids` in: `generate_image`, `generate_creative_director`, `generate_elements`, `generate_video_from_image`, `generate_video_from_video`, `generate_first_last_frame`.
|
|
14
14
|
4. **List/inspect** profiles with `list_visual_dnas` / `get_visual_dna`.
|
|
15
|
+
5. **Edit in place** with `update_visual_dna` (name, `prompt_helper`, stills, `character_sheet_url`, type, attributes). NEVER `delete_visual_dna` + `create_visual_dna` to rename, restyle, swap stills, or change a description — the old id is what generations and `@Name` already bind to. Providing `images` replaces the whole still set and re-analyzes; omit images to keep them.
|
|
16
|
+
6. **Tag it onto the project cast.** After `create_visual_dna` for named-project work, call `link_project_asset` (`asset_type: "visual_dna"`) then `update_project_asset` with a real `description` (the DNA identity text the roster injects) and a `note` (what this asset is for in THIS project). List first with `list_project_assets`. Same for moodboards (`asset_type: "moodboard"`, note only — style edits stay on `update_moodboard`). Never unlink+relink to change a description.
|
|
15
17
|
|
|
16
18
|
**Server-side auto-routing:** passing `visual_dna_ids` is enough — the server expands the DNA's reference images and auto-routes the selected text-to-image model to its image-editing variant (e.g. `nano-banana-2` → `nano-banana-2-image-editing`). You do NOT need to also pass `reference_images` when using DNA. If the chosen model has no edit variant at all, the server falls back to using the DNA's images as style references on the t2i model. DNA payloads are never silently dropped.
|
|
17
19
|
|
|
20
|
+
## How those images actually reach the model (packing)
|
|
21
|
+
|
|
22
|
+
Kolbo no longer sends only the first still or the character sheet. For every attached DNA:
|
|
23
|
+
|
|
24
|
+
1. **User-uploaded refs take image slots first.**
|
|
25
|
+
2. **Remaining slots:** one main still per DNA, then leftover stills from each DNA **round-robin** until the model's image-slot cap (`elementsMaxImages` / equivalent) is full.
|
|
26
|
+
3. **If every still fits the cap, every still is sent** as its own reference. A 4-image character DNA on a 9-slot model is four slots, not one.
|
|
27
|
+
4. **If a DNA only gets one leftover slot**, has **no distinct character sheet**, and still has unused stills, those leftovers are composited into a **white grid / collage** (up to 9 cells) so the model still sees them. A real character sheet is never overwritten by a collage.
|
|
28
|
+
5. **Native Kling Elements** stays one element per DNA (sheet / frontal). Other providers use the slot pack above.
|
|
29
|
+
|
|
30
|
+
So every image you store on a DNA can appear in the generation — as its own slot or as a cell in that grid. Unused stills are no longer ignored.
|
|
31
|
+
|
|
32
|
+
## Purity — what may live on a DNA (HARD)
|
|
33
|
+
|
|
34
|
+
Because leftover stills now travel with the DNA, a junk-drawer profile poisons every generation that uses it.
|
|
35
|
+
|
|
36
|
+
- **One DNA = one identity + one vibe.** All stills must feel like the same person / place / product / look. Do not mix two lighting moods, two eras, or two art directions on one profile.
|
|
37
|
+
- **Character DNA:** only that character. No second hero, no "also include the friend." Extra people only as **anonymous crowd / background extras** — never a named, readable, or story-important second face.
|
|
38
|
+
- **Environment / scene / location DNA:** architecture, light, materials, geography. Empty, or with anonymous crowd / atmosphere extras, is OK. **Do not put a main character, hero, or recognizable face that is not supposed to live in that place** — they will bleed into every shot that uses the location.
|
|
39
|
+
- **Product DNA:** only that product (angles, materials, label). No hand-model hero unless the product is worn-on-body and the body is generic / faceless.
|
|
40
|
+
- **Style DNA:** one art direction. A style board applied to varied subjects is OK. Two conflicting looks in one style DNA is not.
|
|
41
|
+
- **Separate states = separate DNAs** (clean vs bloodied, day vs night, intact vs broken). Do not dump both into one profile.
|
|
42
|
+
- When **generating** stills for a DNA, lock subject + wardrobe/era/palette in the prompt and explicitly forbid extra heroes / wrong-location characters.
|
|
43
|
+
- If the user hands you mixed refs, pick the stills that share vibe + identity (or generate clean ones). Do not register a junk drawer. Max 4 extra images on `create_visual_dna` still applies — those 4 are **all consumed**.
|
|
44
|
+
|
|
18
45
|
## ⚠️ Pre-flight: Verify the Visual DNA Exists Before Using It (MANDATORY)
|
|
19
46
|
|
|
20
47
|
NEVER reference a Visual DNA by name, role, or assumed identity without first confirming it exists in the user's library. This is a frequent failure mode: the user mentions a character ("אסתר", "Maya", "the model from before"), the agent assumes a matching Visual DNA exists, calls `generate_image` / `generate_elements` with a guessed or fabricated `visual_dna_ids` value, and the generation fails or produces the wrong identity.
|
|
@@ -36,11 +63,12 @@ When the user says "use the model אסתר" but you've only created a DNA for "
|
|
|
36
63
|
|
|
37
64
|
## ⚠️ Don't re-fetch / re-list your own outputs (CRITICAL)
|
|
38
65
|
|
|
39
|
-
After a generation tool returns its URLs, those URLs are **already** in
|
|
66
|
+
After a generation tool returns its URLs, those URLs are **already** in **Library** (right panel — This session) and in `.kolbo/production.md`. Do **NOT** call `list_media`, `get_media`, `get_media_stats`, `list_visual_dnas`, or `chat_send_message` with `media_urls` on those URLs just to "verify" or "fetch thumbnails of the results":
|
|
40
67
|
|
|
41
68
|
- It burns credits and time for zero new information.
|
|
42
|
-
- Every such tool call streams partial output into the session, which forces
|
|
69
|
+
- Every such tool call streams partial output into the session, which forces Library to re-evaluate (visible flicker on the gallery tiles).
|
|
43
70
|
- The thumbnails returned by `list_media` / `get_media` are the SAME asset you just generated.
|
|
71
|
+
- A black chat generation card while `Generating` is normal — do not treat it as missing output.
|
|
44
72
|
|
|
45
73
|
**Only call list/get media tools when:**
|
|
46
74
|
- The user explicitly asks ("what do I have in my library?", "show me my old DNAs").
|
|
@@ -216,10 +244,16 @@ Read `max_visual_dna` from `list_models` for the exact cap, AND `supports_visual
|
|
|
216
244
|
- `type`: `"character"`
|
|
217
245
|
- `name`: single-token lowercase descriptive name (see naming rule above)
|
|
218
246
|
|
|
219
|
-
**Why:** A single reference photo only shows one angle. The close-up gives the engine facial detail; the 4-angle sheet gives it body geometry and pose range. Together they produce far more consistent generations.
|
|
247
|
+
**Why:** A single reference photo only shows one angle. The close-up gives the engine facial detail; the 4-angle sheet gives it body geometry and pose range. Together they produce far more consistent generations. Both stills (and any user photos you add) must be the **same person, same vibe** — they will all be packed into the next generation.
|
|
220
248
|
|
|
221
249
|
**Skip this only if** the user explicitly says "just use my image as-is" or provides 3+ reference images already covering multiple angles.
|
|
222
250
|
|
|
251
|
+
### Environments, products, style — same precision
|
|
252
|
+
|
|
253
|
+
- **Environment / location:** generate empty (or crowd-only) plates. Prompt out heroes and readable faces. A location DNA that contains `@maya` in the frame will put Maya in every later shot of that place.
|
|
254
|
+
- **Product:** isolated angles, consistent lighting, readable label. No extra hero unless the product is worn and the body is generic.
|
|
255
|
+
- **Style:** one look, applied cleanly. Do not mix neon-cyber and dusty-western stills on the same style DNA.
|
|
256
|
+
|
|
223
257
|
## When to Use
|
|
224
258
|
|
|
225
259
|
- User wants the same character across multiple **images** or a campaign → `generate_image` / `generate_creative_director` with `visual_dna_ids`
|
|
@@ -251,7 +285,7 @@ Custom instructions live on the **image preset**. Resolve it silently, then gene
|
|
|
251
285
|
|
|
252
286
|
1. `list_presets({ type: "image", search: "headless" | "bible" | "character sheet" | "location" | "product" })`
|
|
253
287
|
2. Pass the exact `id` as `preset_id` on `generate_image` (2K or 4K, never 1K; 4K for bible / high-detail / when named)
|
|
254
|
-
3. Show the sheet → GATE → `create_visual_dna { name, images, character_sheet_url }`
|
|
288
|
+
3. Show the sheet → GATE → `create_visual_dna { name, images, character_sheet_url }` (or `update_visual_dna` with `character_sheet_url` when the DNA already exists)
|
|
255
289
|
|
|
256
290
|
| Search | When |
|
|
257
291
|
|---|---|
|