@milenyumai/film-kit 1.4.1 → 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 +195 -70
- package/build/lib/types.d.ts +1 -1
- package/content/ARCHITECTURE.md +6 -3
- package/content/MASTER.md +10 -7
- package/content/RULES.md +8 -6
- package/content/agents/prompt-engineer.md +9 -7
- package/content/skills/coverage-system/SKILL.md +1 -1
- package/content/skills/frame-chaining/SKILL.md +1 -1
- package/content/skills/prompt-structure/SKILL.md +142 -60
- package/content/skills/semantic-consistency/SKILL.md +94 -0
- package/content/skills/spatial-blocking/SKILL.md +1 -0
- package/content/skills/visual-modes/SKILL.md +12 -8
- package/content/workflows/chain.md +4 -1
- package/content/workflows/finish.md +5 -1
- package/content/workflows/generate.md +39 -15
- package/content/workflows/recover.md +6 -1
- package/content/workflows/safety-check.md +37 -3
- 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) {
|