@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.
@@ -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
+ }