@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 +25 -5
- package/build/lib/configure.js +16 -4
- package/build/lib/defaults.js +1 -1
- package/build/lib/templates.js +111 -30
- package/build/lib/types.d.ts +1 -1
- package/content/skills/prompt-structure/SKILL.md +52 -17
- package/content/workflows/chain.md +1 -1
- package/content/workflows/generate.md +12 -9
- package/package.json +5 -2
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
|
|
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: `
|
|
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: `
|
|
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":
|
|
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
|
|
package/build/lib/configure.js
CHANGED
|
@@ -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
|
-
|
|
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);
|
package/build/lib/defaults.js
CHANGED
|
@@ -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) {
|
package/build/lib/templates.js
CHANGED
|
@@ -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
|
-
-
|
|
458
|
-
- Kling multi-shot mode: single-transition by default; custom storyboard only for 2-
|
|
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-
|
|
929
|
-
- **hard cap in this toolkit:**
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
**
|
|
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
|
-
|
|
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
|
-
|
|
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-
|
|
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: **
|
|
1082
|
-
5. If the sequence wants
|
|
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:**
|
package/build/lib/types.d.ts
CHANGED
|
@@ -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-
|
|
111
|
-
- in this toolkit, cap app.kling custom storyboard mode at **
|
|
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
|
|
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 (
|
|
543
|
-
|
|
544
|
-
When using Kling Start+End mode, the prompt
|
|
545
|
-
|
|
546
|
-
```
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
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
|
|
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-
|
|
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-
|
|
137
|
-
4. **
|
|
138
|
-
5. **
|
|
139
|
-
6. **
|
|
140
|
-
7. **
|
|
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
|
-
- [ ]
|
|
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-
|
|
160
|
-
- [ ] If custom storyboard is used: maximum
|
|
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.
|
|
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",
|