@kolbo/mcp 1.71.0 → 1.71.1
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 +28 -8
- package/skill/VERSION +1 -1
- package/skill/references/models/seedance.md +42 -16
- package/skill/references/models/seedance25.md +3 -1
- package/skill/references/workflows/filmmaking.md +9 -17
- package/skill/references/workflows/visual-dna.md +2 -1
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@c5b2132, 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.8.
|
|
2
|
+
version: 0.8.4
|
|
3
3
|
name: kolbo
|
|
4
4
|
description: |
|
|
5
5
|
Generate, edit, analyze, and direct creative media through Kolbo AI: images,
|
|
@@ -58,8 +58,8 @@ For multi-scene / batch work this pairs with `generate_creative_director` (see b
|
|
|
58
58
|
| If the user wants to… | Read first |
|
|
59
59
|
|---|---|
|
|
60
60
|
| Direct, develop, audit, or continue a **film / episode / connected scene / complex performance** with continuity, acting, dialogue, music, blocking, or physics | `references/workflows/filmmaking.md` |
|
|
61
|
-
| Generate a **Seedance 2.5** video | `references/models/seedance25.md
|
|
62
|
-
| Generate a **Seedance 2 / 2.0** video | `references/models/seedance.md` |
|
|
61
|
+
| Generate a **Seedance 2.5** video | `references/models/seedance25.md` + Locked Intro in `references/models/seedance.md`. For narrative/continuity also load `references/workflows/filmmaking.md` — but compile the prompt as Locked Intro, NOT the SCENE CONTEXT / OPTICS / ACTION pack |
|
|
62
|
+
| Generate a **Seedance 2 / 2.0** video **or Elements** (`generate_elements`) | `references/models/seedance.md` — same Locked Intro. Elements is NOT a different prompt language |
|
|
63
63
|
| Generate a **GPT Image 2** image | `references/models/gpt-image.md` |
|
|
64
64
|
| Generate a **Nano Banana / Gemini** image | `references/models/nano-banana.md` |
|
|
65
65
|
| Generate a **Veo 3 / 3.1** video | `references/models/veo.md` |
|
|
@@ -94,7 +94,7 @@ Each `references/models/*.md` mirrors the matching skill prompt in `kolbo-api/sr
|
|
|
94
94
|
| `generate_video` | Text-to-video. Does **not** support Visual DNA — use `generate_elements` for character-consistent video. |
|
|
95
95
|
| `generate_video_from_image` | Animate a still. Prompt describes motion, not subject. |
|
|
96
96
|
| `generate_video_from_video` | Restyle/transform an existing video. Keeps original motion. |
|
|
97
|
-
| `generate_elements` | Reference-driven video. **Primary route for DNA → video.** |
|
|
97
|
+
| `generate_elements` | Reference-driven video. **Primary route for DNA → video.** Prompt = Seedance Locked Intro (`Total` + `[GLOBAL LOOK]` / `[CAST]` / `[LOCATION]` + `SHOT N`). Every DNA in `visual_dna_ids` must also be `@Name` in that prompt. |
|
|
98
98
|
| `generate_first_last_frame` | Keyframe interpolation between two frames. |
|
|
99
99
|
| `generate_lipsync` | Lipsync audio to an image or video face. |
|
|
100
100
|
| `generate_music` | Music generation (Suno + variants). |
|
|
@@ -114,7 +114,8 @@ Each `references/models/*.md` mirrors the matching skill prompt in `kolbo-api/sr
|
|
|
114
114
|
| `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. |
|
|
115
115
|
| `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. |
|
|
116
116
|
| `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. |
|
|
117
|
-
| `create_project` / `update_project` / `archive_project` / `unarchive_project` / `list_sessions` | Project lifecycle + session inventory
|
|
117
|
+
| `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. |
|
|
118
|
+
| `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). |
|
|
118
119
|
| `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 |
|
|
119
120
|
| `create_moodboard` / `update_moodboard` / `delete_moodboard` | Moodboards from image URLs → AI master style prompt → pass `moodboard_id` to generation tools |
|
|
120
121
|
| `clone_voice` / `import_elevenlabs_voice` / `delete_voice` | Custom voices (clone CHARGES CREDITS — confirm first; new voices show in `list_voices`) |
|
|
@@ -123,6 +124,25 @@ Each `references/models/*.md` mirrors the matching skill prompt in `kolbo-api/sr
|
|
|
123
124
|
| `chat_send_message` / `chat_list_conversations` / `chat_get_messages` | Kolbo chat with optional `media_urls` (up to 10 per call) |
|
|
124
125
|
| `publish_html_artifact` | Publish HTML / SVG / Mermaid to `sites.kolbo.ai`. Server dedupes by content hash. Strict CSP. |
|
|
125
126
|
|
|
127
|
+
## ⚠️ Visual DNA `@Name` in the prompt (HARD RULE — always on)
|
|
128
|
+
|
|
129
|
+
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.
|
|
130
|
+
|
|
131
|
+
- Right: `visual_dna_ids: ["vdna_…"]` + prompt `@Zohar walks into frame`
|
|
132
|
+
- Wrong: `Zohar's`, `Zohar`, `the left man`, `the man on the LEFT`, `Visual DNA anchors: the man on the LEFT…` — none of these bind
|
|
133
|
+
- Never invent a role label or possessive as a substitute for `@Name`
|
|
134
|
+
- Same rule for moodboards: `#ExactBoardName`
|
|
135
|
+
|
|
136
|
+
Resolve names with `list_visual_dnas` first. Full binding rules: `references/workflows/visual-dna.md`.
|
|
137
|
+
|
|
138
|
+
## ⚠️ Seedance / Elements prompt contract (HARD RULE)
|
|
139
|
+
|
|
140
|
+
`generate_elements`, Seedance 2, and Seedance 2.5 share **one** compile shape — the Locked Intro in `references/models/seedance.md`:
|
|
141
|
+
|
|
142
|
+
`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 — …`
|
|
143
|
+
|
|
144
|
+
Do **not** default Elements to `SCENE CONTEXT` / `OPTICS` / `ACTION` / `ACTIVE REFERENCES` department packs (those live in filmmaking audit/contracts for other models). Do not load `seedance-2-prompting` SCENE CONTEXT as the Elements format.
|
|
145
|
+
|
|
126
146
|
## ⚠️ If the User Names a Tool, USE THAT TOOL (HARD RULE)
|
|
127
147
|
|
|
128
148
|
A user-named tool — in any language — overrides every other rule. Recognized aliases:
|
|
@@ -172,9 +192,9 @@ Model types for `list_models`: `text_to_img`, `image_editing`, `text_to_video`,
|
|
|
172
192
|
|
|
173
193
|
Everything in Kolbo — sessions, generations, media, docs — lives inside a PROJECT. Getting this wrong is the #1 user complaint ("my work went to the wrong project").
|
|
174
194
|
|
|
175
|
-
1. **User names a project** ("in my Acme project", "for the film") → call `list_projects` ONCE to resolve the name to an ObjectId, then pass that id as `project_id` on **EVERY** subsequent `generate_*` / `upload_media` / `create_doc` / `chat_send_message` call in
|
|
176
|
-
2. **No project mentioned** → omit `project_id`; the default bucket is correct. Don't ask unless intent is ambiguous.
|
|
177
|
-
3. **Work landed in the wrong project? MOVE it, never regenerate**: `move_session` relocates a whole session + all its media (works for any session type — the `session_id` from generation responses, chats, transcriptions); `move_media` / `bulk_move_media` / `move_folder_contents` relocate individual media items.
|
|
195
|
+
1. **User names a project** ("in my Acme project", "for the film") → call `list_projects` ONCE to resolve the name to an ObjectId, then pass that **same** id as `project_id` on **EVERY** subsequent `generate_*` / `upload_media` / `create_doc` / `chat_send_message` call in **this conversation**. There is no server-side sticky store — omitting it on any later call silently lands in the default "API Generations" bucket (`is_default: true`). Once resolved, treat that id as required for the rest of the conversation. Accounts often hold hundreds of projects, so pass `list_projects({ search: "acme" })` rather than listing everything; the list is paginated (50/page) and hides archived projects unless you pass `include_archived: true`.
|
|
196
|
+
2. **No project mentioned** → omit `project_id`; the default bucket is correct. Don't ask unless intent is ambiguous. If `list_sessions` already returned a `project_id` for the work you are continuing, keep passing that id.
|
|
197
|
+
3. **Work landed in the wrong project? MOVE it, never regenerate**: `move_session` relocates a whole session + all its media (works for any session type — the `session_id` from generation responses, chats, transcriptions); `move_media` / `bulk_move_media` / `move_folder_contents` relocate individual media items. Empty leftover sessions after a move: `delete_session` (soft-delete; `restore_session` undoes it). `rename_session` only changes the sidebar title.
|
|
178
198
|
|
|
179
199
|
|
|
180
200
|
## Cost Awareness — Quick Rules
|
package/skill/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.8.
|
|
1
|
+
0.8.4
|
|
@@ -9,13 +9,16 @@ Load this file when the user wants a **Seedance 2 / Seedance 2.0** (ByteDance) v
|
|
|
9
9
|
|
|
10
10
|
**Kolbo MCP routing:** Seedance is a video model — call `generate_video` (text-to-video) or `generate_elements` (when video references / Visual DNA / first-last frames are involved). Run `list_models({ type: "text_to_video" })` and pick a Seedance variant by name.
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
**Elements uses this same file.** `generate_elements` is not a second prompt language. Do not write `SCENE CONTEXT` / `OPTICS` / `ACTION` department packs for Elements or Seedance — those are filmmaking audit contracts, not the generation compile shape.
|
|
13
13
|
|
|
14
|
+
## Universal Rules (apply to EVERY Seedance / Elements prompt)
|
|
15
|
+
|
|
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`.
|
|
14
17
|
- **First line ALWAYS declares shot structure**: total duration, shot count, aspect ratio. Example: `Total: 15s / 6 shots / 16:9`. Put it at the BOTTOM of the prompt too. For connected narrative sequences the proven phrasing is `N connected cinematic shots, 15 seconds total, 16:9, Multishot ON` — use it and keep `Multishot ON` for any multi-shot story.
|
|
15
|
-
- **
|
|
16
|
-
- **
|
|
17
|
-
- **
|
|
18
|
-
- **
|
|
18
|
+
- **Then the Locked Intro** — `[GLOBAL LOOK]` / `[CAST]` / `[LOCATION]` — before any shot. A one-liner `same character throughout` is not a character lock.
|
|
19
|
+
- **Order inside each shot**: Subject → Action → Camera → Constraints → (Audio/SFX if relevant). Do NOT restack GLOBAL LOOK style inside the shot.
|
|
20
|
+
- **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.
|
|
21
|
+
- **Shot count is user-directed.** If the user asks for N shots, deliver exactly N in one prompt unless they ask to split.
|
|
19
22
|
- **Always describe at least one camera movement per shot.**
|
|
20
23
|
- **Tell Seedance what the camera is NOT doing** (e.g. `no cuts, no zoom, natural head movement`) — this is what locks POV.
|
|
21
24
|
- **Final prompt is always English**, wrapped in a copy-ready code block. Detect intent in any language and reply in the user's language, but the prompt itself is English.
|
|
@@ -26,6 +29,32 @@ Load this file when the user wants a **Seedance 2 / Seedance 2.0** (ByteDance) v
|
|
|
26
29
|
- **Never** split into multiple prompts, multiple code blocks, or "part 1 / part 2" to evade the cap.
|
|
27
30
|
- Before outputting, internally count the characters of the final prompt as a single string. If > 8000, rewrite tighter and re-count. Repeat until ≤ 8000. Only then show the user.
|
|
28
31
|
|
|
32
|
+
## Locked Intro (DEFAULT for any multi-shot cinematic — including Elements)
|
|
33
|
+
|
|
34
|
+
After the Total line, every multi-shot prompt — and any piece with recurring people or a recurring place — opens with three locked blocks. Skip only for: true single-shot POV/orb, 3×3 grid-panel mode, or video-edit tasks.
|
|
35
|
+
|
|
36
|
+
```
|
|
37
|
+
Total: Xs / N shots / AR
|
|
38
|
+
N connected cinematic shots, Xs total, AR, Multishot ON
|
|
39
|
+
|
|
40
|
+
[GLOBAL LOOK – LOCKED, APPLIES TO EVERY SHOT]
|
|
41
|
+
<body>, <lens family>, <film stock>, <aspect> spherical, <stop>. <DoF, grain, grade as law>. <movement grammar>. <performance + audio law>.
|
|
42
|
+
|
|
43
|
+
[CAST – IDENTICAL IN EVERY SHOT]
|
|
44
|
+
@Exact_DNA_name: age, build, hair, face, wardrobe, signature details.
|
|
45
|
+
PROP: recurring object.
|
|
46
|
+
|
|
47
|
+
[LOCATION]
|
|
48
|
+
Place in materials + light + color field. Blocking. Background LIFE.
|
|
49
|
+
|
|
50
|
+
SHOT 1 — 0:00–0:02 — Medium / camera position
|
|
51
|
+
(physical verbs, timed acting, quoted dialogue)
|
|
52
|
+
…
|
|
53
|
+
Total: Xs / N shots / AR
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
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`.
|
|
57
|
+
|
|
29
58
|
## The 5 Formats
|
|
30
59
|
|
|
31
60
|
### 1. Transformations (highest-performing format)
|
|
@@ -62,16 +91,13 @@ Load this file when the user wants a **Seedance 2 / Seedance 2.0** (ByteDance) v
|
|
|
62
91
|
|
|
63
92
|
### 6. Reference-Anchored Cinematic Sequence (multi-character / named references — highest-fidelity format)
|
|
64
93
|
|
|
65
|
-
Use whenever the user gives named characters or multiple reference images (`@Image1`, `@Image2`, …)
|
|
94
|
+
Use whenever the user gives named characters, Visual DNAs, or multiple reference images (`@Image1`, `@Image2`, …). **This is always an Elements-mode prompt** (`generate_elements`). Structure:
|
|
66
95
|
|
|
67
|
-
1. **
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
3. **Shots** — either titled (`Shot 1 — Medium Wide / Tactical Positioning`) or timecoded (`SHOT 1 — 0:00–0:03`); timecodes must sum to the total duration. Under each shot use **Camera → Action → Audio** in that order.
|
|
73
|
-
4. **Continuity** — to chain a series, open with `Begin as a seamless continuation from <the exact last beat of the previous video>.`
|
|
74
|
-
5. Close with whichever **Power Blocks** below actually apply (this format usually warrants all three; a simpler scene may need only AUDIO).
|
|
96
|
+
1. **Locked Intro FIRST** (GLOBAL LOOK / CAST / LOCATION). CAST is one line per person: `@Exact_DNA_name` or `Name @ImageN — wardrobe, position, what they carry`. End CAST with "All must match their character references exactly." Never "the man on the LEFT" without an `@tag`.
|
|
97
|
+
2. **REFERENCE CONSISTENCY block** — map every reference and pin what must NOT change: `@Zohar` / `Reference Image 1 is <X>. Preserve exact face, hair, anatomy, wardrobe, colors, props.`
|
|
98
|
+
3. **Shots** — timecoded `SHOT N — 0:00–0:03`. Re-use the same `@DNA_name` in every shot that person appears. Camera → Action → Audio.
|
|
99
|
+
4. **Continuity** — ONLY when the user will attach the previous video / last frame as an input. Otherwise the prompt is STANDALONE.
|
|
100
|
+
5. Close with whichever **Power Blocks** below actually apply.
|
|
75
101
|
|
|
76
102
|
## Power Blocks (CONDITIONAL — add ONLY the ones the shot actually needs; never pad a simple prompt)
|
|
77
103
|
|
|
@@ -93,7 +119,7 @@ These elevate rich cinematic / reference-anchored sequences. For a short, tight,
|
|
|
93
119
|
|
|
94
120
|
## Universal Craft Layer (apply on top of any format above)
|
|
95
121
|
|
|
96
|
-
>
|
|
122
|
+
> Craft layer for observables (FOV degrees, km/h, Kelvin). Do **not** switch the compile shape to that skill's SCENE CONTEXT / OPTICS / ACTION pack — Locked Intro above is the only default for Seedance and Elements.
|
|
97
123
|
|
|
98
124
|
### Core principle
|
|
99
125
|
|
|
@@ -226,4 +252,4 @@ Seedance 2 lives in the **Video** category. Route the prompt card by the INPUTS:
|
|
|
226
252
|
|
|
227
253
|
## Seedance + Visual DNA / References
|
|
228
254
|
|
|
229
|
-
When a character must stay consistent, pair Seedance with Visual DNA via `generate_elements` (NOT `generate_video` — text-to-video silently drops `visual_dna_ids`).
|
|
255
|
+
When a character must stay consistent, pair Seedance with Visual DNA via `generate_elements` (NOT `generate_video` — text-to-video silently drops `visual_dna_ids`). Use the exact literal `@DNA_name` as the character name in CAST and re-anchor every shot where it appears — never a nickname, alias, possessive (`Zohar's`), or spatial label (`the left man`). See `workflows/visual-dna.md`. For grid/storyboard inputs, the source frame is `@image1`.
|
|
@@ -9,6 +9,8 @@ Load this file when the user wants a **Seedance 2.5** video (they said "2.5" / "
|
|
|
9
9
|
|
|
10
10
|
**Kolbo MCP routing:** `generate_video` or `generate_elements` (refs / Visual DNA / first-last). Run `list_models({ type: "text_to_video" })` and pick the Seedance 2.5 variant by name.
|
|
11
11
|
|
|
12
|
+
**Audio:** Seedance 2.5 still emits real synced audio. `list_models` may show `sound_generation_type: none` because there is no in-app toggle (`sound_baked_in: true`). Do not tell the user the model is silent.
|
|
13
|
+
|
|
12
14
|
## What's NEW in 2.5 (verified — never hedge)
|
|
13
15
|
|
|
14
16
|
- **Duration 4–30 seconds**, whole seconds. 30s IS supported.
|
|
@@ -62,4 +64,4 @@ Skip CORE STYLE / SUBJECT / ENVIRONMENT — the three locked blocks already own
|
|
|
62
64
|
|
|
63
65
|
## Where to run in Kolbo
|
|
64
66
|
|
|
65
|
-
Same routing as Seedance 2 (`first_last_frame` / `elements` / `image_to_video` / `text_to_video`). Pair Visual DNA with `generate_elements` and
|
|
67
|
+
Same routing as Seedance 2 (`first_last_frame` / `elements` / `image_to_video` / `text_to_video`). Pair Visual DNA with `generate_elements` and write the exact `@DNA_name` in CAST and every shot — never "Zohar's" / "the left man" / an untagged "Visual DNA anchors" paragraph. Elements uses this same Locked Intro; do not compile SCENE CONTEXT / OPTICS / ACTION packs.
|
|
@@ -93,27 +93,19 @@ Before writing, establish:
|
|
|
93
93
|
|
|
94
94
|
Prompt-length limits apply to the entire compiled generation prompt as one string, including whitespace, headers, timecodes, dialogue, audio, and locks. Count after compilation. For the current Seedance 2.5 adapter snapshot, the hard ceiling is 30,000 characters; never borrow that number for another model.
|
|
95
95
|
|
|
96
|
-
|
|
96
|
+
**Seedance 2 / Seedance 2.5 / `generate_elements` — Locked Intro is the only compile shape.** Read `references/models/seedance.md` (and `seedance25.md` for 2.5 caps). Do not emit the SCENE CONTEXT / OPTICS / ACTION department pack below as the generation prompt. Every Visual DNA in play must be `@ExactName` in CAST and in each shot — never "the left man" or a possessive.
|
|
97
97
|
|
|
98
98
|
```text
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
OPTICS
|
|
105
|
-
CAMERA
|
|
106
|
-
ACTION TIMING / SHOTS
|
|
107
|
-
PHYSICS
|
|
108
|
-
LIGHTING
|
|
109
|
-
ACTING TASKS
|
|
110
|
-
DIALOGUE
|
|
111
|
-
AUDIO / MUSIC
|
|
112
|
-
STYLE
|
|
113
|
-
POSITIVE LOCKS
|
|
99
|
+
Total: Xs / N shots / AR
|
|
100
|
+
[GLOBAL LOOK – LOCKED, APPLIES TO EVERY SHOT]
|
|
101
|
+
[CAST – IDENTICAL IN EVERY SHOT] ← @DNAName per person
|
|
102
|
+
[LOCATION]
|
|
103
|
+
SHOT N — 0:00–0:02 — …
|
|
114
104
|
```
|
|
115
105
|
|
|
116
|
-
|
|
106
|
+
The SCENE CONTEXT pack in `prompt-contracts.md` is an **audit / pre-compile checklist** for non-Seedance models and Workbench diagnosis — not the default Elements prompt.
|
|
107
|
+
|
|
108
|
+
For anchored or exploratory work on other models, collapse compatible blocks and protect only non-negotiables. Never manufacture a rigid skeleton when a looser model-native prompt is more likely to succeed.
|
|
117
109
|
|
|
118
110
|
## Preserve continuity
|
|
119
111
|
|
|
@@ -81,7 +81,8 @@ Whenever a generation call passes `visual_dna_ids` (even just one), the prompt M
|
|
|
81
81
|
**Use the actual stored name, programmatically.** When you call `list_visual_dnas` (or `create_visual_dna`), read the `name` field off the response and use that exact string after the `@`. Do NOT:
|
|
82
82
|
|
|
83
83
|
- Translate the name into another language ("אסתר" / "esther" / "אסתי" — pick whichever string is in `name` and use ONLY that one).
|
|
84
|
-
- Invent a friendlier alias ("the model", "המודל", "her").
|
|
84
|
+
- Invent a friendlier alias ("the model", "המודל", "her", "Zohar's", "the left man", "the man on the LEFT").
|
|
85
|
+
- Write a "Visual DNA anchors:" prose block that describes position/wardrobe but never writes `@ExactName`.
|
|
85
86
|
- Write the character's name in plain text without the `@` prefix.
|
|
86
87
|
- Drop the `@name` when only one DNA is passed — the engine still needs the binding so it knows the DNA is the *subject* and not a passive style.
|
|
87
88
|
|