@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,424 @@
1
+ # Blocking and Staging
2
+
3
+ Load this file when you reach Step 6 (Blocking & staging), when a scene puts two or more bodies in one space, when a shot row needs start/end positions, or when a generated clip contains correct-looking people doing nothing that means anything.
4
+
5
+ Owns: staging geometry, proxemics, power blocking, entrances and exits, eyeline as an instruction to the audience, blocking notation, blocking-to-prompt translation. Shot size, angle, lens psychology, composition, and coverage geometry — the axis of action (180-degree rule), the 30-degree rule, screen direction, eyeline match — belong to [cinematic-language.md](cinematic-language.md).
6
+
7
+ All focal lengths here are 35 mm full-frame equivalent, matching [cinematic-language.md](cinematic-language.md), and each is paired with the camera distance it assumes: a focal length without a distance is not a frame.
8
+
9
+ ## Thesis
10
+
11
+ 1. Blocking(走位)is the first directorial decision. Camera is the second. You cannot fix bad staging with a good lens.
12
+ 2. Camera follows bodies. Pick the geometry first, then pick the position that reads it.
13
+ 3. A scene blocked well can be shot flat — one locked wide, no move — and still read.
14
+ 4. A scene blocked badly needs six shots to explain what one arrangement should have said in silence.
15
+ 5. For AI video this stops being taste and becomes economics: staging is the direction that survives generation best, because it lives in the keyframe rather than in the verbs of the text prompt.
16
+
17
+ ## Proxemics: distance is dialogue
18
+
19
+ Proxemics(人际距离)is the cheapest subtext generator on a set. Measure it in metres and write the number down.
20
+
21
+ | Zone | Distance | Reads as | Camera consequence |
22
+ |---|---|---|---|
23
+ | Intimate | 0–0.45 m | Love, threat, medicine, violence. There is no neutral version — the eyeline decides which. | The frontal two-shot stops working: the heads overlap and the near one masks the far one. Go 90° to the axis for a profile two-shot (50–65 mm from ~1.2 m), or take a tight over-the-shoulder and give up on showing both faces. |
24
+ | Personal | 0.45–1.2 m | Confession, friendship, negotiation between equals, conspiracy. | The natural two-shot distance. 40–50 mm from ~1.8 m holds both heads at medium with air between them. |
25
+ | Social | 1.2–3.6 m | Transaction, work, strangers, formality, interview. | Holding both needs about 3 m of frame width — 28–35 mm from ~3 m — and nobody is bigger than a medium-long. Use the two-shot for the gap, cover the faces in singles. This is where a barrier object belongs. |
26
+ | Public | 3.6 m+ | Address, performance, authority, abandonment. | Both bodies in one frame means both are small. That is geometry; no focal length fixes it. The real choice is where you stand: wide and close to one body converts the separation into a size differential (the ladder, below); long and far equalizes them and flattens the gap into a graphic. |
27
+
28
+ Changing zone mid-scene is the loudest event in a blocked scene. Rules:
29
+
30
+ - Closing one zone = escalation. Whether it reads as desire or as threat is set entirely by eyeline and pace, not by distance.
31
+ - Opening one zone = withdrawal, refusal, fear, or a decision already made in private.
32
+ - Crossing two zone boundaries in one move (public to personal, 4 m to 0.8 m) is a violence-level event. At most once per scene.
33
+ - Whoever initiates the change is whoever wants something. Whoever refuses to restore the distance — does not step back, does not lean away — holds the power.
34
+ - Always write the change as `2.4 m → 0.6 m over 4 s`, never as "moves closer". "Closer" is unfilmable and unpromptable.
35
+
36
+ Worked: a nurse tells a patient's brother the outcome. Blocked as `nurse 3.2 m → 1.0 m over 5 s, brother does not move`, the scene is a professional taking responsibility. Blocked as `nurse holds 3.2 m, brother closes to 1.0 m`, the same words become a man demanding an answer. One number moved from one column to the other, and the scene changed sides.
37
+
38
+ ## Power geometry
39
+
40
+ Nine devices. Each produces a read whether you intended it or not, so choose deliberately.
41
+
42
+ | Device | The geometry | The read |
43
+ |---|---|---|
44
+ | Height differential | One standing, one lower. Real eye-height gaps: standing to seated in a chair ≈ 0.35–0.45 m; standing to upright kneeling ≈ 0.45–0.55 m; standing to sitting on the floor ≈ 0.7–0.9 m; standing to prone ≈ 1.4 m | The higher body owns the scene, and the read scales with the gap. A chair is a mild concession; the floor is a surrender. |
45
+ | Level break | A body deliberately changes height mid-scene — sits, kneels, stands up | The move *is* the beat. Cheapest visible status change there is. |
46
+ | Foreground dominance | The near body is 2–3× the far body's frame height | Whoever is nearer the lens is louder, even silent, even out of focus. |
47
+ | Who moves vs who holds | One crosses; the other does not adjust position or posture | Stillness is power. The one who has to move is the one who needs something. |
48
+ | Crossing into space | Closing from social into personal without invitation | Invasion. If the other backs off, the invader wins the beat outright. |
49
+ | Back to camera | One body turned away, usually holding a frame edge | Information withheld. The audience is aligned with the visible face; the turned back reads as threat or authority. |
50
+ | Boxed by architecture | Doorframe, window mullion, or column edge within 0.2 m of the body's silhouette | The space is judging them. They are already caught. |
51
+ | Who controls the exit | Which body stands between the other and the door | The one nearer the exit can end the scene. The one further away is asking permission. |
52
+ | Turning away mid-line | A body rotates 90–180° while the other is still speaking | Refusal. Louder than any line you could write. |
53
+
54
+ Worked, one line — "You should have told me." Speaker seated, listener standing, listener between the speaker and the door: the line is an appeal, and it will be refused. Speaker standing, listener seated, speaker between the listener and the door: the same line is a sentence being handed down. Nothing changed but height differential and who controls the exit, and one of the two is now begging.
55
+
56
+ ## Staging pattern library
57
+
58
+ Plan-view diagrams. Legend, used by every diagram below:
59
+
60
+ ```text
61
+ [CAM]^ [CAM]v [CAM]< [CAM]> camera position and the cardinal direction it looks
62
+ [CAM]* camera on a diagonal axis; the note gives the angle
63
+ A B C characters at their floor position
64
+ A^ Av A< A> which way that character faces
65
+ A(45) A(135) facing in degrees off the lens axis: 0 = into the lens, 180 = full back
66
+ A' that character's END position after the move
67
+ ==== wall # doorway/gap [==] table/desk/bed/counter
68
+ ==> movement path; the label gives distance and duration
69
+ ```
70
+
71
+ ### 1. The table opposition
72
+
73
+ ```text
74
+ Bv
75
+ [============]
76
+ A^
77
+ [CAM]^
78
+ ```
79
+
80
+ - Reads: two fixed positions, a sanctioned distance, a negotiation with rules. Nobody can invade; the furniture forbids it.
81
+ - Camera: over the near shoulder, 25–35° off the table axis, 40–50 mm, at seated eye height (~1.2 m). Squaring off at 90° to the axis instead flattens it into a hearing between equals.
82
+ - AI: high. Two seated bodies, zero translation. Animate breath, one hand on the table, a 30° head turn. This is the most reliable dialogue geometry available.
83
+
84
+ ### 2. The approach
85
+
86
+ ```text
87
+ Bv
88
+ A' A' = end position, 0.6 m from B
89
+ [CAM]> A^ A: 2.4 m ==> 0.6 m over 4 s; B does not step back
90
+ ```
91
+
92
+ - Reads: want. The mover is the one who needs something. If B holds ground, B wins; if B retreats, A wins.
93
+ - Camera: 90° to the axis of approach so the shrinking gap is the subject. 35 mm. Shoot down the axis instead and the distance change disappears entirely.
94
+ - AI: medium. One mover, one direction, roughly one step per second. The 1.8 m drawn here is over the reliable ceiling for a single translation, so either start A at 1.5 m and close to 0.6 m, or split the approach across two clips; write B's hold as an explicit instruction either way.
95
+
96
+ ### 3. The retreat
97
+
98
+ ```text
99
+ Bv B holds, still facing A
100
+ A^ A: 0.6 m start
101
+ [CAM]> A' A' = 2.0 m, still facing B, backing away over 3 s
102
+ ```
103
+
104
+ - Reads: the decision has already been made off-screen. Retreat while still facing forward is refusal; retreat while turning is fear.
105
+ - Camera: 90° to the axis, same as the approach. Or hold on the one who stays and let the retreater shrink in the background — that version reads as loss rather than refusal.
106
+ - AI: medium-high, and the cheaper of the two. The bodies end further apart than they started, so nothing merges and nothing occludes; the approach ends with two silhouettes converging, which is exactly where limbs fuse. In the background version the retreater also loses pixels as it goes, which is less identity to hold, not more.
107
+
108
+ ### 4. The parallel walk
109
+
110
+ ```text
111
+ [CAM]v camera leads, retreating up-page at the walkers' pace
112
+ A^ B^ A and B walk up-page toward the lens, 0.8-1.0 m apart, matched pace
113
+ ```
114
+
115
+ - Reads: alliance under motion. Two people who agree walk in step; disagreement shows as one drifting half a pace ahead.
116
+ - Camera: leading frontal at 35–50 mm; or lock off 90° to the path and let them cross it; or follow from behind at 85 mm so they never seem to arrive.
117
+ - AI: low in the leading version — two bodies and the camera all moving. Substitute the locked 90° cross, or the static behind-shot. Both keep the meaning and cost one reliable clip.
118
+
119
+ ### 5. The orbit
120
+
121
+ ```text
122
+ B starts at A's 9 o'clock, ends at A's 1 o'clock, radius 1.2 m
123
+ (12)
124
+ (9) A (3) A pivots in place; the eyeline never breaks
125
+ (6)
126
+ [CAM]^ at (6), 1.5 m out
127
+ ```
128
+
129
+ - Reads: assessment, seduction, or interrogation. The orbiter is deciding something about the pivot.
130
+ - Camera: beside A at the centre of the arc, panning with B; or locked at 6 o'clock so B crosses frame while A rotates in place. A locked camera goes blind at whichever clock position sits opposite it, and from 6 o'clock that is 12 — B passes dead behind A. Moving to 4 o'clock only shifts the blind spot to 10, still on B's path; for a 9-to-1 arc the only camera positions whose blind spot falls entirely outside it are 2 and 8 o'clock. Do not reach for 10 or 11 instead: their blind spots are clear, but B walks through them, and a camera standing on the mover's path is a collision you have to restage rather than an occlusion you can wait out.
131
+ - AI: low. Orbit is the highest-drift camera move and a pivoting body compounds it. Substitute two static setups shot from the arc's start angle and end angle; the cut does the orbit.
132
+
133
+ ### 6. The wedge
134
+
135
+ ```text
136
+ Av Bv start: A and B 1.0 m apart, both facing camera
137
+ Av C'v Bv end: C has taken the gap, 0.5 m each side
138
+ [CAM]^
139
+ ```
140
+
141
+ - Reads: a pair becomes a triangle. Whoever takes the gap has ended the private thing that was happening in it.
142
+ - Camera: frontal, symmetric, 35 mm from ~3 m, wide enough that the gap is visible *before* C claims it. The composition must have a hole in it for the beat to land. The moment C lands, A–B stops being the only line in the room — pick which axis governs the coverage by the three-or-more-bodies rule in [cinematic-language.md](cinematic-language.md) before you shoot any single.
143
+ - AI: medium. C's arrival is an entrance — start with C's shoulder already at frame edge (see Entrances below) rather than conjuring a whole body.
144
+
145
+ ### 7. The barrier
146
+
147
+ ```text
148
+ B> || A< barrier on the axis: fence, glass, counter, car, bed
149
+ ||
150
+ [CAM]^ square-on, so the barrier bisects the frame
151
+ ```
152
+
153
+ - Reads: the object is the third character and it is winning. Differs from the table opposition in asymmetry — one side has access, the other does not.
154
+ - Camera: square-on so the barrier splits the frame; 50 mm from ~3 m holds about 2.2 m of frame width, which is both bodies plus the barrier. Go longer only if you can back off in proportion, or one of them leaves the frame.
155
+ - AI: high for an opaque barrier — counter, fence rail, car door, headboard. Nobody passes through anything and the object is static geometry. Drop to medium for glass: reflections and what is visible through the pane are the least stable things in the frame, so either keep the glass dark and non-reflective or accept that the reflection will change between clips.
156
+
157
+ ### 8. The threshold
158
+
159
+ ```text
160
+ Bv B inside the room, 1.5 m past the sill, facing the door
161
+ =====#===== wall and doorway; the sill is the line
162
+ A^ A outside, toes at the sill, never crosses
163
+ [CAM]^ camera outside behind A; the doorway frames B
164
+ ```
165
+
166
+ - Reads: permission. Whoever has not crossed has not committed. The sill is the scene's question, made out of wood.
167
+ - Camera: behind and past A's shoulder at 28–35 mm, A's eye height, so the doorframe frames B — frame-within-frame, see [cinematic-language.md](cinematic-language.md).
168
+ - AI: high while nobody crosses; low the instant a body walks through the opening, because occlusion plus a lighting change is where identity dies. Cut at the sill.
169
+
170
+ ### 9. The wall
171
+
172
+ ```text
173
+ ================ wall, window, or sink
174
+ A^ A turned away: back to B and to camera
175
+ B^ B 2.0 m behind, addressing A's back
176
+ [CAM]^ default: straight up the axis, from behind B
177
+ ```
178
+
179
+ - Reads: refusal to be looked at. The audience wants the face and cannot have it; that wanting is the tension.
180
+ - Camera: two honest choices. From behind B at 50 mm you get two backs and no faces at all — that is the point of the device. If you need B's face in the same frame, move round to about 90° off the axis and stand level with A, 40–50 mm: A becomes a three-quarter back in the near ground and B reads three-quarter front beyond. Do not go past A to the wall itself — from there you are in front of A and you get the face you were withholding. You cannot have A's back and B's face from behind B; the camera has to pick a side. Do not cut to A's face until A turns — the turn is your payoff.
181
+ - AI: high in the behind-B version, structurally the most forgiving framing in this library, because there is no face anywhere in frame to hold consistent. Spend your longest clip here. The 90° version drops to medium: B's face is now on the hook for the whole duration.
182
+
183
+ ### 10. The shrinking two-shot
184
+
185
+ ```text
186
+ A> 1.2 m B< start: personal distance, balanced two-shot, air between them
187
+ A'> 0.4 B< end: B has not moved; A has closed 0.8 m; the air is gone
188
+ [CAM]^ camera does not move and does not reframe
189
+ ```
190
+
191
+ - Reads: intensification with no help from the camera. The frame stays optically identical; what changes is that the negative space separating them has been spent.
192
+ - Camera: locked, 40–50 mm, framed for the START distance. Do not reframe. At the end the pair sits as one mass in a frame built for two, and the leftover air at the edges is the device, not a mistake.
193
+ - AI: medium. One mover, lateral, short distance, and B needs an explicit hold. Keep at least 0.3 m of visible gap at the end or the two silhouettes fuse into one body.
194
+
195
+ ### 11. The reveal-by-turn
196
+
197
+ ```text
198
+ A(135) start: three-quarter away, face withheld
199
+ A'(45) end: three-quarter toward — a 90° turn over 2-3 s
200
+ [CAM]^
201
+ ```
202
+
203
+ - Reads: the moment we are allowed to know. Cheap, ancient, and still works if the withholding was earned first.
204
+ - Camera: locked, 50–85 mm, tight enough that the turn fills the frame. Never move the camera during a body rotation — the two rotations fight and the result reads as a mistake.
205
+ - AI: medium at the 90° drawn here. A true 180°, back-of-head to full face, means the model invents a face it has never seen, and the invented face will not be your character. Where the tool exposes a first/last-frame slot, pin both ends and the problem goes away — see [ai-video-tool-adapters.md](ai-video-tool-adapters.md).
206
+
207
+ ### 12. The ladder
208
+
209
+ ```text
210
+ C^ BG 6.0 m smallest, softest, least power
211
+ B< MG 3.0 m
212
+ Av FG 1.2 m largest, sharpest, most power
213
+ [CAM]^ 24-35 mm, chest height, 1.2 m from the FG body
214
+ ```
215
+
216
+ - Reads: a hierarchy stated in one frame with no dialogue, and the arithmetic states it — at 1.2 m and 6.0 m the FG body is five times the BG body's frame height.
217
+ - Camera: 24–35 mm at chest height, stopped down if you want all three planes legible. To invert the hierarchy — soft foreground head, sharp figure far away, saying the one who matters is the one who is distant — you have to give up deep focus: open up or go longer. You cannot have the inversion and deep focus in the same frame.
218
+ - Long lenses collapse the ladder. An 85 mm forces you back to about 2.9 m to hold the same foreground framing, which takes the size ratio from 5:1 to under 3:1. Lens mechanics live in [cinematic-language.md](cinematic-language.md).
219
+ - AI: high. Every body can be static; depth does all the work. Best story-value-per-clip geometry in the library. One caveat: the background face degrades first, so cast that position as a back, a silhouette, or someone whose likeness you do not need to hold.
220
+
221
+ ### 13. The pin
222
+
223
+ ```text
224
+ ================ wall
225
+ Av A's back 0.2 m off the wall, no lateral exit
226
+ B^ B at 0.5 m, squared up, closing A's only open line
227
+ [CAM]* axis 60-70° off the wall plane, off B's near shoulder
228
+ ```
229
+
230
+ - Reads: no options. Distinguish it from the approach: the approach is about want, the pin is about geometry that has already decided the outcome.
231
+ - Camera: 60–70° off the wall plane at A's chin height, so the wall runs back into frame, A's three-quarter face sits against it, and B's back three-quarter fills the near ground. Square-on to the wall turns it into a plain backdrop and you lose the 0.2 m that makes it a pin. Parallel to the wall gives you both bodies in clean profile — legible, but it is a diagram of a pin rather than the experience of one, because neither face is available and nothing compresses toward the lens.
232
+ - AI: medium-high. Static bodies in a tight space. The failure is limbs merging into the wall — keep 0.15–0.2 m of visible gap behind A in the keyframe.
233
+
234
+ ### 14. The pass-through
235
+
236
+ ```text
237
+ Bv B holds in MG, facing camera
238
+ A> ==> A'> A crosses FG left to right, 0.8 m from the lens, 1.5 s
239
+ [CAM]^ camera never follows A
240
+ ```
241
+
242
+ - Reads: an interruption that changes nothing, or a hidden edit point. Functions as a natural wipe.
243
+ - Camera: locked medium or wide on B; let A's body do the wiping. Following A throws away the device.
244
+ - AI: medium. A single FG body crossing is easy motion, but it occludes B, and occlusion is where identity dies. Clear frame in ≤1.5 s and re-pin B's face in the next clip's keyframe — see [continuity-bible.md](continuity-bible.md).
245
+
246
+ ## Depth staging
247
+
248
+ - Default read: nearer = larger = louder. FG dominates MG dominates BG. Every departure from this is a statement, so make sure you meant it.
249
+ - The foreground filter. Shoot through a doorway, a curtain edge, a shoulder, a bottle, wire mesh. The FG object names the audience's relationship to the scene: eavesdropping, barred, complicit, protected. Keep it 0.3–0.8 m from the lens and let it fall soft; a sharp FG object becomes a subject instead of a filter.
250
+ - Working distances on a 35 mm lens: FG at 0.8–1.2 m, MG at 2.5–3.5 m, BG at 6 m+. Deep staging wants 24–40 mm; see the ladder above for what a long lens costs you.
251
+ - Depth substitutes for coverage. Inside one AI clip you cannot cut, but you can restage. Put A in FG and B in BG; have A lower their head 20°, and B — suddenly unobstructed — becomes the subject with no cut and nothing new invented. Depth change is the only editing available inside a single generation, and it survives generation far better than any camera move, because the model never has to render a body it has not already seen.
252
+ - One clip, three beats, no cut: FG head fills the right third → FG head drops → BG figure stands. That is a shot-reverse-shot's worth of information for one generation.
253
+
254
+ ## Entrances and exits
255
+
256
+ - This section covers what an entrance or exit *means* inside a scene. What an exit obliges the next shot to do — matching exit-right to enter-left, the neutral reset of a toward/away exit — is continuity geometry and lives in [cinematic-language.md](cinematic-language.md).
257
+ - Frame-left entry moves the body rightward; frame-right entry moves it leftward. In left-to-right reading cultures, rightward reads as forward/continuation and leftward as return/resistance. This is a soft convention: its power comes almost entirely from staying consistent within one film, not from any inherent meaning.
258
+ - Entering toward camera: the body grows, we are the destination, power accrues. Entering away from camera: the body shrinks, we are being left behind. Same physical action, opposite scene.
259
+ - Exiting past camera — the body passes the lens and clears frame — is the strongest exit available: it breaks the plane and puts the character on our side of the world. For AI it is a trade, not a free win. The body scales up to fill the frame just before it clears, which is the most face it will ever ask a model to hold; but it also blurs and occludes as it goes, which makes the join into the next clip nearly free. Angle the exit path a few degrees off the lens axis so the face never arrives dead-centre at maximum size, and grade this exit medium, not high.
260
+ - Ranked for AI reliability, safest first: out of frame laterally at constant scale; away from camera into depth; past the lens.
261
+ - The empty-frame hold. Let the character clear the frame and hold the empty composition for 1.5–4 s. The frame becomes the subject; the audience keeps looking at where the person was. It is a device, not dead air, and it costs one cheap generation of a static plate with ambient motion (curtain, steam, dust, traffic). Using that same empty frame as a join between two clips is a cut decision and belongs to [editing-and-assembly.md](editing-and-assembly.md).
262
+ - AI asymmetry you must plan around: exits are easy, entrances are hard. An entering body does not exist in the start frame, so the model invents it, and invented faces do not match your character. Substitution: begin with a sliver already in frame — a shoulder at the edge, a hand, a shadow across the floor, a reflection — so the "entrance" is a translation of something that already exists. Or make the entrance a new clip whose keyframe already shows the character mid-stride.
263
+
264
+ Worked: the same woman leaves the same room, three ways. `Exits frame-right at constant scale, 2.0 s, camera holds 2 s on the empty chair` — she is gone and we are left with the room. `Walks upstage through the door and never turns back, 3.0 s` — she is gone and we were never worth turning for. `Crosses to the lens and clears frame-left, 1.5 s` — she is gone and she has taken us with her. Only the third one is expensive to generate, and only the third one gives the next clip a free seam.
265
+
266
+ ## Eyeline and attention
267
+
268
+ - Where a character looks is an instruction to the audience. They will look there roughly one beat later. An unmotivated eyeline is a lie the audience will try to honour and then resent.
269
+ - The look-then-reveal structure: Shot 1 is the look — a face near a frame edge, eyeline pointed off-frame; Shot 2 is the thing, framed from roughly the looker's height and angle. Cost: two clips. Payoff: the audience builds the geography themselves and the model never has to render two subjects in one frame.
270
+ - False eyeline as tension: point the look off-frame at nothing and either never pay it off, or pay it off somewhere else. Hold the look 1.5–3 s past comfortable. Use once; twice teaches the audience to stop believing you.
271
+ - Height rule: generate the reverse at a camera height matching the looker's eye height, or the two clips will not read as the same room. A seated person's view of a stander is a low angle; render that reverse from standing eye level and the geometry lies — most obviously in interrogation and bedside scenes. Keep the metre value in the shot plan for yourself, but put the *consequence* in the prompt ("the camera sits below his shoulder line and the ceiling is visible behind him"), because models honour visible geometry far more reliably than numbers. Height ladder in [cinematic-language.md](cinematic-language.md).
272
+ - For the axis of action (180-degree rule) and eyeline-match continuity across cuts, see [cinematic-language.md](cinematic-language.md) — including its rule for three or more bodies, which is what any wedge, ladder or three-way notation line staged here inherits the moment a third body arrives.
273
+
274
+ Worked, two clips: (1) MCU, a woman at the right edge of frame, eyes pointed off frame-left and slightly down, held 2 s past comfortable, one blink; (2) locked wide from her eye height, angled frame-left, of a kitchen table with two mugs on it and only one of them steaming. Neither clip contains two people, neither asks the model to invent anything, and between them the audience has built a room, a relationship, and an absence.
275
+
276
+ ## Blocking notation
277
+
278
+ This is the director's working layer, not an output format. Use it while you design the beat, then write the *result* into the Blocking column of the Mode D shot plan in plain start → move → end prose, which is what [shot-plan-template.md](../assets/shot-plan-template.md) expects. Every line below is paired with exactly that translation.
279
+
280
+ ```text
281
+ POSITION <lateral>/<depth> FL | CL | FR over FG | MG | BG
282
+ FL = frame-left, FR = frame-right
283
+ CL = CENTRE lateral, NOT camera-left
284
+ @off-FL / @off-FR = out of frame on that side
285
+ FACING :tC toward camera :aC away from camera
286
+ :pL profile, facing frame-left :pR profile, facing frame-right
287
+ :3qL three-quarter toward frame-left :3qR three-quarter toward frame-right
288
+ GRAMMAR <NAME> @<start> --[verb, distance, duration]--> @<end>
289
+ chain arrows for a two-verb move; each arrow is one clip's worth of risk
290
+ HOLD <NAME> @<pos> (hold) does not move, does not turn
291
+ (hold at <anchor>) pins the hold to a named anchor
292
+ JOIN characters and objects separated by |
293
+ EYELINE eye: A>B, B>floor, A>off-FR, A>lens changes tagged @t=<seconds>
294
+ ANCHOR door @CL/BG, table @CL/MG static geometry that matters
295
+ ```
296
+
297
+ Five worked lines:
298
+
299
+ ```text
300
+ 1 A @CL/FG:aC (hold) | B @CL/BG:tC --[stands, 1 step, 2.0s]--> @CL/MG:tC | eye: A>B, B>A
301
+ 2 A @FL/FG:pR --[crosses right, 1.4m, 1.5s]--> @off-FR | B @CL/MG:tC (hold) | eye: B>lens
302
+ 3 A @CL/MG:aC (hold at sill) | door @CL/MG | B @CL/BG:tC (hold) | eye: A>B, B>floor
303
+ 4 A @FL/MG:pR (hold) | B @FR/MG:pL --[steps in, 0.8m, 3.0s]--> @CL/MG:pL | eye: B>A, A>B, then A>floor @t=2.5
304
+ 5 A @FL/MG:tC (hold) | B @FR/MG:tC (hold) | C @CL/BG:tC --[walks in, 1.6m, 2.5s]--> @CL/MG:tC | eye: A>C, B>C, C>lens
305
+ ```
306
+
307
+ Plain English, which is what goes in the shot plan:
308
+
309
+ 1. A stands in the foreground with their back to us and never moves; deep in the shot, facing us, B rises and takes one step forward into midground. They hold each other's gaze. A's back stays the same size while B grows — power transferring across a static frame.
310
+ 2. A crosses the foreground left to right in profile and clears frame; B stays put in midground, looking straight down the lens. A wipe that pretends to be an event.
311
+ 3. A stands at a doorway with their back to us and does not cross; B waits deep in the room, facing us, looking at the floor. Nobody moves. Everything is in who has not crossed.
312
+ 4. Both start in profile at personal distance; B closes 0.8 m over three seconds. A never moves a foot, holds the gaze for 2.5 s, then drops it to the floor. B paid for the beat with a step, but A lost it with the eyeline, not with the feet — stillness only holds power while the look holds too.
313
+ 5. Two people face us from opposite thirds; a third walks in from the background and takes the gap between them, looking at the lens. The wedge. The pair's shared thing is over.
314
+
315
+ ## Blocking for AI video
316
+
317
+ Reliable — write these directly, no hedging:
318
+
319
+ | Motion | Grade | How to write it |
320
+ |---|---|---|
321
+ | Breathing, chest and shoulder rise | High | "his chest rises and falls slowly" — always include; it is what stops a clip reading as a still |
322
+ | Garment settle, hair drift, ambient cloth | High | Name the fabric and the cause: "the coat hem lifts in the doorway draught" |
323
+ | Head turn ≤ 45° | High | State degrees and duration: "turns her head 30° to the left over 1.5 seconds" |
324
+ | Head lower / lift | High | Best single-beat emotional move in AI video. Pair it with an eyeline change. |
325
+ | Arm raise to chest or head height, no contact | High | Stop the verb before contact: "raises her hand toward the glass" |
326
+ | Single translation, one direction, ≤ 0.9 m | High | One verb, one vector, ≤ 1 step per second |
327
+ | Slow walk toward camera, 2–3 steps, frontal | High | Frontal keeps the face anchored; do not combine with a camera push |
328
+ | Slow pivot in place, ≤ 90° | Medium | Beyond 90° the model starts inventing the unseen side |
329
+ | Seated to standing, unassisted, hands off furniture | Medium | Hands touching the chair is the failure point; keep them on knees |
330
+ | Reaching toward a static object | Medium | Cut before contact. Possession is a job for the next clip. |
331
+
332
+ Unreliable — plan the substitution before you write the prompt:
333
+
334
+ | Motion | Grade | Substitution that keeps the story value |
335
+ |---|---|---|
336
+ | Two-person choreography (both bodies on separate paths) | Low | Elect one mover and give the other an explicit hold, or split into two clips and let the cut carry the second move |
337
+ | Object handoff | Low | Generate the reach and, separately, the possessed object. The cut performs the transfer — oldest trick in editing, see [editing-and-assembly.md](editing-and-assembly.md) |
338
+ | Stairs | Low | Two locked clips, top of flight and bottom of flight; or one locked frame through which only head and shoulders rise |
339
+ | Running with camera follow | Low | Locked wide with the subject crossing frame, or tight on the face with body bounce and streaking background |
340
+ | Fine hand manipulation (keys, buttons, writing, pouring, lighting) | Low | Static insert of the finished state; or frame hands out of shot and let sound plus the reaction tell it — see [sound-and-dialogue.md](sound-and-dialogue.md) |
341
+ | Leave frame and re-enter | Low | Exit only. Re-entry is a new clip with a new keyframe. |
342
+ | Full 180° turn revealing a face | Low | Turn 90° (three-quarter-away to three-quarter-toward), or pin both ends with a first/last-frame pair |
343
+ | Two characters speaking with visible lip-sync in one clip | Low | Single-speaker clips, cut on line ends; dialogue handling lives in [sound-and-dialogue.md](sound-and-dialogue.md) |
344
+ | Sitting down into furniture | Low | Keyframe them already seated and animate the settle: weight dropping, shoulders releasing |
345
+ | Falling or collapsing to the floor | Low | Keyframe at the tipping point and end near impact, or skip to the aftermath and hold |
346
+ | Precise gaze at a specific off-screen point | Low | Fix the eyeline in the keyframe, or put a practical light or object in that direction for the eye to follow |
347
+ | Passing between FG and BG behind another body | Low | Use the pass-through instead: the FG body wipes, the BG body holds and is re-pinned next clip |
348
+
349
+ Symptom-level repairs for clips that already failed live in [failure-modes.md](failure-modes.md).
350
+
351
+ ## Worked example: one beat, three films
352
+
353
+ The beat: a person delivers bad news to someone sitting down. MAYA stands. RAY is seated. The words are identical in all three versions; only the geometry changes.
354
+
355
+ Version A — The Verdict. Maya keeps her height and her distance, so the only body that moves is the one receiving.
356
+
357
+ ```text
358
+ MAYA @FL/FG:aC (hold) | RAY @CL/MG:tC --[lowers head 25°, 1.5s]--> @CL/MG:tC | eye: MAYA>RAY, RAY>MAYA, then RAY>floor @t=2.0
359
+ ```
360
+
361
+ - Camera: locked, 35 mm, at Ray's seated eye height (~1.2 m), so Maya's shoulder towers in the near left third. Height differential and foreground dominance stacked, with nobody crossing the floor.
362
+ - Prompt: `Locked camera at the seated man's eye height, so the standing woman is seen from below her shoulder line. Her back and shoulder fill the near left third of the frame, dark and unmoving; the seated man is centred in the midground facing the lens, hands on his knees. She does not move and does not turn. He holds her gaze for two seconds, then lowers his head about twenty-five degrees over a second and a half and his eyes drop to the floor. Dust drifts in the window light behind him. End on the same composition, her shoulder still filling the left third, his head lowered. Same faces, same clothes, same room, same light. No hand contact, no camera move, nobody standing up, nobody leaving frame.`
363
+
364
+ Version B — The Level. Maya crosses and surrenders her height; the news becomes shared grief.
365
+
366
+ ```text
367
+ RAY @CL/MG:tC (hold) | MAYA @FR/MG:pL --[crosses left, 1.0m, 2.0s]--> @CL/MG:pL --[kneels, 1.5s]--> @CL/MG:3qL | eye: MAYA>RAY, RAY>MAYA
368
+ ```
369
+
370
+ - Camera: locked, 50 mm from ~3 m, at Ray's seated eye height. Starts as a gap and ends as a pair — a shrinking two-shot performed by the actors, not the lens.
371
+ - Prompt: `Locked camera at the seated man's eye height, both people in frame throughout. He is centred and still, facing the lens, hands on his knees. The standing woman is at the right of frame; she crosses about a metre toward him over two seconds, then lowers herself onto one knee beside his chair over another second and a half, until their heads are level. He does not move; his gaze follows her down. Her coat settles as she kneels. End with both heads at the same height, about twenty centimetres apart, still looking at each other. Same faces, same clothes, same room, same light. No hand contact, no camera move, nobody standing up again.`
372
+ - Reliability: this is the expensive one — a cross and a level change chained inside one clip, and the notation shows it as two arrows. If it drifts, split at the moment her knee touches the floor and let the cut do the descent.
373
+
374
+ Version C — The Threshold. Maya never crosses the sill; the news is a delivery, and Ray is left holding it.
375
+
376
+ ```text
377
+ MAYA @FL/FG:3qR (hold at sill) | door @FL/FG | RAY @CL/BG:tC --[turns head 40° toward frame-left, 1.5s]--> @CL/BG:3qL | eye: RAY>MAYA, MAYA>floor
378
+ ```
379
+
380
+ - Camera: locked, 28 mm, standing eye height, deep focus from inside the room, so Maya is a near silhouette in the doorway and Ray is small and deep. The ladder used straight — nearest is largest is loudest — and the irony is the payload: the loudest position in the frame belongs to the person who is leaving.
381
+ - Prompt: `Locked wide camera inside a room, deep focus, standing eye height. A woman stands in the open doorway at the left edge of frame, close to the lens, backlit from the hallway and mostly dark, three-quarters turned toward the room; she does not step in. A man sits far back in the centre of the room, small in frame, facing the lens. He turns his head about forty degrees toward the doorway on the left of frame over a second and a half and holds it there. She keeps her eyes down. Curtain fabric moves slightly in the draught from the open door. End with him looking at her and her looking at the floor, the doorway still between them. Same faces, same clothes, same room, same light. Nobody crosses the doorway, no camera move, no extra people.`
382
+
383
+ The read, side by side: A is a verdict and assigns blame; B is shared grief and forgives; C is abandonment and confesses cowardice. Same words, three films, one variable — geometry.
384
+
385
+ ## Blocking-to-prompt translation
386
+
387
+ A video model wants a trio: start state, action, end state. The notation line already contains all three; this procedure extracts them.
388
+
389
+ 1. Split the line into three still images you could actually draw: start, the midpoint that proves the motion happened, and end. If you cannot draw the midpoint, the motion is too large for one clip — split it.
390
+ 2. Elect exactly one mover. Everyone else gets an explicit hold verb. Unwritten bodies drift.
391
+ 3. Write the start state as a composition, never as a feeling: who is at FL/CL/FR, who is at FG/MG/BG, which way each faces, how far apart in metres, what object sits between them.
392
+ 4. Convert the arrow into one verb + direction + magnitude + duration. "Steps toward him, about half a metre, over two seconds" — not "approaches", not "moves closer emotionally".
393
+ 5. Write the holds as sentences: "he does not rise and does not turn; his hands stay on his knees."
394
+ 6. State the eyeline at start, at end, and any change with its timing.
395
+ 7. Add exactly one environmental motion, motivated by something visible in the frame — draught, dust in a shaft, steam, traffic outside a window.
396
+ 8. Write the end state as a composition again. This is the frame you want frozen. If a next shot exists, make this end state equal that shot's start state and log it in [continuity-bible.md](continuity-bible.md).
397
+ 9. Lock identity: face, hair, costume, room, light quality.
398
+ 10. Build the negative list from the low-reliability motions you deliberately avoided in this clip — not a generic block. Word-level choices live in [prompt-lexicon.md](prompt-lexicon.md).
399
+
400
+ The shape that comes out, ready for [video-prompt-template.md](../assets/video-prompt-template.md):
401
+
402
+ ```text
403
+ START: [camera height and lens] [who is where, facing where, how far apart, what is between them]
404
+ ACTION: [one mover: verb + direction + distance + duration] [explicit holds] [eyeline and its change]
405
+ [one environmental motion]
406
+ END: [composition to freeze on] [identity locks] [negatives drawn from what you avoided]
407
+ ```
408
+
409
+ Before and after, same blocking (Version A above):
410
+
411
+ ```text
412
+ Weak: A woman tells a seated man bad news. She approaches him emotionally.
413
+ Dramatic lighting, cinematic mood.
414
+ Strong: Locked camera at the seated man's eye height, so the standing woman is seen from below
415
+ her shoulder line. Her back and shoulder fill the near left third, dark and unmoving;
416
+ he is centred in midground facing the lens, hands on his knees. She does not move and
417
+ does not turn. He holds her gaze two seconds, then lowers his head about twenty-five
418
+ degrees over a second and a half and his eyes drop to the floor. Dust drifts in the
419
+ window light behind him. End on the same composition, his head lowered. Same faces,
420
+ clothes, room, light. No hand contact, no camera move, nobody standing up, nobody
421
+ leaving frame.
422
+ ```
423
+
424
+ The weak version has no geometry, so the model chooses the geometry, and a model's default geometry is two people standing at conversational distance doing nothing — which is the shot you did not want.