@lemoncat7/dsh-partner 2.4.2 → 2.7.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.
Files changed (671) hide show
  1. package/README.md +8 -0
  2. package/docs/THIRD_PARTY_LICENSES.md +13 -0
  3. package/docs/attachment-storage.md +18 -0
  4. package/docs/director-skills.md +24 -0
  5. package/docs/long-task-continuation.md +51 -0
  6. package/docs/releases/2.5.0.md +13 -0
  7. package/docs/releases/2.6.0.md +11 -0
  8. package/docs/releases/2.7.0.md +21 -0
  9. package/lib/agent-runtime.d.ts +9 -1
  10. package/lib/agent-runtime.d.ts.map +1 -1
  11. package/lib/agent-runtime.js +117 -17
  12. package/lib/agent-runtime.js.map +1 -1
  13. package/lib/api/features/attachments-api.d.ts.map +1 -1
  14. package/lib/api/features/attachments-api.js +31 -1
  15. package/lib/api/features/attachments-api.js.map +1 -1
  16. package/lib/api.d.ts +1 -1
  17. package/lib/api.d.ts.map +1 -1
  18. package/lib/api.js +1 -1
  19. package/lib/api.js.map +1 -1
  20. package/lib/attachments/grouped-storage.d.ts +5 -0
  21. package/lib/attachments/grouped-storage.d.ts.map +1 -0
  22. package/lib/attachments/grouped-storage.js +47 -0
  23. package/lib/attachments/grouped-storage.js.map +1 -0
  24. package/lib/attachments/service.d.ts +17 -0
  25. package/lib/attachments/service.d.ts.map +1 -1
  26. package/lib/attachments/service.js +100 -8
  27. package/lib/attachments/service.js.map +1 -1
  28. package/lib/attachments/shared-storage.d.ts +7 -0
  29. package/lib/attachments/shared-storage.d.ts.map +1 -0
  30. package/lib/attachments/shared-storage.js +44 -0
  31. package/lib/attachments/shared-storage.js.map +1 -0
  32. package/lib/attachments/storage-admin.d.ts +6 -0
  33. package/lib/attachments/storage-admin.d.ts.map +1 -0
  34. package/lib/attachments/storage-admin.js +43 -0
  35. package/lib/attachments/storage-admin.js.map +1 -0
  36. package/lib/attachments/storage-types.d.ts +33 -0
  37. package/lib/attachments/storage-types.d.ts.map +1 -0
  38. package/lib/attachments/storage-types.js +2 -0
  39. package/lib/attachments/storage-types.js.map +1 -0
  40. package/lib/attachments/tool.d.ts.map +1 -1
  41. package/lib/attachments/tool.js +16 -5
  42. package/lib/attachments/tool.js.map +1 -1
  43. package/lib/channels/delivery-policy.d.ts.map +1 -1
  44. package/lib/channels/delivery-policy.js +7 -4
  45. package/lib/channels/delivery-policy.js.map +1 -1
  46. package/lib/channels/direct/message-format.js +418 -281
  47. package/lib/channels/direct/message-format.js.map +4 -4
  48. package/lib/channels/manager.d.ts +7 -3
  49. package/lib/channels/manager.d.ts.map +1 -1
  50. package/lib/channels/manager.js +73 -38
  51. package/lib/channels/manager.js.map +1 -1
  52. package/lib/channels/weixin/api.d.ts.map +1 -1
  53. package/lib/channels/weixin/api.js +7 -2
  54. package/lib/channels/weixin/api.js.map +1 -1
  55. package/lib/channels/weixin/errors.d.ts +14 -0
  56. package/lib/channels/weixin/errors.d.ts.map +1 -0
  57. package/lib/channels/weixin/errors.js +29 -0
  58. package/lib/channels/weixin/errors.js.map +1 -0
  59. package/lib/channels/weixin/poll.d.ts +14 -0
  60. package/lib/channels/weixin/poll.d.ts.map +1 -0
  61. package/lib/channels/weixin/poll.js +50 -0
  62. package/lib/channels/weixin/poll.js.map +1 -0
  63. package/lib/client-api.d.ts +1 -23
  64. package/lib/client-api.d.ts.map +1 -1
  65. package/lib/client-api.js.map +1 -1
  66. package/lib/client-controller.d.ts.map +1 -1
  67. package/lib/client-controller.js +3 -3
  68. package/lib/client-controller.js.map +1 -1
  69. package/lib/client.d.ts.map +1 -1
  70. package/lib/client.js +1078 -679
  71. package/lib/client.js.map +4 -4
  72. package/lib/collaboration/composition.d.ts.map +1 -1
  73. package/lib/collaboration/composition.js +32 -8
  74. package/lib/collaboration/composition.js.map +1 -1
  75. package/lib/collaboration/domain.d.ts +8 -0
  76. package/lib/collaboration/domain.d.ts.map +1 -1
  77. package/lib/collaboration/domain.js.map +1 -1
  78. package/lib/collaboration/service.d.ts.map +1 -1
  79. package/lib/collaboration/service.js +38 -5
  80. package/lib/collaboration/service.js.map +1 -1
  81. package/lib/concern-notification.d.ts.map +1 -1
  82. package/lib/concern-notification.js +2 -1
  83. package/lib/concern-notification.js.map +1 -1
  84. package/lib/concern-tool.js +1 -1
  85. package/lib/concern-tool.js.map +1 -1
  86. package/lib/execution/reply-progress.d.ts.map +1 -1
  87. package/lib/execution/reply-progress.js +4 -2
  88. package/lib/execution/reply-progress.js.map +1 -1
  89. package/lib/execution/service.d.ts +1 -1
  90. package/lib/execution/service.d.ts.map +1 -1
  91. package/lib/execution/service.js +4 -7
  92. package/lib/execution/service.js.map +1 -1
  93. package/lib/index.d.ts.map +1 -1
  94. package/lib/index.js +7 -1
  95. package/lib/index.js.map +1 -1
  96. package/lib/memory-reflection.js +2 -2
  97. package/lib/memory-reflection.js.map +1 -1
  98. package/lib/message-source.d.ts +25 -0
  99. package/lib/message-source.d.ts.map +1 -0
  100. package/lib/message-source.js +8 -0
  101. package/lib/message-source.js.map +1 -0
  102. package/lib/observation-loop.js +4 -4
  103. package/lib/observation-loop.js.map +1 -1
  104. package/lib/pendant/reader.js +1 -1
  105. package/lib/pendant/reader.js.map +1 -1
  106. package/lib/pendant/settings-panel.js +1 -1
  107. package/lib/pendant/settings-panel.js.map +1 -1
  108. package/lib/persona/service.js +1 -1
  109. package/lib/persona/service.js.map +1 -1
  110. package/lib/requirements/attachments.d.ts +7 -0
  111. package/lib/requirements/attachments.d.ts.map +1 -0
  112. package/lib/requirements/attachments.js +26 -0
  113. package/lib/requirements/attachments.js.map +1 -0
  114. package/lib/requirements/domain.d.ts +1 -1
  115. package/lib/requirements/domain.d.ts.map +1 -1
  116. package/lib/requirements/service.d.ts.map +1 -1
  117. package/lib/requirements/service.js +4 -1
  118. package/lib/requirements/service.js.map +1 -1
  119. package/lib/scheduler/channel-origin.d.ts +7 -0
  120. package/lib/scheduler/channel-origin.d.ts.map +1 -0
  121. package/lib/scheduler/channel-origin.js +27 -0
  122. package/lib/scheduler/channel-origin.js.map +1 -0
  123. package/lib/scheduler/continuations.d.ts +29 -0
  124. package/lib/scheduler/continuations.d.ts.map +1 -0
  125. package/lib/scheduler/continuations.js +286 -0
  126. package/lib/scheduler/continuations.js.map +1 -0
  127. package/lib/scheduler/domain.d.ts +40 -0
  128. package/lib/scheduler/domain.d.ts.map +1 -1
  129. package/lib/scheduler/final-reply.d.ts +13 -0
  130. package/lib/scheduler/final-reply.d.ts.map +1 -0
  131. package/lib/scheduler/final-reply.js +21 -0
  132. package/lib/scheduler/final-reply.js.map +1 -0
  133. package/lib/scheduler/service.d.ts +2 -0
  134. package/lib/scheduler/service.d.ts.map +1 -1
  135. package/lib/scheduler/service.js +30 -1
  136. package/lib/scheduler/service.js.map +1 -1
  137. package/lib/scheduler/wakeup-context.d.ts +7 -0
  138. package/lib/scheduler/wakeup-context.d.ts.map +1 -0
  139. package/lib/scheduler/wakeup-context.js +14 -0
  140. package/lib/scheduler/wakeup-context.js.map +1 -0
  141. package/lib/scheduler/wakeup.d.ts +11 -0
  142. package/lib/scheduler/wakeup.d.ts.map +1 -0
  143. package/lib/scheduler/wakeup.js +52 -0
  144. package/lib/scheduler/wakeup.js.map +1 -0
  145. package/lib/skills/builtin-resources.d.ts +6 -0
  146. package/lib/skills/builtin-resources.d.ts.map +1 -0
  147. package/lib/skills/builtin-resources.js +47 -0
  148. package/lib/skills/builtin-resources.js.map +1 -0
  149. package/lib/skills/builtin.d.ts +2 -5
  150. package/lib/skills/builtin.d.ts.map +1 -1
  151. package/lib/skills/builtin.js +11 -0
  152. package/lib/skills/builtin.js.map +1 -1
  153. package/lib/skills/director-builtins.d.ts +8 -0
  154. package/lib/skills/director-builtins.d.ts.map +1 -0
  155. package/lib/skills/director-builtins.js +65 -0
  156. package/lib/skills/director-builtins.js.map +1 -0
  157. package/lib/skills/drama-builtin.d.ts +3 -0
  158. package/lib/skills/drama-builtin.d.ts.map +1 -0
  159. package/lib/skills/drama-builtin.js +49 -0
  160. package/lib/skills/drama-builtin.js.map +1 -0
  161. package/lib/skills/long-task-continuation.d.ts +4 -0
  162. package/lib/skills/long-task-continuation.d.ts.map +1 -0
  163. package/lib/skills/long-task-continuation.js +43 -0
  164. package/lib/skills/long-task-continuation.js.map +1 -0
  165. package/lib/skills/service.d.ts.map +1 -1
  166. package/lib/skills/service.js +8 -3
  167. package/lib/skills/service.js.map +1 -1
  168. package/lib/skills/viora-canvas-builtin.d.ts +3 -0
  169. package/lib/skills/viora-canvas-builtin.d.ts.map +1 -0
  170. package/lib/skills/viora-canvas-builtin.js +19 -0
  171. package/lib/skills/viora-canvas-builtin.js.map +1 -0
  172. package/lib/storage/migrate-layout.d.ts.map +1 -1
  173. package/lib/storage/migrate-layout.js +13 -4
  174. package/lib/storage/migrate-layout.js.map +1 -1
  175. package/lib/store.d.ts.map +1 -1
  176. package/lib/store.js +2 -0
  177. package/lib/store.js.map +1 -1
  178. package/lib/tasks/context.js +1 -0
  179. package/lib/tasks/context.js.map +1 -1
  180. package/lib/tasks/continuation-yield.d.ts +4 -0
  181. package/lib/tasks/continuation-yield.d.ts.map +1 -0
  182. package/lib/tasks/continuation-yield.js +27 -0
  183. package/lib/tasks/continuation-yield.js.map +1 -0
  184. package/lib/tasks/continuation.d.ts +13 -0
  185. package/lib/tasks/continuation.d.ts.map +1 -0
  186. package/lib/tasks/continuation.js +106 -0
  187. package/lib/tasks/continuation.js.map +1 -0
  188. package/lib/tasks/domain.d.ts +2 -0
  189. package/lib/tasks/domain.d.ts.map +1 -1
  190. package/lib/tasks/scheduling.d.ts.map +1 -1
  191. package/lib/tasks/scheduling.js +7 -0
  192. package/lib/tasks/scheduling.js.map +1 -1
  193. package/lib/tasks/service.d.ts +2 -1
  194. package/lib/tasks/service.d.ts.map +1 -1
  195. package/lib/tasks/service.js +19 -1
  196. package/lib/tasks/service.js.map +1 -1
  197. package/lib/ui/attachment-storage.d.ts +2 -0
  198. package/lib/ui/attachment-storage.d.ts.map +1 -0
  199. package/lib/ui/attachment-storage.js +59 -0
  200. package/lib/ui/attachment-storage.js.map +1 -0
  201. package/lib/ui/capability-editor.js +1 -1
  202. package/lib/ui/capability-editor.js.map +1 -1
  203. package/lib/ui/companion-access-panel.js +1 -1
  204. package/lib/ui/companion-access-panel.js.map +1 -1
  205. package/lib/ui/companion-create.js +1 -1
  206. package/lib/ui/companion-create.js.map +1 -1
  207. package/lib/ui/companion-picker.js +1 -1
  208. package/lib/ui/companion-picker.js.map +1 -1
  209. package/lib/ui/identity-editor.js +1 -1
  210. package/lib/ui/identity-editor.js.map +1 -1
  211. package/lib/ui/mcp-capabilities.js +1 -1
  212. package/lib/ui/mcp-capabilities.js.map +1 -1
  213. package/lib/ui/mcp-panel.js +1 -1
  214. package/lib/ui/mcp-panel.js.map +1 -1
  215. package/lib/ui/memory/concern-board.js +2 -2
  216. package/lib/ui/memory/concern-board.js.map +1 -1
  217. package/lib/ui/memory/concern-deletion.d.ts +1 -1
  218. package/lib/ui/memory/concern-deletion.d.ts.map +1 -1
  219. package/lib/ui/memory/concern-deletion.js +9 -4
  220. package/lib/ui/memory/concern-deletion.js.map +1 -1
  221. package/lib/ui/memory/concern-panel.js +1 -1
  222. package/lib/ui/memory/concern-panel.js.map +1 -1
  223. package/lib/ui/memory/memory-library.js +1 -1
  224. package/lib/ui/memory/memory-library.js.map +1 -1
  225. package/lib/ui/memory/memory-panel.js +1 -1
  226. package/lib/ui/memory/memory-panel.js.map +1 -1
  227. package/lib/ui/partner-components.js +1 -1
  228. package/lib/ui/partner-components.js.map +1 -1
  229. package/lib/ui/requirement-board.js +1 -1
  230. package/lib/ui/requirement-board.js.map +1 -1
  231. package/lib/ui/requirement-dialog.js +1 -1
  232. package/lib/ui/requirement-dialog.js.map +1 -1
  233. package/lib/ui/requirement-tasks-panel.js +1 -1
  234. package/lib/ui/requirement-tasks-panel.js.map +1 -1
  235. package/lib/ui/schedule-panel.d.ts.map +1 -1
  236. package/lib/ui/schedule-panel.js +20 -4
  237. package/lib/ui/schedule-panel.js.map +1 -1
  238. package/lib/ui/skills-panel.js +1 -1
  239. package/lib/ui/skills-panel.js.map +1 -1
  240. package/lib/ui/storage-settings.d.ts.map +1 -1
  241. package/lib/ui/storage-settings.js +2 -1
  242. package/lib/ui/storage-settings.js.map +1 -1
  243. package/lib/ui/task-board-stage.js +1 -1
  244. package/lib/ui/task-board-stage.js.map +1 -1
  245. package/lib/ui/workspace-components.js +1 -1
  246. package/lib/ui/workspace-components.js.map +1 -1
  247. package/lib/ui/workspace-navigation.d.ts +16 -16
  248. package/lib/ui/workspace-navigation.js +1 -1
  249. package/lib/ui/workspace-navigation.js.map +1 -1
  250. package/package.json +55 -41
  251. package/resources/skills/cinematic-director/manifest.json +205 -0
  252. package/resources/skills/cinematic-director/upstream/CHANGELOG.md +213 -0
  253. package/resources/skills/cinematic-director/upstream/CONTRIBUTING.md +316 -0
  254. package/resources/skills/cinematic-director/upstream/LICENSE +21 -0
  255. package/resources/skills/cinematic-director/upstream/README.md +507 -0
  256. package/resources/skills/cinematic-director/upstream/SKILL.md +420 -0
  257. package/resources/skills/cinematic-director/upstream/assets/beat-sheet-template.md +97 -0
  258. package/resources/skills/cinematic-director/upstream/assets/director-book-template.md +254 -0
  259. package/resources/skills/cinematic-director/upstream/assets/edit-timeline-template.md +147 -0
  260. package/resources/skills/cinematic-director/upstream/assets/keyframe-prompt-template.md +334 -0
  261. package/resources/skills/cinematic-director/upstream/assets/qc-checklist.md +153 -0
  262. package/resources/skills/cinematic-director/upstream/assets/shot-plan-template.md +95 -0
  263. package/resources/skills/cinematic-director/upstream/assets/sound-plan-template.md +181 -0
  264. package/resources/skills/cinematic-director/upstream/assets/video-prompt-template.md +305 -0
  265. package/resources/skills/cinematic-director/upstream/evals/run.md +69 -0
  266. package/resources/skills/cinematic-director/upstream/references/ai-video-tool-adapters.md +527 -0
  267. package/resources/skills/cinematic-director/upstream/references/blocking-and-staging.md +424 -0
  268. package/resources/skills/cinematic-director/upstream/references/cinematic-language.md +595 -0
  269. package/resources/skills/cinematic-director/upstream/references/continuity-bible.md +410 -0
  270. package/resources/skills/cinematic-director/upstream/references/director_styles/01_spielberg.md +192 -0
  271. package/resources/skills/cinematic-director/upstream/references/director_styles/02_hitchcock.md +193 -0
  272. package/resources/skills/cinematic-director/upstream/references/director_styles/03_kubrick.md +196 -0
  273. package/resources/skills/cinematic-director/upstream/references/director_styles/04_kurosawa.md +196 -0
  274. package/resources/skills/cinematic-director/upstream/references/director_styles/05_scorsese.md +195 -0
  275. package/resources/skills/cinematic-director/upstream/references/director_styles/06_fellini.md +197 -0
  276. package/resources/skills/cinematic-director/upstream/references/director_styles/07_bergman.md +197 -0
  277. package/resources/skills/cinematic-director/upstream/references/director_styles/08_tarkovsky.md +184 -0
  278. package/resources/skills/cinematic-director/upstream/references/director_styles/09_wong_kar_wai.md +189 -0
  279. package/resources/skills/cinematic-director/upstream/references/director_styles/10_nolan.md +185 -0
  280. package/resources/skills/cinematic-director/upstream/references/director_styles/11_villeneuve.md +188 -0
  281. package/resources/skills/cinematic-director/upstream/references/director_styles/12_fincher.md +185 -0
  282. package/resources/skills/cinematic-director/upstream/references/director_styles/13_refn.md +186 -0
  283. package/resources/skills/cinematic-director/upstream/references/director_styles/14_bi_gan.md +188 -0
  284. package/resources/skills/cinematic-director/upstream/references/director_styles/15_zhang_yimou.md +192 -0
  285. package/resources/skills/cinematic-director/upstream/references/director_styles/16_hou_hsiao_hsien.md +192 -0
  286. package/resources/skills/cinematic-director/upstream/references/director_styles/17_park_chan_wook.md +192 -0
  287. package/resources/skills/cinematic-director/upstream/references/director_styles/18_malick.md +191 -0
  288. package/resources/skills/cinematic-director/upstream/references/director_styles/19_michael_mann.md +192 -0
  289. package/resources/skills/cinematic-director/upstream/references/director_styles/20_coen_brothers.md +194 -0
  290. package/resources/skills/cinematic-director/upstream/references/director_styles/README.md +89 -0
  291. package/resources/skills/cinematic-director/upstream/references/director_styles/example_comparisons.md +140 -0
  292. package/resources/skills/cinematic-director/upstream/references/editing-and-assembly.md +263 -0
  293. package/resources/skills/cinematic-director/upstream/references/failure-modes.md +594 -0
  294. package/resources/skills/cinematic-director/upstream/references/genre-playbooks.md +407 -0
  295. package/resources/skills/cinematic-director/upstream/references/image-model-adapters.md +290 -0
  296. package/resources/skills/cinematic-director/upstream/references/lighting-and-color.md +349 -0
  297. package/resources/skills/cinematic-director/upstream/references/product-and-macro.md +207 -0
  298. package/resources/skills/cinematic-director/upstream/references/production-workflow.md +238 -0
  299. package/resources/skills/cinematic-director/upstream/references/prompt-lexicon.md +602 -0
  300. package/resources/skills/cinematic-director/upstream/references/sound-and-dialogue.md +364 -0
  301. package/resources/skills/director-skills/manifest.json +541 -0
  302. package/resources/skills/director-skills/upstream/CHANGELOG.md +32 -0
  303. package/resources/skills/director-skills/upstream/LICENSE +21 -0
  304. package/resources/skills/director-skills/upstream/MANIFEST.md +366 -0
  305. package/resources/skills/director-skills/upstream/README.md +251 -0
  306. package/resources/skills/director-skills/upstream/RESEARCH_PROVENANCE.md +37 -0
  307. package/resources/skills/director-skills/upstream/SKILL.md +114 -0
  308. package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/SKILL.md +81 -0
  309. package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/checklists/continuity_checklist.md +8 -0
  310. package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/examples/character_continuity_update.md +9 -0
  311. package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/examples/location_continuity_update.md +9 -0
  312. package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/references/continuity_system.md +21 -0
  313. package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/references/golden_image_workflow.md +29 -0
  314. package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/references/identity_anchors.md +14 -0
  315. package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/references/visual_bible_system.md +15 -0
  316. package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/templates/character_profile.md +15 -0
  317. package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/templates/continuity_checklist.md +11 -0
  318. package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/templates/costume_profile.md +12 -0
  319. package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/templates/location_profile.md +14 -0
  320. package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/templates/prop_profile.md +13 -0
  321. package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/templates/visual_style_bible.md +15 -0
  322. package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/tests/continuity_tests.md +6 -0
  323. package/resources/skills/director-skills/upstream/skills/cinematic-image-prompting/SKILL.md +80 -0
  324. package/resources/skills/director-skills/upstream/skills/cinematic-image-prompting/checklists/image_prompt_quality_checklist.md +10 -0
  325. package/resources/skills/director-skills/upstream/skills/cinematic-image-prompting/examples/shot_list_to_image_prompts.md +4 -0
  326. package/resources/skills/director-skills/upstream/skills/cinematic-image-prompting/references/image_prompt_components.md +22 -0
  327. package/resources/skills/director-skills/upstream/skills/cinematic-image-prompting/references/lighting_and_photorealism.md +19 -0
  328. package/resources/skills/director-skills/upstream/skills/cinematic-image-prompting/references/negative_prompt_patterns.md +18 -0
  329. package/resources/skills/director-skills/upstream/skills/cinematic-image-prompting/references/prompt_anatomy.md +18 -0
  330. package/resources/skills/director-skills/upstream/skills/cinematic-image-prompting/templates/character_reference_sheet_prompt.md +5 -0
  331. package/resources/skills/director-skills/upstream/skills/cinematic-image-prompting/templates/cinematic_still_prompt.md +3 -0
  332. package/resources/skills/director-skills/upstream/skills/cinematic-image-prompting/templates/keyframe_prompt.md +6 -0
  333. package/resources/skills/director-skills/upstream/skills/cinematic-image-prompting/templates/location_reference_prompt.md +3 -0
  334. package/resources/skills/director-skills/upstream/skills/cinematic-image-prompting/templates/prop_prompt.md +3 -0
  335. package/resources/skills/director-skills/upstream/skills/cinematic-image-prompting/tests/image_prompt_completeness_tests.md +5 -0
  336. package/resources/skills/director-skills/upstream/skills/cinematic-video-prompting/SKILL.md +84 -0
  337. package/resources/skills/director-skills/upstream/skills/cinematic-video-prompting/checklists/video_prompt_quality_checklist.md +9 -0
  338. package/resources/skills/director-skills/upstream/skills/cinematic-video-prompting/examples/image_prompt_to_video_prompt.md +3 -0
  339. package/resources/skills/director-skills/upstream/skills/cinematic-video-prompting/references/ai_film_production_pipeline.md +21 -0
  340. package/resources/skills/director-skills/upstream/skills/cinematic-video-prompting/references/audio_motion_timing.md +16 -0
  341. package/resources/skills/director-skills/upstream/skills/cinematic-video-prompting/references/camera_lens_movement.md +26 -0
  342. package/resources/skills/director-skills/upstream/skills/cinematic-video-prompting/references/negative_prompt_patterns.md +18 -0
  343. package/resources/skills/director-skills/upstream/skills/cinematic-video-prompting/references/prompt_anatomy.md +18 -0
  344. package/resources/skills/director-skills/upstream/skills/cinematic-video-prompting/references/video_prompt_components.md +25 -0
  345. package/resources/skills/director-skills/upstream/skills/cinematic-video-prompting/templates/image_to_video_prompt.md +5 -0
  346. package/resources/skills/director-skills/upstream/skills/cinematic-video-prompting/templates/text_to_video_prompt.md +5 -0
  347. package/resources/skills/director-skills/upstream/skills/cinematic-video-prompting/templates/video_beat_prompt.md +9 -0
  348. package/resources/skills/director-skills/upstream/skills/cinematic-video-prompting/tests/video_prompt_completeness_tests.md +5 -0
  349. package/resources/skills/director-skills/upstream/skills/model-adaptation/SKILL.md +82 -0
  350. package/resources/skills/director-skills/upstream/skills/model-adaptation/checklists/model_export_checklist.md +9 -0
  351. package/resources/skills/director-skills/upstream/skills/model-adaptation/examples/failed_model_transfer_diagnosis.md +5 -0
  352. package/resources/skills/director-skills/upstream/skills/model-adaptation/examples/image_prompt_translation.md +10 -0
  353. package/resources/skills/director-skills/upstream/skills/model-adaptation/examples/same_scene_across_models.md +9 -0
  354. package/resources/skills/director-skills/upstream/skills/model-adaptation/examples/universal_prompt_to_model_specific_exports.md +14 -0
  355. package/resources/skills/director-skills/upstream/skills/model-adaptation/examples/video_prompt_translation.md +9 -0
  356. package/resources/skills/director-skills/upstream/skills/model-adaptation/references/failure_modes_by_model.md +13 -0
  357. package/resources/skills/director-skills/upstream/skills/model-adaptation/references/image_model_profiles.md +226 -0
  358. package/resources/skills/director-skills/upstream/skills/model-adaptation/references/model_capability_matrix.md +24 -0
  359. package/resources/skills/director-skills/upstream/skills/model-adaptation/references/model_update_protocol.md +10 -0
  360. package/resources/skills/director-skills/upstream/skills/model-adaptation/references/parameter_compatibility.md +20 -0
  361. package/resources/skills/director-skills/upstream/skills/model-adaptation/references/prompt_translation_rules.md +18 -0
  362. package/resources/skills/director-skills/upstream/skills/model-adaptation/references/video_model_profiles.md +251 -0
  363. package/resources/skills/director-skills/upstream/skills/model-adaptation/templates/model_comparison_table.md +4 -0
  364. package/resources/skills/director-skills/upstream/skills/model-adaptation/templates/model_specific_prompt_export.md +21 -0
  365. package/resources/skills/director-skills/upstream/skills/model-adaptation/templates/multi_model_export_package.md +18 -0
  366. package/resources/skills/director-skills/upstream/skills/model-adaptation/templates/prompt_translation_report.md +13 -0
  367. package/resources/skills/director-skills/upstream/skills/model-adaptation/templates/universal_prompt_brief.md +25 -0
  368. package/resources/skills/director-skills/upstream/skills/model-adaptation/tests/model_routing_tests.md +8 -0
  369. package/resources/skills/director-skills/upstream/skills/model-adaptation/tests/prompt_translation_tests.md +7 -0
  370. package/resources/skills/director-skills/upstream/skills/model-adaptation/tests/research_provenance_tests.md +6 -0
  371. package/resources/skills/director-skills/upstream/skills/model-adaptation/tests/unknown_capability_tests.md +7 -0
  372. package/resources/skills/director-skills/upstream/skills/prompt-iteration-and-diagnostics/SKILL.md +82 -0
  373. package/resources/skills/director-skills/upstream/skills/prompt-iteration-and-diagnostics/checklists/diagnostic_checklist.md +8 -0
  374. package/resources/skills/director-skills/upstream/skills/prompt-iteration-and-diagnostics/checklists/release_quality_checklist.md +9 -0
  375. package/resources/skills/director-skills/upstream/skills/prompt-iteration-and-diagnostics/examples/failed_output_to_revised_prompt.md +10 -0
  376. package/resources/skills/director-skills/upstream/skills/prompt-iteration-and-diagnostics/examples/final_prompt_package_export.md +10 -0
  377. package/resources/skills/director-skills/upstream/skills/prompt-iteration-and-diagnostics/references/failure_modes.md +13 -0
  378. package/resources/skills/director-skills/upstream/skills/prompt-iteration-and-diagnostics/references/iteration_diagnostics.md +17 -0
  379. package/resources/skills/director-skills/upstream/skills/prompt-iteration-and-diagnostics/references/revision_loops.md +17 -0
  380. package/resources/skills/director-skills/upstream/skills/prompt-iteration-and-diagnostics/references/story_voice_release_qc.md +30 -0
  381. package/resources/skills/director-skills/upstream/skills/prompt-iteration-and-diagnostics/templates/failed_output_intake.md +13 -0
  382. package/resources/skills/director-skills/upstream/skills/prompt-iteration-and-diagnostics/templates/final_production_package.md +11 -0
  383. package/resources/skills/director-skills/upstream/skills/prompt-iteration-and-diagnostics/templates/prompt_revision_report.md +17 -0
  384. package/resources/skills/director-skills/upstream/skills/prompt-iteration-and-diagnostics/tests/prompt_quality_checklist_tests.md +6 -0
  385. package/resources/skills/director-skills/upstream/skills/screenplay-and-scene-writing/SKILL.md +81 -0
  386. package/resources/skills/director-skills/upstream/skills/screenplay-and-scene-writing/checklists/scene_quality_checklist.md +8 -0
  387. package/resources/skills/director-skills/upstream/skills/screenplay-and-scene-writing/examples/scene_to_screenplay_excerpt.md +18 -0
  388. package/resources/skills/director-skills/upstream/skills/screenplay-and-scene-writing/references/dialogue_and_subtext.md +15 -0
  389. package/resources/skills/director-skills/upstream/skills/screenplay-and-scene-writing/references/fountain_workflow.md +29 -0
  390. package/resources/skills/director-skills/upstream/skills/screenplay-and-scene-writing/references/scene_construction.md +20 -0
  391. package/resources/skills/director-skills/upstream/skills/screenplay-and-scene-writing/references/screenplay_format.md +18 -0
  392. package/resources/skills/director-skills/upstream/skills/screenplay-and-scene-writing/templates/beat_sheet.md +6 -0
  393. package/resources/skills/director-skills/upstream/skills/screenplay-and-scene-writing/templates/dialogue_pass.md +9 -0
  394. package/resources/skills/director-skills/upstream/skills/screenplay-and-scene-writing/templates/fountain_scene.md +25 -0
  395. package/resources/skills/director-skills/upstream/skills/screenplay-and-scene-writing/templates/screenplay_scene.md +19 -0
  396. package/resources/skills/director-skills/upstream/skills/screenplay-and-scene-writing/tests/screenplay_scene_tests.md +6 -0
  397. package/resources/skills/director-skills/upstream/skills/short-film-development/SKILL.md +83 -0
  398. package/resources/skills/director-skills/upstream/skills/short-film-development/checklists/concept_quality_checklist.md +8 -0
  399. package/resources/skills/director-skills/upstream/skills/short-film-development/examples/idea_to_logline.md +13 -0
  400. package/resources/skills/director-skills/upstream/skills/short-film-development/examples/logline_to_outline.md +10 -0
  401. package/resources/skills/director-skills/upstream/skills/short-film-development/references/ai_storytelling_workflow.md +46 -0
  402. package/resources/skills/director-skills/upstream/skills/short-film-development/references/continuity_handoff.md +8 -0
  403. package/resources/skills/director-skills/upstream/skills/short-film-development/references/screenplay_structure.md +19 -0
  404. package/resources/skills/director-skills/upstream/skills/short-film-development/references/story_development_workflow.md +23 -0
  405. package/resources/skills/director-skills/upstream/skills/short-film-development/templates/beat_sheet.md +7 -0
  406. package/resources/skills/director-skills/upstream/skills/short-film-development/templates/idea_intake.md +16 -0
  407. package/resources/skills/director-skills/upstream/skills/short-film-development/templates/logline.md +10 -0
  408. package/resources/skills/director-skills/upstream/skills/short-film-development/templates/short_film_treatment.md +23 -0
  409. package/resources/skills/director-skills/upstream/skills/short-film-development/templates/short_story_plan.md +22 -0
  410. package/resources/skills/director-skills/upstream/skills/short-film-development/templates/story_premise.md +19 -0
  411. package/resources/skills/director-skills/upstream/skills/short-film-development/templates/story_revision_audit.md +22 -0
  412. package/resources/skills/director-skills/upstream/skills/short-film-development/tests/output_format_tests.md +3 -0
  413. package/resources/skills/director-skills/upstream/skills/short-film-development/tests/routing_tests.md +7 -0
  414. package/resources/skills/director-skills/upstream/skills/shotlist-and-visual-breakdown/SKILL.md +77 -0
  415. package/resources/skills/director-skills/upstream/skills/shotlist-and-visual-breakdown/checklists/shotlist_quality_checklist.md +8 -0
  416. package/resources/skills/director-skills/upstream/skills/shotlist-and-visual-breakdown/examples/screenplay_scene_to_shot_list.md +8 -0
  417. package/resources/skills/director-skills/upstream/skills/shotlist-and-visual-breakdown/references/camera_plan.md +11 -0
  418. package/resources/skills/director-skills/upstream/skills/shotlist-and-visual-breakdown/references/production_breakdown.md +11 -0
  419. package/resources/skills/director-skills/upstream/skills/shotlist-and-visual-breakdown/references/shotlist_schema.md +21 -0
  420. package/resources/skills/director-skills/upstream/skills/shotlist-and-visual-breakdown/templates/asset_list.md +7 -0
  421. package/resources/skills/director-skills/upstream/skills/shotlist-and-visual-breakdown/templates/camera_plan.md +10 -0
  422. package/resources/skills/director-skills/upstream/skills/shotlist-and-visual-breakdown/templates/scene_breakdown.md +16 -0
  423. package/resources/skills/director-skills/upstream/skills/shotlist-and-visual-breakdown/templates/shot_list.md +5 -0
  424. package/resources/skills/director-skills/upstream/skills/shotlist-and-visual-breakdown/tests/screenplay_to_shotlist_tests.md +5 -0
  425. package/resources/skills/director-skills/upstream/skills/style-cinematography-director/SKILL.md +77 -0
  426. package/resources/skills/director-skills/upstream/skills/style-cinematography-director/checklists/style_quality_checklist.md +8 -0
  427. package/resources/skills/director-skills/upstream/skills/style-cinematography-director/examples/genre_to_visual_direction.md +15 -0
  428. package/resources/skills/director-skills/upstream/skills/style-cinematography-director/references/camera_lens_movement.md +26 -0
  429. package/resources/skills/director-skills/upstream/skills/style-cinematography-director/references/cinematic_language.md +32 -0
  430. package/resources/skills/director-skills/upstream/skills/style-cinematography-director/references/genre_style_tone.md +17 -0
  431. package/resources/skills/director-skills/upstream/skills/style-cinematography-director/references/lighting_and_photorealism.md +19 -0
  432. package/resources/skills/director-skills/upstream/skills/style-cinematography-director/templates/visual_style_bible.md +33 -0
  433. package/resources/skills/director-skills/upstream/skills/style-cinematography-director/tests/style_translation_tests.md +5 -0
  434. package/resources/skills/director-skills/upstream/tests/master_router_tests.md +80 -0
  435. package/resources/skills/drama-production/manifest.json +933 -0
  436. package/resources/skills/drama-production/upstream/LICENSE +21 -0
  437. package/resources/skills/drama-production/upstream/skills/short-drama/SKILL.md +153 -0
  438. package/resources/skills/drama-production/upstream/skills/short-drama/agents/openai.yaml +4 -0
  439. package/resources/skills/drama-production/upstream/skills/short-drama/assets/creator-decision.example.jsonl +4 -0
  440. package/resources/skills/drama-production/upstream/skills/short-drama/assets/dashboard/app.js +1263 -0
  441. package/resources/skills/drama-production/upstream/skills/short-drama/assets/dashboard/index.html +114 -0
  442. package/resources/skills/drama-production/upstream/skills/short-drama/assets/dashboard/styles.css +297 -0
  443. package/resources/skills/drama-production/upstream/skills/short-drama/assets/production-observation.example.jsonl +2 -0
  444. package/resources/skills/drama-production/upstream/skills/short-drama/assets/project-template/short-drama.json +36 -0
  445. package/resources/skills/drama-production/upstream/skills/short-drama/assets/reference-observation.example.jsonl +2 -0
  446. package/resources/skills/drama-production/upstream/skills/short-drama/references/audience-reveal.md +21 -0
  447. package/resources/skills/drama-production/upstream/skills/short-drama/references/contract-and-ownership.md +45 -0
  448. package/resources/skills/drama-production/upstream/skills/short-drama/references/creator-documents.md +230 -0
  449. package/resources/skills/drama-production/upstream/skills/short-drama/references/creator-workflow.md +98 -0
  450. package/resources/skills/drama-production/upstream/skills/short-drama/references/form-cards/Q/347/211/210/350/241/250/350/276/276.md +73 -0
  451. package/resources/skills/drama-production/upstream/skills/short-drama/references/form-cards//344/272/214/347/273/264/345/212/250/346/200/201/346/274/253.md +74 -0
  452. package/resources/skills/drama-production/upstream/skills/short-drama/references/form-cards//345/233/275/346/274/253/344/272/214/346/254/241/345/205/203.md +79 -0
  453. package/resources/skills/drama-production/upstream/skills/short-drama/references/form-cards//345/256/236/346/213/215.md +75 -0
  454. package/resources/skills/drama-production/upstream/skills/short-drama/references/form-cards//346/260/264/345/242/250/347/254/224/350/247/246.md +85 -0
  455. package/resources/skills/drama-production/upstream/skills/short-drama/references/form-cards//351/243/216/346/240/274/345/214/226/344/270/211/347/273/264.md +72 -0
  456. package/resources/skills/drama-production/upstream/skills/short-drama/references/knowhow-index.md +85 -0
  457. package/resources/skills/drama-production/upstream/skills/short-drama/references/look-development.md +51 -0
  458. package/resources/skills/drama-production/upstream/skills/short-drama/references/pickup-and-alternate.md +24 -0
  459. package/resources/skills/drama-production/upstream/skills/short-drama/references/production-form-profiles.md +126 -0
  460. package/resources/skills/drama-production/upstream/skills/short-drama/references/reference-roles.md +53 -0
  461. package/resources/skills/drama-production/upstream/skills/short-drama/references/runtime-preflight.md +24 -0
  462. package/resources/skills/drama-production/upstream/skills/short-drama/scripts/creator_markdown_check.py +1413 -0
  463. package/resources/skills/drama-production/upstream/skills/short-drama/scripts/dashboard_server.py +1798 -0
  464. package/resources/skills/drama-production/upstream/skills/short-drama/scripts/project_tool.py +2454 -0
  465. package/resources/skills/drama-production/upstream/skills/short-drama/scripts/selftest.py +287 -0
  466. package/resources/skills/drama-production/upstream/skills/short-drama-assets/SKILL.md +76 -0
  467. package/resources/skills/drama-production/upstream/skills/short-drama-assets/agents/openai.yaml +4 -0
  468. package/resources/skills/drama-production/upstream/skills/short-drama-assets/assets/character-look.example.jsonl +3 -0
  469. package/resources/skills/drama-production/upstream/skills/short-drama-assets/assets/continuity.example.jsonl +4 -0
  470. package/resources/skills/drama-production/upstream/skills/short-drama-assets/assets/decisions.example.jsonl +5 -0
  471. package/resources/skills/drama-production/upstream/skills/short-drama-assets/assets/location-view.example.jsonl +3 -0
  472. package/resources/skills/drama-production/upstream/skills/short-drama-assets/assets/occurrences.example.jsonl +5 -0
  473. package/resources/skills/drama-production/upstream/skills/short-drama-assets/assets/prop-state.example.jsonl +3 -0
  474. package/resources/skills/drama-production/upstream/skills/short-drama-assets/examples/minimal/characters.jsonl +2 -0
  475. package/resources/skills/drama-production/upstream/skills/short-drama-assets/examples/minimal/looks.jsonl +2 -0
  476. package/resources/skills/drama-production/upstream/skills/short-drama-assets/references/asset-review-checklist.md +82 -0
  477. package/resources/skills/drama-production/upstream/skills/short-drama-assets/references/character-and-look.md +190 -0
  478. package/resources/skills/drama-production/upstream/skills/short-drama-assets/references/continuity-delta.md +120 -0
  479. package/resources/skills/drama-production/upstream/skills/short-drama-assets/references/continuity-lock.md +122 -0
  480. package/resources/skills/drama-production/upstream/skills/short-drama-assets/references/identity-vs-variant.md +140 -0
  481. package/resources/skills/drama-production/upstream/skills/short-drama-assets/references/location-and-view.md +84 -0
  482. package/resources/skills/drama-production/upstream/skills/short-drama-assets/references/occurrence-extraction.md +108 -0
  483. package/resources/skills/drama-production/upstream/skills/short-drama-assets/references/prop-and-state.md +126 -0
  484. package/resources/skills/drama-production/upstream/skills/short-drama-assets/references/stage-contract.md +43 -0
  485. package/resources/skills/drama-production/upstream/skills/short-drama-assets/references/voice-direction.md +179 -0
  486. package/resources/skills/drama-production/upstream/skills/short-drama-assets/scripts/asset_check.py +267 -0
  487. package/resources/skills/drama-production/upstream/skills/short-drama-assets/scripts/selftest.py +89 -0
  488. package/resources/skills/drama-production/upstream/skills/short-drama-develop/SKILL.md +157 -0
  489. package/resources/skills/drama-production/upstream/skills/short-drama-develop/agents/openai.yaml +4 -0
  490. package/resources/skills/drama-production/upstream/skills/short-drama-develop/assets/adaptation-map.example.jsonl +1 -0
  491. package/resources/skills/drama-production/upstream/skills/short-drama-develop/assets/creative-brief.md +120 -0
  492. package/resources/skills/drama-production/upstream/skills/short-drama-develop/assets/episode-map.jsonl +1 -0
  493. package/resources/skills/drama-production/upstream/skills/short-drama-develop/assets/story-engine.md +181 -0
  494. package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/adaptation-craft.md +219 -0
  495. package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/creative-reference-intake.md +57 -0
  496. package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/director-brief-craft.md +113 -0
  497. package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/episode-design.md +509 -0
  498. package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/genre-and-hook-playbook.md +240 -0
  499. package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/genre-cards//344/272/262/345/255/220/351/232/220/347/247/230.md +112 -0
  500. package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/genre-cards//344/273/231/344/276/240/344/277/256/347/234/237.md +51 -0
  501. package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/genre-cards//345/212/250/344/275/234/344/273/273/345/212/241.md +51 -0
  502. package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/genre-cards//345/217/244/350/243/205/346/235/203/350/260/213.md +51 -0
  503. package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/genre-cards//345/244/215/344/273/207/346/211/223/350/204/270.md +51 -0
  504. package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/genre-cards//345/256/266/345/272/255/345/205/263/347/263/273.md +51 -0
  505. package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/genre-cards//346/202/254/347/226/221/350/247/204/345/210/231.md +51 -0
  506. package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/genre-cards//347/224/237/346/264/273/346/265/201.md +51 -0
  507. package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/genre-cards//347/240/264/351/225/234/351/207/215/345/234/206.md +109 -0
  508. package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/genre-cards//350/201/214/345/234/272/345/226/234/345/211/247.md +51 -0
  509. package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/genre-cards//350/261/252/351/227/250/345/251/232/346/201/213.md +51 -0
  510. package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/genre-cards//350/272/253/344/273/275/351/224/231/344/275/215.md +51 -0
  511. package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/genre-cards.md +92 -0
  512. package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/mechanism-loop.md +282 -0
  513. package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/multi-episode-intake.md +128 -0
  514. package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/premise-devices.md +211 -0
  515. package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/reveal-reversal-payoff.md +99 -0
  516. package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/serial-character-and-memory.md +293 -0
  517. package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/stage-contract.md +88 -0
  518. package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/story-craft.md +359 -0
  519. package/resources/skills/drama-production/upstream/skills/short-drama-develop/scripts/episode_intake.py +699 -0
  520. package/resources/skills/drama-production/upstream/skills/short-drama-develop/scripts/selftest.py +47 -0
  521. package/resources/skills/drama-production/upstream/skills/short-drama-edit/SKILL.md +146 -0
  522. package/resources/skills/drama-production/upstream/skills/short-drama-edit/agents/openai.yaml +4 -0
  523. package/resources/skills/drama-production/upstream/skills/short-drama-edit/assets/remotion/README.md +60 -0
  524. package/resources/skills/drama-production/upstream/skills/short-drama-edit/assets/remotion/package.json +15 -0
  525. package/resources/skills/drama-production/upstream/skills/short-drama-edit/assets/remotion/remotion.config.ts +6 -0
  526. package/resources/skills/drama-production/upstream/skills/short-drama-edit/assets/remotion/src/Root.tsx +26 -0
  527. package/resources/skills/drama-production/upstream/skills/short-drama-edit/assets/remotion/src/Subtitles.tsx +88 -0
  528. package/resources/skills/drama-production/upstream/skills/short-drama-edit/assets/remotion/src/font.ts +46 -0
  529. package/resources/skills/drama-production/upstream/skills/short-drama-edit/assets/remotion/src/index.ts +4 -0
  530. package/resources/skills/drama-production/upstream/skills/short-drama-edit/assets/remotion/src/schema.ts +32 -0
  531. package/resources/skills/drama-production/upstream/skills/short-drama-edit/assets/remotion/tsconfig.json +13 -0
  532. package/resources/skills/drama-production/upstream/skills/short-drama-edit/assets//345/211/252/350/276/221/345/215/225.md +43 -0
  533. package/resources/skills/drama-production/upstream/skills/short-drama-edit/references/cut-craft.md +38 -0
  534. package/resources/skills/drama-production/upstream/skills/short-drama-edit/references/delivery-verify.md +29 -0
  535. package/resources/skills/drama-production/upstream/skills/short-drama-edit/references/generated-footage.md +54 -0
  536. package/resources/skills/drama-production/upstream/skills/short-drama-edit/references/sound-and-subtitles.md +60 -0
  537. package/resources/skills/drama-production/upstream/skills/short-drama-edit/references/stage-contract.md +51 -0
  538. package/resources/skills/drama-production/upstream/skills/short-drama-edit/scripts/edit_tool.py +1156 -0
  539. package/resources/skills/drama-production/upstream/skills/short-drama-edit/scripts/selftest.py +520 -0
  540. package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/SKILL.md +73 -0
  541. package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/agents/openai.yaml +4 -0
  542. package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/assets/image-prompt-spec.jsonl.md +187 -0
  543. package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/assets/image-prompts.md +42 -0
  544. package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/assets/lookdev-frame-spec.jsonl.md +128 -0
  545. package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/assets/lookdev-prompts.md +34 -0
  546. package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/examples/minimal-image-prompt-specs.jsonl +2 -0
  547. package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/references/character-and-look.md +153 -0
  548. package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/references/common-recipe.md +241 -0
  549. package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/references/edit-and-revision.md +110 -0
  550. package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/references/location-plate.md +151 -0
  551. package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/references/look-and-state-variant.md +97 -0
  552. package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/references/lookdev-frame.md +34 -0
  553. package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/references/production-sheet-recipes.md +177 -0
  554. package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/references/prop-plate.md +137 -0
  555. package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/references/review-and-fixtures.md +92 -0
  556. package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/references/stage-contract.md +32 -0
  557. package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/scripts/image_prompt_check.py +443 -0
  558. package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/scripts/selftest.py +95 -0
  559. package/resources/skills/drama-production/upstream/skills/short-drama-novel-analyze/SKILL.md +245 -0
  560. package/resources/skills/drama-production/upstream/skills/short-drama-novel-analyze/agents/openai.yaml +4 -0
  561. package/resources/skills/drama-production/upstream/skills/short-drama-novel-analyze/assets/episode-candidate.example.jsonl +3 -0
  562. package/resources/skills/drama-production/upstream/skills/short-drama-novel-analyze/references/adaptation-triage.md +116 -0
  563. package/resources/skills/drama-production/upstream/skills/short-drama-novel-analyze/references/adaptation-value.md +124 -0
  564. package/resources/skills/drama-production/upstream/skills/short-drama-novel-analyze/references/aggregation-and-entities.md +155 -0
  565. package/resources/skills/drama-production/upstream/skills/short-drama-novel-analyze/references/chapter-extraction.md +144 -0
  566. package/resources/skills/drama-production/upstream/skills/short-drama-novel-analyze/references/stage-contract.md +67 -0
  567. package/resources/skills/drama-production/upstream/skills/short-drama-novel-analyze/scripts/novel_index.py +651 -0
  568. package/resources/skills/drama-production/upstream/skills/short-drama-novel-analyze/scripts/selftest.py +51 -0
  569. package/resources/skills/drama-production/upstream/skills/short-drama-produce/SKILL.md +183 -0
  570. package/resources/skills/drama-production/upstream/skills/short-drama-produce/agents/openai.yaml +4 -0
  571. package/resources/skills/drama-production/upstream/skills/short-drama-produce/references/adapter-contract.md +219 -0
  572. package/resources/skills/drama-production/upstream/skills/short-drama-produce/references/providers/gpt-image-2.md +24 -0
  573. package/resources/skills/drama-production/upstream/skills/short-drama-produce/references/providers/minimax-h3-video.md +86 -0
  574. package/resources/skills/drama-production/upstream/skills/short-drama-produce/references/providers/minimax-music.md +25 -0
  575. package/resources/skills/drama-production/upstream/skills/short-drama-produce/references/providers/minimax-speech.md +41 -0
  576. package/resources/skills/drama-production/upstream/skills/short-drama-produce/references/providers/seedance.md +64 -0
  577. package/resources/skills/drama-production/upstream/skills/short-drama-produce/scripts/fixture_adapter.py +77 -0
  578. package/resources/skills/drama-production/upstream/skills/short-drama-produce/scripts/production_tool.py +2205 -0
  579. package/resources/skills/drama-production/upstream/skills/short-drama-produce/scripts/provider_adapters.py +1747 -0
  580. package/resources/skills/drama-production/upstream/skills/short-drama-produce/scripts/selftest.py +135 -0
  581. package/resources/skills/drama-production/upstream/skills/short-drama-review/SKILL.md +118 -0
  582. package/resources/skills/drama-production/upstream/skills/short-drama-review/agents/openai.yaml +4 -0
  583. package/resources/skills/drama-production/upstream/skills/short-drama-review/assets/finding-template.jsonl +2 -0
  584. package/resources/skills/drama-production/upstream/skills/short-drama-review/assets/supersession-decision.example.json +42 -0
  585. package/resources/skills/drama-production/upstream/skills/short-drama-review/assets/verdict-template.json +32 -0
  586. package/resources/skills/drama-production/upstream/skills/short-drama-review/examples/minimal-findings.jsonl +2 -0
  587. package/resources/skills/drama-production/upstream/skills/short-drama-review/examples/minimal-verdict.json +34 -0
  588. package/resources/skills/drama-production/upstream/skills/short-drama-review/references/anti-template-repair.md +109 -0
  589. package/resources/skills/drama-production/upstream/skills/short-drama-review/references/production-quality-gates.md +276 -0
  590. package/resources/skills/drama-production/upstream/skills/short-drama-review/references/project-calibration.md +83 -0
  591. package/resources/skills/drama-production/upstream/skills/short-drama-review/references/review-method.md +81 -0
  592. package/resources/skills/drama-production/upstream/skills/short-drama-review/references/rubric-assets-prompts.md +111 -0
  593. package/resources/skills/drama-production/upstream/skills/short-drama-review/references/rubric-source-analysis.md +108 -0
  594. package/resources/skills/drama-production/upstream/skills/short-drama-review/references/rubric-story-script.md +264 -0
  595. package/resources/skills/drama-production/upstream/skills/short-drama-review/references/rubric-visual-motion.md +184 -0
  596. package/resources/skills/drama-production/upstream/skills/short-drama-review/references/stage-contract.md +28 -0
  597. package/resources/skills/drama-production/upstream/skills/short-drama-review/scripts/review_check.py +325 -0
  598. package/resources/skills/drama-production/upstream/skills/short-drama-review/scripts/selftest.py +87 -0
  599. package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/SKILL.md +175 -0
  600. package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/agents/openai.yaml +4 -0
  601. package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/assets/coverage-audition.example.jsonl +2 -0
  602. package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/assets/coverage-template.json +49 -0
  603. package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/assets/keyframe-prompts.md +36 -0
  604. package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/assets/keyframe-template.jsonl +2 -0
  605. package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/assets/revision-lineage.fragment.json +12 -0
  606. package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/assets/scene-visual-plan.example.jsonl +2 -0
  607. package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/assets/shot-template.jsonl +2 -0
  608. package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/references/blocking-playbooks.md +216 -0
  609. package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/references/comic-keyframe-lexicon.md +156 -0
  610. package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/references/coverage-audition.md +34 -0
  611. package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/references/keyframe-craft.md +174 -0
  612. package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/references/lighting-craft.md +39 -0
  613. package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/references/production-shot-grammar.md +279 -0
  614. package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/references/review-and-fixtures.md +36 -0
  615. package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/references/scene-visual-plan.md +30 -0
  616. package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/references/screenplay-to-keyframe-example.md +155 -0
  617. package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/references/shot-craft.md +266 -0
  618. package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/references/shot-revision-identity.md +25 -0
  619. package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/references/stage-contract.md +57 -0
  620. package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/scripts/selftest.py +191 -0
  621. package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/scripts/storyboard_check.py +824 -0
  622. package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/SKILL.md +154 -0
  623. package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/agents/openai.yaml +4 -0
  624. package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/assets/coverage-scope.fragment.json +21 -0
  625. package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/assets/delivery-container.jsonl.md +101 -0
  626. package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/assets/motion-spec.jsonl.md +217 -0
  627. package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/assets/motion-terminal.example.jsonl +2 -0
  628. package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/assets/music-spec.jsonl.md +31 -0
  629. package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/assets/performance.fragment.json +38 -0
  630. package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/assets/video-prompts.md +67 -0
  631. package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/examples/minimal-music-specs.jsonl +2 -0
  632. package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/references/camera-audio-continuity.md +259 -0
  633. package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/references/delivery-profile.md +273 -0
  634. package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/references/generability.md +93 -0
  635. package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/references/minimax-h3.md +253 -0
  636. package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/references/motion-recipe.md +315 -0
  637. package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/references/performance-action-timing.md +209 -0
  638. package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/references/production-prompt-grammar.md +304 -0
  639. package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/references/review-and-fixtures.md +139 -0
  640. package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/references/seedance-2.0.md +50 -0
  641. package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/references/seedance-2.5.md +122 -0
  642. package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/references/stage-contract.md +60 -0
  643. package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/references/target-model-profile.md +116 -0
  644. package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/scripts/container_check.py +329 -0
  645. package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/scripts/motion_timing_check.py +450 -0
  646. package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/scripts/music_spec_check.py +327 -0
  647. package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/scripts/selftest.py +82 -0
  648. package/resources/skills/drama-production/upstream/skills/short-drama-write/SKILL.md +99 -0
  649. package/resources/skills/drama-production/upstream/skills/short-drama-write/agents/openai.yaml +4 -0
  650. package/resources/skills/drama-production/upstream/skills/short-drama-write/assets/beats.jsonl +2 -0
  651. package/resources/skills/drama-production/upstream/skills/short-drama-write/assets/episode-card-standalone.json +120 -0
  652. package/resources/skills/drama-production/upstream/skills/short-drama-write/assets/episode-card.json +55 -0
  653. package/resources/skills/drama-production/upstream/skills/short-drama-write/assets/screenplay.md +36 -0
  654. package/resources/skills/drama-production/upstream/skills/short-drama-write/assets/voice-record-sheet.jsonl.md +89 -0
  655. package/resources/skills/drama-production/upstream/skills/short-drama-write/references/dialogue-craft.md +526 -0
  656. package/resources/skills/drama-production/upstream/skills/short-drama-write/references/production-format-dialect.md +273 -0
  657. package/resources/skills/drama-production/upstream/skills/short-drama-write/references/scene-handoff-capsule.md +25 -0
  658. package/resources/skills/drama-production/upstream/skills/short-drama-write/references/scene-sound-dramaturgy.md +43 -0
  659. package/resources/skills/drama-production/upstream/skills/short-drama-write/references/screenplay-format.md +266 -0
  660. package/resources/skills/drama-production/upstream/skills/short-drama-write/references/script-craft.md +745 -0
  661. package/resources/skills/drama-production/upstream/skills/short-drama-write/references/stage-contract.md +36 -0
  662. package/resources/skills/drama-production/upstream/skills/short-drama-write/references/substitutable-realization.md +107 -0
  663. package/resources/skills/drama-production/upstream/skills/short-drama-write/scripts/duration_estimate.py +309 -0
  664. package/resources/skills/drama-production/upstream/skills/short-drama-write/scripts/screenplay_index.py +1091 -0
  665. package/resources/skills/drama-production/upstream/skills/short-drama-write/scripts/selftest.py +229 -0
  666. package/resources/skills/drama-production/upstream/skills/short-drama-write/scripts/voice_sheet_check.py +416 -0
  667. package/resources/skills/viora-canvas-production/manifest.json +23 -0
  668. package/resources/skills/viora-canvas-production/references/canvas-contract.md +50 -0
  669. package/resources/skills/viora-canvas-production/references/creative-production.md +50 -0
  670. package/resources/skills/viora-canvas-production/references/generation-delivery.md +36 -0
  671. package/resources/skills/viora-canvas-production/references/production-ledger.md +25 -0
@@ -0,0 +1,595 @@
1
+ # Cinematic Language Reference
2
+
3
+ Load this file when the task requires shot design, lens choice, camera geometry, coverage
4
+ planning, composition, aspect-ratio decisions, or any director-level visual reasoning —
5
+ Steps 5–8 of the pipeline, and every Mode D shot row or Mode E keyframe that needs a
6
+ defensible size/lens/angle/move. It owns shot grammar only: light lives in
7
+ [lighting-and-color.md](lighting-and-color.md), actor movement in
8
+ [blocking-and-staging.md](blocking-and-staging.md), cut logic in
9
+ [editing-and-assembly.md](editing-and-assembly.md).
10
+
11
+ All focal lengths here — and in every `lens_kit_mm` field in the style modules — are **35mm
12
+ full-frame equivalent**. To convert a real camera's marked focal length, multiply by its crop
13
+ factor: Super-35 ≈ ×1.4, APS-C ≈ ×1.5, MFT ×2, phone main cameras roughly ×4–7 depending on
14
+ sensor size. Write the full-frame number in prompts whatever camera you have in mind: caption
15
+ data is overwhelmingly full-frame, so models appear to read "85mm" as a look rather than as
16
+ optics, and a Super-35 number will be taken literally.
17
+
18
+ ## Shot functions
19
+
20
+ Function first, size second. If you cannot name the function, you do not have a shot.
21
+
22
+ | Function | Typical use | Good for | Fails when |
23
+ |---|---|---|---|
24
+ | Establishing | Define location, scale, atmosphere | Opening, act transition, isolation | Geography is already clear — it becomes a postcard and kills pace |
25
+ | Relation | Show power/relationship between bodies | Dialogue, conflict, social pressure | You need interiority; a two-shot cannot show a private thought |
26
+ | Close-up | Show a decision, fear, realization | Emotional turns, the beat before a choice | Used on every line — the currency devalues and the turn lands flat |
27
+ | Insert/detail | Make an object or clue carry story | Suspense, memory, irony, cause-and-effect | The object is not story-relevant; then it reads as B-roll |
28
+ | Reaction | Show the consequence of an action or line | Comedy timing, horror, social tension | The reaction repeats the emotion we just saw — dead air |
29
+ | Transition | Move time, place, or emotional register | Dream logic, memory, montage | It is only pretty; a transition with no vector is a stall |
30
+ | Aftermath | Let the audience process | Horror, tragedy, satire | The scene needs urgency; the hold reads as the film losing its nerve |
31
+ | Point-of-view | Bind us to one character's knowledge | Suspense, subjectivity, unreliability | No preceding look-shot establishes whose eyes these are |
32
+ | Reveal | Change what the audience knows | Turn, punchline, threat exposure | The information was already visible earlier in the frame |
33
+
34
+ ## Shot sizes
35
+
36
+ This file owns the size ladder: six rungs, EWS 1 · WS 2 · MS 3 · MCU 4 · CU 5 · ECU 6. Every
37
+ "two size steps" rule in this package is counted on these six rungs and no others — other files
38
+ cite the ladder rather than restating it.
39
+
40
+ Sizes are a ladder of psychological distance. Moving two rungs at a cut is a statement. Moving
41
+ one rung with the camera still on the same axis reads as a stutter rather than a cut: if the
42
+ angle does not change, change size by two rungs; if the angle changes by 30 degrees or more,
43
+ one rung is fine (see the 30-degree rule below).
44
+
45
+ | Size | Frame content | Reads as | Fails when |
46
+ |---|---|---|---|
47
+ | EWS / extreme wide | Figure ≤ 1/8 frame height | Geography, fate, human smallness | The audience cannot find the subject in 1 second |
48
+ | WS / wide | Full body plus environment | Body-to-space relationship, blocking | Faces must carry the beat — no performance survives here |
49
+ | MS / medium | Waist up | Readable action and dialogue | You need either the room or the thought; MS gives neither fully |
50
+ | MCU / medium close | Chest up | Performance with situational context | Overused as a lazy default; the scene flattens into television |
51
+ | CU / close-up | Head and shoulders | Thought, judgment, fear, decision | Cut to before the character has decided — you show a blank |
52
+ | ECU / extreme close | Eyes, mouth, hands, object | Obsession, clue, bodily pressure | Geography is unestablished; the audience loses where they are |
53
+
54
+ AI note: current image and video models are most reliable in the MS–CU band. EWS invites mangled distant faces and
55
+ invented extra people; ECU invites melted teeth, eyes, and finger counts. Budget your
56
+ hardest shots away from both extremes, or generate them as stills and animate minimally.
57
+
58
+ ## Camera angles
59
+
60
+ | Angle | Reads as | Fails when |
61
+ |---|---|---|
62
+ | Eye level | Realism, neutrality, observation | The scene needs a stated attitude and you gave it none |
63
+ | Low angle | Threat, authority, myth | The subject is not actually powerful — it reads as parody |
64
+ | High angle | Weakness, vulnerability, judgment | Used on a character we should identify with in their strong beat |
65
+ | Overhead / top-down | System, fate, layout, ritual, surveillance | Faces matter; from above nobody has a face |
66
+ | Dutch / canted | Instability, dream, moral distortion | Used more than twice in a sequence — it stops meaning anything |
67
+ | Over-the-shoulder | Confrontation, subjectivity, social pressure | The foreground shoulder is so large it blocks the beat |
68
+ | Profile | Withholding, formality, a person mid-decision | You need eye contact with the audience |
69
+
70
+ ## Camera height and the objective/subjective ladder
71
+
72
+ Height changes meaning more cheaply than angle. A tilted-up low angle announces itself as a
73
+ directorial gesture; the same camera at 0.9 m with a level lens axis reads as truth about
74
+ status and the audience never notices a shot was made. Set height first, angle second, and
75
+ most of the time leave the axis level.
76
+
77
+ | Height (lens axis) | Reads as | Use for | Fails when |
78
+ |---|---|---|---|
79
+ | Floor, 0–0.3 m | The world looms; ceilings exist | Dread, child/animal POV, objects as threat | Held long — it becomes a gimmick and the floor eats the frame |
80
+ | Knee/waist, 0.6–1.0 m | Monumental without cartoon | Authority, arrivals, the heroic register | The character is meant to be ordinary; it inflates them falsely |
81
+ | Chest, 1.2–1.4 m | Slight elevation of the subject's status | A quiet power gain inside a dialogue scene | You cut to it mid-scene without a story reason for the shift |
82
+ | Eye, 1.5–1.7 m | Peer relationship, neutral | Default for two people of equal standing | Every shot sits here — the scene has no status geometry |
83
+ | Above eye, 1.8–2.2 m | Observed, slightly diminished | Institutional pressure, being assessed | Confused with a "high angle"; keep the axis level or you overstate |
84
+ | Overhead, ceiling | Diagram, system, fate | Ritual, plans, bodies as pattern | The beat is interior; nobody has an interior from above |
85
+
86
+ These metres read against a standing adult, eyes around 1.6 m. What the audience registers is
87
+ the camera relative to the **subject's** eyes, never the absolute number: 1.2 m is a mild low
88
+ angle on someone standing and dead eye level on the same person seated, and every figure in
89
+ this table drops by roughly 0.4 m for a seated scene and more for a child.
90
+
91
+ In shot-reverse-shot the camera stands in for the character who is off screen, so set its
92
+ height at **that** character's eye height, not at the height of the person being photographed:
93
+ shoot the seated character from the standing one's eyes, and the standing one from the seated
94
+ one's. Parking both singles at a neutral 1.6 m is the error that makes an eyeline technically
95
+ correct and emotionally dead.
96
+
97
+ AI note: models rarely honor a numeric height. State the consequence instead: "camera low,
98
+ near floor level, the table edge cuts across the bottom of frame, we see the ceiling behind
99
+ him". Geometry described as visible content survives generation; measurements do not.
100
+
101
+ ## Camera movement
102
+
103
+ | Move | Reads as | Fails when |
104
+ |---|---|---|
105
+ | Locked / static | Control, dread, ritual, awkwardness, satire | The frame has no internal motion — it reads as a still, not a choice |
106
+ | Slow push-in (推镜) | Pressure, realization, truth emerging | Nothing changes in the performance during the push — the move promises a turn that never arrives |
107
+ | Slow pull-back (拉镜) | Abandonment, isolation, aftermath | Started before the beat resolves; you leave early and lose the point |
108
+ | Pan (摇镜) | Reveal, scan, link two ideas | A full frame-width of movement in under about 5 s at 24 fps strobes, and a high-contrast, hard-edged background strobes sooner than that |
109
+ | Tilt | Vertical scale, authority, threat above/below | Used to reveal something the wide already showed |
110
+ | Tracking / follow (跟镜) | Journey, pursuit, embodied movement | Camera speed does not match the subject's speed; the framing breathes badly |
111
+ | Handheld | Instability, panic, documentary immediacy | Applied to a scene about control — it contradicts the meaning |
112
+ | Orbit / arc (环绕) | Transformation, seduction, disorientation | Used on a static conversation; it makes stillness look nervous |
113
+ | Crane / boom | Scale, release, fate, transcendence | Used to end a scene that has not earned release |
114
+ | Whip pan | Violent link, compression of time | Both ends are not designed; a whip needs a departure and an arrival |
115
+ | Dolly zoom | Perceptual rupture, ground giving way | More than once per film — it becomes a party trick |
116
+
117
+ AI video rule: **one dominant camera move per generated clip**, unless the tool exposes an
118
+ explicit camera-control UI for combined moves. See
119
+ [ai-video-tool-adapters.md](ai-video-tool-adapters.md) for per-tool control surfaces.
120
+
121
+ ## Lens psychology
122
+
123
+ ### The focal-length table
124
+
125
+ | mm | On a face | On a space | Distance between planes | Edge behavior | Typical use | The failure it invites |
126
+ |---|---|---|---|---|---|---|
127
+ | 12–14 | Unusable close: nose balloons, ears vanish, forehead stretches | Whole room from one corner; walls race away | Wildly expanded — a 1 m gap between two people reads several times deeper than it would at 50mm | Severe stretch; corner heads go egg-shaped | Dislocation POV, cramped interiors made vast, in-car action, grotesque comedy | The subject shrinks to nothing and the frame becomes an empty architectural photo |
128
+ | 18 | Distorted at CU, acceptable from chest down | Aggressive space; ceilings and floors both present | Strongly expanded | Visible stretch in the outer 20% | Wide with attitude; a room that presses on people | Actors freeze because the camera is 40 cm from their face |
129
+ | 24 | Slight nose enlargement at MCU; fine at MS | The "walk into the room with them" wide | Expanded | Mild edge stretch; keep faces off the corners | Handheld interiors, moving masters, environment-as-character | Everything looks bigger than the scene deserves; intimacy is impossible |
130
+ | 28 | Reportage face — honest but broad | Room plus person, both readable | Moderately expanded | Slight; usable for faces near center | News/verité register, kitchen-sink drama | Reads as unstyled by default; you get "footage", not a shot |
131
+ | 35 | Truthful, unflattering-in-a-good-way | Person and place in equal weight | Near-neutral, mildly expanded | Clean | The workhorse for "we are in the scene with them" | Chosen by default rather than by decision; the film has no lens opinion |
132
+ | 40 | Closest to how one eye reads a face | The space you would actually notice standing there | Neutral | Clean | Invisible, honest coverage; scenes that must not feel authored | Nothing goes wrong — which means nothing is stated either |
133
+ | 50 | Neutral to mildly intimate | Fragment of the room, not the room | Neutral | Clean | Dialogue singles, the default "no comment" lens | It flatters nobody and separates nothing; scenes go inert |
134
+ | 85 | Flattering; jaw and nose settle; skin smooths | Background becomes texture, not geography | Compressed | Clean | Portrait CU, the lens of sympathy | Space disappears; the audience forgets where the scene is happening |
135
+ | 100 | Flattened, clinical, slightly cold | Background is a color field | Strongly compressed | Clean | Inserts, hands, objects, macro detail | Focus falls off so fast that a 3 cm sway ruins the take |
136
+ | 135 | Observed; the subject does not know we are here | Layers stack like cut-out cards | Strongly compressed | Clean | Surveillance register, isolation-in-a-crowd, the follow at distance | Reads as sports coverage if the camera hunts for the subject |
137
+ | 200 | Pinned to the background, unable to escape it | Depth collapses; crowds become a wall | Extremely compressed | Clean | Fate, entrapment, heat shimmer, the long approach that never arrives | Any camera or subject movement becomes unreadable jitter |
138
+
139
+ ### Why compression and expansion happen
140
+
141
+ Focal length does not change perspective. **Distance does.** Long lenses force you to stand
142
+ far away, and from far away the difference between "30 m from me" and "40 m from me" is small,
143
+ so the planes stack up and the background looms in close behind the subject: compression. Wide
144
+ lenses let you stand close, and from close the difference between 1 m and 3 m is enormous, so
145
+ planes fly apart, the background retreats, and anything approaching camera accelerates
146
+ violently: expansion. Practical consequences, in the order you should reach for them: to trap a
147
+ character in their environment, go long and put something solid a few metres behind them — the
148
+ compression pastes it onto their back. To give the same character room to act, go wide, stand
149
+ close, and keep them large in frame; the space opens behind them and they own it. To let the
150
+ room swallow them instead, keep the wide lens but back off so they are small in frame and the
151
+ architecture is the biggest thing in it. Wide plus large equals agency; wide plus small equals
152
+ insignificance — the lens alone decides neither. And if you cannot change your camera position,
153
+ changing the lens only changes crop, not psychology.
154
+
155
+ ### Lens decision table
156
+
157
+ | Story intent | Focal length | Why |
158
+ |---|---|---|
159
+ | We are inside this person's panic | 18–24, close, handheld | Expansion makes every gesture huge and the room unstable |
160
+ | We are with them, not judging them | 35–40 | Near-human perspective; the frame stops editorializing |
161
+ | Sympathy, private thought, confession | 85 | Face renders kindly, background melts, the world stops mattering |
162
+ | They are trapped by their situation | 100–200 | Compression pastes the background onto their back |
163
+ | They are being watched, or watching | 135–200, from a hiding place | The distance itself is the point of view |
164
+ | The room has power over the person | 14–24, subject small in frame, ceiling or upper structure visible above them | Expanded planes make architecture the largest thing in frame. Do not also drop the camera low — a low lens axis re-inflates the person you are trying to shrink |
165
+ | Two people are irreconcilably apart | 85–135 on singles, no two-shot | Compressed singles refuse to put them in the same space |
166
+ | Two people are actually together | 28–40 two-shot, shared focus | Both faces in one plane, one lens, one truth |
167
+ | Ritual, order, institutional weight | 24–35 symmetrical, centered | Straight lines stay straight; the geometry does the talking |
168
+ | Comic grotesque | 12–18, very close, low | The distortion is the joke; commit or do not do it |
169
+
170
+ Prompt use:
171
+
172
+ - Weak: "close-up, shallow depth of field, cinematic lens".
173
+ - Strong: "85mm close-up, camera 1.5 m from her face, the corridor behind her compressed into
174
+ soft vertical bands, her eyes sharp and the far wall unreadable."
175
+
176
+ ## Focus as direction
177
+
178
+ ### Deep vs shallow
179
+
180
+ Deep focus (small aperture, wider lens, subject farther) keeps foreground, mid, and background
181
+ all legible. It hands the audience a choice about where to look, and it lets you stage a scene
182
+ in depth instead of cutting it — see [blocking-and-staging.md](blocking-and-staging.md). It
183
+ fails when the background is unshaped: everything sharp and nothing composed is just clutter.
184
+
185
+ Shallow focus (wide aperture, longer lens, subject closer) makes the choice for the audience.
186
+ It fails when it becomes automatic — a whole film at f/1.4 has no way to escalate, and the
187
+ moment you actually need isolation, you have already spent it.
188
+
189
+ ### The depth-of-field arithmetic a director needs
190
+
191
+ Total depth of field scales roughly as `(distance² × f-number) / focal-length²`. Three usable
192
+ consequences:
193
+
194
+ - Double the subject distance → about **4×** more depth of field.
195
+ - Double the focal length → about **1/4** the depth of field.
196
+ - Open up one stop (f/2.8 → f/2) → about **0.7×** the depth of field.
197
+
198
+ Concrete, full-frame, subject at 2 m: a 24mm at f/2 gives roughly 0.85 m of depth; a 50mm at
199
+ f/2 gives roughly 0.19 m; an 85mm at f/2 gives roughly 0.07 m — less than the depth of a human
200
+ head, which is why a portrait at f/2 has sharp eyes and a soft ear. At 85mm f/2, a 3 cm sway
201
+ loses the eye. If the performance needs freedom to move, either stop down to f/4 or move back.
202
+
203
+ The proportionality only holds while the subject sits well inside the hyperfocal distance
204
+ (roughly `focal-length² / (f-number × 0.03mm)` on full frame — about 9.6 m for a 24mm at f/2).
205
+ Past that the far limit runs to infinity and no amount of extra distance buys you anything, so
206
+ do not use the doubling rule to reason about wide lenses on exteriors.
207
+
208
+ ### Rack focus as a story beat
209
+
210
+ A rack focus is a cut you did not make. Use it when the two planes belong to one continuous
211
+ thought — a face and the hand behind it, a listener and the door they have just noticed. It
212
+ must land **on a beat**: start the rack on a line or a sound, finish before the reaction. It
213
+ fails when it is decorative (racking to a plane that carries no information), when it is too
214
+ slow (the audience solves it before you arrive), or when both planes were already sharp enough
215
+ to read, in which case nothing happened.
216
+
217
+ The split-diopter look — a half lens that holds a very near and a very far plane sharp at once,
218
+ with a visible soft seam between them — buys you a rack-free two-plane frame. It fails if the
219
+ seam is not hidden along a vertical edge (a door frame, a pillar, a wall join), and it breaks
220
+ outright if either subject moves across the seam.
221
+
222
+ ### AI note: asking a model for depth of field
223
+
224
+ "Bokeh" alone tends to fail: in caption data the word sits mostly on photography stills full of
225
+ round out-of-focus highlight balls, so you get spurious glowing circles and a subject that looks
226
+ pasted on. Describe the **optical cause and the visible result** instead:
227
+
228
+ - Weak: "shallow depth of field, beautiful bokeh, blurred background".
229
+ - Strong: "shot on an 85mm at f/1.8 from 1.5 m; her eyelashes and the rim of the cup are
230
+ sharp; the bookshelf 4 m behind her dissolves into unreadable soft vertical shapes; no
231
+ circular highlights."
232
+
233
+ Additional rules: bake the depth cue into the keyframe image, because in practice a video model
234
+ will not invent a defocus that was not in the source frame. If you want a rack focus, request it as
235
+ a timed **event** with a named start and end target ("focus starts on her hands, then shifts to
236
+ the doorway behind her at about the halfway point; her hands go soft"), not as a lens property.
237
+ Expect a low hit rate and budget retries — see [failure-modes.md](failure-modes.md).
238
+
239
+ ## Continuity geometry
240
+
241
+ A video model has no idea where the previous shot put the camera. Every rule below therefore
242
+ gets two answers: what the rule is, and how you encode it in a keyframe or a prompt so that a
243
+ stateless generator obeys it.
244
+
245
+ ### The axis of action (180-degree rule)
246
+
247
+ Draw a line through the two people (or along the direction of travel). Keep the camera on one
248
+ side of it for the whole sequence. Then A stays screen-left looking right, B stays screen-right
249
+ looking left, and the audience never has to rebuild the room.
250
+
251
+ ```text
252
+ Plan view, looking down on the room. The axis is the line through A and B;
253
+ further down the page means further out from the axis.
254
+
255
+ [X] a camera here is across the line
256
+
257
+ A (*)= = = = = = = = = AXIS = = = = = = = = = (*) B
258
+
259
+ A faces camera-right B faces camera-left
260
+
261
+ [1] [2] [3]
262
+
263
+ [4]
264
+
265
+ [1] behind A, shooting past her -> OTS over A; we see B
266
+ [2] centre, square to the axis -> two-shot
267
+ [3] behind B, shooting past him -> OTS over B; we see A
268
+ [4] past B and further out -> clean single of A; B clears frame
269
+
270
+ [1]-[4] all sit below the axis, so in every one of them A is
271
+ screen-left looking right and B is screen-right looking left.
272
+ Cut to [X] and they swap sides: A is now screen-right looking
273
+ left, and the audience reads it as the two of them changing seats.
274
+
275
+ A third figure C standing off the line changes nothing while A
276
+ and B hold the beat; once C takes it, the live line is B-C or
277
+ A-C and [1]-[4] must be re-checked against that line instead.
278
+ ```
279
+
280
+ The camera does not have to stay in a narrow arc: anywhere below the line is legal, including a
281
+ position past B. What matters is the side, not the distance or the angle.
282
+
283
+ With three or more people the axis belongs to the currently dominant pair — whoever is exchanging
284
+ the beat — and it is redrawn the moment attention shifts to a different pair. For the shot list
285
+ that means the redraw is a shot (a wide holding all three in their new relation) or it is a move
286
+ (an arc that carries the audience onto the new line); it is never a silent cut, or the third body
287
+ reads as having teleported. Name the owning pair in every row of a three-hander — `axis:
288
+ ANNA–MARCO` — because a model has no concept of the redraw and will place the third figure
289
+ wherever composition suggests. Three-body staging patterns are in
290
+ [blocking-and-staging.md](blocking-and-staging.md).
291
+
292
+ Legitimate ways across the line, in ascending order of how much they interrupt the scene:
293
+
294
+ 1. Let a character move and re-form the axis: when A crosses to the other side of B, the line
295
+ redraws itself and every new position is legal. Costs nothing; the scene does the work.
296
+ 2. Move the camera across on screen — a dolly or arc that carries the audience over the axis.
297
+ Costs a move, but the audience never loses the room.
298
+ 3. Cut to a neutral shot on the axis itself — head-on, or straight down the line of travel —
299
+ then land on the new side. Costs one shot.
300
+ 4. Cut away to something else entirely (an insert, a third party), then re-establish. Costs a
301
+ shot and a beat of attention.
302
+ 5. Re-establish with a wide. Blunt, always works, costs you a shot and drops the scene's
303
+ temperature back to zero.
304
+
305
+ Crossing by accident fails loudly: the audience feels seasick without being able to say why,
306
+ and in an action beat two people appear to change which way they are running.
307
+
308
+ AI note: put the axis in the [continuity bible](continuity-bible.md) as a per-scene field —
309
+ "axis: corridor runs camera-left to camera-right; ANNA always screen-left facing right; MARCO
310
+ always screen-right facing left". Then enforce it in the **keyframes**, because that is the only
311
+ memory the pipeline has. Every keyframe prompt should name screen position and gaze direction
312
+ explicitly: "Anna occupies the left third of frame, in three-quarter profile, looking off-screen
313
+ to the right." Never let a model decide which way a character faces.
314
+
315
+ ### The 30-degree rule
316
+
317
+ Consecutive shots of the same subject must differ by at least 30 degrees of camera angle around
318
+ that subject, or by roughly two size steps, or the cut reads as a stutter. In practice change
319
+ both. It fails when neither change is big enough: a punch-in from MS to MCU on the same axis is
320
+ one size step and zero degrees, and it looks like a glitch; the identical size from 20 degrees
321
+ away looks like the camera hiccupped. Note that the new angle must stay on the same side of the
322
+ axis — a 30-degree move is not a licence to cross the line.
323
+
324
+ AI note: the model cannot compute an angle it never saw. Specify the new angle as visible
325
+ content — "now from her other side, the window is behind her left shoulder instead of her
326
+ right" — and change the shot size in the same instruction.
327
+
328
+ ### Screen direction
329
+
330
+ Direction of travel must survive the cut. A character leaving toward screen-right should be
331
+ moving screen-right in the next shot, until something on screen turns them. Two characters
332
+ travelling toward each other must be moving in **opposing** directions; two travelling together
333
+ must move in the same direction. It fails on chases first: reverse a runner's screen direction
334
+ and the audience believes they turned around.
335
+
336
+ AI note: motion direction is one of the most reliable things you can force in a video prompt.
337
+ Always write it: "she walks from frame-left toward frame-right, exiting right". Do not write
338
+ "she walks away" — the model will pick.
339
+
340
+ ### Eyeline match
341
+
342
+ An eyeline is a vector, not a glance. Three things must agree: horizontal direction (if A looks
343
+ off-screen right, then B is standing off-screen right of A's frame, so in the reverse B must
344
+ look off-screen **left** — two characters looking the same way are not looking at each other),
345
+ **height** (if B is taller or standing while A sits, A looks up and B looks down — mismatched
346
+ eye height is the most common amateur error), and distance (a person 1 m away is looked at
347
+ differently from one 8 m away, and the lens should match). It fails when both singles are shot
348
+ at the same neutral height, giving two people who are apparently the same height staring past
349
+ each other.
350
+
351
+ Shot-reverse-shot geometry, concretely: to shoot B, put the camera behind A's shoulder, roughly
352
+ 20–35 degrees off the eyeline, and mirror that position exactly to shoot A. Keep the same lens
353
+ and the same distance-to-subject on both sides unless you intend a power imbalance, and keep
354
+ the same headroom. The two foreground shoulders should mirror each other: A's shoulder sits in
355
+ the lower-left of every shot of B, B's shoulder in the lower-right of every shot of A. If the
356
+ shoulder jumps corners between setups, you have crossed the line.
357
+
358
+ AI note: eyelines get generated wrong constantly. Name the off-screen target's screen side and
359
+ height in the prompt — "he looks slightly up and off-screen to the left" — and check the pair
360
+ side by side before committing to a sequence. If the pair fights you, generate a two-shot and
361
+ crop two singles from it; the geometry is then guaranteed.
362
+
363
+ ### Enter-frame and exit-frame
364
+
365
+ If a character exits frame-right, they enter the next frame from frame-left, continuing the same
366
+ travel. Exiting **toward** or **away from** camera is a neutral reset: you may then enter from
367
+ any side. A character can also exit by being wiped past camera in foreground, which both hides a
368
+ cut and resets direction. It fails when you match an exit-right with an enter-right; the
369
+ character appears to have doubled back. This section covers only what the cut must preserve —
370
+ how to stage the entrance or exit itself lives in
371
+ [blocking-and-staging.md](blocking-and-staging.md).
372
+
373
+ AI note: exits and entrances are where AI clips are cheapest to join. Ask for the exit
374
+ explicitly as the clip's end state ("she walks fully out of frame right, leaving the empty
375
+ doorway") and the entrance as the next clip's opening state ("frame starts empty, she enters
376
+ from frame-left"). A body wiping past camera is the most forgiving seam an AI sequence has.
377
+
378
+ ## Coverage patterns
379
+
380
+ | Pattern | What it costs | What it buys | AI-video adaptation |
381
+ |---|---|---|---|
382
+ | Master + singles | Most setups, most time; performance must repeat | Total edit freedom; you can find the scene in the cutting room | You cannot re-shoot one performance from another angle. Generate the master, then generate each single from the **same keyframe world state** (same wardrobe, light, props, position), not from a re-description. Extract a frame from the master and re-angle it with an image model where supported |
383
+ | Triangle system (three cameras on one side: two singles + one two-shot) | Careful axis discipline; the two-shot constrains blocking | Cuttable dialogue with guaranteed screen direction | Build all three keyframes from one source image so identity holds; keep the axis fixed in the continuity bible; fails if you let the model re-invent the room in each keyframe |
384
+ | Oner / continuous take | Rehearsal, one bad beat kills the whole thing | Real time, unbroken pressure, spatial truth | A single generation is short, and shorter still once a face has to stay legible for its whole length — see the duration strategy in [ai-video-tool-adapters.md](ai-video-tool-adapters.md). Build the oner as a chain instead: feed each clip's last frame in as the next one's first frame where the tool exposes that slot, and hide the seam on a whip, a body-wipe, or a dark passage. Fails as soon as the model drifts identity — check the face at every seam |
385
+ | Walk-and-talk | Track/steadicam, background continuity, sound | Momentum; exposition that does not feel static | Worst case for AI: sustained gait plus lip movement produces leg-swapping and gait morph. Shorten to 3–4 s, shoot in profile or from the front at MS rather than a long backward dolly on faces, and cut on footfalls |
386
+ | Over-shoulder pair | Two matched setups; foreground shoulder eats frame | Confrontation with both parties present | Generate the pair from one two-shot keyframe so the shoulder, wardrobe, and light match. Fails when each OTS is generated independently — the shoulder changes size and the room flips |
387
+ | Insert cluster (hands, objects, clues, faces of things) | Cheap to shoot, easy to over-shoot | Rhythm, subtext, and the ability to rescue any edit | The highest-yield AI shots: short, small, no faces, no gait. Generate 3–5 per scene as insurance. Fails only when the object was never planted in a wider shot, so the audience does not know what they are looking at |
388
+
389
+ Rule of thumb for AI coverage: for a two-person dialogue beat, plan one wide, two singles, one
390
+ two-shot, and two inserts — six **setups** — and expect to cut with four. Six setups is not six
391
+ generations: each one takes as many attempts as its difficulty score earns it, so cost the beat
392
+ in attempts using the retry bands in [production-workflow.md](production-workflow.md).
393
+
394
+ ## Composition
395
+
396
+ ### Frame proportions
397
+
398
+ - Headroom: at MS, leave roughly 5–10% of frame height above the head. At CU, put the eyes on
399
+ the upper-third line and let the top of the skull leave frame. Fails as too much headroom (the
400
+ subject sinks and looks defeated by accident) or none at all in a shot that is not meant to
401
+ feel cramped.
402
+ - Lookroom / noseroom: scale it with how far the head is turned. Frontal or near-frontal — no
403
+ lookroom needed, centre them. Three-quarter — roughly 60/40 in favor of the side they face.
404
+ Full profile — up to two-thirds of the frame width in front of the nose, one-third behind the
405
+ head. Fails when a character is pressed against the edge they are looking toward — reads as an
406
+ error, not as pressure, unless the whole scene has established that grammar.
407
+ - Reversing lookroom deliberately (nose to the near edge) is a legitimate tool for suffocation
408
+ and for a character with no future in this room. It fails if used once, out of nowhere.
409
+
410
+ ### Structural patterns
411
+
412
+ | Pattern | Reads as | Fails when |
413
+ |---|---|---|
414
+ | Negative space | Absence, threat, loneliness | The empty area is textureless — then it is just underfilled |
415
+ | Frame within frame | Confinement, surveillance, social pressure | The inner frame is decorative and does not bound the subject |
416
+ | Symmetry / centered | Ritual, authority, absurdity, emotional deadness | The scene is about instability; symmetry contradicts it |
417
+ | Rule of thirds | Natural, dynamic, room to move | Applied reflexively — you get "correct" frames with no attitude |
418
+ | Off-center subject | Unease, imbalance, something missing | Off-center by so little it reads as a sloppy operator |
419
+ | Foreground obstruction | Secrecy, voyeurism, partial knowledge | The obstruction covers the beat we actually need to see |
420
+ | Deep staging / layering | Power layers, social hierarchy, memory | Only two planes exist; layering needs foreground, mid, and background |
421
+ | Leading lines | Inevitability, direction of attention, fate | The lines lead to nothing — the eye arrives and finds no subject |
422
+ | Balance of mass | Stability, or a stated instability | Both sides are equally heavy and equally uninteresting |
423
+
424
+ When centered is correct: direct address to camera, ritual and institutional order, a single
425
+ subject with no off-screen relationship, vertical 9:16 delivery, and any moment where the point
426
+ is that the character has no room to move. When it is wrong: two-handers with unequal power,
427
+ any shot where the subject should be pulled toward something outside the frame.
428
+
429
+ Framing encodes power without a line of dialogue. In any two-person frame the audience reads
430
+ whoever has: more frame area, greater height in frame, sharper focus, more lookroom, and fewer
431
+ obstructions. Change one of those five and the power changes. Change three and it is a scene.
432
+
433
+ Composition in a prompt:
434
+
435
+ - Weak: "well-composed two-shot of a manager and an employee, rule of thirds, balanced".
436
+ - Strong: "Two-shot. He fills the left half of frame from the waist up and is sharp; she is
437
+ seated behind him on the right, half his height in frame, partly hidden by his shoulder, and
438
+ slightly soft. Empty wall above her head; no room in front of her face."
439
+ - Then invert exactly one variable to hand her the scene: "she is sharp and he is soft" — same
440
+ blocking, opposite meaning, one clause changed.
441
+
442
+ ## Aspect ratio and format
443
+
444
+ | Ratio | What it does to blocking | What it does to the eye | Fails when |
445
+ |---|---|---|---|
446
+ | 2.39:1 | Lateral staging; two faces can share one CU-distance frame | Eye scans horizontally; landscape and confrontation both come free | Tall subjects, stairwells, standing figures — you get dead headroom and floor |
447
+ | 1.85:1 | Slightly more lateral room than 16:9, same instincts | Neutral theatrical; nothing announced | You expected scope's lateral pairing and did not get it |
448
+ | 16:9 (1.78) | The safe default; tolerates almost any staging | States nothing; the audience reads "video" | The format itself was supposed to mean something |
449
+ | 4:3 (1.33) | Vertical staging; one body fills the frame naturally | Faces and standing figures; the frame presses in from the sides | You need two people abreast, or landscape scale |
450
+ | 1:1 | Kills both lateral and vertical staging; forces centering | Object clarity, direct address, feed-native | Any scene with a relationship in it — there is nowhere to put the second person |
451
+ | 9:16 | Depth staging only; lateral pairing is impossible | Single subject, huge, close, present | You try to shoot a wide the way you would at 16:9 |
452
+ | 2:1 | Compromise; crops acceptably to both scope-ish and 16:9 | Mildly widescreen, delivery-flexible | You needed scope's real lateral extremity |
453
+
454
+ AI note: as of writing, most video tools expose a short list of output ratios rather than a free
455
+ choice, with 16:9 and 9:16 the ones you can count on; check the tool's current options before
456
+ you plan a format. Anything outside that list — scope, 4:3, 1:1 — has to be reached by
457
+ letterboxing or by cropping a wider generation. Generate native where the ratio is offered, and
458
+ crop or letterbox in the edit rather than in the prompt: asking for "anamorphic black bars"
459
+ tends to produce bars painted into the image, leaving you a smaller picture inside a fixed
460
+ frame.
461
+
462
+ ### Vertical (9:16) direction
463
+
464
+ Vertical is not 16:9 turned sideways. It is a different grammar and needs a different plan.
465
+
466
+ - Lateral blocking fails. At 9:16 a medium shot gives you barely more than one body-width of
467
+ usable horizontal space; two people side by side become two slivers with no faces. Stage in
468
+ depth instead: one person near camera occupying the lower half of the frame, the second
469
+ further back and therefore higher in frame. The frame's long axis maps to depth, and vertical
470
+ screen position becomes your distance cue. That cue lives in the ground plane, not in the
471
+ heads: shoot from slightly above eye level and keep the floor visible, because at exact eye
472
+ height both heads sit on the same horizon line and the depth reads only as a size difference.
473
+ Fails when both figures are the same size in frame — then it just looks like a mistake.
474
+ - Scale the subject up. Whatever size you would have chosen at 16:9, go one step tighter: a
475
+ wide becomes a medium, a medium becomes an MCU. Fails if you go tighter than CU by reflex —
476
+ ECU in vertical loses all geography.
477
+ - Headroom shrinks. Put the eyes at roughly one-third from the top and let the body fill the
478
+ rest. Fails when you keep 16:9 headroom habits — you get a floating head over a lot of torso.
479
+ - The wide-shot problem: an EWS in vertical wastes sky and floor and reduces the subject to a
480
+ few pixels. Four fixes, in order of preference: (a) find a genuinely vertical subject —
481
+ stairwell, tower, alley, escalator, elevator, waterfall; (b) fill the bottom third with a
482
+ foreground element so the frame has three layers; (c) make it a tilt reveal rather than a
483
+ static hold; (d) go high-angle so the ground plane, not sky, fills the frame.
484
+ - Safe zones (hedge and verify): most social platforms overlay UI across roughly the top
485
+ 10–12% and the bottom 18–25% of a 9:16 frame — captions, handles, buttons — and the exact
486
+ numbers change per platform and per release. Keep faces and any burned-in text inside the
487
+ middle ~60% of frame height, and check against the current spec before delivery.
488
+ - Native vertical vs shoot-16:9-and-reframe: compose native when the composition carries the
489
+ meaning (depth staging, vertical architecture, headroom-driven power) and when 9:16 is the
490
+ only delivery. Shoot 16:9 and reframe when the same content must ship to both, and when the
491
+ action is single-subject and centrally staged. For AI specifically, generating natively at
492
+ 9:16 usually beats cropping a 16:9 generation, because the crop throws away resolution and
493
+ slices through faces — but some models are visibly weaker at 9:16, so test one shot before
494
+ committing a whole sequence.
495
+
496
+ Vertical framing:
497
+
498
+ - Weak: "wide shot of a woman standing in a city street, vertical format".
499
+ - Strong: "9:16. Low angle, 35mm. She stands centered at mid-frame, head and shoulders in the
500
+ upper third, eyes about one-third down from the top; a wet railing crosses the bottom quarter
501
+ of frame in soft foreground; a lit tower recedes behind her filling the top of the frame.
502
+ Nothing important in the outer 20% at top or bottom."
503
+
504
+ ## Motion rendition
505
+
506
+ | Frame rate | Directing meaning | Fails when |
507
+ |---|---|---|
508
+ | 24 fps | Film. Slight strobe is part of the dream layer | Fast lateral pans and hard-edged detail — the strobe becomes a defect |
509
+ | 25 fps | Effectively identical to 24; broadcast territories | Mixed with 24 fps material without a plan; motion cadence fights itself |
510
+ | 30 fps | More present, more immediate, more "now" | You wanted the dream layer; 30 keeps waking the audience up |
511
+ | 48/50 fps | Hyper-real clarity; strips the veil off | Drama — the audience reads it as behind-the-scenes or live coverage |
512
+ | 60 fps | Motion-clear; intended to be retimed later | Delivered straight as narrative; it looks like a demo reel |
513
+
514
+ Shutter angle in plain terms: 180 degrees means the shutter is open for half of each frame's
515
+ duration, giving the amount of blur audiences read as normal. Narrow it to 45–90 degrees and
516
+ motion becomes crisp, staccato, and anxious — good for impact and combat, exhausting over a
517
+ scene. Open it to 270–360 degrees and motion smears — drunk, drugged, feverish, dissolving.
518
+ Choose the angle to state a nervous-system condition, not to fix an exposure problem.
519
+
520
+ Slow motion is an intentional beat, not a default. It should mark a change in whose time we are
521
+ in: a character's perception stretching, a physical consequence being examined, or a ritual
522
+ being given weight. Test: if you cannot say whose subjectivity the slow motion belongs to, cut
523
+ it. It fails when it is applied to everything, at which point the film reads as an advertisement
524
+ and the one moment that genuinely needed it has nothing left to escalate to.
525
+
526
+ AI note on motion: many video models render motion blur badly — either too little, giving a
527
+ game-engine crispness on fast movement, or a smeared soup that destroys hands and faces. Phrase
528
+ around it rather than into it. Keep motion slow and near frame center; ask for the blur
529
+ locally rather than globally ("natural motion blur on her sweeping hand; the background stays
530
+ sharp"); avoid fast lateral camera moves entirely, and if you need speed, generate a short whip
531
+ and cut on it rather than asking a model to sustain velocity. Few tools expose frame rate as a
532
+ control at all, so set it in the UI if it is there and otherwise do not prompt a number:
533
+ describe the behavior instead ("she raises the glass very slowly, water arcs hanging in the
534
+ air"). For true slow motion, prefer generating at normal speed and
535
+ retiming in the edit — cleaner, but budget for optical-flow interpolation, since retiming 24 fps
536
+ footage to 40% judders without it. Vocabulary for all of this lives in
537
+ [prompt-lexicon.md](prompt-lexicon.md).
538
+
539
+ ## Worked example: the shared control scene
540
+
541
+ Every director style module directs this same beat, so you can diff a style against this neutral
542
+ baseline: *a person stands at a closed apartment door holding something they intend to give
543
+ away, hesitates, and leaves without knocking.* Decisions taken in this file's order — function,
544
+ size, height, lens, angle, move.
545
+
546
+ | # | Function | Size / lens | Height / angle | Move | Why |
547
+ |---|---|---|---|---|---|
548
+ | 1 | Establishing | EWS, 24mm, camera ~14 m back at the far end of the hall | 1.5 m, level | Locked, 4 s | The corridor is the antagonist. A 24mm on full frame sees a frame height roughly equal to the subject distance, so at 14 m she reads about an eighth of frame height and the door and the length of the hall stay legible with her. A level axis refuses to editorialize before she has done anything |
549
+ | 2 | Relation (person vs door) | MS, 40mm | Her eye height, level, swung ~40° round to her side | Push-in ~15 cm over 6 s | 40mm at her own eye height takes no side, so the only thing that changes is the push, and the audience reads the change as coming from her rather than from the camera |
550
+ | 3 | Insert | CU, 50mm at f/8, camera ~0.5 m out | Just above her hands, tilted slightly down | Locked, 3 s | The object carries the beat, so all of it must be sharp. Even stopped to f/8, 0.5 m away buys only about 5 cm of depth — her fingers and the face of the parcel, nothing behind. The door therefore has to be planted in shot 1; do not expect to hold it here |
551
+ | 4 | Aftermath | EWS, 24mm, identical to shot 1 | 1.5 m, level | Locked, 5 s | Repeating the opening frame with her gone is the whole point. Nothing new may enter the frame, or the repeat stops registering as a repeat |
552
+
553
+ Geometry check on those cuts. Shot 1 to shot 2 moves two size steps and about 40 degrees
554
+ around her, so it is comfortably clear of the 30-degree rule; had shot 1 been a WS *and* shot 2
555
+ stayed on the corridor axis, it would have been one step and no angle change, and read as a
556
+ stutter — either change on its own would have saved it. Shot 4 deliberately returns to shot 1's
557
+ exact setup: an identical repeat is not a stutter, because the intervening shots break it and
558
+ the content has changed — she is no longer in it.
559
+
560
+ Axis: the corridor runs camera-left to camera-right; she faces the door screen-right in shots 1
561
+ to 3. She turns on screen before leaving, so exiting screen-left in shot 4 is legal — hold on the
562
+ empty door for at least two seconds after she clears frame.
563
+
564
+ Shot 2 as a finished image-to-video prompt:
565
+
566
+ ```text
567
+ Medium shot, 40mm, camera at her eye height, level. A woman stands facing a closed apartment
568
+ door, her body three-quarters away from us toward the door at the right of frame, holding a
569
+ small wrapped parcel against her chest with both hands. The corridor recedes behind her to the
570
+ left. The camera pushes in very slowly, about 15 centimetres across the whole shot. She lifts
571
+ the parcel about an inch, holds it there, then lowers it and lets her shoulders drop. She does
572
+ not knock and does not speak; her feet stay planted. A single ceiling fixture lights her from
573
+ above and behind; the door stays in shadow.
574
+ ```
575
+
576
+ Why it is written that way: one camera move, one actor action, one light source, and the
577
+ hesitation is spelled out as three timed physical events — lift, hold, lower — rather than as
578
+ the word "hesitates", which a model has no way to render.
579
+
580
+ ## Adjacent grammar owned elsewhere
581
+
582
+ These belong to other files. Use them, do not restate them here.
583
+
584
+ - Light as meaning — low-key, hard sidelight, backlight/silhouette, practicals, soft overcast,
585
+ flicker, ratios, motivation, palette: [lighting-and-color.md](lighting-and-color.md).
586
+ - Actor movement, proxemics, power blocking, entrances and exits, blocking notation:
587
+ [blocking-and-staging.md](blocking-and-staging.md).
588
+ - Cut logic and rhythm — long holds, hard cuts, match cuts, dissolves, jump cuts, average shot
589
+ length, transition engineering: [editing-and-assembly.md](editing-and-assembly.md).
590
+ - Per-genre defaults for all of the above: [genre-playbooks.md](genre-playbooks.md).
591
+
592
+ ## Director's rule
593
+
594
+ Every camera decision must answer: "What should the audience feel or understand now that they
595
+ could not feel or understand before?"