@kolbo/mcp 1.70.1 → 1.70.3

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.
Files changed (37) hide show
  1. package/README.md +7 -7
  2. package/bin/kolbo-mcp.js +14 -5
  3. package/package.json +3 -2
  4. package/skill/GENERATED.md +4 -5
  5. package/skill/SKILL.md +11 -18
  6. package/skill/VERSION +1 -1
  7. package/skill/assets/filmmaking/continuity-ledger.template.json +27 -0
  8. package/skill/assets/filmmaking/generation-log.template.csv +2 -0
  9. package/skill/assets/filmmaking/production-bible.template.json +97 -0
  10. package/skill/assets/filmmaking/scene-card.template.json +40 -0
  11. package/skill/assets/filmmaking/shot-card.template.json +72 -0
  12. package/skill/references/filmmaking/acting-direction.md +131 -0
  13. package/skill/references/filmmaking/asset-preproduction.md +97 -0
  14. package/skill/references/filmmaking/audio-dialogue-music.md +111 -0
  15. package/skill/references/filmmaking/blocking-continuity.md +125 -0
  16. package/skill/references/filmmaking/cinematography.md +101 -0
  17. package/skill/references/filmmaking/physics-action.md +93 -0
  18. package/skill/references/filmmaking/production-bible.md +108 -0
  19. package/skill/references/filmmaking/prompt-contracts.md +140 -0
  20. package/skill/references/filmmaking/routing.md +105 -0
  21. package/skill/references/filmmaking/scene-engine.md +95 -0
  22. package/skill/references/filmmaking/validation.md +109 -0
  23. package/skill/references/filmmaking/workflows.md +80 -0
  24. package/skill/references/models/gpt-image.md +1 -1
  25. package/skill/references/models/nano-banana.md +1 -1
  26. package/skill/references/models/prompt-copilot.md +0 -1
  27. package/skill/references/models/seedance.md +24 -44
  28. package/skill/references/models/seedance25.md +3 -3
  29. package/skill/references/workflows/filmmaking.md +168 -0
  30. package/skill/scripts/filmmaking/lint_prompt.py +249 -0
  31. package/skill/scripts/filmmaking/validate_film_package.py +435 -0
  32. package/src/apps/index.js +26 -3
  33. package/src/index.js +11 -11
  34. package/src/install.js +62 -3
  35. package/src/tools/generate.js +2 -2
  36. package/src/tools/models.js +1 -1
  37. package/src/tools/visual_dna.js +1 -1
package/README.md CHANGED
@@ -51,7 +51,7 @@ Or add the config by hand — this block is identical for every MCP client and c
51
51
 
52
52
  | Client | Where the config goes |
53
53
  |--------|----------------------|
54
- | **Claude Code** | `.claude/settings.json` (or `claude mcp add kolbo -- npx -y @kolbo/mcp@latest`) |
54
+ | **Claude Code** | `~/.claude.json` (or `claude mcp add kolbo -- npx -y @kolbo/mcp@latest`) |
55
55
  | **Claude Desktop** | `claude_desktop_config.json` |
56
56
  | **Cursor** | `.cursor/mcp.json` |
57
57
  | **Kolbo Code** | configured automatically on `kolbo auth login` |
@@ -67,15 +67,15 @@ No install at all — add the custom connector **`https://api.kolbo.ai/mcp`** un
67
67
  The config above is all you need. If you want one-word slash-commands (`/kolbo:marketing-studio`, `/kolbo:product-photoshoot`, …) and automatic routing to the best tool with the right defaults, install the Kolbo skill on top — it's an enhancement layer, not a requirement:
68
68
 
69
69
  ```bash
70
- # Claude Code (also writes the MCP config for you, so you can skip Step 2 above)
71
- claude plugin marketplace add Zoharvan12/kolbo-skills
72
- claude plugin install kolbo@kolbo-skills
70
+ # Claude Code plugin (canonical skill + MCP configuration)
71
+ claude plugin marketplace add Zoharvan12/kolbo-claude-plugin
72
+ claude plugin install kolbo@kolbo
73
73
 
74
- # Cursor / Codex / any agent (cross-agent installer)
75
- npx skills add Zoharvan12/kolbo-skills
74
+ # Skill only installs the bundled official skill without changing MCP settings
75
+ npx -y @kolbo/mcp@latest skill
76
76
  ```
77
77
 
78
- The skill content is the same canonical routing logic that ships inside [Kolbo Code](https://github.com/Zoharvan12/kolbo-code), so however you connect, the behavior matches. See the full setup guide at [docs.kolbo.ai/developer-api/claude-code-skill](https://docs.kolbo.ai/developer-api/claude-code-skill).
78
+ The skill-only command installs the canonical single `kolbo` skill and does not change MCP configuration. The Claude Code plugin and `npx -y @kolbo/mcp install` routes configure MCP as well. Official installer-created skill folders are marked as Kolbo-managed and refresh automatically when the MCP server starts on a newer package; unmarked or hand-authored folders are never overwritten. The canonical skill ships inside [Kolbo Code](https://github.com/Zoharvan12/kolbo-code), so however you connect, the behavior matches. See the full setup guide at [docs.kolbo.ai/developer-api/claude-code-skill](https://docs.kolbo.ai/developer-api/claude-code-skill).
79
79
 
80
80
  ### Use it
81
81
 
package/bin/kolbo-mcp.js CHANGED
@@ -1,15 +1,24 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- // `npx @kolbo/mcp install` one-command keyless setup (configures the user's
4
- // agent). Anything else run the MCP stdio server (the default).
5
- if (process.argv[2] === 'install') {
6
- require('../src/install.js')
7
- .run()
3
+ // Installer commands are additive aliases on the same public package:
4
+ // `npx @kolbo/mcp install` → MCP configuration + bundled skill
5
+ // `npx @kolbo/mcp skill` → bundled skill only
6
+ // `npx @kolbo/mcp install-skill` → readable alias for skill-only
7
+ // Anything else runs the MCP stdio server (the default).
8
+ const command = process.argv[2];
9
+ if (command === 'install' || command === 'skill' || command === 'install-skill') {
10
+ const installer = require('../src/install.js');
11
+ const run = command === 'install' ? installer.run : installer.runSkillOnly;
12
+ run()
8
13
  .then((code) => process.exit(code || 0))
9
14
  .catch((err) => {
10
15
  console.error('Kolbo install failed:', err && err.message ? err.message : err);
11
16
  process.exit(1);
12
17
  });
13
18
  } else {
19
+ // Keep official managed skill installs on the exact tree bundled with the
20
+ // MCP package selected by `@latest`. Unmanaged/user-authored skills are left
21
+ // alone. This is silent because stdout belongs to the MCP JSON transport.
22
+ require('../src/install.js').refreshManagedSkills();
14
23
  require('../src/index.js');
15
24
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kolbo/mcp",
3
- "version": "1.70.1",
3
+ "version": "1.70.3",
4
4
  "description": "Kolbo AI MCP Server - Generate images, videos, music, speech, and sound effects from Claude Code",
5
5
  "main": "src/index.js",
6
6
  "bin": {
@@ -9,8 +9,9 @@
9
9
  "scripts": {
10
10
  "start": "node src/index.js",
11
11
  "smoke": "node scripts/smoke.js",
12
+ "check-skill-bundle": "node scripts/check-skill-bundle.js",
12
13
  "check-parity": "node scripts/check-parity.js",
13
- "prepublishOnly": "node scripts/smoke.js && node scripts/check-parity.js && node scripts/check-widget-fields.js && node scripts/check-widget-render.js && node scripts/check-model-catalog.js && node scripts/check-skill-tools.js && node scripts/check-submission-contract.js && node scripts/check-install.js",
14
+ "prepublishOnly": "node scripts/smoke.js && node scripts/check-skill-bundle.js && node scripts/check-parity.js && node scripts/check-widget-fields.js && node scripts/check-widget-render.js && node scripts/check-model-catalog.js && node scripts/check-skill-tools.js && node scripts/check-submission-contract.js && node scripts/check-install.js",
14
15
  "check-model-catalog": "node scripts/check-model-catalog.js",
15
16
  "check-widget-fields": "node scripts/check-widget-fields.js",
16
17
  "check-widget-render": "node scripts/check-widget-render.js",
@@ -1,8 +1,7 @@
1
1
  # AUTO-GENERATED — do not edit
2
2
 
3
- This skill/ tree is mirrored from kolbo-code (the single source of truth)
4
- by .github/workflows/sync-skill-to-plugin.yml — synced from kolbo-code@3a7950b.
3
+ This tree is mirrored from kolbo-code@0fbb0ce, the single source of truth.
4
+ Canonical source: packages/opencode/skills/kolbo/
5
+ Distribution: .github/workflows/sync-skill-to-plugin.yml
5
6
 
6
- It is the skill that 'npx @kolbo/mcp install' deploys into the user's agent.
7
- To change it, edit packages/opencode/skills/kolbo/ in kolbo-code and push;
8
- this workflow re-mirrors the whole tree here. Hand-edits here are overwritten.
7
+ Both 'npx -y @kolbo/mcp@latest skill' and the combined 'install' command deploy it.
package/skill/SKILL.md CHANGED
@@ -1,21 +1,14 @@
1
1
  ---
2
- version: 0.7.5
2
+ version: 0.8.1
3
3
  name: kolbo
4
4
  description: |
5
- Generate, edit, or analyze creative media via the Kolbo AI MCP server:
6
- images (GPT Image, Nano Banana, Flux), video (Seedance, Veo, Kling, Hailuo),
7
- music (Suno), TTS (ElevenLabs), 3D, transcription, Visual DNA (character
8
- consistency), Marketing Studio (UGC + DTC ads + product photoshoot +
9
- marketplace cards), Creative Director (multi-scene batches), HTML artifact
10
- publishing (presentations, landing pages, dashboards), AI Docs (project
11
- documents you author and share).
12
-
13
- Use when the user wants to generate, create, make, edit, animate, or
14
- transcribe media: images, video, music, voice/TTS, sound effects, 3D models,
15
- UGC or TV-spot ads, product / lifestyle / hero shots, Amazon or marketplace
16
- listings, presentations, landing pages, or dashboards;
17
- to reuse a character or brand (Visual DNA, brand kits); or to save a written
18
- plan / brief / script / research into a Kolbo project (AI Docs).
5
+ Generate, edit, analyze, and direct creative media through Kolbo AI: images,
6
+ video (Seedance, Veo, Kling, Hailuo), music, speech, sound, 3D, transcription,
7
+ Visual DNA, Creative Director batches, marketing assets, HTML artifacts, and
8
+ AI Docs. Use for sophisticated AI filmmaking as well as individual media:
9
+ scripts, production bibles, recurring characters and locations, acting,
10
+ dialogue, music performance, blocking, physics, multi-shot continuity,
11
+ connected scenes, prompt audits, and feature-length production planning.
19
12
 
20
13
  NOT for: video editing / FFmpeg (use video-production), motion graphics
21
14
  (use remotion-best-practices), code editing, or general chat.
@@ -64,8 +57,9 @@ For multi-scene / batch work this pairs with `generate_creative_director` (see b
64
57
 
65
58
  | If the user wants to… | Read first |
66
59
  |---|---|
67
- | Generate a **Seedance 2** video | `references/models/seedance.md` |
68
- | Generate a **Seedance 2.5** video | `references/models/seedance25.md` (also load `seedance.md` for the locked intro + craft layer) |
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`; also load `references/workflows/filmmaking.md` for narrative, performance, or cross-shot continuity |
62
+ | Generate a **Seedance 2 / 2.0** video | `references/models/seedance.md` |
69
63
  | Generate a **GPT Image 2** image | `references/models/gpt-image.md` |
70
64
  | Generate a **Nano Banana / Gemini** image | `references/models/nano-banana.md` |
71
65
  | Generate a **Veo 3 / 3.1** video | `references/models/veo.md` |
@@ -166,7 +160,6 @@ A user-named tool — in any language — overrides every other rule. Recognized
166
160
  - User named one → use it. Model identifiers resolve leniently — shorthand like `"z-image"` or `"nano banana 2"` auto-resolves to the exact identifier, so don't over-engineer exact-id lookups (`list_models` is still authoritative for constraints, caps, and pricing).
167
161
  - Auto-select → only from "Auto-selectable" section (models with a `summary`). Cheapest fit. Prefer `[RECOMMENDED]` when cost is similar.
168
162
  - Never auto-select from "Named-only" section.
169
- - **Photoreal photo edits** (object removal, keep one person / remove the crowd, inpainting, "edit this photo") → `generate_image_edit` with **Nano Banana 2** or **GPT Image 2** only. Do not auto-pick Flux 2 / Flux Klein — those are generate-from-scratch / style, named-only for editing.
170
163
  4. **Validate inputs** against model caps — see `references/workflows/cost-and-validation.md`.
171
164
  5. **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; you only need `get_generation_status` when a follow-up step needs the output URLs.
172
165
  6. **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.
package/skill/VERSION CHANGED
@@ -1 +1 @@
1
- 0.7.5
1
+ 0.8.1
@@ -0,0 +1,27 @@
1
+ {
2
+ "schema_version": "1.0",
3
+ "project_id": "EXAMPLE",
4
+ "sequence_id": "EXAMPLE_SEQ001",
5
+ "global_locks": {
6
+ "screen_direction": "Movement toward the north platform is screen-left to screen-right.",
7
+ "time_and_light": "Continuous pre-dawn; blue ambient light slowly increases.",
8
+ "weather": "Heavy rain continues without interruption.",
9
+ "base_ambience": "Rain, current, distant station alarms."
10
+ },
11
+ "entries": [
12
+ {
13
+ "shot_id": "EXAMPLE_SC001_SH001",
14
+ "entering": {
15
+ "character_state": "Mara base state; dry above knees; no hand injury.",
16
+ "prop_state": "Medicine case sealed in left hand.",
17
+ "positions": "Mara at south entrance, platform ahead frame right."
18
+ },
19
+ "leaving": {
20
+ "character_state": "Mara waist-down soaked, stopped mid-concourse.",
21
+ "prop_state": "Medicine case sealed in left hand.",
22
+ "positions": "Mara body aimed right, looking left toward kiosk."
23
+ },
24
+ "handoff_proof": "Final selected frame must preserve body direction, gaze, hand ownership, and case seal."
25
+ }
26
+ ]
27
+ }
@@ -0,0 +1,2 @@
1
+ project_id,scene_id,shot_id,prompt_version,attempt,model,generation_mode,control_density,change_owner,change_summary,expected_proof,result_uri,verdict,selected_take,qc_notes,timestamp_utc
2
+ EXAMPLE,EXAMPLE_SC001,EXAMPLE_SC001_SH001,p001,1,seedance-2.5,reference-to-video,anchored,baseline,initial compiled prompt,"geography readable; Mara ends looking left; case remains sealed",,pending,false,,
@@ -0,0 +1,97 @@
1
+ {
2
+ "schema_version": "1.0",
3
+ "project_id": "EXAMPLE",
4
+ "title": "Example Film",
5
+ "format": {
6
+ "type": "short",
7
+ "runtime_target_minutes": 3,
8
+ "primary_aspect_ratio": "16:9",
9
+ "delivery_fps": 24
10
+ },
11
+ "story": {
12
+ "logline": "A courier must cross a flooded city before the last evacuation train leaves.",
13
+ "story_goal": "Deliver the medicine and escape before dawn.",
14
+ "genre": [
15
+ "survival drama"
16
+ ],
17
+ "tone": [
18
+ "intimate",
19
+ "urgent",
20
+ "grounded"
21
+ ]
22
+ },
23
+ "world_rules": [
24
+ "Water obeys realistic mass, drag, and buoyancy.",
25
+ "Technology is contemporary and visibly weathered."
26
+ ],
27
+ "visual_worlds": [
28
+ {
29
+ "id": "world_flooded_dawn",
30
+ "palette": "cool blue-grey with warm emergency-light accents",
31
+ "texture": "wet concrete, rain, practical haze",
32
+ "capture_language": "large-format naturalism, restrained handheld"
33
+ }
34
+ ],
35
+ "characters": [
36
+ {
37
+ "id": "char_mara",
38
+ "canonical_tag": "@char_EXAMPLE_mara_base_v1",
39
+ "identity_anchors": [
40
+ "short black curls",
41
+ "scar through left eyebrow",
42
+ "yellow rain shell"
43
+ ],
44
+ "performance_profile": "Contained urgency; she masks fear by solving practical problems.",
45
+ "voice_lock": "Low mezzo, clipped phrasing under stress, never theatrical.",
46
+ "states": [
47
+ {
48
+ "id": "mara_soaked",
49
+ "tag": "@char_EXAMPLE_mara_soaked_v1",
50
+ "changes": [
51
+ "rain shell soaked and darker",
52
+ "small cut on right palm"
53
+ ]
54
+ }
55
+ ]
56
+ }
57
+ ],
58
+ "locations": [
59
+ {
60
+ "id": "loc_station_concourse",
61
+ "canonical_tag": "@loc_EXAMPLE_station_concourse_v1",
62
+ "geography": "Entrance south, ticket hall center, platforms north, service stairs east.",
63
+ "light_lock": "Pre-dawn blue through broken roof; amber emergency fixtures.",
64
+ "states": []
65
+ }
66
+ ],
67
+ "assets": [
68
+ {
69
+ "id": "prop_medicine_case",
70
+ "tag": "@prop_EXAMPLE_medicine_case_v1",
71
+ "type": "hero_prop",
72
+ "continuity_lock": "Silver hard case, black handle, red medical seal intact until scene 08."
73
+ }
74
+ ],
75
+ "audio_policy": {
76
+ "dialogue": "Generate performance dialogue in-shot when model capability is verified.",
77
+ "music": "Use post-score by default; native source music only when it drives visible timing.",
78
+ "ambience": "Rain, distant alarms, water movement, structural creaks.",
79
+ "subtitle_policy": "No generated subtitles or on-screen text."
80
+ },
81
+ "model_adapters": {
82
+ "default": "seedance-2.5",
83
+ "verified_at": "2026-08-15",
84
+ "notes": "Re-verify live limits before a costly production batch."
85
+ },
86
+ "naming_policy": {
87
+ "shot_id_pattern": "EXAMPLE_SC###_SH###",
88
+ "asset_tag_pattern": "@type_PROJECT_subject_state_v#",
89
+ "prompt_version_pattern": "p###"
90
+ },
91
+ "approval": {
92
+ "story_locked": false,
93
+ "visual_world_locked": false,
94
+ "character_assets_locked": false,
95
+ "production_ready": false
96
+ }
97
+ }
@@ -0,0 +1,40 @@
1
+ {
2
+ "schema_version": "1.0",
3
+ "project_id": "EXAMPLE",
4
+ "scene_id": "EXAMPLE_SC001",
5
+ "title": "The Last Platform",
6
+ "slugline": "INT. FLOODED STATION CONCOURSE - PRE-DAWN",
7
+ "story_job": "Force Mara to choose between speed and helping a stranded child.",
8
+ "structure": {
9
+ "goal": "Reach the north platform before the evacuation train departs.",
10
+ "obstacle": "Floodwater blocks the direct route and a child is trapped on a kiosk.",
11
+ "tactic": "Use a floating bench as a bridge while pulling the child across.",
12
+ "reversal": "The medicine case slips into the current.",
13
+ "audience_value_shift": "Efficient escape becomes a costly moral commitment."
14
+ },
15
+ "shared_event": "Mara rescues the child and loses control of the medicine case.",
16
+ "acting_direction": {
17
+ "mara": "Keep the child calm while privately calculating whether the rescue will cost both lives."
18
+ },
19
+ "location_tag": "@loc_EXAMPLE_station_concourse_v1",
20
+ "entering_state": {
21
+ "mara": "Dry above the knees; right palm uninjured; medicine case sealed in left hand.",
22
+ "environment": "Water waist-high at the center aisle, flowing east to west."
23
+ },
24
+ "geography": {
25
+ "screen_direction": "Mara advances screen-left to screen-right toward the north platform.",
26
+ "axis": "Primary axis runs south entrance to north platforms.",
27
+ "fixed_landmarks": [
28
+ "kiosk on west wall",
29
+ "service stairs on east wall"
30
+ ]
31
+ },
32
+ "audio_bed": "Rain on broken roof, waist-deep current, distant departure alarm.",
33
+ "coverage_plan": [
34
+ "wide geography master",
35
+ "Mara-child performance two-shot",
36
+ "case-loss action insert",
37
+ "reaction close-up"
38
+ ],
39
+ "unresolved_questions": []
40
+ }
@@ -0,0 +1,72 @@
1
+ {
2
+ "schema_version": "1.0",
3
+ "project_id": "EXAMPLE",
4
+ "scene_id": "EXAMPLE_SC001",
5
+ "shot_id": "EXAMPLE_SC001_SH001",
6
+ "editorial_job": "Establish the flooded geography and Mara's route to the platform.",
7
+ "dramatic_beat": "Mara sees the stranded child but initially keeps moving.",
8
+ "model": "seedance-2.5",
9
+ "generation_mode": "reference-to-video",
10
+ "control_density": "anchored",
11
+ "duration_seconds": 8,
12
+ "aspect_ratio": "16:9",
13
+ "active_assets": [
14
+ {
15
+ "tag": "@char_EXAMPLE_mara_base_v1",
16
+ "role": "Mara",
17
+ "state": "base"
18
+ },
19
+ {
20
+ "tag": "@loc_EXAMPLE_station_concourse_v1",
21
+ "role": "station concourse",
22
+ "state": "flooded pre-dawn"
23
+ },
24
+ {
25
+ "tag": "@prop_EXAMPLE_medicine_case_v1",
26
+ "role": "medicine case",
27
+ "state": "sealed"
28
+ }
29
+ ],
30
+ "first_frame": "Wide at waist height. Mara enters frame left, medicine case in her left hand; north platform signs sit deep frame right.",
31
+ "blocking": "Mara pushes left-to-right through waist-high water. She notices the child off-screen west, checks the platform clock, and takes one more step before stopping.",
32
+ "camera": {
33
+ "framing": "wide moving master",
34
+ "movement": "slow lateral tracking move matching Mara",
35
+ "lens_language": "natural wide perspective, rectilinear",
36
+ "camera_side": "east side of the south-north axis"
37
+ },
38
+ "eyelines": {
39
+ "mara": "first toward platform frame right, then sharply off-screen left toward the child"
40
+ },
41
+ "action_timing": [
42
+ {
43
+ "start_seconds": 0,
44
+ "end_seconds": 4,
45
+ "beat": "Mara advances toward the platform."
46
+ },
47
+ {
48
+ "start_seconds": 4,
49
+ "end_seconds": 8,
50
+ "beat": "She hears the child, looks left, hesitates, and stops."
51
+ }
52
+ ],
53
+ "acting_tasks": {
54
+ "mara": "Reach the train without acknowledging the plea; when it becomes impossible to ignore, hide the cost of stopping."
55
+ },
56
+ "dialogue": [],
57
+ "audio_lane": {
58
+ "dialogue": "none",
59
+ "source_music": "none",
60
+ "ambience": "rain, moving floodwater, distant departure alarm",
61
+ "post_music": "optional restrained pulse added in edit"
62
+ },
63
+ "physics": "Water resistance slows each step and pushes fabric westward. The medicine case has visible weight and remains above water.",
64
+ "lighting": "Pre-dawn blue roof light with warm amber practicals; wet reflections remain physically motivated.",
65
+ "final_state": "Mara is stationary mid-concourse, body aimed right but eyes and head turned left; case still sealed in left hand.",
66
+ "edit": {
67
+ "in": "Hard cut from exterior rain.",
68
+ "out": "Cut on Mara's look toward the child."
69
+ },
70
+ "prompt_version": "p001",
71
+ "status": "draft"
72
+ }
@@ -0,0 +1,131 @@
1
+ # Acting Direction
2
+
3
+ Direct behavior under pressure. Give performers playable work; let emotion emerge as a consequence.
4
+
5
+ ## Order of work
6
+
7
+ ### 1. Read the complete dramatic unit
8
+
9
+ Read the whole exchange and its ending before directing a line. The ending often reveals what the event actually was.
10
+
11
+ ### 2. Name one shared event/direction
12
+
13
+ Find the unspoken process all present characters inhabit, including silent listeners. The physical activity—packing, driving, cleaning, waiting, fighting—is the terrain through which the event moves, not necessarily the event itself.
14
+
15
+ ### 3. Give each character different fuel
16
+
17
+ For every present character, define:
18
+
19
+ - **Motive:** why this person pushes the shared direction.
20
+ - **Goal:** what this person wants from a specific partner now.
21
+ - **Obstacle/stakes:** what resists and what one crack costs.
22
+ - **Tactic:** what the person actively does to the partner to get it.
23
+ - **Physical channel/business:** what the body/hands are doing while pursuing it.
24
+ - **Listener task:** what the person checks, measures, decides, hides, or waits for while not speaking.
25
+
26
+ Use action verbs: convince, expose, disarm, charm, shame, protect, test, provoke, recruit, delay, conceal, reassure.
27
+
28
+ ### 4. Change tactics at beats
29
+
30
+ When a tactic fails or new information lands, change the action. Make the beat change filmable through timing, posture, distance, speech rhythm, interrupted business, or gaze target.
31
+
32
+ ### 5. Preserve two truths
33
+
34
+ For important close performance, hold a contradiction: helps while resenting it, jokes while begging, threatens while seeking approval, stays calm while testing whether escape is possible. Avoid a single clean emotion.
35
+
36
+ ## Acting task block
37
+
38
+ Use a compact form for strict prompts:
39
+
40
+ ```text
41
+ ACTING TASK — <character>
42
+ Shared direction: <unspoken scene vector>
43
+ Motive / goal / obstacle: <fuel, fight, pressure>
44
+ Tactic: <playable action toward partner>
45
+ Physical channel: <business and body rhythm>
46
+ Moment to moment: <dialogue/beat → tactic and listener check>
47
+ ```
48
+
49
+ Do not paste theory into the prompt. Convert it into actions the model can show.
50
+
51
+ ## Eyes and listening
52
+
53
+ Treat the eyes as purposeful work, not decoration:
54
+
55
+ - check whether a point landed;
56
+ - search both eyes for trust;
57
+ - compare words with hands or exits;
58
+ - steal a look and return before discovery;
59
+ - let the eyes reach the new target just before the head;
60
+ - react before the partner finishes when comprehension arrives mid-line.
61
+
62
+ Use natural blink/gaze continuity as a minimal AI safety layer. Do not try to create acting by choreographing endless eyebrow, mouth, and blink commands. Task first; micro-life second.
63
+
64
+ Never solve dead eyes only with catchlights. Lighting can reveal eyes but cannot give them intention.
65
+
66
+ ## Physical life
67
+
68
+ Define what matters for the shot:
69
+
70
+ - center of gravity and body weight;
71
+ - tempo and economy;
72
+ - breath consistent with exertion and pressure;
73
+ - openness/closure and status behavior;
74
+ - proxemic distance and motivated changes;
75
+ - physical business and the moment it stops.
76
+
77
+ The interrupted-action beat is strong punctuation: hands stop because something became an event.
78
+
79
+ ## Character master profile
80
+
81
+ Create one durable performance profile for recurring characters:
82
+
83
+ - body as biography;
84
+ - core behavioral engine;
85
+ - voice identity;
86
+ - signature habit with trigger;
87
+ - stress/concealment behavior;
88
+ - default mask and exact crack condition;
89
+ - gait/movement grammar;
90
+ - chosen stillness versus fidget behavior;
91
+ - one softening target when dramatically useful.
92
+
93
+ Keep wardrobe, camera, grade, and scene-specific blocking outside the master profile.
94
+
95
+ Adapt the profile per scene. Transform impossible behaviors rather than deleting their energy: pacing may become wrist-flicks or micro-sway when seated.
96
+
97
+ ## Voice identity
98
+
99
+ Keep vocal identity stable across shots:
100
+
101
+ ```text
102
+ age register + origin/accent + pitch/timbre + pace + habitual delivery + pressure behavior
103
+ ```
104
+
105
+ Change the scene's tactic and intensity without casually rewriting the voice identity. Name phonetic markers only when needed and when the production has permission to use the voice/likeness.
106
+
107
+ ## Dialogue performance
108
+
109
+ - Give exact words to one speaker.
110
+ - Separate voice identity from scene delivery.
111
+ - Give listeners active tasks.
112
+ - Preserve breath and emotional carry across cuts.
113
+ - Let pauses contain assessment, decision, or refusal; remove empty pauses.
114
+ - Keep reaction timing connected to the partner's line, not delayed by default.
115
+ - In tight close-ups, reduce external behavior and let intention, breath, and eyes carry the beat.
116
+
117
+ ## Audit failures
118
+
119
+ Flag:
120
+
121
+ - emotion labels without playable action;
122
+ - one tactic across the whole scene;
123
+ - waiting-for-cue faces;
124
+ - synchronized ensemble reactions;
125
+ - gesture illustrating the spoken word;
126
+ - free tears/rage without pressure or trigger;
127
+ - dead pauses;
128
+ - emotional reset between beats/shots;
129
+ - voice identity drift;
130
+ - facial choreography that fights the acting task;
131
+ - silent characters with no listener task.
@@ -0,0 +1,97 @@
1
+ # Asset Pre-production
2
+
3
+ Build stable inputs before expensive continuity work.
4
+
5
+ ## Asset contract
6
+
7
+ Treat an asset as:
8
+
9
+ ```text
10
+ canonical tag + immutable state + approved descriptor + reference media + provenance + stress-test status
11
+ ```
12
+
13
+ The descriptor and media have different jobs. Media carries appearance. Text declares role, state, critical anchors, scale, ownership, and constraints the model might drop.
14
+
15
+ For Kolbo Visual DNA, treat `dnaType` and the saved analyzed description/system prompt as authoritative asset data. Compile by role:
16
+
17
+ - `character` → identity, physical state, wardrobe, performance, speaking voice, and singing voice;
18
+ - `environment` / `scene` → location volume, landmarks, geography, materials, light, atmosphere, and available coverage;
19
+ - `product` → recurring prop/product identity, scale, material, ownership, interaction state, and damage/version;
20
+ - `style` → visual register only.
21
+
22
+ Never flatten every DNA into CAST or infer role only from its images. Exact tags remain immutable.
23
+
24
+ ## Character assets
25
+
26
+ Create a canonical identity source and separate state variants.
27
+
28
+ For a reference sheet, capture at minimum:
29
+
30
+ - a high-information close portrait;
31
+ - full-body front and back or equivalent coverage;
32
+ - neutral readable light and background;
33
+ - empty hands unless an object is permanently inseparable;
34
+ - optional smile/mouth state for speaking characters;
35
+ - stable skin, hair, proportions, marks, and silhouette.
36
+
37
+ Avoid baking a scene-specific grade, rim light, camera gimmick, or prop into the base identity asset. Create new state assets for wardrobe, wetness, wounds, dirt, age phase, transformation, gravity orientation, or action-critical pose.
38
+
39
+ ## Location assets
40
+
41
+ Create plates that communicate volume, material, landmarks, and one coherent light logic.
42
+
43
+ - Prefer a three-quarter view for spatial readability.
44
+ - Include visible anchors used for blocking.
45
+ - Separate day/night/weather/light states.
46
+ - Create reverse/background plates for dialogue-heavy locations.
47
+ - Keep people and movable action props out unless they are permanent environmental facts.
48
+ - Record which qualities a location reference controls: geography, materials, atmosphere, light, palette, or optics.
49
+
50
+ Do not let a location reference silently control the shot's framing unless explicitly intended.
51
+
52
+ ## Props, vehicles, creatures, and crowds
53
+
54
+ Define action-critical states separately: open/closed, intact/broken, clean/bloody, hidden/revealed, front/back interior, loaded/unloaded, wings folded/open.
55
+
56
+ Record scale with visible comparisons. For crowds, decide whether one crowd asset plus selected lead extras is more stable than many individual references.
57
+
58
+ ## Impossible-shot preparation
59
+
60
+ Move difficult truth into the input when prose repeatedly fails:
61
+
62
+ - rotate/invert the character state for shifted gravity;
63
+ - build a first/last frame;
64
+ - create a staging/layout reference;
65
+ - use a depth map for volume;
66
+ - use a motion reference for complex choreography;
67
+ - create a purpose-built prop or creature state;
68
+ - generate a new location angle rather than asking the video model to invent it.
69
+
70
+ This is not cheating; it is production design.
71
+
72
+ ## Surgical image revision
73
+
74
+ Preserve the original and change one thing:
75
+
76
+ ```text
77
+ CHANGE: the single intended difference.
78
+ PRESERVE: identity, composition, camera, wardrobe, props, lighting, shadows, palette, texture, and every unaffected element.
79
+ ```
80
+
81
+ Never run an approved identity source repeatedly through full-frame transformation when a masked/local edit can preserve it. Version every approved variant.
82
+
83
+ ## Stress testing
84
+
85
+ Test assets in the conditions that matter:
86
+
87
+ - multiple shot sizes and actions;
88
+ - real target locations and lighting;
89
+ - dialogue, laughter, distress, and unusual poses;
90
+ - alongside recurring co-stars and props;
91
+ - across the intended model/mode.
92
+
93
+ If the same failure survives prompt fixes, rebuild the asset or state. A beautiful sheet that fails motion is not production-ready.
94
+
95
+ ## Approval gate
96
+
97
+ Do not begin continuity-heavy production until the required cast, locations, props, states, voices, and world rules are named, versioned, and sufficiently stress-tested. For exploratory tests, label temporary assets and prevent them from becoming canonical accidentally.