@milenyumai/film-kit 1.0.0
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/LICENSE +21 -0
- package/README.md +89 -0
- package/build/index.d.ts +2 -0
- package/build/index.js +1 -0
- package/build/lib/configure.d.ts +2 -0
- package/build/lib/configure.js +119 -0
- package/build/lib/defaults.d.ts +2 -0
- package/build/lib/defaults.js +12 -0
- package/build/lib/fs.d.ts +3 -0
- package/build/lib/fs.js +23 -0
- package/build/lib/templates.d.ts +2 -0
- package/build/lib/templates.js +583 -0
- package/build/lib/types.d.ts +25 -0
- package/build/lib/types.js +1 -0
- package/build/postinstall.js +22 -0
- package/content/ARCHITECTURE.md +132 -0
- package/content/FILM-KIT-INFO.md +116 -0
- package/content/MASTER.md +689 -0
- package/content/RULES.md +233 -0
- package/content/agents/prompt-engineer.md +258 -0
- package/content/skills/audio-design/SKILL.md +307 -0
- package/content/skills/coverage-system/SKILL.md +681 -0
- package/content/skills/frame-chaining/SKILL.md +342 -0
- package/content/skills/prompt-structure/SKILL.md +429 -0
- package/content/skills/reference-locking/SKILL.md +303 -0
- package/content/skills/safety-compliance/SKILL.md +242 -0
- package/content/skills/visual-modes/SKILL.md +294 -0
- package/content/workflows/chain.md +106 -0
- package/content/workflows/finish.md +108 -0
- package/content/workflows/generate.md +207 -0
- package/content/workflows/safety-check.md +149 -0
- package/package.json +58 -0
|
@@ -0,0 +1,583 @@
|
|
|
1
|
+
export function buildProjectFiles(config) {
|
|
2
|
+
const files = {};
|
|
3
|
+
if (config.includeAgentsMd) {
|
|
4
|
+
files["AGENTS.md"] = buildAgentsMd(config);
|
|
5
|
+
}
|
|
6
|
+
if (config.platforms.includes("cursor")) {
|
|
7
|
+
files[".cursorrules"] = buildCursorLegacyRules(config);
|
|
8
|
+
files[".cursor/rules/global.mdc"] = buildCursorMdcRules(config);
|
|
9
|
+
}
|
|
10
|
+
if (config.platforms.includes("claude")) {
|
|
11
|
+
files["CLAUDE.md"] = buildClaudeRoot(config);
|
|
12
|
+
files[".claude/CLAUDE.md"] = buildClaudeLocal(config);
|
|
13
|
+
files[".claude/rules/generate-flow.md"] = buildClaudeRuleGenerateFlow(config);
|
|
14
|
+
files[".claude/rules/output-contract.md"] = buildClaudeRuleOutputContract(config);
|
|
15
|
+
files[".claude/settings.json"] = buildClaudeSettings();
|
|
16
|
+
files[".claude/settings.local.json"] = buildClaudeSettingsLocal();
|
|
17
|
+
}
|
|
18
|
+
if (config.platforms.includes("copilot")) {
|
|
19
|
+
files[".github/copilot-instructions.md"] = buildCopilotInstructions(config);
|
|
20
|
+
files[".github/instructions/shotforge.instructions.md"] = buildCopilotScopedInstructions(config);
|
|
21
|
+
}
|
|
22
|
+
if (config.platforms.includes("antigravity")) {
|
|
23
|
+
files[".agent/skills/shotforge-generate/SKILL.md"] = buildAntigravitySkill(config);
|
|
24
|
+
}
|
|
25
|
+
return files;
|
|
26
|
+
}
|
|
27
|
+
/* ---------- AGENTS.md ---------- */
|
|
28
|
+
function buildAgentsMd(config) {
|
|
29
|
+
return `# Film-Kit Agent Contract — Hollywood Standard
|
|
30
|
+
|
|
31
|
+
> Professional Cinematic Prompt Engineering for Google Flow + Veo 3.1
|
|
32
|
+
|
|
33
|
+
## System Architecture
|
|
34
|
+
|
|
35
|
+
This project uses the **Film-Kit** prompt engineering system.
|
|
36
|
+
All rules, skills, and workflows are located under \`.agent/\`.
|
|
37
|
+
|
|
38
|
+
### Entry Points
|
|
39
|
+
- **Master Rules:** \`.agent/MASTER.md\` — Complete production ruleset (690 lines)
|
|
40
|
+
- **Architecture:** \`.agent/ARCHITECTURE.md\` — System map & quick reference
|
|
41
|
+
- **Agent:** \`.agent/agents/prompt-engineer.md\` — Senior prompt engineer agent
|
|
42
|
+
|
|
43
|
+
### Skills (7 modules)
|
|
44
|
+
| Skill | Path | Priority |
|
|
45
|
+
|-------|------|----------|
|
|
46
|
+
| Safety Compliance | \`.agent/skills/safety-compliance/SKILL.md\` | P0 — ALWAYS |
|
|
47
|
+
| Reference Locking | \`.agent/skills/reference-locking/SKILL.md\` | P1 — When refs provided |
|
|
48
|
+
| Frame Chaining | \`.agent/skills/frame-chaining/SKILL.md\` | P2 — ALWAYS |
|
|
49
|
+
| Coverage System | \`.agent/skills/coverage-system/SKILL.md\` | P2 — ALWAYS (mandatory) |
|
|
50
|
+
| Visual Modes | \`.agent/skills/visual-modes/SKILL.md\` | P4 — ALWAYS |
|
|
51
|
+
| Audio Design | \`.agent/skills/audio-design/SKILL.md\` | P4 — When dialogue/SFX |
|
|
52
|
+
| Prompt Structure | \`.agent/skills/prompt-structure/SKILL.md\` | P5 — ALWAYS |
|
|
53
|
+
|
|
54
|
+
### Workflows (slash commands)
|
|
55
|
+
| Command | Workflow File |
|
|
56
|
+
|---------|---------------|
|
|
57
|
+
| \`/generate\` | \`.agent/workflows/generate.md\` |
|
|
58
|
+
| \`/chain\` | \`.agent/workflows/chain.md\` |
|
|
59
|
+
| \`/safety-check\` | \`.agent/workflows/safety-check.md\` |
|
|
60
|
+
| \`/finish\` | \`.agent/workflows/finish.md\` |
|
|
61
|
+
|
|
62
|
+
## Goal
|
|
63
|
+
When the user asks \`/generate\`, convert the scenario into:
|
|
64
|
+
- \`${config.outputDir}/project-info.md\` — Characters, settings, arc mapping
|
|
65
|
+
- \`${config.outputDir}/shots/SHOT01.md, SHOT02.md, ...\` — Production shot files (with coverage included)
|
|
66
|
+
- \`${config.outputDir}/_index.md\` — Shot list with chain & status tracking
|
|
67
|
+
|
|
68
|
+
## Input
|
|
69
|
+
- Preferred scenario file: \`${config.scenarioHint}\`
|
|
70
|
+
- If there is an active/selected markdown file in editor, use that first.
|
|
71
|
+
|
|
72
|
+
## Output Contract
|
|
73
|
+
Each \`SHOTNN.md\` is a **single file** containing ALL shot details:
|
|
74
|
+
- 🔗 Chain status (FIRST / CHAINED / CHAIN BREAK)
|
|
75
|
+
- İLK FRAME (start frame image prompt — min 60 words)
|
|
76
|
+
- SON FRAME (end frame image prompt — min 60 words)
|
|
77
|
+
- VİDEO (video prompt with audio direction — min 80 words)
|
|
78
|
+
- COVERAGE SHOTS (2-3 coverage shots within same file — each min 60 words)
|
|
79
|
+
- 🇹🇷 Turkish summary for each section
|
|
80
|
+
- Avoid line on EVERY prompt
|
|
81
|
+
|
|
82
|
+
## Critical Rules
|
|
83
|
+
- **AUTO-ANONYMOUS:** Replace ALL real person names with physical descriptions automatically
|
|
84
|
+
- **AUTO-SAFETY:** Proactively reframe content that may trigger safety filters
|
|
85
|
+
- **Frame Chaining:** Last frame of SHOT[N] = First frame of SHOT[N+1]
|
|
86
|
+
- **Coverage Mandatory:** Every main shot includes 2-3 coverage sub-shots in same file
|
|
87
|
+
- **Music: NONE** by default (user must explicitly request)
|
|
88
|
+
- **SLOW BURN:** 8-second duration, split actions into multiple shots
|
|
89
|
+
`;
|
|
90
|
+
}
|
|
91
|
+
/* ---------- CURSOR ---------- */
|
|
92
|
+
function buildCursorLegacyRules(config) {
|
|
93
|
+
return `# Film-Kit Rules — Hollywood Standard Cinematic Prompt Engineering
|
|
94
|
+
# Google Flow + Veo 3.1 | ALL GENRES SUPPORTED
|
|
95
|
+
|
|
96
|
+
## CRITICAL: SKILL LOADING PROTOCOL
|
|
97
|
+
Before generating ANY prompts, read the appropriate skill files from .agent/skills/:
|
|
98
|
+
|
|
99
|
+
| Skill | Path | When |
|
|
100
|
+
|-------|------|------|
|
|
101
|
+
| Safety & Celebrity Ban | .agent/skills/safety-compliance/SKILL.md | ALWAYS |
|
|
102
|
+
| Reference Locking | .agent/skills/reference-locking/SKILL.md | When refs provided |
|
|
103
|
+
| Frame Chaining | .agent/skills/frame-chaining/SKILL.md | Multi-shot projects |
|
|
104
|
+
| Coverage System | .agent/skills/coverage-system/SKILL.md | ALWAYS (mandatory) |
|
|
105
|
+
| Visual Modes | .agent/skills/visual-modes/SKILL.md | All visual work |
|
|
106
|
+
| Audio Design | .agent/skills/audio-design/SKILL.md | Dialogue/SFX needed |
|
|
107
|
+
| Prompt Structure | .agent/skills/prompt-structure/SKILL.md | ALWAYS |
|
|
108
|
+
|
|
109
|
+
## UNIVERSAL RULES
|
|
110
|
+
1. AUTO-ANONYMOUS: Replace ALL real person names with physical descriptions. NEVER use celebrity names.
|
|
111
|
+
2. AUTO-SAFETY: Proactively reframe content that may trigger safety filters.
|
|
112
|
+
3. Prompts ALWAYS in English. Headers in Turkish allowed. Dialogue preserved in original language.
|
|
113
|
+
4. SLOW BURN: 8s default duration. Split actions into multiple shots. "Ilmek ilmek islemek."
|
|
114
|
+
5. Music: NONE by default. User must explicitly request.
|
|
115
|
+
6. EVERY prompt must have an Avoid line. No exceptions.
|
|
116
|
+
7. Coverage shots mandatory (2-3 per main shot, min 60 words each, included in same file).
|
|
117
|
+
8. Frame chaining: Last frame of SHOT[N] = First frame of SHOT[N+1].
|
|
118
|
+
9. ONE FILE PER SHOT: Each SHOTNN.md contains main shot + all coverage shots.
|
|
119
|
+
|
|
120
|
+
## WORKFLOWS
|
|
121
|
+
- /generate → Read .agent/workflows/generate.md
|
|
122
|
+
- /chain → Read .agent/workflows/chain.md
|
|
123
|
+
- /safety-check → Read .agent/workflows/safety-check.md
|
|
124
|
+
- /finish → Read .agent/workflows/finish.md
|
|
125
|
+
|
|
126
|
+
## OUTPUT
|
|
127
|
+
- Scenario: ${config.scenarioHint}
|
|
128
|
+
- Output: ${config.outputDir}/shots/SHOTNN.md (single file per shot with coverage)
|
|
129
|
+
- Full rules: .agent/MASTER.md
|
|
130
|
+
- Architecture: .agent/ARCHITECTURE.md
|
|
131
|
+
`;
|
|
132
|
+
}
|
|
133
|
+
function buildCursorMdcRules(config) {
|
|
134
|
+
return `---
|
|
135
|
+
description: Film-Kit production rules for Google Flow + Veo 3.1
|
|
136
|
+
globs:
|
|
137
|
+
alwaysApply: true
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
# Film-Kit — Hollywood Standard Prompt Engineering
|
|
141
|
+
|
|
142
|
+
## Entry Point
|
|
143
|
+
Read \`.agent/MASTER.md\` for complete production ruleset.
|
|
144
|
+
Read \`.agent/ARCHITECTURE.md\` for system overview.
|
|
145
|
+
|
|
146
|
+
## SKILL LOADING (MANDATORY)
|
|
147
|
+
Before generating ANY prompts:
|
|
148
|
+
1. ALWAYS load: safety-compliance, frame-chaining, coverage-system, prompt-structure, visual-modes
|
|
149
|
+
2. Load if refs provided: reference-locking
|
|
150
|
+
3. Load if dialogue/SFX: audio-design
|
|
151
|
+
|
|
152
|
+
All skills at: \`.agent/skills/[name]/SKILL.md\`
|
|
153
|
+
|
|
154
|
+
## Slash Commands
|
|
155
|
+
| Command | Action |
|
|
156
|
+
|---------|--------|
|
|
157
|
+
| /generate | Generate shots → Read \`.agent/workflows/generate.md\` |
|
|
158
|
+
| /chain | Continue from last → Read \`.agent/workflows/chain.md\` |
|
|
159
|
+
| /safety-check | Validate prompts → Read \`.agent/workflows/safety-check.md\` |
|
|
160
|
+
| /finish | Complete project → Read \`.agent/workflows/finish.md\` |
|
|
161
|
+
|
|
162
|
+
## CRITICAL RULES
|
|
163
|
+
- AUTO-ANONYMOUS: Replace ALL real names with physical descriptions
|
|
164
|
+
- AUTO-SAFETY: Proactively reframe sensitive content
|
|
165
|
+
- Frame chaining: Last frame SHOT[N] = First frame SHOT[N+1]
|
|
166
|
+
- Coverage: 2-3 sub-shots per main shot (min 60 words each, in same file)
|
|
167
|
+
- Avoid line: MANDATORY on every prompt
|
|
168
|
+
- Music: NONE by default
|
|
169
|
+
- Duration: 8s default, slow burn pacing
|
|
170
|
+
- ONE FILE PER SHOT: SHOTNN.md contains everything
|
|
171
|
+
|
|
172
|
+
## Output
|
|
173
|
+
- Scenario source: ${config.scenarioHint}
|
|
174
|
+
- Output directory: ${config.outputDir}
|
|
175
|
+
- Per-shot format: ${config.outputDir}/shots/SHOTNN.md
|
|
176
|
+
`;
|
|
177
|
+
}
|
|
178
|
+
/* ---------- CLAUDE ---------- */
|
|
179
|
+
function buildClaudeRoot(config) {
|
|
180
|
+
return `# CLAUDE.md — Film-Kit (Hollywood Standard)
|
|
181
|
+
|
|
182
|
+
> Professional Cinematic Prompt Engineering for Google Flow + Veo 3.1
|
|
183
|
+
|
|
184
|
+
## System Entry Point
|
|
185
|
+
Read \`.agent/MASTER.md\` for the complete production ruleset.
|
|
186
|
+
Read \`.agent/ARCHITECTURE.md\` for the system overview.
|
|
187
|
+
Read \`.agent/agents/prompt-engineer.md\` for agent behavior.
|
|
188
|
+
|
|
189
|
+
## CRITICAL: Skill Loading Protocol
|
|
190
|
+
Before generating ANY prompts, read skills from \`.agent/skills/\`:
|
|
191
|
+
- \`safety-compliance/SKILL.md\` — ALWAYS (P0)
|
|
192
|
+
- \`reference-locking/SKILL.md\` — When refs provided (P1)
|
|
193
|
+
- \`frame-chaining/SKILL.md\` — ALWAYS for multi-shot (P2)
|
|
194
|
+
- \`coverage-system/SKILL.md\` — ALWAYS, mandatory (P2)
|
|
195
|
+
- \`visual-modes/SKILL.md\` — ALWAYS (P4)
|
|
196
|
+
- \`audio-design/SKILL.md\` — When dialogue/SFX (P4)
|
|
197
|
+
- \`prompt-structure/SKILL.md\` — ALWAYS (P5)
|
|
198
|
+
|
|
199
|
+
## Universal Rules (Always Active)
|
|
200
|
+
1. **AUTO-ANONYMOUS:** Replace ALL real person names with physical descriptions. NEVER use celebrity names.
|
|
201
|
+
2. **AUTO-SAFETY:** Proactively reframe content that may trigger safety filters.
|
|
202
|
+
3. **Language:** Prompts ALWAYS in English. Dialogue preserved in original.
|
|
203
|
+
4. **Pacing:** 8s default, slow burn. "Ilmek ilmek islemek."
|
|
204
|
+
5. **Music:** NONE by default.
|
|
205
|
+
6. **Avoid line:** MANDATORY on every prompt (image, video, coverage).
|
|
206
|
+
7. **Coverage:** 2-3 sub-shots within same SHOTNN.md file, min 60 words each.
|
|
207
|
+
8. **ONE FILE PER SHOT:** No separate coverage files.
|
|
208
|
+
|
|
209
|
+
## Workflows
|
|
210
|
+
| Command | Workflow |
|
|
211
|
+
|---------|----------|
|
|
212
|
+
| \`/generate\` | \`.agent/workflows/generate.md\` |
|
|
213
|
+
| \`/chain\` | \`.agent/workflows/chain.md\` |
|
|
214
|
+
| \`/safety-check\` | \`.agent/workflows/safety-check.md\` |
|
|
215
|
+
| \`/finish\` | \`.agent/workflows/finish.md\` |
|
|
216
|
+
|
|
217
|
+
## I/O
|
|
218
|
+
- Scenario source: \`${config.scenarioHint}\` (or active editor tab)
|
|
219
|
+
- Output: \`${config.outputDir}/shots/SHOTNN.md\` per shot (single file with coverage)
|
|
220
|
+
- Index: \`${config.outputDir}/_index.md\`
|
|
221
|
+
- Project info: \`${config.outputDir}/project-info.md\`
|
|
222
|
+
|
|
223
|
+
Follow rules under \`.claude/rules/\`.
|
|
224
|
+
`;
|
|
225
|
+
}
|
|
226
|
+
function buildClaudeLocal(config) {
|
|
227
|
+
return `# Local Claude Project Rules — Film-Kit
|
|
228
|
+
|
|
229
|
+
This workspace uses the Film-Kit Hollywood prompt engineering system.
|
|
230
|
+
All production rules are in \`.agent/MASTER.md\`.
|
|
231
|
+
|
|
232
|
+
## On /generate
|
|
233
|
+
1. Read \`.agent/workflows/generate.md\` for full procedure
|
|
234
|
+
2. Analyze scenario, auto-anonymize, apply safety
|
|
235
|
+
3. Generate shot files at \`${config.outputDir}/shots/SHOTNN.md\`
|
|
236
|
+
4. Each SHOTNN.md: İLK FRAME + SON FRAME + VİDEO + 2-3 Coverage (ALL IN ONE FILE)
|
|
237
|
+
5. Maintain frame chaining continuity
|
|
238
|
+
|
|
239
|
+
## Priority Hierarchy
|
|
240
|
+
| Priority | Rule |
|
|
241
|
+
|----------|------|
|
|
242
|
+
| P0 | Platform Safety (overrides everything) |
|
|
243
|
+
| P1 | Reference Fidelity |
|
|
244
|
+
| P2 | Chain Continuity |
|
|
245
|
+
| P3 | Story Integrity |
|
|
246
|
+
| P4 | Visual Quality |
|
|
247
|
+
`;
|
|
248
|
+
}
|
|
249
|
+
function buildClaudeRuleGenerateFlow(config) {
|
|
250
|
+
return `# Generate Flow — Film-Kit
|
|
251
|
+
|
|
252
|
+
## Full Procedure
|
|
253
|
+
Read \`.agent/workflows/generate.md\` for the complete generation workflow.
|
|
254
|
+
|
|
255
|
+
## Quick Reference
|
|
256
|
+
1. **Scenario Analysis:**
|
|
257
|
+
- Read scenario, auto-detect genre
|
|
258
|
+
- Identify characters and locations
|
|
259
|
+
- AUTO-ANONYMOUS: Replace all real names with physical descriptions
|
|
260
|
+
- AUTO-SAFETY: Proactively reframe sensitive content
|
|
261
|
+
- Determine shot count based on action beats
|
|
262
|
+
- Create \`${config.outputDir}/project-info.md\`
|
|
263
|
+
|
|
264
|
+
2. **Batch Strategy:**
|
|
265
|
+
- 1-10 shots → Generate all at once
|
|
266
|
+
- 11-30 shots → Batches of 5
|
|
267
|
+
- 30+ shots → Batches of 3
|
|
268
|
+
|
|
269
|
+
3. **Per Shot (SINGLE FILE: SHOTNN.md):**
|
|
270
|
+
- Analyze scene type (Dialogue / Action / Emotional / Establishing)
|
|
271
|
+
- Generate main shot (İLK FRAME + SON FRAME + VİDEO)
|
|
272
|
+
- Generate 2-3 coverage shots (in same file)
|
|
273
|
+
- Write to \`${config.outputDir}/shots/SHOT[NN].md\`
|
|
274
|
+
- Update \`${config.outputDir}/_index.md\`
|
|
275
|
+
|
|
276
|
+
4. **Coverage Selection Matrix:**
|
|
277
|
+
- Dialogue → Reaction (A) + OTS (B)
|
|
278
|
+
- Action → Insert (A) + ECU (B)
|
|
279
|
+
- Emotional → Reaction (A) + ECU (B)
|
|
280
|
+
- Establishing → Wide (A) + Cutaway (B)
|
|
281
|
+
|
|
282
|
+
Input source: \`${config.scenarioHint}\` or active editor file.
|
|
283
|
+
`;
|
|
284
|
+
}
|
|
285
|
+
function buildClaudeRuleOutputContract(config) {
|
|
286
|
+
return `# Output Contract — Film-Kit
|
|
287
|
+
|
|
288
|
+
## Required Files
|
|
289
|
+
- \`${config.outputDir}/project-info.md\` — Characters, settings, emotional arc mapping, tension levels
|
|
290
|
+
- \`${config.outputDir}/_index.md\` — Shot tracking with chain & status
|
|
291
|
+
- \`${config.outputDir}/shots/SHOT01.md ... SHOTNN.md\` — Individual shot files (one file per shot)
|
|
292
|
+
|
|
293
|
+
## Prompt Flow Order (Veo Optimization — MANDATORY)
|
|
294
|
+
|
|
295
|
+
Veo prioritizes first sentence most heavily. Every prompt MUST follow this order:
|
|
296
|
+
|
|
297
|
+
\`\`\`
|
|
298
|
+
1. [Scene summary — single sentence] "Cinematic close-up of a young soldier in a dim bunker."
|
|
299
|
+
2. [Who/What/Where] Character physical description, costume, position
|
|
300
|
+
3. [Action] Micro-behavior, acting cue, physical gesture
|
|
301
|
+
4. [Camera + Lens] "85mm f/2.0, shallow DOF, static with handheld micro-movement"
|
|
302
|
+
5. [Light + Atmosphere] "Warm oil lamp key light from screen-left, deep shadows"
|
|
303
|
+
6. [Audio direction block] (VIDEO prompts only)
|
|
304
|
+
7. [Avoid line] (EVERY prompt — MANDATORY)
|
|
305
|
+
\`\`\`
|
|
306
|
+
|
|
307
|
+
## Shot File Format (SHOTNN.md) — SINGLE FILE, ALL INCLUSIVE
|
|
308
|
+
|
|
309
|
+
\`\`\`markdown
|
|
310
|
+
# SHOT[NN] | [Duration]s | 🎭 Tension: [1-5]
|
|
311
|
+
|
|
312
|
+
## 🇹🇷 Türkçe Özet
|
|
313
|
+
[1-2 cümle Türkçe açıklama]
|
|
314
|
+
|
|
315
|
+
## 🔗 Chain Status
|
|
316
|
+
FIRST SHOT / CHAINED from SHOT[prev]_END / CHAIN BREAK - Reason
|
|
317
|
+
|
|
318
|
+
## Main Shot
|
|
319
|
+
|
|
320
|
+
### İLK FRAME (SHOTNN_START)
|
|
321
|
+
[If chained: "→ Use SHOT[prev]_END as first frame"]
|
|
322
|
+
|
|
323
|
+
\\\`\\\`\\\`
|
|
324
|
+
[Image prompt — min 60 words, following prompt flow order]
|
|
325
|
+
Avoid: blurry, low-res, noise, distorted faces, bad anatomy, extra limbs/fingers,
|
|
326
|
+
plastic skin, waxy skin, on-screen text, watermark, logo, cartoon style, CGI look.
|
|
327
|
+
\\\`\\\`\\\`
|
|
328
|
+
|
|
329
|
+
### SON FRAME (SHOTNN_END)
|
|
330
|
+
|
|
331
|
+
\\\`\\\`\\\`
|
|
332
|
+
[Image prompt — min 60 words, following prompt flow order]
|
|
333
|
+
Avoid: blurry, low-res, noise, distorted faces, bad anatomy, extra limbs/fingers,
|
|
334
|
+
plastic skin, waxy skin, on-screen text, watermark, logo, cartoon style, CGI look.
|
|
335
|
+
\\\`\\\`\\\`
|
|
336
|
+
|
|
337
|
+
### VİDEO
|
|
338
|
+
|
|
339
|
+
\\\`\\\`\\\`
|
|
340
|
+
[Video prompt — min 80 words, following prompt flow order]
|
|
341
|
+
|
|
342
|
+
Audio direction:
|
|
343
|
+
- Language: [TURKISH/ENGLISH/etc.]
|
|
344
|
+
- Type: [Dialogue/SFX/Ambience/Mixed]
|
|
345
|
+
- Dialogue transcript: "[Exact lines in original language]" or NONE
|
|
346
|
+
- SFX: [Specific sound effects list]
|
|
347
|
+
- Ambience: [Environmental sounds]
|
|
348
|
+
- Music: NONE
|
|
349
|
+
- Mix target: Dialogue X%, SFX Y%, Ambience Z%
|
|
350
|
+
- No on-screen subtitles/captions.
|
|
351
|
+
|
|
352
|
+
Avoid: distorted faces, morphing, bad anatomy, blurry, flickering,
|
|
353
|
+
inconsistent lighting, unnatural motion, on-screen text, watermark.
|
|
354
|
+
\\\`\\\`\\\`
|
|
355
|
+
|
|
356
|
+
---
|
|
357
|
+
|
|
358
|
+
## Coverage Shots (Kurgu Detayları)
|
|
359
|
+
|
|
360
|
+
### SHOT[NN]A — [Type] | [Duration]s | [Icon] [Label]
|
|
361
|
+
|
|
362
|
+
🇹🇷 [Türkçe coverage özeti]
|
|
363
|
+
|
|
364
|
+
\\\`\\\`\\\`
|
|
365
|
+
[Coverage IMAGE prompt — min 60 words, standalone (not chained)]
|
|
366
|
+
Avoid: blurry, low-res, noise, distorted faces, bad anatomy, on-screen text, watermark.
|
|
367
|
+
\\\`\\\`\\\`
|
|
368
|
+
\\\`\\\`\\\`
|
|
369
|
+
[Coverage VIDEO prompt — min 60 words, with full audio direction block]
|
|
370
|
+
|
|
371
|
+
Audio direction:
|
|
372
|
+
- Language: [LANGUAGE]
|
|
373
|
+
- Type: [Ambience/SFX/Dialogue]
|
|
374
|
+
- Dialogue transcript: NONE or "[lines]"
|
|
375
|
+
- SFX: [sounds]
|
|
376
|
+
- Ambience: [environment]
|
|
377
|
+
- Music: NONE
|
|
378
|
+
- Mix target: [percentages]
|
|
379
|
+
- No on-screen subtitles/captions.
|
|
380
|
+
|
|
381
|
+
Avoid: distorted faces, morphing, blurry, flickering, unnatural motion, on-screen text.
|
|
382
|
+
\\\`\\\`\\\`
|
|
383
|
+
|
|
384
|
+
### SHOT[NN]B — [Type] | [Duration]s | [Icon] [Label]
|
|
385
|
+
[Same format as A]
|
|
386
|
+
|
|
387
|
+
### SHOT[NN]C — [Type] | [Duration]s | [Icon] [Label] (optional)
|
|
388
|
+
[Same format as A]
|
|
389
|
+
|
|
390
|
+
---
|
|
391
|
+
|
|
392
|
+
## TECHNICAL
|
|
393
|
+
- Camera: [movement type + lens + aperture]
|
|
394
|
+
- Duration: [Xs] (default 8s)
|
|
395
|
+
- Aspect: 16:9
|
|
396
|
+
- Style: Ultra Realism
|
|
397
|
+
|
|
398
|
+
---
|
|
399
|
+
Generated: [timestamp]
|
|
400
|
+
Total: 1 main + [N] coverage = [N+1] production shots
|
|
401
|
+
\`\`\`
|
|
402
|
+
|
|
403
|
+
## Coverage Type Reference
|
|
404
|
+
|
|
405
|
+
| Type | Code | Icon | Duration | Camera | Audio |
|
|
406
|
+
|------|------|------|----------|--------|-------|
|
|
407
|
+
| Reaction | R | 👁️ LISTENER | 4-6s | CU, 85mm, f/2.0 | Ambience only |
|
|
408
|
+
| Over-the-Shoulder | OTS | 📹 OTS | 4-6s | MS, 50mm, f/2.8 | Full dialogue |
|
|
409
|
+
| Insert | INS | 🔍 DETAIL | 2-4s | CU/ECU, 50-100mm, f/4-5.6 | SFX only |
|
|
410
|
+
| Cutaway | CUT | 🌿 ATMOSPHERE | 4s | Variable | Ambience only |
|
|
411
|
+
| Extreme Close-Up | ECU | 👀 EXTREME | 2-4s | 100mm+, f/2.0, macro | Amplified SFX |
|
|
412
|
+
| Wide Cutaway | WC | 🏔️ WIDE | 6-8s | 24-35mm, f/8-11 | Full ambience |
|
|
413
|
+
|
|
414
|
+
## Coverage Selection by Scene Type
|
|
415
|
+
|
|
416
|
+
| Scene Type | Coverage A | Coverage B | Coverage C |
|
|
417
|
+
|------------|-----------|-----------|-----------|
|
|
418
|
+
| Dialogue (2+ people) | 👁️ Reaction | 📹 OTS | 🔍 Insert |
|
|
419
|
+
| Dialogue (1 speaker) | 👁️ Reaction | 🔍 Insert | — |
|
|
420
|
+
| Action | 🔍 Insert | 👀 ECU | 🏔️ Wide |
|
|
421
|
+
| Emotional/Drama | 👁️ Reaction | 👀 ECU | 🌿 Cutaway |
|
|
422
|
+
| Establishing | 🏔️ Wide | 🌿 Cutaway | 🔍 Insert |
|
|
423
|
+
| Suspense | 👀 ECU | 🌿 Cutaway | 👁️ Reaction |
|
|
424
|
+
|
|
425
|
+
## Professional Rules
|
|
426
|
+
|
|
427
|
+
### Chain Rule
|
|
428
|
+
- Coverage shots are STANDALONE (not chained to each other)
|
|
429
|
+
- Main shots chain: SON FRAME of SHOT[N] = İLK FRAME of SHOT[N+1]
|
|
430
|
+
- Coverage exists in parallel, not in sequence
|
|
431
|
+
|
|
432
|
+
### 30° Rule
|
|
433
|
+
Coverage camera angles MUST differ from main shot by at least 30°.
|
|
434
|
+
Insert shots are exempt (different subject entirely).
|
|
435
|
+
|
|
436
|
+
### 180° Rule
|
|
437
|
+
In dialogue scenes, camera stays on same side of the axis line.
|
|
438
|
+
OTS pairs must be symmetrical across the axis.
|
|
439
|
+
|
|
440
|
+
### Eyeline Match
|
|
441
|
+
Character gaze directions must be spatially consistent between cuts.
|
|
442
|
+
|
|
443
|
+
### Dramaturgy (for dialogue scenes)
|
|
444
|
+
Analyze per character: Objective → Obstacle → Stakes → Subtext → Beat turns.
|
|
445
|
+
Embed as physical behavior in prompts, NOT as metadata.
|
|
446
|
+
|
|
447
|
+
> **CRITICAL:** Do NOT create separate coverage files.
|
|
448
|
+
> Each SHOTNN.md is a complete production package.
|
|
449
|
+
`;
|
|
450
|
+
}
|
|
451
|
+
function buildClaudeSettings() {
|
|
452
|
+
return JSON.stringify({
|
|
453
|
+
model_preferences: {
|
|
454
|
+
style: "cinematic"
|
|
455
|
+
},
|
|
456
|
+
workspace_rules: {
|
|
457
|
+
enabled: true
|
|
458
|
+
}
|
|
459
|
+
}, null, 2);
|
|
460
|
+
}
|
|
461
|
+
function buildClaudeSettingsLocal() {
|
|
462
|
+
return JSON.stringify({
|
|
463
|
+
local_overrides: {
|
|
464
|
+
use_selected_file_first: true
|
|
465
|
+
}
|
|
466
|
+
}, null, 2);
|
|
467
|
+
}
|
|
468
|
+
/* ---------- COPILOT ---------- */
|
|
469
|
+
function buildCopilotInstructions(config) {
|
|
470
|
+
return `# Film-Kit — Copilot Instructions
|
|
471
|
+
## Hollywood Standard Cinematic Prompt Engineering for Google Flow + Veo 3.1
|
|
472
|
+
|
|
473
|
+
### System Entry Point
|
|
474
|
+
Read \`.agent/MASTER.md\` for the complete production ruleset.
|
|
475
|
+
Read \`.agent/ARCHITECTURE.md\` for system overview.
|
|
476
|
+
|
|
477
|
+
### Skill Loading Protocol (MANDATORY)
|
|
478
|
+
Before generating ANY prompts, read skills from \`.agent/skills/\`:
|
|
479
|
+
1. \`safety-compliance/SKILL.md\` — ALWAYS (celebrity ban, auto-anonymous)
|
|
480
|
+
2. \`reference-locking/SKILL.md\` — When reference images provided
|
|
481
|
+
3. \`frame-chaining/SKILL.md\` — ALWAYS for multi-shot continuity
|
|
482
|
+
4. \`coverage-system/SKILL.md\` — ALWAYS (mandatory coverage shots)
|
|
483
|
+
5. \`visual-modes/SKILL.md\` — ALWAYS (Ultra Realism default)
|
|
484
|
+
6. \`audio-design/SKILL.md\` — When dialogue or SFX needed
|
|
485
|
+
7. \`prompt-structure/SKILL.md\` — ALWAYS (prompt templates)
|
|
486
|
+
|
|
487
|
+
### When User Asks /generate
|
|
488
|
+
1. Read \`.agent/workflows/generate.md\` for the full procedure
|
|
489
|
+
2. Analyze scenario, auto-anonymize real names, apply safety reframing
|
|
490
|
+
3. Generate shot files: \`${config.outputDir}/shots/SHOT01.md, SHOT02.md, ...\`
|
|
491
|
+
4. Create index: \`${config.outputDir}/_index.md\`
|
|
492
|
+
5. Create project info: \`${config.outputDir}/project-info.md\`
|
|
493
|
+
|
|
494
|
+
### Critical Rules
|
|
495
|
+
- **AUTO-ANONYMOUS:** Replace ALL real names with physical descriptions
|
|
496
|
+
- **AUTO-SAFETY:** Proactively reframe sensitive content
|
|
497
|
+
- **Frame Chaining:** Last frame of SHOT[N] = First frame of SHOT[N+1]
|
|
498
|
+
- **Coverage:** 2-3 sub-shots per main shot (in same file, min 60 words each)
|
|
499
|
+
- **Avoid Line:** MANDATORY on every prompt
|
|
500
|
+
- **Music:** NONE by default
|
|
501
|
+
- **Duration:** 8s default, slow burn pacing
|
|
502
|
+
- **Language:** Prompts in English, dialogue preserved
|
|
503
|
+
- **ONE FILE PER SHOT:** SHOTNN.md contains main shot + all coverage
|
|
504
|
+
|
|
505
|
+
### Other Workflows
|
|
506
|
+
- \`/chain\` → \`.agent/workflows/chain.md\`
|
|
507
|
+
- \`/safety-check\` → \`.agent/workflows/safety-check.md\`
|
|
508
|
+
- \`/finish\` → \`.agent/workflows/finish.md\`
|
|
509
|
+
|
|
510
|
+
### Input
|
|
511
|
+
- Scenario: \`${config.scenarioHint}\` or active editor file
|
|
512
|
+
`;
|
|
513
|
+
}
|
|
514
|
+
function buildCopilotScopedInstructions(config) {
|
|
515
|
+
return `---
|
|
516
|
+
applyTo: "**/*.md"
|
|
517
|
+
---
|
|
518
|
+
# Film-Kit Scoped Instructions
|
|
519
|
+
|
|
520
|
+
When request is /generate, follow the Film-Kit Hollywood production system:
|
|
521
|
+
1. Read \`.agent/workflows/generate.md\` for full procedure
|
|
522
|
+
2. Load required skills from \`.agent/skills/\`
|
|
523
|
+
3. Transform scenario into production shot package at \`${config.outputDir}\`
|
|
524
|
+
4. Generate: project-info.md, _index.md, shots/SHOT01.md..SHOTNN.md
|
|
525
|
+
5. Each SHOTNN.md: İLK FRAME + SON FRAME + VİDEO + 2-3 Coverage (ALL IN ONE FILE)
|
|
526
|
+
6. Enforce: auto-anonymous, auto-safety, frame chaining, avoid lines
|
|
527
|
+
`;
|
|
528
|
+
}
|
|
529
|
+
/* ---------- ANTIGRAVITY ---------- */
|
|
530
|
+
function buildAntigravitySkill(config) {
|
|
531
|
+
return `---
|
|
532
|
+
name: shotforge-generate
|
|
533
|
+
description: Hollywood-standard cinematic prompt engineering for Google Flow + Veo 3.1. Generates production-grade shot files with coverage, frame chaining, and safety compliance.
|
|
534
|
+
---
|
|
535
|
+
|
|
536
|
+
# Film-Kit — ShotForge Generate Skill
|
|
537
|
+
|
|
538
|
+
## System Architecture
|
|
539
|
+
This skill is part of the Film-Kit prompt engineering system.
|
|
540
|
+
Read \`.agent/MASTER.md\` for the complete production ruleset (690+ rules).
|
|
541
|
+
|
|
542
|
+
## Skill Loading Protocol
|
|
543
|
+
Before generating ANY prompts, read these skills:
|
|
544
|
+
1. \`.agent/skills/safety-compliance/SKILL.md\` — ALWAYS
|
|
545
|
+
2. \`.agent/skills/reference-locking/SKILL.md\` — When refs provided
|
|
546
|
+
3. \`.agent/skills/frame-chaining/SKILL.md\` — ALWAYS
|
|
547
|
+
4. \`.agent/skills/coverage-system/SKILL.md\` — ALWAYS (mandatory)
|
|
548
|
+
5. \`.agent/skills/visual-modes/SKILL.md\` — ALWAYS
|
|
549
|
+
6. \`.agent/skills/audio-design/SKILL.md\` — When dialogue/SFX
|
|
550
|
+
7. \`.agent/skills/prompt-structure/SKILL.md\` — ALWAYS
|
|
551
|
+
|
|
552
|
+
## Workflows
|
|
553
|
+
| Command | Workflow |
|
|
554
|
+
|---------|----------|
|
|
555
|
+
| /generate | \`.agent/workflows/generate.md\` — Generate shots from scenario |
|
|
556
|
+
| /chain | \`.agent/workflows/chain.md\` — Continue from last shot |
|
|
557
|
+
| /safety-check | \`.agent/workflows/safety-check.md\` — Validate before delivery |
|
|
558
|
+
| /finish | \`.agent/workflows/finish.md\` — Complete project, create summary |
|
|
559
|
+
|
|
560
|
+
## Input
|
|
561
|
+
- Scenario source: \`${config.scenarioHint}\` (or selected file in editor)
|
|
562
|
+
|
|
563
|
+
## Output
|
|
564
|
+
- Directory: \`${config.outputDir}\`
|
|
565
|
+
- Per-shot files: \`${config.outputDir}/shots/SHOTNN.md\` (single file per shot with coverage)
|
|
566
|
+
- Shot index: \`${config.outputDir}/_index.md\`
|
|
567
|
+
- Project info: \`${config.outputDir}/project-info.md\`
|
|
568
|
+
|
|
569
|
+
## Critical Rules
|
|
570
|
+
1. **AUTO-ANONYMOUS:** Replace ALL real person names with physical descriptions
|
|
571
|
+
2. **AUTO-SAFETY:** Proactively reframe sensitive content
|
|
572
|
+
3. **Frame Chaining:** Last frame of SHOT[N] becomes first frame of SHOT[N+1]
|
|
573
|
+
4. **Coverage Mandatory:** 2-3 sub-shots per main shot (in same file, min 60 words each)
|
|
574
|
+
5. **Avoid Line:** MANDATORY on every prompt (image + video + coverage)
|
|
575
|
+
6. **Music: NONE** by default
|
|
576
|
+
7. **Ultra Realism** default visual mode
|
|
577
|
+
8. **8s duration** default, slow burn pacing
|
|
578
|
+
9. **ONE FILE PER SHOT:** SHOTNN.md contains main shot + all coverage
|
|
579
|
+
|
|
580
|
+
## Quality Standard
|
|
581
|
+
HOLLYWOOD PRODUCTION GRADE — Every frame museum-worthy, every chain seamless.
|
|
582
|
+
`;
|
|
583
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export type SupportedPlatform = "cursor" | "claude" | "copilot" | "antigravity";
|
|
2
|
+
export interface AgentConfigOptions {
|
|
3
|
+
rootDir?: string;
|
|
4
|
+
outputDir?: string;
|
|
5
|
+
scenarioHint?: string;
|
|
6
|
+
platforms?: SupportedPlatform[];
|
|
7
|
+
overwrite?: boolean;
|
|
8
|
+
includeAgentsMd?: boolean;
|
|
9
|
+
/** Copy the full .agent/ content (MASTER.md, skills, workflows, agents). Default: true */
|
|
10
|
+
copyContent?: boolean;
|
|
11
|
+
}
|
|
12
|
+
export interface ResolvedAgentConfig {
|
|
13
|
+
rootDir: string;
|
|
14
|
+
outputDir: string;
|
|
15
|
+
scenarioHint: string;
|
|
16
|
+
platforms: SupportedPlatform[];
|
|
17
|
+
overwrite: boolean;
|
|
18
|
+
includeAgentsMd: boolean;
|
|
19
|
+
copyContent: boolean;
|
|
20
|
+
}
|
|
21
|
+
export interface ConfigureResult {
|
|
22
|
+
rootDir: string;
|
|
23
|
+
written: string[];
|
|
24
|
+
skipped: string[];
|
|
25
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { resolve } from "node:path";
|
|
2
|
+
import { configureAgents } from "./lib/configure.js";
|
|
3
|
+
export async function runPostinstall() {
|
|
4
|
+
const root = process.env.INIT_CWD ? resolve(process.env.INIT_CWD) : process.cwd();
|
|
5
|
+
const result = await configureAgents({ rootDir: root });
|
|
6
|
+
const lines = [];
|
|
7
|
+
lines.push(`[shotforge-agent-config] configured in ${result.rootDir}`);
|
|
8
|
+
if (result.written.length > 0) {
|
|
9
|
+
lines.push(`[shotforge-agent-config] written: ${result.written.join(", ")}`);
|
|
10
|
+
}
|
|
11
|
+
if (result.skipped.length > 0) {
|
|
12
|
+
lines.push(`[shotforge-agent-config] skipped: ${result.skipped.join(", ")}`);
|
|
13
|
+
}
|
|
14
|
+
process.stdout.write(`${lines.join("\n")}\n`);
|
|
15
|
+
}
|
|
16
|
+
if (process.argv[1] && process.argv[1].endsWith("postinstall.js")) {
|
|
17
|
+
runPostinstall().catch((error) => {
|
|
18
|
+
const message = error instanceof Error ? error.message : "unknown error";
|
|
19
|
+
process.stderr.write(`[shotforge-agent-config] failed: ${message}\n`);
|
|
20
|
+
process.exitCode = 1;
|
|
21
|
+
});
|
|
22
|
+
}
|