@milenyumai/film-kit 1.4.2 → 1.4.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.
package/README.md CHANGED
@@ -1,8 +1,8 @@
1
1
  # Film-Kit
2
2
 
3
- Professional cinematic prompt-engineering kits for Claude Code, Cursor, GitHub Copilot, and Antigravity.
3
+ Professional cinematic prompt-engineering kits for OpenAI Codex App, Claude Code, Cursor, GitHub Copilot, and Antigravity.
4
4
 
5
- Film-Kit ships as a single repository with four npm packages:
5
+ Film-Kit ships as a single repository with five npm packages:
6
6
 
7
7
  | Package | Use case | Video route |
8
8
  |---|---|---|
@@ -10,6 +10,7 @@ Film-Kit ships as a single repository with four npm packages:
10
10
  | `@milenyumai/film-kit-multi` | Multi-agent parallel production | `veo31` or `kling-3.0` |
11
11
  | `@milenyumai/film-kit-hybrid` | Nano Banana stills + Kling video | fixed `kling-3.0` |
12
12
  | `@milenyumai/film-kit-hybrid-smart` | Nano Banana stills + smart Veo/Kling routing | dialogue-aware route |
13
+ | `@milenyumai/film-kit-studio` | Scenario to rendered media | fal.ai Nano Banana + Kling render pipeline |
13
14
 
14
15
  ## Release Highlights
15
16
 
@@ -21,16 +22,32 @@ Film-Kit ships as a single repository with four npm packages:
21
22
  - Voice-design aware audio contract with project-level `voiceCast`, shot-level `Audio Plan`, and backward-compatible `Audio direction` blocks.
22
23
  - Aligned quality gates across Claude Code, Cursor, Copilot, and Antigravity.
23
24
  - Stronger Kling 3.0 and Kling multi-shot guidance, including practical route rules and hard caps.
25
+ - OpenAI Codex App repo-scoped surfaces across packages:
26
+ - `.codex/config.toml` with full-auto local profile
27
+ - `.codex/agents/*.toml` custom agents that point back to Film-Kit roles
28
+ - `.agents/skills/*/SKILL.md` Codex skill mirror
29
+ - AGENTS.md project-root, trusted-project, and worktree bootstrap guidance
24
30
 
25
31
  ## Editors
26
32
 
27
33
  All packages generate professional project surfaces for:
28
34
 
35
+ - OpenAI Codex App
29
36
  - Claude Code
30
37
  - Cursor
31
38
  - GitHub Copilot
32
39
  - Antigravity
33
40
 
41
+ ## OpenAI Codex App Support
42
+
43
+ Film-Kit writes repo-scoped Codex files so the Codex desktop app can discover the project from the Git root:
44
+
45
+ - `.codex/config.toml` uses `approval_policy = "never"`, `sandbox_mode = "danger-full-access"`, and `[agents] max_threads = 6`, `max_depth = 1`.
46
+ - `.codex/agents/*.toml` defines minimal custom agents that read the canonical `.agent/agents/*.md` role files.
47
+ - `.agents/skills/*/SKILL.md` mirrors the final `.agent/skills` runtime so Codex skill discovery sees package-specific overrides.
48
+ - Studio adds a project-scoped fal.ai MCP entry at `.codex/config.toml` with `required = false`; missing `FAL_KEY` is reported during render rather than breaking init.
49
+ - If Codex opens a worktree without dependencies or build output, follow `AGENTS.md`: run `npm install` and `npm run build` before package commands.
50
+
34
51
  ## Package Guide
35
52
 
36
53
  ### 1. `@milenyumai/film-kit`
@@ -97,7 +114,8 @@ Key contracts:
97
114
 
98
115
  - one file per shot
99
116
  - route is always `kling-3.0`
100
- - app.kling custom storyboard cap: `3`
117
+ - app.kling custom storyboard cap: `4`
118
+ - Kling prompt code blocks start with `[CHARACTER / SUBJECT CONSISTENCY]`
101
119
  - hybrid-specific spatial realism rules for layered blocking
102
120
 
103
121
  ### 4. `@milenyumai/film-kit-hybrid-smart`
@@ -120,7 +138,8 @@ Key contracts:
120
138
 
121
139
  - per-section route declaration
122
140
  - Veo/Kling grammar separation
123
- - app.kling custom storyboard cap: `3`
141
+ - app.kling custom storyboard cap: `4`
142
+ - Kling-routed no-dialogue prompt code blocks start with `[CHARACTER / SUBJECT CONSISTENCY]`
124
143
  - shared spatial realism gate
125
144
 
126
145
  ## Shared Quality System
@@ -196,7 +215,7 @@ Smart hybrid:
196
215
  "defaultAspectRatio": "16:9",
197
216
  "nanoBananaImageSize": "2K",
198
217
  "klingPreset": "ultra-realism",
199
- "maxKlingCustomShots": 3
218
+ "maxKlingCustomShots": 4
200
219
  }
201
220
  ```
202
221
 
@@ -214,6 +233,7 @@ Package publishing happens from:
214
233
  - `packages/multi` for `@milenyumai/film-kit-multi`
215
234
  - `packages/hybrid` for `@milenyumai/film-kit-hybrid`
216
235
  - `packages/hybrid-smart` for `@milenyumai/film-kit-hybrid-smart`
236
+ - `packages/studio` for `@milenyumai/film-kit-studio`
217
237
 
218
238
  ## License
219
239
 
@@ -36,7 +36,7 @@ async function collectFiles(dir, prefix = "") {
36
36
  /**
37
37
  * Copy content files from the package's content/ directory into the target project's .agent/ directory.
38
38
  */
39
- async function copyContentFiles(rootDir, overwrite, templateVars) {
39
+ async function copyContentFiles(rootDir, overwrite, templateVars, targetRoot = ".agent", skillsOnly = false) {
40
40
  const contentDir = getContentDir();
41
41
  const contentExists = await exists(contentDir);
42
42
  if (!contentExists) {
@@ -46,7 +46,10 @@ async function copyContentFiles(rootDir, overwrite, templateVars) {
46
46
  const written = [];
47
47
  const skipped = [];
48
48
  for (const file of files) {
49
- const targetRelative = `.agent/${file.relativePath}`;
49
+ if (skillsOnly && !file.relativePath.startsWith("skills/")) {
50
+ continue;
51
+ }
52
+ const targetRelative = `${targetRoot}/${file.relativePath}`;
50
53
  const targetAbsolute = join(rootDir, targetRelative);
51
54
  const targetExists = await exists(targetAbsolute);
52
55
  if (targetExists && !overwrite) {
@@ -136,10 +139,19 @@ export async function configureAgents(options = {}) {
136
139
  modelDisplayName: getModelDisplayName(resolved.model)
137
140
  })
138
141
  : { written: [], skipped: [] };
142
+ const codexSkillMirrorResult = resolved.copyContent && resolved.platforms.includes("codex")
143
+ ? await copyContentFiles(resolved.rootDir, resolved.overwrite, {
144
+ outputDir: resolved.outputDir,
145
+ scenarioHint: resolved.scenarioHint,
146
+ model: resolved.model,
147
+ klingPreset: resolved.klingPreset,
148
+ modelDisplayName: getModelDisplayName(resolved.model)
149
+ }, ".agents", true)
150
+ : { written: [], skipped: [] };
139
151
  // 2. Generate platform-specific config files
140
152
  const files = buildProjectFiles(resolved);
141
- const written = [...contentResult.written];
142
- const skipped = [...contentResult.skipped];
153
+ const written = [...contentResult.written, ...codexSkillMirrorResult.written];
154
+ const skipped = [...contentResult.skipped, ...codexSkillMirrorResult.skipped];
143
155
  for (const [relativePath, content] of Object.entries(files)) {
144
156
  const absolutePath = join(resolved.rootDir, relativePath);
145
157
  const fileExists = await exists(absolutePath);
@@ -1,4 +1,4 @@
1
- const ALL_PLATFORMS = ["cursor", "claude", "copilot", "antigravity"];
1
+ const ALL_PLATFORMS = ["cursor", "claude", "copilot", "antigravity", "codex"];
2
2
  const DEFAULT_MODEL = "veo31";
3
3
  const DEFAULT_KLING_PRESET = "ultra-realism";
4
4
  export function resolveOptions(input) {
@@ -1,6 +1,25 @@
1
1
  function getModelDisplayName(model) {
2
2
  return model === "kling-3.0" ? "Kling 3.0" : "Google Flow + Veo 3.1";
3
3
  }
4
+ function tomlString(value) {
5
+ return JSON.stringify(value);
6
+ }
7
+ function buildCodexConfig() {
8
+ return `approval_policy = "never"
9
+ sandbox_mode = "danger-full-access"
10
+
11
+ [agents]
12
+ max_threads = 6
13
+ max_depth = 1
14
+ `;
15
+ }
16
+ function buildCodexAgentToml(name, description, developerInstructions) {
17
+ return `name = ${tomlString(name)}
18
+ description = ${tomlString(description)}
19
+ model_reasoning_effort = "high"
20
+ developer_instructions = ${tomlString(developerInstructions)}
21
+ `;
22
+ }
4
23
  export function buildProjectFiles(config) {
5
24
  const files = {};
6
25
  // Runtime model profile file is generated from selected model options.
@@ -28,6 +47,16 @@ export function buildProjectFiles(config) {
28
47
  if (config.platforms.includes("antigravity")) {
29
48
  files[".agent/skills/shotforge-generate/SKILL.md"] = buildAntigravitySkill(config);
30
49
  }
50
+ if (config.platforms.includes("codex")) {
51
+ files[".codex/config.toml"] = buildCodexConfig();
52
+ files[".codex/agents/prompt-engineer.toml"] = buildCodexAgentToml("prompt_engineer", "Film-Kit prompt engineer for single-agent cinematic shot generation, repair, and delivery QA.", `Read AGENTS.md first, then .agent/model-profile.md, .agent/MASTER.md, .agent/VOICE-DESIGN.md, .agent/agents/prompt-engineer.md, and the requested .agent/workflows/*.md file before acting.
53
+ Use .agents/skills for Codex App skill discovery; .agent remains the Film-Kit legacy runtime source.
54
+ Keep outputs under ${config.outputDir} unless the user explicitly changes the output contract.
55
+ For worktree runs, if node_modules or build outputs are missing and package.json exists, bootstrap with npm install and npm run build before running package commands.`);
56
+ if (config.platforms.includes("antigravity")) {
57
+ files[".agents/skills/shotforge-generate/SKILL.md"] = buildAntigravitySkill(config);
58
+ }
59
+ }
31
60
  return files;
32
61
  }
33
62
  /* ---------- AGENTS.md ---------- */
@@ -70,6 +99,14 @@ All rules, skills, and workflows are located under \`.agent/\`.
70
99
  | \`/recover\` | \`.agent/workflows/recover.md\` |
71
100
  | \`/finish\` | \`.agent/workflows/finish.md\` |
72
101
 
102
+ ## OpenAI Codex App
103
+ - Open the Git root as the Codex project root; Codex discovers \`AGENTS.md\`, \`.codex/config.toml\`, and \`.agents/skills/\` from that root.
104
+ - Repo-scoped Codex config lives in \`.codex/config.toml\`; Codex may ignore it until the project is trusted in the app.
105
+ - Codex skills live under \`.agents/skills/*/SKILL.md\`; \`.agent/skills\` remains the legacy Film-Kit runtime mirror for Claude/Cursor/Copilot/Antigravity.
106
+ - Codex custom agents live in \`.codex/agents/*.toml\` and point back to the canonical \`.agent/agents/*.md\` role files.
107
+ - Full-auto Codex profile: \`approval_policy = "never"\`, \`sandbox_mode = "danger-full-access"\`, \`[agents] max_threads = 6\`, \`max_depth = 1\`.
108
+ - Worktree bootstrap: if \`node_modules\` or build output is missing, run \`npm install\` and \`npm run build\` before package commands.
109
+
73
110
  ## Goal
74
111
  When the user asks \`/generate\`, convert the scenario into:
75
112
  - \`${config.outputDir}/project-info.md\` — Characters, settings, arc mapping
@@ -454,8 +491,8 @@ The first sentence carries the most weight. Every prompt MUST follow this order:
454
491
  - Model display: ${getModelDisplayName(config.model)}
455
492
  - Kling preset: \`${config.klingPreset}\`
456
493
  - Kling transition mode: Start+End (when model is kling-3.0)
457
- - Motion timeline: first then finally (when model is kling-3.0)
458
- - Kling multi-shot mode: single-transition by default; custom storyboard only for 2-3 meaningful phases (when model is kling-3.0)
494
+ - Kling professional blocks: \`[CHARACTER / SUBJECT CONSISTENCY]\` through \`[NEGATIVE PROMPT]\` (when model is kling-3.0)
495
+ - Kling multi-shot mode: single-transition by default; custom storyboard only for 2-4 meaningful phases, max 4 custom shots (when model is kling-3.0)
459
496
 
460
497
  ## Shot File Format (SHOTNN.md) — SINGLE FILE, ALL INCLUSIVE
461
498
 
@@ -925,34 +962,28 @@ Limit the amount of change per clip for realism:
925
962
  The official Kling app surface exposes custom storyboard-like shot prompting and optional end-frame anchoring.
926
963
  Use it as a selective upgrade, not a default:
927
964
  - **single-transition**: default mode for one clean action arc, reveal, or emotional turn
928
- - **custom-storyboard**: only when one clip truly needs **2-3 editorially distinct phases**
929
- - **hard cap in this toolkit:** 3 custom storyboard shots per video generation
965
+ - **custom-storyboard**: only when one clip truly needs **2-4 editorially distinct phases**
966
+ - **hard cap in this toolkit:** 4 custom storyboard shots per video generation
930
967
  - **never storyboard micro-beats:** one glance, one finger move, one tiny prop touch, one breath shift
931
- - if the beat needs 4+ phases, split into chained videos instead of overloading one Kling prompt
932
-
933
- ### Golden Prompt Skeleton (Start+End)
934
-
935
- The prompt's job is to tell the model **how to generate the in-between frames**:
968
+ - if the beat needs 5+ phases, split into chained videos instead of overloading one Kling prompt
936
969
 
937
- 1. **Scene anchoring** (1 sentence)
938
- 2. **What stays the same** (identity, costume, background stability)
939
- 3. **Motion timeline** (2-4 steps: first → then → finally)
940
- 4. **Camera language** (shot + movement + stabilization)
941
- 5. **Realism constraints** (physically plausible, no warping, stable background)
942
- 6. **Negative prompt** (artifact cleanup)
970
+ ### Golden Prompt Skeleton (Kling 3.0 Professional Multishot)
943
971
 
944
- **Writing "what stays the same" (critical for quality):**
945
- - "Same identity"
946
- - "Background remains stable"
947
- - "No rubbery motion"
948
- - "No melting/warping"
972
+ Keep \`AUDIO PLAN\` and route metadata outside the prompt code block. The Kling prompt code block starts with \`[CHARACTER / SUBJECT CONSISTENCY]\` and tells the model how the scene evolves:
949
973
 
950
- These prevent the model from taking shortcuts.
974
+ 1. **[CHARACTER / SUBJECT CONSISTENCY]** identity, outfit, face, prop, and drift locks
975
+ 2. **[CORE INTENT]** tone and start-to-final evolution
976
+ 3. **[TOTAL DURATION]** total duration plus key action duration
977
+ 4. **[VISUAL STYLE]** time of day, lighting family, depth of field, realism level
978
+ 5. **[CAMERA]** position, angle, named 24-move lexicon movement, stabilization, and contradictions to avoid
979
+ 6. **[SHOT N | time range]** up to 4 custom storyboard shots; each shot has one job, subject action, camera behavior, background behavior, and handoff trigger
980
+ 7. **[AUDIO]** ambience, body/cloth/object sounds, main event sounds, and sound exclusions
981
+ 8. **[TIMING RULES]** real-time pacing, no slow motion/speed ramps unless intended, key action faster than the rest
982
+ 9. **[BACKGROUND RULES]** behavioral verbs for extras/environment; natural, uneven, unsynchronized motion
983
+ 10. **[FINAL FRAME PRIORITY]** last 8-12 frames converge toward the desired final composition
984
+ 11. **[NEGATIVE PROMPT]** targeted cleanup terms
951
985
 
952
- **Describing motion over time (model's preferred format):**
953
- - **First:** micro movement (breathing, blink, small head shift)
954
- - **Then:** main change (outfit transform / object move)
955
- - **Finally:** settle into end frame pose/composition
986
+ **Timing discipline:** The total clip can be 8 seconds while the key action lasts only 0.3 seconds. Write both, so Kling does not pad fast actions with theatrical waiting.
956
987
 
957
988
  > Don't describe only the result — describe the **path** between start and end.
958
989
 
@@ -1014,12 +1045,62 @@ Use for AI artifact removal:
1014
1045
 
1015
1046
  **Template A — Minimal Realism (safest):**
1016
1047
  \`\`\`
1017
- Photorealistic. Soft natural light. Same identity and stable background as the start frame. First: subtle breathing and micro facial expression changes. Then: a gentle posture shift. Finally: settle precisely into the pose and composition of the end frame. Tripod-locked shot, shallow depth of field, natural motion blur, physically plausible motion, no warping.
1048
+ [CHARACTER / SUBJECT CONSISTENCY]
1049
+ Maintain the same subject across all shots: same face, same outfit silhouette, same hair, same props. No identity drift.
1050
+ [CORE INTENT]
1051
+ A grounded cinematic transition from a quiet starting pose into a natural final pose.
1052
+ [TOTAL DURATION]
1053
+ 5 seconds total; the key posture shift lasts under 1 second.
1054
+ [VISUAL STYLE]
1055
+ Photorealistic, soft natural light, shallow depth of field.
1056
+ [CAMERA]
1057
+ Tripod-locked camera, no angle jump.
1058
+ [SHOT 1 | 0.0s - 2.0s]
1059
+ Subtle breathing and micro facial expression changes; background remains stable.
1060
+ [SHOT 2 | 2.0s - 4.2s]
1061
+ The subject performs one gentle posture shift with physically plausible motion.
1062
+ [SHOT 3 | 4.2s - 5.0s]
1063
+ The subject settles into the end-frame pose and composition.
1064
+ [AUDIO]
1065
+ Natural room tone only. No music.
1066
+ [TIMING RULES]
1067
+ Real-time only. No slow motion. No speed ramps.
1068
+ [BACKGROUND RULES]
1069
+ Background remains stable and alive without jitter.
1070
+ [FINAL FRAME PRIORITY]
1071
+ Final frames match the end frame exactly.
1072
+ [NEGATIVE PROMPT]
1073
+ warping, rubbery motion, melted textures, flicker, identity drift, unwanted text, watermark
1018
1074
  \`\`\`
1019
1075
 
1020
1076
  **Template B — Outfit / Product Swap (commercial):**
1021
1077
  \`\`\`
1022
- Photorealistic seamless swap. Same subject and pose, consistent lighting and color grade. First: slight fabric movement. Then: the outfit/product transitions smoothly with realistic material behavior (no melting, no distortion). Finally: match the end frame exactly. Stable skin texture, stable background, clean edges, no flicker.
1078
+ [CHARACTER / SUBJECT CONSISTENCY]
1079
+ Maintain the same subject, pose family, skin texture, background, and lighting. Only the outfit/product changes.
1080
+ [CORE INTENT]
1081
+ A clean commercial transformation from the start look into the end look.
1082
+ [TOTAL DURATION]
1083
+ 8 seconds total; the visible swap happens smoothly over the middle 3 seconds.
1084
+ [VISUAL STYLE]
1085
+ Photorealistic commercial lighting, consistent color grade.
1086
+ [CAMERA]
1087
+ Locked camera, no orbit, no sudden angle jump.
1088
+ [SHOT 1 | 0.0s - 2.0s]
1089
+ Slight natural fabric movement; subject and background remain stable.
1090
+ [SHOT 2 | 2.0s - 5.5s]
1091
+ The outfit/product transitions with realistic material behavior, clean edges, no melting.
1092
+ [SHOT 3 | 5.5s - 8.0s]
1093
+ The subject settles into the end-frame look; lighting and scale remain consistent.
1094
+ [AUDIO]
1095
+ Subtle cloth/object texture only. No music unless requested.
1096
+ [TIMING RULES]
1097
+ Real-time only. No speed ramps.
1098
+ [BACKGROUND RULES]
1099
+ Background remains stable and secondary.
1100
+ [FINAL FRAME PRIORITY]
1101
+ Final frames match the end frame exactly.
1102
+ [NEGATIVE PROMPT]
1103
+ melting, distortion, plastic skin, flicker, identity drift, edge artifacts, text, watermark
1023
1104
  \`\`\`
1024
1105
 
1025
1106
  **Template C — Loop:**
@@ -1076,10 +1157,10 @@ Treat Kling multi-shot as **storyboarded internal progression**, not as a licens
1076
1157
 
1077
1158
  **Rules:**
1078
1159
  1. Default to **single-transition** whenever one camera path can carry the beat.
1079
- 2. Use custom storyboard only for **2-3 distinct internal phases** with different framing/action purpose.
1160
+ 2. Use custom storyboard only for **2-4 distinct internal phases** with different framing/action purpose.
1080
1161
  3. Keep each storyboard phase short, clear, and concrete: what changed, what stayed locked, why the cut exists.
1081
- 4. Hard cap for this toolkit: **3 storyboard shots per generation** in app.kling-oriented workflows.
1082
- 5. If the sequence wants 4+ phases, split into multiple chained generations.
1162
+ 4. Hard cap for this toolkit: **4 storyboard shots per generation** in app.kling-oriented workflows.
1163
+ 5. If the sequence wants 5+ phases, split into multiple chained generations.
1083
1164
  6. Never assign separate storyboard shots to micro-actions that would read better inside one stronger shot.
1084
1165
 
1085
1166
  **Preferred storyboard jobs:**
@@ -1,4 +1,4 @@
1
- export type SupportedPlatform = "cursor" | "claude" | "copilot" | "antigravity";
1
+ export type SupportedPlatform = "cursor" | "claude" | "copilot" | "antigravity" | "codex";
2
2
  export type SupportedModel = "veo31" | "kling-3.0";
3
3
  export type KlingPreset = "ultra-realism" | "balanced" | "custom";
4
4
  export interface AgentConfigOptions {
@@ -107,10 +107,10 @@ The official Kling app surface exposes start/end control, optional end-frame anc
107
107
  Use that capability with restraint:
108
108
 
109
109
  - default to a single Start+End transition prompt when the beat is one continuous motion arc, one reveal, or one emotional turn
110
- - use custom storyboard only when the clip truly contains **2-3 distinct editorial phases** with different visual jobs
111
- - in this toolkit, cap app.kling custom storyboard mode at **3 custom shots** per video
110
+ - use custom storyboard only when the clip truly contains **2-4 distinct editorial phases** with different visual jobs
111
+ - in this toolkit, cap app.kling custom storyboard mode at **4 custom shots** per video
112
112
  - never split one micro gesture, blink, glance, prop touch, or tiny head turn into separate storyboard shots
113
- - if a beat needs 4+ distinct phases, split into chained videos instead of bloating one generation
113
+ - if a beat needs 5+ distinct phases, split into chained videos instead of bloating one generation
114
114
  - every storyboard shot must earn a clear job: establish / action / reveal / reaction / resolve
115
115
 
116
116
  ## Video Prompt Structure (Veo-Oriented Default Template)
@@ -539,20 +539,55 @@ plastic skin, waxy skin, on-screen text, watermark, logo, cartoon style, CGI loo
539
539
  > **Model-specific section.** Read `.agent/model-profile.md` for full Kling rules.
540
540
  > Skip this section if active model is Veo 3.1.
541
541
 
542
- ### Golden Prompt Skeleton (Start+End)
543
-
544
- When using Kling Start+End mode, the prompt tells the model **how to generate in-between frames**:
545
-
546
- ```
547
- 1. [Scene anchoring] 1 sentence: what is this scene?
548
- 2. [What stays the same] "Same identity", "stable background", "no rubbery motion"
549
- 3. [Motion timeline] — "First: [micro]; Then: [main change]; Finally: [settle into end pose]"
550
- 4. [Camera language] — shot type + movement + stabilization
551
- 5. [Realism constraints] "physically plausible, no warping, stable background"
552
- 6. [Negative prompt] — artifact cleanup set
553
- ```
554
-
555
- > **Key difference from Veo:** Don't just describe start and end — describe the **path** between them.
542
+ ### Golden Prompt Skeleton (Kling 3.0 Professional Multishot)
543
+
544
+ When using Kling Start+End or custom storyboard mode, keep `AUDIO PLAN` and route metadata outside the prompt code block. The Kling prompt code block itself should start with `[CHARACTER / SUBJECT CONSISTENCY]` and read like a production brief:
545
+
546
+ ```
547
+ [CHARACTER / SUBJECT CONSISTENCY]
548
+ Maintain the same subject across all shots: same [face / silhouette / outfit / hair / accessories / identity anchors]. No identity drift, outfit drift, face drift, or prop drift.
549
+
550
+ [CORE INTENT]
551
+ A [tone] scene that evolves from [initial state] into [final state]. The video must feel [grounded / cinematic / documentary-like / tense / playful]. No [melodrama / exaggerated posing / theatrical hesitation].
552
+
553
+ [TOTAL DURATION]
554
+ [8 seconds total]. The key action lasts [0.Xs / X.Xs] and should not be stretched.
555
+
556
+ [VISUAL STYLE]
557
+ [time of day]. [lighting family]. [depth of field]. [overall realism / cinematic quality].
558
+
559
+ [CAMERA]
560
+ Use a [camera angle] camera. The camera [named 24-move lexicon movement] in a [smooth / handheld controlled / locked] manner. No contradictory camera behavior.
561
+
562
+ [SHOT 1 | 0.0s - X.Xs]
563
+ At the beginning, [starting state]. The subject [one main movement]. The camera [one behavior]. The background [behavior]. By the end, [transition trigger].
564
+
565
+ [SHOT 2 | X.Xs - X.Xs]
566
+ The shift happens. The subject [key change]. This action feels [fast / restrained / fluid / abrupt / weighty]. The background [natural unsynchronized reaction]. The camera [behavior].
567
+
568
+ [SHOT 3 | X.Xs - X.Xs]
569
+ The action continues into [next state]. The subject [movement]. The background [behavior]. This feels like [continuation / reaction / escalation], not a pose.
570
+
571
+ [SHOT 4 | X.Xs - X.Xs]
572
+ The scene resolves into [final state]. The subject [final action / stillness / expression]. The background [last state]. The camera [settle / final movement].
573
+
574
+ [AUDIO]
575
+ [ambience]. [body / cloth / object sounds]. [main event sounds]. No music, no score, no unrelated sound effects.
576
+
577
+ [TIMING RULES]
578
+ Real-time only. No slow motion. No speed ramps unless explicitly intended. The key action is faster than the rest of the clip. Only a micro-pause before the final beat.
579
+
580
+ [BACKGROUND RULES]
581
+ Background elements remain [blurred / secondary / subtle / alive]. Their behavior is [natural / uneven / unsynchronized / restrained]. No frozen extras. No repeated motion loops.
582
+
583
+ [FINAL FRAME PRIORITY]
584
+ The last [8 to 12] frames converge toward [desired final composition / reference mood / framing / emotional intensity].
585
+
586
+ [NEGATIVE PROMPT]
587
+ robotic movement, stiff animation, repeated loops, frozen extras, face drift, outfit drift, bad anatomy, frame blending, flicker, unwanted text, watermark
588
+ ```
589
+
590
+ > **Key difference from Veo:** Don't just describe start and end — describe the **path** between them.
556
591
 
557
592
  ### When to Skip Prompts (Promptless Mode)
558
593
 
@@ -42,7 +42,7 @@ All generated files must keep `SHOTNN.md` naming.
42
42
  Next shot = SHOT[last + 1]
43
43
  Chain status = CHAINED from SHOT[last]_END
44
44
  First frame code block must explicitly reuse SHOT[last]_END
45
- If model is kling-3.0: keep Start+End transition mode and first/then/finally motion timeline
45
+ If model is kling-3.0: keep route metadata and `AUDIO PLAN` outside the prompt code block; the prompt code block starts with `[CHARACTER / SUBJECT CONSISTENCY]` and includes timing, background, final-frame, and negative prompt blocks
46
46
  ```
47
47
 
48
48
  ### 4. Write New Shots
@@ -90,7 +90,7 @@ For EACH shot:
90
90
  3. If model is `kling-3.0`, perform Kling Frame Prep (see below).
91
91
  4. If model is `kling-3.0`, choose Kling execution mode:
92
92
  - `single-transition` for one strong motion arc or reveal
93
- - `custom-storyboard` only for 2-3 distinct editorial phases
93
+ - `custom-storyboard` only for 2-4 distinct editorial phases
94
94
  4. Reuse or create the correct `voiceCast` entry for any speaking character or narrator.
95
95
  5. Generate main shot prompts (`ILK/İLK FRAME`, `SON FRAME`, `VIDEO`).
96
96
  5. `ILK/İLK FRAME` section MUST always include a fenced code block.
@@ -133,11 +133,13 @@ Before writing prompts, design the Start→End transition:
133
133
  - 5s = 1 major change
134
134
  - 10s = 2-3 staged changes
135
135
  - 15s = complex multi-step
136
- 3. **Execution mode:** Default to `single-transition`; use `custom-storyboard` only when the shot truly has 2-3 meaningful internal phases.
137
- 4. **Motion timeline:** Write 2-4 steps: `first then → finally`.
138
- 5. **Face/hands stability:** Match orientations between start and end avoid >45° face rotation.
139
- 6. **Camera safety:** Use the 24-move cinematic lexicon; prefer safe simple moves (Dolly In/Out, Pan Left/Right, Tilt Up/Down, Truck Left/Right, Pedestal Up/Down, Tracking Shot, Steadicam Movement) before advanced hybrids.
140
- 7. **Anti-fragmentation:** Do not turn one glance, gesture, or prop touch into separate micro-shots. If custom storyboard is used, cap it at 3 stages and make each stage editorially distinct.
136
+ 3. **Execution mode:** Default to `single-transition`; use `custom-storyboard` only when the shot truly has 2-4 meaningful internal phases.
137
+ 4. **Professional Kling block format:** Keep `AUDIO PLAN` and route metadata outside the prompt code block; start the Kling prompt code block with `[CHARACTER / SUBJECT CONSISTENCY]`.
138
+ 5. **Required blocks:** Include `[CORE INTENT]`, `[TOTAL DURATION]`, `[VISUAL STYLE]`, `[CAMERA]`, `[SHOT N | time range]`, `[AUDIO]`, `[TIMING RULES]`, `[BACKGROUND RULES]`, `[FINAL FRAME PRIORITY]`, and `[NEGATIVE PROMPT]`.
139
+ 6. **Storyboard timing:** Every custom storyboard shot must have a time range, one main job, subject action, camera behavior, background behavior, and handoff/final trigger.
140
+ 7. **Face/hands stability:** Match orientations between start and end avoid >45° face rotation.
141
+ 8. **Camera safety:** Use the 24-move cinematic lexicon; prefer safe simple moves (Dolly In/Out, Pan Left/Right, Tilt Up/Down, Truck Left/Right, Pedestal Up/Down, Tracking Shot, Steadicam Movement) before advanced hybrids.
142
+ 9. **Anti-fragmentation:** Do not turn one glance, gesture, or prop touch into separate micro-shots. If custom storyboard is used, cap it at 4 stages and make each stage editorially distinct.
141
143
 
142
144
  #### Veo Gate (when model is veo31)
143
145
 
@@ -147,7 +149,8 @@ Before writing prompts, design the Start→End transition:
147
149
 
148
150
  #### Kling Gate (when model is kling-3.0)
149
151
 
150
- - [ ] `first then finally` motion timeline in VIDEO prompts
152
+ - [ ] Kling prompt code block starts with `[CHARACTER / SUBJECT CONSISTENCY]`
153
+ - [ ] Kling prompt includes `[TIMING RULES]`, `[BACKGROUND RULES]`, `[FINAL FRAME PRIORITY]`, and `[NEGATIVE PROMPT]`
151
154
  - [ ] "What stays the same" explicitly stated (identity, background, costume)
152
155
  - [ ] Camera movement is named from the 24-move cinematic lexicon and kept simple/safe unless the beat requires an advanced hybrid
153
156
  - [ ] `stable background`, `no warping`, `physically plausible` constraints
@@ -156,8 +159,8 @@ Before writing prompts, design the Start→End transition:
156
159
  - [ ] Start/end frames verified for same visual universe
157
160
  - [ ] Dialogue uses `"quotation marks"` with tone markers (Kling inline format)
158
161
  - [ ] Eyelines, plane map, and shared-light logic stay consistent across start/end frames
159
- - [ ] Defaulted to `single-transition` unless 2-3 distinct internal phases genuinely require custom storyboard
160
- - [ ] If custom storyboard is used: maximum 3 stages, no decorative micro-beats, and each stage changes function/framing/action
162
+ - [ ] Defaulted to `single-transition` unless 2-4 distinct internal phases genuinely require custom storyboard
163
+ - [ ] If custom storyboard is used: maximum 4 stages, no decorative micro-beats, time ranges present, and each stage changes function/framing/action
161
164
 
162
165
  ### 4. Validation Pass (Mandatory Before Completion)
163
166
 
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@milenyumai/film-kit",
3
- "version": "1.4.2",
4
- "description": "Hollywood-standard cinematic prompt engineering toolkit with model profiles (Veo 3.1 / Kling 3.0). Auto-configures AI agents (Cursor, Claude Code, VS Code Copilot, Antigravity) with production-grade shot generation system.",
3
+ "version": "1.4.3",
4
+ "description": "Hollywood-standard cinematic prompt engineering toolkit with model profiles (Veo 3.1 / Kling 3.0). Auto-configures AI agents (OpenAI Codex App, Cursor, Claude Code, VS Code Copilot, Antigravity) with production-grade shot generation system.",
5
5
  "type": "module",
6
6
  "main": "./build/index.js",
7
7
  "types": "./build/index.d.ts",
@@ -46,6 +46,9 @@
46
46
  "claude-code",
47
47
  "copilot",
48
48
  "antigravity",
49
+ "codex",
50
+ "openai-codex",
51
+ "codex-app",
49
52
  "prompt-engineering",
50
53
  "cinematic",
51
54
  "hollywood",