videoclaw 3.0.0-alpha.11 → 3.0.0-alpha.13

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 (521) hide show
  1. package/CLAUDE.md +58 -21
  2. package/README.md +62 -46
  3. package/assets/review-station/index.html +10 -0
  4. package/dist/cli/handlers/character.d.ts.map +1 -1
  5. package/dist/cli/handlers/character.js +8 -0
  6. package/dist/cli/handlers/character.js.map +1 -1
  7. package/dist/cli/handlers/cinema-candidate.d.ts.map +1 -1
  8. package/dist/cli/handlers/cinema-candidate.js +6 -1
  9. package/dist/cli/handlers/cinema-candidate.js.map +1 -1
  10. package/dist/cli/handlers/cinema-image-jobs.d.ts +4 -0
  11. package/dist/cli/handlers/cinema-image-jobs.d.ts.map +1 -0
  12. package/dist/cli/handlers/cinema-image-jobs.js +25 -0
  13. package/dist/cli/handlers/cinema-image-jobs.js.map +1 -0
  14. package/dist/cli/handlers/cinema.d.ts.map +1 -1
  15. package/dist/cli/handlers/cinema.js +4 -0
  16. package/dist/cli/handlers/cinema.js.map +1 -1
  17. package/dist/cli/handlers/create.d.ts.map +1 -1
  18. package/dist/cli/handlers/create.js +1 -15
  19. package/dist/cli/handlers/create.js.map +1 -1
  20. package/dist/cli/handlers/execution.d.ts.map +1 -1
  21. package/dist/cli/handlers/execution.js +28 -3
  22. package/dist/cli/handlers/execution.js.map +1 -1
  23. package/dist/cli/handlers/project-ops.d.ts +7 -0
  24. package/dist/cli/handlers/project-ops.d.ts.map +1 -1
  25. package/dist/cli/handlers/project-ops.js +15 -19
  26. package/dist/cli/handlers/project-ops.js.map +1 -1
  27. package/dist/cli/handlers/prompt-craft.d.ts.map +1 -1
  28. package/dist/cli/handlers/prompt-craft.js +13 -4
  29. package/dist/cli/handlers/prompt-craft.js.map +1 -1
  30. package/dist/cli/handlers/reference-sheets.d.ts.map +1 -1
  31. package/dist/cli/handlers/reference-sheets.js +13 -0
  32. package/dist/cli/handlers/reference-sheets.js.map +1 -1
  33. package/dist/cli/handlers/review-portal.d.ts.map +1 -1
  34. package/dist/cli/handlers/review-portal.js +2 -1
  35. package/dist/cli/handlers/review-portal.js.map +1 -1
  36. package/dist/cli/handlers/stages.d.ts.map +1 -1
  37. package/dist/cli/handlers/stages.js +55 -10
  38. package/dist/cli/handlers/stages.js.map +1 -1
  39. package/dist/cli/handlers/vocal-guides.d.ts +2 -0
  40. package/dist/cli/handlers/vocal-guides.d.ts.map +1 -0
  41. package/dist/cli/handlers/vocal-guides.js +51 -0
  42. package/dist/cli/handlers/vocal-guides.js.map +1 -0
  43. package/dist/cli/vclaw.d.ts +1 -0
  44. package/dist/cli/vclaw.d.ts.map +1 -1
  45. package/dist/cli/vclaw.js +121 -75
  46. package/dist/cli/vclaw.js.map +1 -1
  47. package/dist/index.d.ts +4 -2
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +2 -1
  50. package/dist/index.js.map +1 -1
  51. package/dist/video/artifacts.d.ts +3 -0
  52. package/dist/video/artifacts.d.ts.map +1 -1
  53. package/dist/video/artifacts.js +7 -2
  54. package/dist/video/artifacts.js.map +1 -1
  55. package/dist/video/assemble/audio-mix-plan.d.ts +1 -1
  56. package/dist/video/assemble/audio-mix-plan.d.ts.map +1 -1
  57. package/dist/video/assemble/stitch-audio-mix.d.ts +105 -0
  58. package/dist/video/assemble/stitch-audio-mix.d.ts.map +1 -0
  59. package/dist/video/assemble/stitch-audio-mix.js +192 -0
  60. package/dist/video/assemble/stitch-audio-mix.js.map +1 -0
  61. package/dist/video/assemble/stitch-concat.d.ts +123 -0
  62. package/dist/video/assemble/stitch-concat.d.ts.map +1 -0
  63. package/dist/video/assemble/stitch-concat.js +161 -0
  64. package/dist/video/assemble/stitch-concat.js.map +1 -0
  65. package/dist/video/assemble/stitch-filters.d.ts +59 -0
  66. package/dist/video/assemble/stitch-filters.d.ts.map +1 -0
  67. package/dist/video/assemble/stitch-filters.js +84 -0
  68. package/dist/video/assemble/stitch-filters.js.map +1 -0
  69. package/dist/video/assemble/stitch.d.ts +7 -258
  70. package/dist/video/assemble/stitch.d.ts.map +1 -1
  71. package/dist/video/assemble/stitch.js +11 -410
  72. package/dist/video/assemble/stitch.js.map +1 -1
  73. package/dist/video/character-auto-create.d.ts +10 -0
  74. package/dist/video/character-auto-create.d.ts.map +1 -1
  75. package/dist/video/character-auto-create.js +90 -10
  76. package/dist/video/character-auto-create.js.map +1 -1
  77. package/dist/video/character-performance.d.ts +19 -0
  78. package/dist/video/character-performance.d.ts.map +1 -0
  79. package/dist/video/character-performance.js +39 -0
  80. package/dist/video/character-performance.js.map +1 -0
  81. package/dist/video/character-reference-prompts.d.ts +20 -0
  82. package/dist/video/character-reference-prompts.d.ts.map +1 -0
  83. package/dist/video/character-reference-prompts.js +47 -0
  84. package/dist/video/character-reference-prompts.js.map +1 -0
  85. package/dist/video/characters.d.ts +6 -0
  86. package/dist/video/characters.d.ts.map +1 -1
  87. package/dist/video/characters.js +6 -0
  88. package/dist/video/characters.js.map +1 -1
  89. package/dist/video/cinema-candidate-review.d.ts +3 -0
  90. package/dist/video/cinema-candidate-review.d.ts.map +1 -1
  91. package/dist/video/cinema-candidate-review.js +14 -2
  92. package/dist/video/cinema-candidate-review.js.map +1 -1
  93. package/dist/video/cinema-console-render.d.ts.map +1 -1
  94. package/dist/video/cinema-console-render.js +3 -2
  95. package/dist/video/cinema-console-render.js.map +1 -1
  96. package/dist/video/cinema-delivery.d.ts.map +1 -1
  97. package/dist/video/cinema-delivery.js +8 -0
  98. package/dist/video/cinema-delivery.js.map +1 -1
  99. package/dist/video/cinema-image-bindings.d.ts +5 -0
  100. package/dist/video/cinema-image-bindings.d.ts.map +1 -0
  101. package/dist/video/cinema-image-bindings.js +51 -0
  102. package/dist/video/cinema-image-bindings.js.map +1 -0
  103. package/dist/video/cinema-image-jobs.d.ts +58 -0
  104. package/dist/video/cinema-image-jobs.d.ts.map +1 -0
  105. package/dist/video/cinema-image-jobs.js +168 -0
  106. package/dist/video/cinema-image-jobs.js.map +1 -0
  107. package/dist/video/cinema-live-console.d.ts +19 -0
  108. package/dist/video/cinema-live-console.d.ts.map +1 -1
  109. package/dist/video/cinema-live-console.js +14 -3
  110. package/dist/video/cinema-live-console.js.map +1 -1
  111. package/dist/video/cinema-motion-review-form.d.ts +3 -0
  112. package/dist/video/cinema-motion-review-form.d.ts.map +1 -0
  113. package/dist/video/cinema-motion-review-form.js +8 -0
  114. package/dist/video/cinema-motion-review-form.js.map +1 -0
  115. package/dist/video/cinema-motion-review.d.ts +16 -0
  116. package/dist/video/cinema-motion-review.d.ts.map +1 -0
  117. package/dist/video/cinema-motion-review.js +36 -0
  118. package/dist/video/cinema-motion-review.js.map +1 -0
  119. package/dist/video/cinema-profile.js +1 -1
  120. package/dist/video/cinema-profile.js.map +1 -1
  121. package/dist/video/cinema-project-compiler.d.ts.map +1 -1
  122. package/dist/video/cinema-project-compiler.js +3 -2
  123. package/dist/video/cinema-project-compiler.js.map +1 -1
  124. package/dist/video/cinema-project-console.d.ts.map +1 -1
  125. package/dist/video/cinema-project-console.js +7 -1
  126. package/dist/video/cinema-project-console.js.map +1 -1
  127. package/dist/video/cinema-story-compiler.d.ts.map +1 -1
  128. package/dist/video/cinema-story-compiler.js +1 -0
  129. package/dist/video/cinema-story-compiler.js.map +1 -1
  130. package/dist/video/cinema-story-types.d.ts +1 -0
  131. package/dist/video/cinema-story-types.d.ts.map +1 -1
  132. package/dist/video/cinematic-character-recovery.d.ts +16 -0
  133. package/dist/video/cinematic-character-recovery.d.ts.map +1 -0
  134. package/dist/video/cinematic-character-recovery.js +79 -0
  135. package/dist/video/cinematic-character-recovery.js.map +1 -0
  136. package/dist/video/cinematography.d.ts +7 -204
  137. package/dist/video/cinematography.d.ts.map +1 -1
  138. package/dist/video/cinematography.js +5 -629
  139. package/dist/video/cinematography.js.map +1 -1
  140. package/dist/video/cli-schema.d.ts +38 -0
  141. package/dist/video/cli-schema.d.ts.map +1 -1
  142. package/dist/video/cli-schema.js +86 -40
  143. package/dist/video/cli-schema.js.map +1 -1
  144. package/dist/video/dynamic-register.d.ts +69 -0
  145. package/dist/video/dynamic-register.d.ts.map +1 -0
  146. package/dist/video/dynamic-register.js +104 -0
  147. package/dist/video/dynamic-register.js.map +1 -0
  148. package/dist/video/execute.d.ts.map +1 -1
  149. package/dist/video/execute.js +240 -226
  150. package/dist/video/execute.js.map +1 -1
  151. package/dist/video/execution-adapter.d.ts +39 -1
  152. package/dist/video/execution-adapter.d.ts.map +1 -1
  153. package/dist/video/execution-adapter.js +67 -8
  154. package/dist/video/execution-adapter.js.map +1 -1
  155. package/dist/video/execution-cancel.d.ts.map +1 -1
  156. package/dist/video/execution-cancel.js +13 -2
  157. package/dist/video/execution-cancel.js.map +1 -1
  158. package/dist/video/execution-in-flight.d.ts +20 -0
  159. package/dist/video/execution-in-flight.d.ts.map +1 -0
  160. package/dist/video/execution-in-flight.js +111 -0
  161. package/dist/video/execution-in-flight.js.map +1 -0
  162. package/dist/video/execution-prompt-validation.d.ts +5 -0
  163. package/dist/video/execution-prompt-validation.d.ts.map +1 -0
  164. package/dist/video/execution-prompt-validation.js +41 -0
  165. package/dist/video/execution-prompt-validation.js.map +1 -0
  166. package/dist/video/execution-run-marker.d.ts +84 -0
  167. package/dist/video/execution-run-marker.d.ts.map +1 -0
  168. package/dist/video/execution-run-marker.js +204 -0
  169. package/dist/video/execution-run-marker.js.map +1 -0
  170. package/dist/video/execution-runtime.d.ts +2 -1
  171. package/dist/video/execution-runtime.d.ts.map +1 -1
  172. package/dist/video/execution-runtime.js +13 -2
  173. package/dist/video/execution-runtime.js.map +1 -1
  174. package/dist/video/execution-status.d.ts.map +1 -1
  175. package/dist/video/execution-status.js +8 -0
  176. package/dist/video/execution-status.js.map +1 -1
  177. package/dist/video/film-edit-review-store.d.ts +35 -0
  178. package/dist/video/film-edit-review-store.d.ts.map +1 -0
  179. package/dist/video/film-edit-review-store.js +98 -0
  180. package/dist/video/film-edit-review-store.js.map +1 -0
  181. package/dist/video/film-edit-review.d.ts +38 -0
  182. package/dist/video/film-edit-review.d.ts.map +1 -0
  183. package/dist/video/film-edit-review.js +65 -0
  184. package/dist/video/film-edit-review.js.map +1 -0
  185. package/dist/video/film-plan.d.ts +46 -0
  186. package/dist/video/film-plan.d.ts.map +1 -0
  187. package/dist/video/film-plan.js +109 -0
  188. package/dist/video/film-plan.js.map +1 -0
  189. package/dist/video/film-reference-evidence.d.ts +17 -0
  190. package/dist/video/film-reference-evidence.d.ts.map +1 -0
  191. package/dist/video/film-reference-evidence.js +46 -0
  192. package/dist/video/film-reference-evidence.js.map +1 -0
  193. package/dist/video/film-review-gate.d.ts +14 -0
  194. package/dist/video/film-review-gate.d.ts.map +1 -0
  195. package/dist/video/film-review-gate.js +33 -0
  196. package/dist/video/film-review-gate.js.map +1 -0
  197. package/dist/video/filmmaking-product-prompts.d.ts +20 -0
  198. package/dist/video/filmmaking-product-prompts.d.ts.map +1 -0
  199. package/dist/video/filmmaking-product-prompts.js +132 -0
  200. package/dist/video/filmmaking-product-prompts.js.map +1 -0
  201. package/dist/video/filmmaking-prompts.d.ts +17 -137
  202. package/dist/video/filmmaking-prompts.d.ts.map +1 -1
  203. package/dist/video/filmmaking-prompts.js +53 -797
  204. package/dist/video/filmmaking-prompts.js.map +1 -1
  205. package/dist/video/filmmaking-shared.d.ts +37 -0
  206. package/dist/video/filmmaking-shared.d.ts.map +1 -0
  207. package/dist/video/filmmaking-shared.js +122 -0
  208. package/dist/video/filmmaking-shared.js.map +1 -0
  209. package/dist/video/filmmaking-vocab.d.ts +15 -0
  210. package/dist/video/filmmaking-vocab.d.ts.map +1 -0
  211. package/dist/video/filmmaking-vocab.js +116 -0
  212. package/dist/video/filmmaking-vocab.js.map +1 -0
  213. package/dist/video/flow-markers.d.ts +3 -3
  214. package/dist/video/flow-markers.js +3 -3
  215. package/dist/video/hook-register.d.ts +30 -0
  216. package/dist/video/hook-register.d.ts.map +1 -0
  217. package/dist/video/hook-register.js +134 -0
  218. package/dist/video/hook-register.js.map +1 -0
  219. package/dist/video/library-clean.d.ts +1 -1
  220. package/dist/video/library-clean.d.ts.map +1 -1
  221. package/dist/video/library-clean.js +1 -1
  222. package/dist/video/lighting-grade-register.d.ts +41 -0
  223. package/dist/video/lighting-grade-register.d.ts.map +1 -0
  224. package/dist/video/lighting-grade-register.js +225 -0
  225. package/dist/video/lighting-grade-register.js.map +1 -0
  226. package/dist/video/motion-overlay/avatar-host.d.ts +1 -1
  227. package/dist/video/motion-overlay/avatar-host.js +2 -2
  228. package/dist/video/motion-overlay/avatar-host.js.map +1 -1
  229. package/dist/video/outfit-prompts.d.ts +28 -0
  230. package/dist/video/outfit-prompts.d.ts.map +1 -1
  231. package/dist/video/outfit-prompts.js +46 -0
  232. package/dist/video/outfit-prompts.js.map +1 -1
  233. package/dist/video/preview-portal/render-brand.d.ts +28 -0
  234. package/dist/video/preview-portal/render-brand.d.ts.map +1 -0
  235. package/dist/video/preview-portal/render-brand.js +191 -0
  236. package/dist/video/preview-portal/render-brand.js.map +1 -0
  237. package/dist/video/preview-portal/render-primitives.d.ts +24 -0
  238. package/dist/video/preview-portal/render-primitives.d.ts.map +1 -0
  239. package/dist/video/preview-portal/render-primitives.js +43 -0
  240. package/dist/video/preview-portal/render-primitives.js.map +1 -0
  241. package/dist/video/preview-portal/render-run.d.ts +8 -0
  242. package/dist/video/preview-portal/render-run.d.ts.map +1 -0
  243. package/dist/video/preview-portal/render-run.js +188 -0
  244. package/dist/video/preview-portal/render-run.js.map +1 -0
  245. package/dist/video/preview-portal/render-scene-contract.d.ts +19 -0
  246. package/dist/video/preview-portal/render-scene-contract.d.ts.map +1 -0
  247. package/dist/video/preview-portal/render-scene-contract.js +184 -0
  248. package/dist/video/preview-portal/render-scene-contract.js.map +1 -0
  249. package/dist/video/preview-portal/render.d.ts.map +1 -1
  250. package/dist/video/preview-portal/render.js +6 -598
  251. package/dist/video/preview-portal/render.js.map +1 -1
  252. package/dist/video/provider-platform/registry.d.ts.map +1 -1
  253. package/dist/video/provider-platform/registry.js +12 -11
  254. package/dist/video/provider-platform/registry.js.map +1 -1
  255. package/dist/video/provider-status.d.ts +6 -1
  256. package/dist/video/provider-status.d.ts.map +1 -1
  257. package/dist/video/provider-status.js +71 -5
  258. package/dist/video/provider-status.js.map +1 -1
  259. package/dist/video/realism-register.d.ts +103 -0
  260. package/dist/video/realism-register.d.ts.map +1 -0
  261. package/dist/video/realism-register.js +177 -0
  262. package/dist/video/realism-register.js.map +1 -0
  263. package/dist/video/review-ui-artifacts.d.ts +17 -0
  264. package/dist/video/review-ui-artifacts.d.ts.map +1 -0
  265. package/dist/video/review-ui-artifacts.js +674 -0
  266. package/dist/video/review-ui-artifacts.js.map +1 -0
  267. package/dist/video/review-ui-autopilot.d.ts +30 -0
  268. package/dist/video/review-ui-autopilot.d.ts.map +1 -0
  269. package/dist/video/review-ui-autopilot.js +248 -0
  270. package/dist/video/review-ui-autopilot.js.map +1 -0
  271. package/dist/video/review-ui-inventory.d.ts +6 -0
  272. package/dist/video/review-ui-inventory.d.ts.map +1 -0
  273. package/dist/video/review-ui-inventory.js +212 -0
  274. package/dist/video/review-ui-inventory.js.map +1 -0
  275. package/dist/video/review-ui-shared.d.ts +30 -0
  276. package/dist/video/review-ui-shared.d.ts.map +1 -0
  277. package/dist/video/review-ui-shared.js +124 -0
  278. package/dist/video/review-ui-shared.js.map +1 -0
  279. package/dist/video/review-ui.d.ts +5 -31
  280. package/dist/video/review-ui.d.ts.map +1 -1
  281. package/dist/video/review-ui.js +13 -1204
  282. package/dist/video/review-ui.js.map +1 -1
  283. package/dist/video/run-state/read.d.ts.map +1 -1
  284. package/dist/video/run-state/read.js +18 -2
  285. package/dist/video/run-state/read.js.map +1 -1
  286. package/dist/video/run-state/types.d.ts +2 -0
  287. package/dist/video/run-state/types.d.ts.map +1 -1
  288. package/dist/video/seedance-prompt.d.ts +74 -0
  289. package/dist/video/seedance-prompt.d.ts.map +1 -0
  290. package/dist/video/seedance-prompt.js +355 -0
  291. package/dist/video/seedance-prompt.js.map +1 -0
  292. package/dist/video/status.d.ts +18 -0
  293. package/dist/video/status.d.ts.map +1 -1
  294. package/dist/video/status.js +18 -0
  295. package/dist/video/status.js.map +1 -1
  296. package/dist/video/story-bible.js +3 -3
  297. package/dist/video/story-bible.js.map +1 -1
  298. package/dist/video/storyboard-markdown.d.ts +8 -0
  299. package/dist/video/storyboard-markdown.d.ts.map +1 -1
  300. package/dist/video/storyboard-markdown.js +10 -3
  301. package/dist/video/storyboard-markdown.js.map +1 -1
  302. package/dist/video/studio/execute.d.ts +16 -3
  303. package/dist/video/studio/execute.d.ts.map +1 -1
  304. package/dist/video/studio/execute.js +22 -1
  305. package/dist/video/studio/execute.js.map +1 -1
  306. package/dist/video/types.d.ts +8 -0
  307. package/dist/video/types.d.ts.map +1 -1
  308. package/dist/video/workspace.d.ts +2 -0
  309. package/dist/video/workspace.d.ts.map +1 -1
  310. package/dist/video/workspace.js.map +1 -1
  311. package/docs/AGENT_QUICKSTART.md +80 -22
  312. package/docs/AI_FILMMAKING_PROMPTS.md +7 -0
  313. package/docs/ARCHITECTURE.md +36 -9
  314. package/docs/CAPABILITIES.md +42 -24
  315. package/docs/CINEMATIC_REFERENCE_WORKFLOW.md +144 -0
  316. package/docs/CLI_REFERENCE.md +386 -78
  317. package/docs/{CLAWBOT_COVERAGE_PROMPT.md → CONCIERGE_COVERAGE_PROMPT.md} +9 -9
  318. package/docs/CONCIERGE_PROMPT.md +8 -8
  319. package/docs/DEPRECATION.md +47 -2
  320. package/docs/DIAGRAMS_SOURCE.md +29 -26
  321. package/docs/DIRECTOR_BLUEPRINT.md +1 -1
  322. package/docs/MASTER_PLAN_ALIGNMENT.md +31 -4
  323. package/docs/MIGRATION.md +7 -2
  324. package/docs/MOGRAPH.md +13 -11
  325. package/docs/MOTION_REVIEW.md +17 -0
  326. package/docs/OBSIDIAN.md +7 -7
  327. package/docs/OPERATIONS.md +18 -0
  328. package/docs/OPERATOR_HANDOFF.md +8 -2
  329. package/docs/PRODUCTION_WORKFLOW.md +26 -8
  330. package/docs/PROJECT_LAYOUT.md +11 -0
  331. package/docs/PROVIDER_PLATFORM.md +6 -5
  332. package/docs/PUBLISHING.md +8 -3
  333. package/docs/PYTHON_PIPELINE.md +15 -14
  334. package/docs/RELEASE_READINESS.md +71 -13
  335. package/docs/SEEDANCE_HARVEST.md +1 -1
  336. package/docs/SHARED_FILMMAKING_WORKFLOW.md +252 -0
  337. package/docs/SHARED_QUEUE.md +1 -1
  338. package/docs/SKILLS.md +38 -14
  339. package/docs/SKILL_COHESION_PROMPT.md +1 -1
  340. package/docs/STUDIO.md +7 -3
  341. package/docs/TEMPLATES.md +1 -1
  342. package/docs/adr/0008-one-durable-production-queue.md +12 -0
  343. package/docs/assets/diagram-architecture.jpg +0 -0
  344. package/docs/assets/diagram-assemble.jpg +0 -0
  345. package/docs/assets/diagram-lifecycle.jpg +0 -0
  346. package/docs/assets/diagram-obsidian-loop.jpg +0 -0
  347. package/docs/assets/diagram-obsidian-vault.jpg +0 -0
  348. package/docs/assets/diagram-routing.jpg +0 -0
  349. package/docs/assets/diagram-skills-ecosystem.jpg +0 -0
  350. package/docs/assets/diagram-story-bible.jpg +0 -0
  351. package/docs/assets/diagram-studio-goals.jpg +0 -0
  352. package/engines/seedance-direct/README.md +44 -7
  353. package/engines/seedance-direct/bootstrap/import_cookies.py +58 -0
  354. package/engines/seedance-direct/bootstrap.sh +11 -6
  355. package/mcp/skills-pack/videoclaw-check-status/SKILL.md +15 -0
  356. package/mcp/skills-pack/videoclaw-create-video/SKILL.md +13 -2
  357. package/package.json +6 -2
  358. package/schemas/video/artifacts/cinema-candidate-review.schema.json +53 -0
  359. package/schemas/video/artifacts/cinema-image-job.schema.json +269 -0
  360. package/schemas/video/artifacts/cinema-story-bible.schema.json +1 -0
  361. package/schemas/video/artifacts/cinematic-character-recovery.schema.json +37 -0
  362. package/schemas/video/artifacts/filmmaking-prompts.schema.json +3 -0
  363. package/schemas/video/artifacts/reference-sheets.schema.json +1 -0
  364. package/schemas/video/artifacts/storyboard.schema.json +180 -13
  365. package/scripts/install-skill-frontdoors.mjs +1 -1
  366. package/scripts/skill-frontdoors.json +6 -6
  367. package/skills/README.md +2 -2
  368. package/skills/ad-intel/SKILL.md +1 -1
  369. package/skills/ad-intel/scripts/answer_plan.py +1 -1
  370. package/skills/ai-director/SKILL.md +2 -2
  371. package/skills/ai-filmmaking/SKILL.md +13 -3
  372. package/skills/catalog.json +9 -1
  373. package/skills/character-creator/SKILL.md +9 -8
  374. package/skills/concierge/SKILL.md +13 -13
  375. package/skills/david-sales-presenter/SKILL.md +24 -0
  376. package/skills/garden-days/references/lanes.md +1 -1
  377. package/skills/movie-director/SKILL.md +7 -0
  378. package/skills/movie-director/references/troubleshooting.md +2 -2
  379. package/skills/rap-avatar-mv/SKILL.md +328 -1905
  380. package/skills/rap-avatar-mv/_template.rap.pack +34 -12
  381. package/skills/rap-avatar-mv/references/cinematic-finish/README.md +74 -0
  382. package/skills/rap-avatar-mv/references/cinematic-finish/presets.example.json +38 -0
  383. package/skills/rap-avatar-mv/references/cinematic-finish/subtitle-grade-preset.json +21 -0
  384. package/skills/rap-avatar-mv/references/design-review.md +36 -73
  385. package/skills/rap-avatar-mv/references/finishing-and-upload.md +84 -0
  386. package/skills/rap-avatar-mv/references/historical-runbook-through-2026-09-07.md +1941 -0
  387. package/skills/rap-avatar-mv/references/lipsync-magnific.md +6 -0
  388. package/skills/rap-avatar-mv/references/production-details.md +167 -0
  389. package/skills/rap-avatar-mv/references/prompt-library-findings.md +6 -0
  390. package/skills/rap-avatar-mv/references/recording-led-lipsync.md +78 -0
  391. package/skills/rap-avatar-mv/references/repair-planner.md +171 -0
  392. package/skills/rap-avatar-mv/references/repair-review.md +42 -0
  393. package/skills/rap-avatar-mv/references/research-2026-08-29-lessons.md +6 -0
  394. package/skills/rap-avatar-mv/references/route-economics.md +8 -2
  395. package/skills/rap-avatar-mv/references/route-matrix.md +6 -0
  396. package/skills/rap-avatar-mv/references/shot-direction.md +46 -94
  397. package/skills/rap-avatar-mv/references/song-recipe.md +27 -65
  398. package/skills/rap-avatar-mv/references/source-compliance.md +6 -0
  399. package/skills/rap-avatar-mv/scripts/build_bookends.sh +13 -3
  400. package/skills/rap-avatar-mv/scripts/check_sync.py +5 -0
  401. package/skills/rap-avatar-mv/scripts/cinematic_cards.py +68 -0
  402. package/skills/rap-avatar-mv/scripts/cinematic_render.py +172 -0
  403. package/skills/rap-avatar-mv/scripts/clip_ends.py +78 -0
  404. package/skills/rap-avatar-mv/scripts/clip_vocals.py +146 -0
  405. package/skills/rap-avatar-mv/scripts/cover_mouthing.py +10 -0
  406. package/skills/rap-avatar-mv/scripts/cover_reference.py +503 -0
  407. package/skills/rap-avatar-mv/scripts/deliver.py +17 -4
  408. package/skills/rap-avatar-mv/scripts/dryrun.sh +13 -1
  409. package/skills/rap-avatar-mv/scripts/explore_queue.py +93 -452
  410. package/skills/rap-avatar-mv/scripts/fit_takes.py +168 -78
  411. package/skills/rap-avatar-mv/scripts/hf_export.py +188 -0
  412. package/skills/rap-avatar-mv/scripts/hf_import.py +191 -0
  413. package/skills/rap-avatar-mv/scripts/join_cuts.py +87 -34
  414. package/skills/rap-avatar-mv/scripts/line_subs.py +23 -9
  415. package/skills/rap-avatar-mv/scripts/make-rap-mv.sh +109 -20
  416. package/skills/rap-avatar-mv/scripts/make_plan.py +50 -7
  417. package/skills/rap-avatar-mv/scripts/needs_report.py +166 -71
  418. package/skills/rap-avatar-mv/scripts/rap_fixture.py +35 -2
  419. package/skills/rap-avatar-mv/scripts/rap_thumbnail.py +6 -3
  420. package/skills/rap-avatar-mv/scripts/rate_fit.py +263 -88
  421. package/skills/rap-avatar-mv/scripts/repair_apply.py +107 -0
  422. package/skills/rap-avatar-mv/scripts/repair_plan.py +268 -0
  423. package/skills/rap-avatar-mv/scripts/repair_preview.py +133 -0
  424. package/skills/rap-avatar-mv/scripts/repair_review.py +45 -0
  425. package/skills/rap-avatar-mv/scripts/repair_workbench.py +56 -0
  426. package/skills/rap-avatar-mv/scripts/replace_window.py +12 -0
  427. package/skills/rap-avatar-mv/scripts/requirements-cinema.txt +2 -0
  428. package/skills/rap-avatar-mv/scripts/requirements-vocal-guides.txt +3 -0
  429. package/skills/rap-avatar-mv/scripts/reuse_audit.py +41 -58
  430. package/skills/rap-avatar-mv/scripts/review_board.py +8 -0
  431. package/skills/rap-avatar-mv/scripts/sync_evidence.py +49 -0
  432. package/skills/rap-avatar-mv/scripts/sync_profile.py +17 -7
  433. package/skills/rap-avatar-mv/scripts/sync_shift.py +194 -186
  434. package/skills/rap-avatar-mv/scripts/timing_edits.py +144 -0
  435. package/skills/rap-avatar-mv/scripts/transcribe_clips.py +16 -7
  436. package/skills/rap-avatar-mv/scripts/verify_delivery.py +102 -0
  437. package/skills/rap-avatar-mv/scripts/vocal_guides.py +263 -0
  438. package/skills/rap-avatar-mv/scripts/vocal_swap.py +3 -19
  439. package/skills/rap-avatar-mv/scripts/word_sync.py +18 -3
  440. package/skills/rap-avatar-mv/scripts/word_warp.py +198 -0
  441. package/skills/story-bible-builder/SKILL.md +7 -0
  442. package/skills/video-framework/SKILL.md +4 -0
  443. package/skills/video-post/SKILL.md +6 -0
  444. package/skills/video-production-handoff/SKILL.md +8 -0
  445. package/skills/video-replicator/SKILL.md +1 -1
  446. package/skills/video-storyboard/SKILL.md +7 -0
  447. package/skills/videoclaw/SKILL.md +36 -0
  448. package/src/video/artifacts.ts +9 -2
  449. package/src/video/assemble/audio-mix-plan.ts +1 -1
  450. package/src/video/assemble/stitch-audio-mix.ts +274 -0
  451. package/src/video/assemble/stitch-concat.ts +262 -0
  452. package/src/video/assemble/stitch-filters.ts +93 -0
  453. package/src/video/assemble/stitch.ts +10 -600
  454. package/src/video/character-auto-create.ts +85 -9
  455. package/src/video/character-performance.ts +49 -0
  456. package/src/video/character-reference-prompts.ts +54 -0
  457. package/src/video/characters.ts +12 -0
  458. package/src/video/cinema-candidate-review.ts +11 -1
  459. package/src/video/cinema-console-render.ts +3 -2
  460. package/src/video/cinema-delivery.ts +10 -0
  461. package/src/video/cinema-image-bindings.ts +46 -0
  462. package/src/video/cinema-image-jobs.ts +149 -0
  463. package/src/video/cinema-live-console.ts +9 -3
  464. package/src/video/cinema-motion-review-form.ts +8 -0
  465. package/src/video/cinema-motion-review.ts +38 -0
  466. package/src/video/cinema-profile.ts +1 -1
  467. package/src/video/cinema-project-compiler.ts +3 -2
  468. package/src/video/cinema-project-console.ts +7 -1
  469. package/src/video/cinema-story-compiler.ts +1 -0
  470. package/src/video/cinema-story-types.ts +1 -0
  471. package/src/video/cinematic-character-recovery.ts +76 -0
  472. package/src/video/cinematography.ts +8 -801
  473. package/src/video/cli-schema.ts +106 -40
  474. package/src/video/dynamic-register.ts +137 -0
  475. package/src/video/execute.ts +254 -238
  476. package/src/video/execution-adapter.ts +98 -7
  477. package/src/video/execution-cancel.ts +15 -2
  478. package/src/video/execution-in-flight.ts +124 -0
  479. package/src/video/execution-prompt-validation.ts +42 -0
  480. package/src/video/execution-run-marker.ts +261 -0
  481. package/src/video/execution-runtime.ts +16 -1
  482. package/src/video/execution-status.ts +9 -0
  483. package/src/video/film-edit-review-store.ts +96 -0
  484. package/src/video/film-edit-review.ts +78 -0
  485. package/src/video/film-plan.ts +95 -0
  486. package/src/video/film-reference-evidence.ts +38 -0
  487. package/src/video/film-review-gate.ts +30 -0
  488. package/src/video/filmmaking-product-prompts.ts +169 -0
  489. package/src/video/filmmaking-prompts.ts +65 -1024
  490. package/src/video/filmmaking-shared.ts +159 -0
  491. package/src/video/filmmaking-vocab.ts +137 -0
  492. package/src/video/flow-markers.ts +3 -3
  493. package/src/video/hook-register.ts +174 -0
  494. package/src/video/library-clean.ts +1 -1
  495. package/src/video/lighting-grade-register.ts +288 -0
  496. package/src/video/motion-overlay/avatar-host.ts +2 -2
  497. package/src/video/outfit-prompts.ts +49 -0
  498. package/src/video/preview-portal/render-brand.ts +201 -0
  499. package/src/video/preview-portal/render-primitives.ts +54 -0
  500. package/src/video/preview-portal/render-run.ts +215 -0
  501. package/src/video/preview-portal/render-scene-contract.ts +203 -0
  502. package/src/video/preview-portal/render.ts +7 -653
  503. package/src/video/provider-platform/registry.ts +12 -11
  504. package/src/video/provider-status.ts +88 -6
  505. package/src/video/realism-register.ts +238 -0
  506. package/src/video/review-ui-artifacts.ts +792 -0
  507. package/src/video/review-ui-autopilot.ts +313 -0
  508. package/src/video/review-ui-inventory.ts +234 -0
  509. package/src/video/review-ui-shared.ts +156 -0
  510. package/src/video/review-ui.ts +17 -1444
  511. package/src/video/run-state/read.ts +19 -2
  512. package/src/video/run-state/types.ts +2 -0
  513. package/src/video/seedance-prompt.ts +435 -0
  514. package/src/video/status.ts +37 -0
  515. package/src/video/story-bible.ts +3 -3
  516. package/src/video/storyboard-markdown.ts +10 -3
  517. package/src/video/studio/execute.ts +32 -2
  518. package/src/video/types.ts +8 -0
  519. package/src/video/workspace.ts +2 -0
  520. package/skills/clawbot/SKILL.md +0 -29
  521. /package/docs/{Claude Code + Higgsfield MCP = FULL Creative Agency.md → HIGGSFIELD_MCP_CREATIVE_AGENCY.md} +0 -0
package/CLAUDE.md CHANGED
@@ -2,13 +2,13 @@
2
2
 
3
3
  This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
4
4
 
5
- ## Quick orientation (read this first, then `MERGE_PLAN.md`)
5
+ ## Quick orientation (read this first)
6
6
 
7
- - **Entrypoint:** `src/cli/vclaw.ts` — a thin ~530-line dispatch shell; all command logic lives in `src/cli/handlers/*.ts` (25 modules).
7
+ - **Entrypoint:** `src/cli/vclaw.ts` — a thin ~640-line dispatch shell; all command logic lives in `src/cli/handlers/*.ts` (38 modules).
8
8
  - **Domain core:** `src/video/*` — small single-purpose modules (projects, execution, assemble, audio-platform, studio, preview-portal, motion-overlay, provider-platform, …).
9
9
  - **Contracts & state:** `schemas/video/*` JSON Schemas are the source of truth for artifact *shapes*; the on-disk `projects/<slug>/` tree is the source of truth for project *state*.
10
10
  - **Tests:** `node:test` files in `src/tests/*.test.ts`, run from compiled `dist/tests/` (`npm test`).
11
- - **Also load:** the sibling `.claude/CLAUDE.md` for the `graphify`, `improvement-run`, and `concierge`/`clawbot` skill triggers.
11
+ - **Also load:** the sibling `.claude/CLAUDE.md` for the `graphify`, `improvement-run`, and `concierge`/`videoclaw` skill triggers.
12
12
 
13
13
  > **Repository status (2026-07-02):** This is `videoclaw-v3`, the current repo —
14
14
  > unified from `videoclaw-v2`, itself the merged successor of the older `videoclaw`
@@ -17,9 +17,10 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
17
17
  > copied from `vclaw-video-core`; presenter skills synced from
18
18
  > `video-creation-projects/video-replicator-veo-cli/.claude/skills/`; Runway
19
19
  > transport ported from `videoclaw/src/video/providers/runway-useapi.ts`.
20
- > The full merge plan, decisions, and remaining phases are in `MERGE_PLAN.md` —
21
- > **read it before starting any non-trivial work.** It is the source of truth for
22
- > the architecture and what's coming.
20
+ > `MERGE_PLAN.md` holds the merge's architecture rationale and phase history
21
+ > (all phases but source retirement are done). Current status lives in
22
+ > `docs/RELEASE_READINESS.md` and `CHANGELOG.md`; the shipped architecture in
23
+ > `docs/ARCHITECTURE.md`.
23
24
 
24
25
  ## Repository purpose
25
26
 
@@ -28,13 +29,14 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
28
29
  ## Concierge front door (user-facing requests)
29
30
 
30
31
  `skills/concierge/SKILL.md` is the user-facing front door, and it speaks as
31
- **Clawbot** — VideoClaw's mascot (`clawbot` is a persona alias of the skill).
32
+ **VideoClaw** — the product itself (`videoclaw` is a persona alias of the skill).
33
+ The on-screen mascot is VideoClaw too: Go Bananas character 291, renamed from
34
+ its earlier name on 2026-09-09; the artwork is unchanged.
32
35
  When the user asks to make a video, gives an ambiguous creative request, types
33
- `/concierge` or `/clawbot`, asks for Clawbot, or seems new to the system, read
34
- that skill and follow it before doing anything else: greet them as Clawbot,
36
+ `/concierge` or `/videoclaw`, asks for VideoClaw, or seems new to the system, read
37
+ that skill and follow it before doing anything else: greet them as VideoClaw,
35
38
  present the menu, route their choice through its lane table, and keep the
36
- plan → preview → spend order (never spend without explicit go-ahead). If their
37
- first message is just a greeting with no task, offer the concierge menu.
39
+ plan → preview → spend order (never spend without explicit go-ahead).
38
40
  Engineering and maintenance requests on this codebase itself are NOT concierge
39
41
  territory — handle those normally.
40
42
 
@@ -179,8 +181,17 @@ npm run check:skill-frontdoor # repo-local skill front door
179
181
  npm run check:artifact-schema-coverage # writers vs schemas drift (advisory)
180
182
  npm run check:artifact-schema-coverage:strict # same, but fails the build on drift (--strict)
181
183
  npm run check:release-readiness-lite # one-shot: build + tests + main smokes + guardrails
184
+ npm run acceptance:live -- --route <id> [--veo-model free] [--approve] # ONE quoted provider job per route → an audit row (dry without --approve; the repeatable form of docs/audits/*-live-acceptance.md); --kind narrate|soundtrack|image-upscale [--backend <id>] certifies an audio / Magnific backend the same way
185
+ npm run lint # eslint src --max-warnings=0 (eqeqeq, no-var, prefer-const, no-eval family)
186
+ npm run check:module-size # fails on any src/**/*.ts over 1,000 lines; legacy giants are frozen at per-file ceilings in scripts/check-module-size.mjs — lower them, never raise them
187
+ npm run check:seedance-engine # in-tree free Seedance engine present + wired + offline stub self-test (no browser, no spend)
188
+ npm run check:build-fresh # dist/ is not stale relative to src/
189
+ npm run frontdoors:check # .claude/CLAUDE.md skill front-door blocks match scripts/skill-frontdoors.json (regenerate: npm run frontdoors:install)
190
+ npm run test:coverage # build, then compiled tests under coverage
191
+ npm run demo # zero-key creator-demo quickstart in a temp workspace (providerCalls: 0)
182
192
  npm run docs:sync # regenerate docs-site/reference/ from docs/ — run after ANY docs/*.md edit (CI: check:docs-site)
183
193
  npm run graph:full # rebuild the graphify knowledge graph (graphify-out/)
194
+ npm run shared-queue:status # `vclaw video lane status` against the shared coordinator; shared-queue:setup / :verify / :dashboard / :self-test manage services/shared-lane-coordinator
184
195
  ```
185
196
 
186
197
  `npm run check:release-readiness-lite` is the preferred local pre-flight before non-trivial changes land.
@@ -189,8 +200,8 @@ npm run graph:full # rebuild the graphify knowledge graph
189
200
 
190
201
  ### Layers (read top-down)
191
202
 
192
- 1. `src/cli/vclaw.ts` — the single user-facing entrypoint, now a thin dispatch shell (~530 lines: imports, `printHelp`, the `NOUN_VERB_ALIASES` map, `resolveSubcommand`, the `VIDEO_DISPATCH` table, and `main`). The decomposition is COMPLETE (PRs #89–#120): pure arg/slug/spend helpers live in `src/cli/args.ts`, and ALL command handlers live in `src/cli/handlers/` (25 modules — `analysis`, `audio`, `batch`, `candidates`, `character`, `clone`, `create`, `execution`, `library`, `media-ops`, `media-production`, `migrate-home`, `monitor`, `motion-overlay`, `multi-shot`, `project-ops`, `prompt-craft`, `provider-registration`, `reference-sheets`, `reporting`, `review-portal`, `show`, `stages`, `studio`, `templates`), each a verbatim extraction with module-private helpers and only dispatch-facing handlers exported. ⚠️ When moving handler code, watch for position-sensitive path math (`import.meta.url` etc.) — the compiled location changes (see the documented adaptations in `handlers/studio.ts` and `handlers/motion-overlay.ts`). `src/cli/provider-adapter.ts` is the built-in adapter binary for the four `..._ADAPTER` routes (see Provider routes below). Besides `video`/`studio`, `main` also dispatches two smaller families: `vclaw mcp serve` (`src/mcp/` — a read-only stdio MCP server exposing `list_projects`, `get_project_status`, `get_artifacts`, `get_event_log`, `list_provider_routes`; writes stay CLI-only by design) and `vclaw veo <verb>` (`src/video/veo-subprocess.ts` — spawn-forwarding to the Bun-based `vclaw-cli/flow.ts`, required for Puppeteer/Google Flow verbs like `status`, `resume`, `cancel`, `useapi:*`).
193
- 2. `src/video/` — the core domain. Each file is small and single-purpose, e.g. `artifacts.ts`, `artifact-store.ts`, `checkpoints.ts`, `workspace.ts`, `projects.ts`, `status.ts`, `doctor.ts`, `doctor-portfolio.ts`, `readiness.ts`, `execution-plan.ts`, `execute.ts`, `execution-runtime.ts`, `execution-status.ts`, `execution-cancel.ts`, `director-preflight.ts`, `report.ts`, `csv-export.ts`, `obsidian-export.ts`, `project-index.ts`, `metrics.ts`, `next-actions.ts`, `template-store.ts`, `provider-status.ts`, `native-seedance.ts`, `native-veo.ts`, `multi-shot-prompt.ts`, `storyboard-grid.ts`, `cinematography.ts` (detail-leveled quantified camera/lighting/grade/audio emitters — `--detail terse|standard|rich`), `prompt-rules.ts` (standing prompt rules: visual-descriptor-not-names, brand-neutral, no-face-morph, diegetic audio), `seedance-asset-library.ts` (Asset Library character/product consistency), `story-bible.ts` (deterministic continuity bible — cast/settings/props/scene-timeline from brief + storyboard + characters), `brand-definition.ts` (locked brand system — palette/voice/typography/theme map; `filmmaking-prompts` appends a prose BRAND line when present), `assemble/media-qc.ts` (post-stitch ffprobe QC of clips + master), `assemble/narration-fit.ts` (TTS-vs-video timing planner: atempo / loop-video fit). `src/video/studio/` is the planning front door and `src/video/preview-portal/` is the review/delivery portal (both described below).
203
+ 1. `src/cli/vclaw.ts` — the single user-facing entrypoint, now a thin dispatch shell (~640 lines: imports, `printHelp`, the `NOUN_VERB_ALIASES` map, `resolveSubcommand`, the `VIDEO_DISPATCH` table, and `main`). The decomposition is COMPLETE (PRs #89–#120): pure arg/slug/spend helpers live in `src/cli/args.ts`, and ALL command handlers live in `src/cli/handlers/` (38 modules — the original 25: `analysis`, `audio`, `batch`, `candidates`, `character`, `clone`, `create`, `execution`, `library`, `media-ops`, `media-production`, `migrate-home`, `monitor`, `motion-overlay`, `multi-shot`, `project-ops`, `prompt-craft`, `provider-registration`, `reference-sheets`, `reporting`, `review-portal`, `show`, `stages`, `studio`, `templates`; plus the later families `cinema`, `cinema-archive`, `cinema-candidate`, `cinema-delivery`, `cinema-execution`, `cinema-history`, `cinema-migration`, `creator-demo`, `creator-ui`, `lane`, `mograph`, `publish-platform`, `stock`), each a verbatim extraction with module-private helpers and only dispatch-facing handlers exported. ⚠️ When moving handler code, watch for position-sensitive path math (`import.meta.url` etc.) — the compiled location changes (see the documented adaptations in `handlers/studio.ts` and `handlers/motion-overlay.ts`). `src/cli/provider-adapter.ts` is the built-in adapter binary for the five built-in adapter routes (`seedance-direct`, `veo-useapi`, `runway-useapi`, `dreamina-useapi`, `magnific-rest`; see Provider routes below). Besides `video`/`studio`, `main` also dispatches two smaller families: `vclaw mcp serve` (`src/mcp/` — a read-only stdio MCP server exposing `list_projects`, `get_project_status`, `get_artifacts`, `get_event_log`, `list_provider_routes`; writes stay CLI-only by design) and `vclaw veo <verb>` (`src/video/veo-subprocess.ts` — spawn-forwarding to the Bun-based `vclaw-cli/flow.ts`, required for Puppeteer/Google Flow verbs like `status`, `resume`, `cancel`, `useapi:*`).
204
+ 2. `src/video/` — the core domain. Each file is small and single-purpose, e.g. `artifacts.ts`, `artifact-store.ts`, `checkpoints.ts`, `workspace.ts`, `projects.ts`, `status.ts`, `doctor.ts`, `doctor-portfolio.ts`, `readiness.ts`, `execution-plan.ts`, `execute.ts`, `execution-runtime.ts`, `execution-status.ts`, `execution-cancel.ts`, `director-preflight.ts`, `report.ts`, `csv-export.ts`, `obsidian-export.ts`, `project-index.ts`, `metrics.ts`, `next-actions.ts`, `template-store.ts`, `provider-status.ts`, `native-seedance.ts`, `native-veo.ts`, `multi-shot-prompt.ts`, `storyboard-grid.ts`, `cinematography.ts` (detail-leveled quantified camera/lighting/grade/audio emitters — `--detail terse|standard|rich`; since Phase 3a the lighting/grade, hook, realism and dynamic tables live in `lighting-grade-register.ts` / `hook-register.ts` / `realism-register.ts` / `dynamic-register.ts` and are re-exported from it, so import from `cinematography.js` as before), `prompt-rules.ts` (standing prompt rules: visual-descriptor-not-names, brand-neutral, no-face-morph, diegetic audio), `seedance-asset-library.ts` (Asset Library character/product consistency), `story-bible.ts` (deterministic continuity bible — cast/settings/props/scene-timeline from brief + storyboard + characters), `brand-definition.ts` (locked brand system — palette/voice/typography/theme map; `filmmaking-prompts` appends a prose BRAND line when present), `assemble/media-qc.ts` (post-stitch ffprobe QC of clips + master), `assemble/narration-fit.ts` (TTS-vs-video timing planner: atempo / loop-video fit). `src/video/studio/` is the planning front door and `src/video/preview-portal/` is the review/delivery portal (both described below).
194
205
  3. `src/video/provider-platform/` — route descriptors (Veo / Seedance / Runway direct and useapi flavors).
195
206
  4. `src/video/pipeline-manifests/` — built-in stage definitions for the two production modes.
196
207
  5. `schemas/video/` — canonical JSON Schema contracts for artifacts and pipeline manifests. Treat these as the source of truth for artifact shapes.
@@ -221,7 +232,7 @@ Canonical stage order: **init → brief → storyboard → assets → review →
221
232
 
222
233
  ### Two production modes
223
234
 
224
- Every command accepts `--mode storyboard|director`. Pipeline manifests under `src/video/pipeline-manifests/` define the stage contract per mode. `director` mode adds a storyboard-approval gate: `produce`/`execute` export `storyboard.md` and block before provider submission unless `VIDEOCLAW_APPROVE_STORYBOARD=1` is set. `storyboard-review` (no-execution) can perform preflight + transition the project into `awaiting-approval` without starting a run.
235
+ Every command accepts `--mode storyboard|director`. Pipeline manifests under `src/video/pipeline-manifests/` define the stage contract per mode. `director` mode adds a storyboard-approval gate: `produce`/`execute` export `storyboard.md` and block before provider submission unless `VIDEOCLAW_APPROVE_STORYBOARD=1` is set or the run is `produce --approve` (the command the blocked report prints; `approve` is a deprecated spelling of it). Plain `produce` has no `--confirm-spend` gate and refuses that flag (and `--execute`) rather than ignoring it; every direct front door reaches the provider through `executeProject` (ADR 0008 amendment). `storyboard-review` (no-execution) can perform preflight + transition the project into `awaiting-approval` without starting a run.
225
236
 
226
237
  ### Studio front door (planning layer)
227
238
 
@@ -239,7 +250,7 @@ The ops layer tracks a normalized `storyboardReviewState` of `missing | current
239
250
 
240
251
  ### Review & delivery portal (`src/video/preview-portal/`)
241
252
 
242
- The portal generates the standardized HTML surfaces that used to be hand-written per project: `edit.html`/`review.html` (editor/operator human-in-the-loop, with approve/regenerate controls and `VIDEOCLAW_REVIEW_DECISIONS` copy output), `client-review.html` (lightweight client approve/decline/comment, `VIDEOCLAW_CLIENT_FEEDBACK` copy output), and `preview.html` (polished final showcase: every production image is lightbox-enabled for click-to-fullscreen, a soundtrack `<audio controls preload="none">` player renders when a soundtrack is discovered, plus downloads). The module is split into `discovery.ts` (find project assets), `generate.ts` + `templates.ts` + `shared-assets.ts` (render the surfaces), `render.ts`/`publish.ts` (emit/ship), and `audit.ts` (drift checks); `src/video/review-ui.ts` (`vclaw video review-ui`) serves the editor surface interactively. The decisions/feedback flow back through env-var copy blocks rather than a server round-trip, keeping the on-disk project the source of truth. See `docs/preview-portal-audit.md`.
253
+ The portal generates the standardized HTML surfaces that used to be hand-written per project: `edit.html`/`review.html` (editor/operator human-in-the-loop, with approve/regenerate controls and `VIDEOCLAW_REVIEW_DECISIONS` copy output), `client-review.html` (lightweight client approve/decline/comment, `VIDEOCLAW_CLIENT_FEEDBACK` copy output), and `preview.html` (polished final showcase: every production image is lightbox-enabled for click-to-fullscreen, a soundtrack `<audio controls preload="none">` player renders when a soundtrack is discovered, plus downloads). The module is split into `discovery.ts` (find project assets), `generate.ts` + `templates.ts` + `shared-assets.ts` (render the surfaces), `render.ts`/`publish.ts` (emit/ship — since Phase 3d `render.ts` keeps the surface router and imports `render-primitives.ts` (escaping, aspect, dates), `render-scene-contract.ts` (the exact-submit contract), `render-run.ts` (the run dashboard) and `render-brand.ts` (brand theming)), and `audit.ts` (drift checks); `src/video/review-ui.ts` (`vclaw video review-ui`) serves the editor surface interactively. The decisions/feedback flow back through env-var copy blocks rather than a server round-trip, keeping the on-disk project the source of truth. See `docs/preview-portal-audit.md`.
243
254
 
244
255
  ### Mission Control (`vclaw video monitor`)
245
256
 
@@ -247,7 +258,7 @@ The portal generates the standardized HTML surfaces that used to be hand-written
247
258
 
248
259
  ### Storyboard grid & multi-shot prompt handoff
249
260
 
250
- `src/video/multi-shot-prompt.ts` builds project-ready, provider-tuned multi-shot prompt packets (presets via `vclaw video multi-shot --presets`; see `references/video/multi-shot-framework.md`, especially its Anti-patterns section). `multi-shot --plan` can render through alternate composers via `--format default|seedance-paragraph|per-shot` (default = the original `{ preset, shots[] }` JSON, unchanged) and wrap the rendered text bilingually via `--lang en|zh|en+zh` (offline identity translator — the flag surfaces the two-block `en+zh` structure, not live translation); `--category <id>` drives the composed prose. On a non-`default` `--format`, `--hook <patternId>` (named `HOOK_PATTERNS` opening directive from `cinematography.ts`) prepends an `Opening hook — ...` line and `--dialogue "<speaker>: <line> [|| <speaker>: <line>]"` appends spoken dialogue to the opening via `withDialogue` — both are post-render text transforms (composers stay pure), default off / unchanged output. `--dialogue` parses a trailing `[emotion]` per speaker, and `--emotion-cues` rewrites those named emotions into physical-cue descriptors (`rewriteEmotionAsPhysical`/`EMOTION_PHYSICAL_CUE_MAP` in `emotion-cues.ts`) — advisory/additive, extremes left named, default off / byte-identical. `filmmaking-prompts --phase storyboard|video` gates the heavy video `seedancePackets` to `[]` in the `storyboard` phase (lock-the-grid step) while keeping the storyboard/camera-language portion. Joey cinematic-adaptation opt-in flags (all additive — omit = byte-identical legacy output) route through these same commands: `filmmaking-prompts` takes `--sheet 8-shot|6-panel` (`characterSheetSixPanelPrompt`), `--realism`/`--wet`/`--haze thin|light|heavy` (the `captureRealismBlock` keystone + `volumetricHaze`, at `--detail rich`), `--background mid-gray|white|black` (`backgroundPlate`), and `--lighting <id>`/`--grade <id>` (rich cinematography-suffix registers, e.g. `night-fire`/`bleach-bypass`); `multi-shot` takes `--genre <id>` (`resolveStyleLine`, Nolan fallback) and `--vfx <id>` (physical-VFX effects register, `src/video/vfx-register.ts`). Operator trigger-word map: mid-gray → `backgroundPlate`; haze → `volumetricHaze`; anti-plastic → `captureRealismBlock`; wet → moisture clause; bleach-bypass/lifted-blacks → lift/gamma grade; no-on-screen-text → `noOnScreenTextBlock`, the FIRST directive block (it moved out of Last Frame: overlay text is decided early in the frame, so the instruction has to sit early in the prompt). See `docs/CLI_REFERENCE.md` ("Joey cinematic opt-in flags") and the framework Anti-patterns.
261
+ `src/video/multi-shot-prompt.ts` builds project-ready, provider-tuned multi-shot prompt packets (presets via `vclaw video multi-shot --presets`; see `references/video/multi-shot-framework.md`, especially its Anti-patterns section). `multi-shot --plan` can render through alternate composers via `--format default|seedance-paragraph|per-shot` (default = the original `{ preset, shots[] }` JSON, unchanged) and wrap the rendered text bilingually via `--lang en|zh|en+zh` (offline identity translator — the flag surfaces the two-block `en+zh` structure, not live translation); `--category <id>` drives the composed prose. On a non-`default` `--format`, `--hook <patternId>` (named `HOOK_PATTERNS` opening directive from `hook-register.ts`, re-exported by `cinematography.ts`) prepends an `Opening hook — ...` line and `--dialogue "<speaker>: <line> [|| <speaker>: <line>]"` appends spoken dialogue to the opening via `withDialogue` — both are post-render text transforms (composers stay pure), default off / unchanged output. `--dialogue` parses a trailing `[emotion]` per speaker, and `--emotion-cues` rewrites those named emotions into physical-cue descriptors (`rewriteEmotionAsPhysical`/`EMOTION_PHYSICAL_CUE_MAP` in `emotion-cues.ts`) — advisory/additive, extremes left named, default off / byte-identical. `filmmaking-prompts --phase storyboard|video` gates the heavy video `seedancePackets` to `[]` in the `storyboard` phase (lock-the-grid step) while keeping the storyboard/camera-language portion. Joey cinematic-adaptation opt-in flags (all additive — omit = byte-identical legacy output) route through these same commands: `filmmaking-prompts` takes `--sheet 8-shot|6-panel` (`characterSheetSixPanelPrompt`), `--realism`/`--wet`/`--haze thin|light|heavy` (the `captureRealismBlock` keystone + `volumetricHaze`, at `--detail rich`), `--background mid-gray|white|black` (`backgroundPlate`), and `--lighting <id>`/`--grade <id>` (rich cinematography-suffix registers, e.g. `night-fire`/`bleach-bypass`); `multi-shot` takes `--genre <id>` (`resolveStyleLine`, Nolan fallback) and `--vfx <id>` (physical-VFX effects register, `src/video/vfx-register.ts`). Operator trigger-word map: mid-gray → `backgroundPlate`; haze → `volumetricHaze`; anti-plastic → `captureRealismBlock`; wet → moisture clause; bleach-bypass/lifted-blacks → lift/gamma grade; no-on-screen-text → `noOnScreenTextBlock`, the FIRST directive block (it moved out of Last Frame: overlay text is decided early in the frame, so the instruction has to sit early in the prompt). See `docs/CLI_REFERENCE.md` ("Joey cinematic opt-in flags") and the framework Anti-patterns.
251
262
 
252
263
  `src/video/storyboard-grid.ts` (`vclaw video storyboard-grid`, `renderStoryboardGrid`) renders a **deterministic shot-spec sheet** — a 3×3 SVG→PNG of CAM/MOVE/MOOD annotation panels — **not** a cinematic storyboard with character imagery. It is the *layout/intent contract*, not the finished reference image. The intended two-step is: (1) `storyboard-grid` to lock panel order + camera language, then (2) generate the real cinematic 3×3 grid via an image model (always `openai-gpt-image-2` for multi-panel composites) and re-attach it with `vclaw video filmmaking-prompts --storyboard-grid <path>`, which feeds it into the Seedance/Veo/Runway prompt packets.
253
264
 
@@ -286,6 +297,25 @@ The repeatable cartoon-SHOW production system (from the Jack-Vs-AI workflow). `v
286
297
 
287
298
  `src/video/batch-queue.ts` + the `vclaw video batch-submit` / `batch-monitor` / `batch-status` commands queue many independent video jobs to run unattended overnight. The default route is the **free** `runway-useapi` explore mode (low-res, slow — backfill drafts); target `dreamina-useapi` (or `seedance-direct`) for paid hi-res. An operator-authored manifest (`schemas/video/artifacts/batch-queue-manifest.schema.json` — an input-only artifact, allowlisted in `check-artifact-schema-coverage.mjs`) compiles via the pure `buildBatchPayload()` into a single `VideoExecutionPayload` with N tasks, so it reuses the existing native route transports (`native-runway`/`native-dreamina`/`native-seedance`) and their job-state — no duplicate submit/poll logic. `batch-submit` persists `<dir>/batch-queue.json`; `batch-monitor` polls once (the transport downloads to `<dir>/scene-<i>.mp4`), copies each completed scene to `<dir>/clips/<jobId>.mp4`, and writes `<dir>/batch-status.json`. It is **resumable/idempotent**: re-running only advances pending→done/failed and never re-downloads completed clips, so `batch-monitor --out <dir> --once` is safe to schedule via launchd (one pass per tick). Opt-in wedge handling: `--stall-minutes <n>` (0=off) flags scenes the provider has left `submitted` past the stall window as **wedged** (`detectWedgedScenes`/`applyWedgeHandling` in `batch-queue.ts`), and `--fail-wedged` marks them `failed` so the queue reaches terminal and the monitor exits instead of polling a stuck job to the deadline. The monitor also backs off automatically when the explore queue is throttled (`isExploreThrottled`/`nextBackoffMs`), and the opt-in `--auto-resubmit` (with `--stall-minutes <n>`, bounded by `--max-resubmits <n>`, default 2) re-submits wedged scenes as fresh single-scene jobs (`planResubmits`/`runResubmitPass`) — **only on the free `runway-useapi` route** (refused on paid routes up front, and the resubmit path self-guards, so it never spends credits). See `docs/CLI_REFERENCE.md` ("Overnight batch video queue").
288
299
 
300
+ ### Cinema production queue + render lanes (the durable execution layer)
301
+
302
+ ADR 0008 converges every generated-work front door (`produce --auto-chain`, `pool`, `batch-submit`, `mograph-render --enqueue` (its `--emit-batch` still writes the legacy batch manifest), fallback rendering) onto ONE durable, dependency-aware production queue owned by the `src/video/cinema-*` store family (~60 small modules: `cinema-production-queue.ts`, `cinema-production-contract-*`, `cinema-provider-*`, `cinema-evidence*`, `cinema-review-*`, `cinema-preflight*`, `cinema-retry-policy.ts`, `cinema-file-lock.ts`, …). The queued path is `compile → exact quote → authorise → cinema-work → reconcile → review → delivery`, driven by the `vclaw video cinema-*` verbs (handlers `cinema*.ts`: `cinema-create`/`-compile`/`-preflight`/`-quote`/`-authorize`/`-work`/`-work-quote`/`-ingest`/`-review`/`-promote`/`-deliver`/`-status`/`-console`/`-console-live`/`-archive`/`-restore`/`-migrate`/`-history-import`). Workers act on SAVED state (the quote, the immutable request, and the provider job id must survive interruption); an ambiguous submission is resolved before any replacement work is authorised, never re-submitted blindly. ADR 0009 makes the Cinema console (`cinema-console` / `cinema-console-live`, `cinema-project-console*.ts`, `cinema-live-console.ts`) the one authoritative live review surface that review-ui, the preview portal and monitor detail pages converge on. Cinema route ids are a separate id space from the core `ProviderRouteId`s (ADR 0001 + 0007: unlimited Higgsfield, paid xskill API and the official Higgsfield CLI — `cinema-higgsfield-cli-*.ts` — are distinct routes and never silently swap).
303
+
304
+ **Render lanes** (`src/video/lane-queue.ts`, `lane-coordinator.ts`; `vclaw video lane <acquire|await|heartbeat|release|status>` in `handlers/lane.ts`) are the cross-process slot leases every driver — in any language — must take before submitting. The lane key is `route:account` (provider limits are per ACCOUNT), one lane per transport so different engines run in parallel. The local queue is the external `sqlite3` CLI (not `node:sqlite`); the shared multi-computer authority is a Cloudflare Durable Object per lane deployed from `services/shared-lane-coordinator/` (`docs/SHARED_QUEUE.md`). It is a lease, not a task queue: the agent still runs its own render, it only waits its turn. Two drivers on one lane look exactly like moderation failures and have the opposite fix (serialise vs redraw) — check `lane status` before diagnosing rejections.
305
+
306
+ ### Free Seedance engine, vendored in-tree (`engines/seedance-direct/`)
307
+
308
+ ADR 0006 (supersedes 0005): the free, unlimited Higgsfield Seedance engine is a ~600-line Python adapter (`adapter.py`, `run.sh`, `bootstrap.sh`, `test_adapter.py`) living OUTSIDE `src/` — it does not touch `tsc`, `node:test` or the npm tarball. It speaks the same stdin/stdout SUBMIT/POLL/CANCEL JSON contract as every `..._ADAPTER`. `resolveAdapterCommand` prefers it for `seedance-direct` only when the engine is fully bootstrapped; the readiness verdict is `describeFreeInTreeSeedanceEngine` in `src/video/execution-adapter.ts`, which requires the `.vclaw-engine-ready.json` marker (`FREE_SEEDANCE_ENGINE_MARKER`) that ONLY a successful signed-in cookie import writes inside the browser-session directory — an existing venv + an empty profile directory is NOT ready and falls through to the PAID `native-seedance.ts` transport (`SUTUI_API_KEY`), per ADR 0001. The venv and the `.cloak-profile` browser session are local, secret and git-ignored; `engines/seedance-direct/bootstrap.sh` creates them. Before any `--confirm-spend` on `seedance-direct`, read `activeTransport` in `vclaw video providers` output — `in-tree-engine` is free, anything else is paid. `VCLAW_SEEDANCE_DIRECT_NATIVE=1` forces the paid path.
309
+
310
+ ### Smaller newer families (each self-contained under `src/video/`)
311
+
312
+ - `creator-ui/` (`vclaw video creator-ui`, `creator-demo`; `docs/CREATOR_DEMO.md`) — the zero-key product-shell: `capabilities.ts` probes which stock/TTS/music/generative routes this machine can actually use, `read-model.ts` + `server.ts` serve a local creator surface, and `creator-demo` (also `vclaw studio --goal creator-demo`, `npm run demo`) builds a full project + preview with `providerCalls: 0`, `networkCalls: 0`, never marking it publish-ready.
313
+ - `stock-platform/` (`vclaw video stock-search` / `stock-import`) — stock footage providers (`providers/pexels.ts`) behind a registry; `rights.ts` records licence/provenance (sha256 + source) per imported asset and `store.ts` keeps imports inside the project.
314
+ - `publish-platform/` (`vclaw video publish-metadata` / `publish-package`) — versioned, source-cited platform profiles (`profiles.ts`: YouTube Shorts etc. with max duration, aspect, codec, title/description limits, synthetic-media disclosure) and `validate.ts` checks a final cut + metadata against the chosen profile before packaging. Distinct from `publish-preview` / `publish-portal-index` (the preview portal) and from `docs/PUBLISHING.md` (releasing the npm package itself).
315
+ - `reframe/` — the shot-plan engine behind `make-vertical`: `--write-plan-template` detects cuts and writes UNVERIFIED subject-anchor suggestions; `--strict` refuses to render until every anchor is verified (or `--quick-center-crop` is explicit); `captions.ts` renders portrait-native captions and `qc.ts` audits the crop.
316
+ - `run-state/` — `readProjectRunState` normalises candidates + storyboard + execution report into one derived run view (stale `pending` candidates are treated as abandoned); the read model that monitor/console surfaces share.
317
+ - `magnific/` + `providers/` — the Magnific REST route (`magnific-rest`, one of the five built-in adapter routes) and the thin useapi/xskill/Flow transport clients the native routes call.
318
+
289
319
  ### Director Blueprint (director layer)
290
320
 
291
321
  `src/video/project-blueprint.ts` + `blueprint-prompt.ts` + `director-defaults.ts` (`vclaw video director-blueprint --project <slug> (--from-json <path> [--write] | --show)`) persist a project-level **visual bible** (`artifacts/project-blueprint.json`): color system, lighting grammar, per-character camera language, forbidden moves, "the one rule". It is distinct from the story bible (continuity); the blueprint locks **visual direction** above the execution layer. Authoring is creative and lives in the `ai-director` skill (`skills/ai-director/SKILL.md`); the CLI half is deterministic (validate/normalize/persist). `filmmaking-prompts` auto-appends a prose DIRECTOR block and flags forbidden-move violations when a blueprint exists; no blueprint → byte-identical legacy output. See `docs/DIRECTOR_BLUEPRINT.md`.
@@ -304,7 +334,7 @@ The repeatable cartoon-SHOW production system (from the Jack-Vs-AI workflow). `v
304
334
 
305
335
  ### Media production & local post-production
306
336
 
307
- Two handler families cover the finishing lane. `handlers/media-production.ts`: `assemble` (FFmpeg stitch, incl. `--from-clips`), `gen-image` (diegetic prop/screen/overlay stills; Flow image models via `gen-image-flow.ts`), `overlay` (graphic/alert/lower-third motion graphics with a drawtext preflight), `music-video` (vocal-synced beat-exact assembler, plan/dry by default), `title-card` (Pillow+RAQM title overlays), `stitch-ad`, `animation-styles` (shared `animation-styles.json` registry), `finish` (`src/video/finish.ts` — upscale a rendered cut to an HD/QHD master via hosted Topaz (spend-gated) or local Real-ESRGAN/Topaz CLI; the anti-plastic recipe is baked in: photoreal model, denoise/sharpen DISABLED, film grain kept, and Topaz `grain` clamps to 0.1 because the published schema overstates the range), and `lipsync` (OmniHuman, spend-gated). `assemble`'s stitch layer also supports opt-in **reading-holds** (`assemble/stitch.ts`, `readingHold`) — readable pre-roll holds on dense motion-comic segments. `handlers/media-ops.ts` is local-FFmpeg-only post-production on a finished cut — `make-vertical`/`make-square`/`make-loop`, `thumbnail`, `burn-subtitles`, `verify-final`, and `qc` (recursively scans `projects/<slug>/final/` + `outputs/` for clips and runs the assemble media-QC probe: missing-audio, nonstandard codec, duration drift; graceful `status: 'skipped'` when no clips) — real file I/O but NO provider calls and NO spend. Two adjacent quality/finishing tools: `vclaw video image-ops` (`src/video/image-ops.ts` + `native-magnific.ts`) is still-image post-processing, currently the Magnific precision-v2 image upscaler (pure planning core + injectable runner; `--dry-run` plans without spending; the IMAGE endpoint is live-verified, a different service from the video upscaler), and `vclaw video consistency-audit` (`src/video/consistency-audit.ts`) is an automated character-consistency VISION audit across rendered scenes/keyframes — the engine-side forcing function that catches wardrobe/face drift on recurring characters BEFORE a render is presented as done.
337
+ Two handler families cover the finishing lane. `handlers/media-production.ts`: `assemble` (FFmpeg stitch, incl. `--from-clips`), `gen-image` (diegetic prop/screen/overlay stills; Flow image models via `gen-image-flow.ts`), `overlay` (graphic/alert/lower-third motion graphics with a drawtext preflight), `music-video` (vocal-synced beat-exact assembler, plan/dry by default), `title-card` (Pillow+RAQM title overlays), `stitch-ad`, `animation-styles` (shared `animation-styles.json` registry), `finish` (`src/video/finish.ts` — upscale a rendered cut to an HD/QHD master via hosted Topaz (spend-gated) or local Real-ESRGAN/Topaz CLI; the anti-plastic recipe is baked in: photoreal model, denoise/sharpen DISABLED, film grain kept, and Topaz `grain` clamps to 0.1 because the published schema overstates the range), and `lipsync` (OmniHuman, spend-gated). `assemble`'s stitch layer also supports opt-in **reading-holds** (`assemble/stitch.ts`, `readingHold`) — since Phase 3c the stitch constants/filter register, the concat/prep argv builders and the multi-layer audio mix live in `assemble/stitch-filters.ts` / `stitch-concat.ts` / `stitch-audio-mix.ts` and are re-exported from `stitch.ts`, so import from `stitch.js` as before — readable pre-roll holds on dense motion-comic segments. `handlers/media-ops.ts` is local-FFmpeg-only post-production on a finished cut — `make-vertical`/`make-square`/`make-loop`, `thumbnail`, `burn-subtitles`, `verify-final`, and `qc` (recursively scans `projects/<slug>/final/` + `outputs/` for clips and runs the assemble media-QC probe: missing-audio, nonstandard codec, duration drift; graceful `status: 'skipped'` when no clips) — real file I/O but NO provider calls and NO spend. Two adjacent quality/finishing tools: `vclaw video image-ops` (`src/video/image-ops.ts` + `native-magnific.ts`) is still-image post-processing, currently the Magnific precision-v2 image upscaler (pure planning core + injectable runner; `--dry-run` plans without spending; the IMAGE endpoint is live-verified, a different service from the video upscaler), and `vclaw video consistency-audit` (`src/video/consistency-audit.ts`) is an automated character-consistency VISION audit across rendered scenes/keyframes — the engine-side forcing function that catches wardrobe/face drift on recurring characters BEFORE a render is presented as done.
308
338
 
309
339
  ### Gemini key pool
310
340
 
@@ -315,6 +345,12 @@ Two handler families cover the finishing lane. `handlers/media-production.ts`: `
315
345
  - `execution-plan` ↔ `plan`
316
346
  - `execute` ↔ `produce`
317
347
 
348
+ These two are supported spellings: the product itself emits `vclaw video execute` (`create.ts`, `execute.ts`, `storyboard-markdown.ts`, the studio recipes), so they never print a notice.
349
+
350
+ ### Declared aliases on their way out (notice-only, dispatch preserved until removal)
351
+
352
+ `template-create` → `template-save`, `clone-ad` → `clone-execute`, `analyze-template` → `analyze`, `preflight` → `director-preflight`, `library find` → `find-library` — all marked `deprecatedAliases` since 3.0.0-alpha.13, as are the one-shot and historical-only commands listed in `docs/DEPRECATION.md` "Marked as of 3.0.0-alpha.13". Each alias is an `aliases` entry on the canonical `CommandSpec` in `src/video/cli-schema.ts` (one schema entry, one handler); marking one deprecated is `deprecatedAliases: [{ name, since }]` on that entry, which makes `main` print one stderr line and run the command unchanged. Lifecycle: `docs/DEPRECATION.md` "Command lifecycle". `src/tests/cli-dispatch-table.test.ts` fails on a dispatch key that shares a handler but is declared nowhere. The command `approve` is marked `deprecated` (not an alias: its own dispatch key) as a spelling of `produce --approve`; its handler forwards to the produce handler.
353
+
318
354
  (The old `omx` wrapper binary has been removed entirely — don't reintroduce it.)
319
355
 
320
356
  ## Conventions that are not obvious
@@ -327,9 +363,10 @@ Two handler families cover the finishing lane. `handlers/media-production.ts`: `
327
363
  - Tests use `node:test` with `assert/strict`. Prefer `mkdtemp`/`tmpdir` for temp-directory isolation. Put CLI end-to-end tests under `src/tests/cli-*.test.ts` and module-contract tests under `src/tests/*.test.ts`.
328
364
  - When adding a new CLI subcommand: add the handler in the appropriate `src/cli/handlers/*.ts` module (or a new one following the verbatim-move pattern) and register the dispatch-table entry (plus any alias) in `src/cli/vclaw.ts`; update the relevant `src/video/*` module(s), a schema under `schemas/video/` if it introduces or changes an artifact, register the command in the `COMMANDS` array of `src/video/cli-schema.ts` (bump the hardcoded command-count assertion in `cli-schema.test.ts` to match), add a `cli-*.test.ts`, and update `README.md` + `docs/CLI_REFERENCE.md`. The `check:cleanroom-docs` guardrail watches docs drift.
329
365
  - Project slugs are validated by `isProjectSlug` (`src/video/projects.ts`); both `parseProjectSlug` and `handleVideoInit` (`validateInitSlug`) enforce it so flag-looking values (e.g. `--project`) cannot be silently accepted as slugs. Preserve this guard when adding new slug-accepting commands.
330
- - Architecture diagrams under `docs/assets/*.jpg` are generated from Mermaid sources in `docs/DIAGRAMS_SOURCE.md`. Edit the Mermaid blocks there and regenerate the images via the Go Bananas Pro model — never hand-edit the JPGs.
366
+ - Architecture diagrams under `docs/assets/*.jpg` are generated from the Mermaid sources in `docs/DIAGRAMS_SOURCE.md`. Edit the Mermaid block there, then `npm run diagrams:mirror && npm run diagrams:render` (mermaid-cli with the brand config — the deterministic render the existing JPGs came from; `npm run diagrams:lint` fails when a mirror drifts). Never hand-edit the JPGs.
331
367
  - `check:skill-frontdoor` deliberately ignores `skills/seedance-prompts/SKILL.md` and the three presenter skills (`bunty`, `davendra-presenter`, `nex-presenter`) because their docs legitimately reference the legacy Python pipeline scripts. Don't "fix" the ignore list — it's load-bearing.
332
- - Do not commit secrets, `.env.local`, provider cookies, or `.omx/` state (already gitignored).
368
+ - Do not commit secrets, `.env.local`, provider cookies, `engines/*/.cloak-profile/`, or `.omx/` state (already gitignored).
369
+ - `.cursor/rules/codegraph.mdc` (alwaysApply) is the CodeGraph MCP usage guide: prefer `codegraph_context` / `codegraph_trace` / `codegraph_impact` for structural questions (callers, callees, blast radius) and grep only for literal text. Skills that touch many modules (the cinema store, provider routes) are where this pays off most.
333
370
 
334
371
  ## Start in your own worktree
335
372
 
@@ -358,9 +395,9 @@ Proceed by default on obvious next steps. Keep work scoped to this repository an
358
395
 
359
396
  ## Recommended reading order
360
397
 
361
- `docs/ARCHITECTURE.md` → `docs/CLI_REFERENCE.md` → `docs/STUDIO.md` → `docs/ASSEMBLE.md` → `docs/PRODUCTION_WORKFLOW.md` → `docs/REVIEW_UI_STORYBOARD_WORKFLOW.md` → `docs/preview-portal-audit.md` → `docs/STORY_BIBLE.md` → `docs/DIRECTOR_BLUEPRINT.md` → `docs/MOTION_OVERLAY.md` → `docs/MOGRAPH.md` → `docs/REFERENCE_SHEETS.md` → `docs/SCENE_CANDIDATES.md` → `docs/OPERATIONS.md` → `docs/GENERATION_TELEMETRY.md` → `docs/OBSIDIAN.md` → `docs/TEMPLATES.md` → `docs/MIGRATION.md` → `docs/DEPRECATION.md` → `docs/RELEASE_READINESS.md` → `docs/MASTER_PLAN_ALIGNMENT.md` → `docs/DIAGRAMS_SOURCE.md`.
398
+ `docs/AGENT_QUICKSTART.md` (install → first free render; `vclaw schema --json` + `skills/catalog.json` are the live command/skill indexes) → `docs/ARCHITECTURE.md` → `docs/PROJECT_LAYOUT.md` → `docs/CLI_REFERENCE.md` → `docs/STUDIO.md` → `docs/SHARED_QUEUE.md` → `docs/CREATOR_DEMO.md` → `docs/PUBLISHING.md` → `docs/ASSEMBLE.md` → `docs/PRODUCTION_WORKFLOW.md` → `docs/REVIEW_UI_STORYBOARD_WORKFLOW.md` → `docs/preview-portal-audit.md` → `docs/STORY_BIBLE.md` → `docs/DIRECTOR_BLUEPRINT.md` → `docs/MOTION_OVERLAY.md` → `docs/MOGRAPH.md` → `docs/REFERENCE_SHEETS.md` → `docs/SCENE_CANDIDATES.md` → `docs/OPERATIONS.md` → `docs/GENERATION_TELEMETRY.md` → `docs/OBSIDIAN.md` → `docs/TEMPLATES.md` → `docs/MIGRATION.md` → `docs/DEPRECATION.md` → `docs/RELEASE_READINESS.md` → `docs/MASTER_PLAN_ALIGNMENT.md` → `docs/DIAGRAMS_SOURCE.md`.
362
399
 
363
- Architecture decision records live in `docs/adr/` (no-silent-fallback across routes, on-disk project as source of truth, Seedance identity via Asset Library, director-mode approval gate) — consult them before relitigating those decisions.
400
+ Architecture decision records live in `docs/adr/` — 0001 no-silent-fallback across routes, 0002 on-disk project as source of truth, 0003 Seedance identity via Asset Library, 0004 director-mode approval gate, 0005→0006 free Higgsfield Seedance engine vendored in-tree, 0007 unlimited / paid-API / official-CLI Higgsfield are separate routes, 0008 one durable production queue, 0009 one HTML5 production review console. Consult them before relitigating those decisions.
364
401
 
365
402
  ## Agent skills
366
403
 
package/README.md CHANGED
@@ -6,9 +6,9 @@
6
6
 
7
7
  **Turn a one-line idea into a finished AI video — step by step, in the open, with a human approval before anything expensive runs and automated QC before anything ships.**
8
8
 
9
- A command-line tool (`vclaw`) that takes a plain-English idea like *"a 15-second ad for my coffee brand"* and walks it all the way to a reviewed, published video — using AI video services like **Veo, Seedance, and Runway**. Every step is saved to a file you can read, so nothing is hidden and you can stop, inspect, or replay any stage. It also **checks its own output** — a vision pass that catches the motion defects a still-frame glance misses (breath vapour, morphing, vanishing props, character drift) before a clip is called done.
9
+ A command-line tool (`vclaw`) that takes a plain-English idea like *"a 15-second ad for my coffee brand"* and walks it all the way to a reviewed, published video — using AI video services like **Veo, Seedance, and Runway**. Every step is saved to a file you can read, so nothing is hidden and you can stop, inspect, or replay any stage. Optional vision QC can inspect motion defects such as breath vapour, morphing, vanishing props and character drift. It requires a configured vision backend; final playback review remains separate.
10
10
 
11
- [![Tests](https://img.shields.io/badge/tests-2800%2B%20passing-brightgreen)](https://github.com/davendra/videoclaw-v3/blob/main/.github/workflows/ci.yml)
11
+ [![CI](https://github.com/davendra/videoclaw-v3/actions/workflows/ci.yml/badge.svg)](https://github.com/davendra/videoclaw-v3/actions/workflows/ci.yml)
12
12
  [![Node](https://img.shields.io/badge/node-20%2B-brightgreen)](./package.json)
13
13
  [![TypeScript](https://img.shields.io/badge/typescript-strict%20%7C%20NodeNext%20ESM-3178c6)](./tsconfig.json)
14
14
  [![Status](https://img.shields.io/badge/status-active%20development-orange)](https://videoclaw-docs.vercel.app/reference/MASTER_PLAN_ALIGNMENT)
@@ -22,8 +22,8 @@ The complete, idiot-proof **and** agent-ready docs: an [interactive guide](https
22
22
 
23
23
  > **New here?** The easiest path is to **[drive it by talking to Claude Code](https://videoclaw-docs.vercel.app/guide/with-claude-code)** (or any agent host); there's a dedicated [how-it-works page for agents](https://videoclaw-docs.vercel.app/for-agents/) too.
24
24
  >
25
- > **Agents working in this repo:** read [`docs/CAPABILITIES.md`](docs/CAPABILITIES.md) (or [`llms.txt`](llms.txt)) — a one-read capability manifest: what videoclaw can produce, the provider routes, the spend-safety model, and the full command index. Run `vclaw schema --json` for exact flags.
26
- > Once you're in Claude Code in this repo, just type **`/concierge`** (or **`/clawbot`**) — or say *"make me a video"* — and **Clawbot**, VideoClaw's mascot and concierge, walks you from idea to finished film, with a preview and your approval before anything costs money.
25
+ > **Agents working in this repo:** read [`docs/CAPABILITIES.md`](docs/CAPABILITIES.md) (or [`llms.txt`](llms.txt)) — a one-read capability manifest: what videoclaw can produce, the provider routes, the spend-safety model, and a command map that names every registered command (exact flags: `vclaw schema --json` and `docs/CLI_REFERENCE.md`). Run `vclaw schema --json` for exact flags.
26
+ > Once you're in Claude Code in this repo, just type **`/concierge`** (or **`/videoclaw`**) — or say *"make me a video"* — and **VideoClaw**, speaking as its own concierge, walks you from idea to finished film, with a preview and your approval before anything costs money.
27
27
 
28
28
  <a href="https://videoclaw-docs.vercel.app/"><img src="./docs/assets/docsite-preview.png" alt="videoclaw documentation site — make AI videos by just talking" width="100%" /></a>
29
29
 
@@ -86,12 +86,12 @@ Three things make it different from the usual *"type a prompt, get a video"* too
86
86
 
87
87
  - **Go from idea → finished video** without leaving the terminal.
88
88
  - **Use several AI video engines** (Veo, Seedance, Runway) through one consistent set of commands — no need to learn each provider's quirks.
89
- - **Keep characters consistent** — the same person, outfit, set, and props look the same in every scene (via character profiles, reference sheets, and the *story bible*).
90
- - **Approve in your browser** before any expensive render runs — open the Review UI, look at the stills, click approve or regenerate.
89
+ - **Manage character consistency** — character profiles, reference sheets and the *story bible* carry identity and continuity between scenes; inspect generated results for drift.
90
+ - **Review storyboard stills in your browser** — use the Review UI to inspect and select them. Director approval and exact queued spend authorisation are distinct gates; plain `produce` is live by default.
91
91
  - **Add the finishing touches** — narration, background music, subtitles, thumbnails, and vertical / square / looping variants for different platforms.
92
92
  - **Run many projects at once** and see them all on a dashboard: what's blocked, what's stale, what needs review, what's ready to publish.
93
- - **Trust the result** — a project is only "ready" when its review report literally says `pass`. No guessing.
94
- - **Rehearse for free** — almost every command has a `--dry-run` that plans the whole thing without spending a credit.
93
+ - **Record delivery evidence** — publish readiness requires a passing review report and `metrics.publishReady: true`; planned or previously film-reviewed projects also need current passing film-edit evidence.
94
+ - **Preview the intended operation** — use each command’s documented planning or `--dry-run` path. There is no universal dry-run flag; queue compilation and direct rendering have different contracts.
95
95
 
96
96
  ---
97
97
 
@@ -108,9 +108,11 @@ Here is the whole assembly line in plain words. Each step is a command, and each
108
108
  | 5 | `plan` | Pick the AI provider and prepare the exact request to send. |
109
109
  | 6 | `produce` | Actually generate the clips. (Add `--dry-run` to rehearse for free.) |
110
110
  | 7 | `assemble` | Stitch clips + narration + music into one MP4, then quality-check it. |
111
- | 8 | `review` | A human (or the Review UI) approves the result. |
111
+ | 8 | `review` | Record final review; explicit film plans require current full-playback evidence bound to the actual edit. Storyboard approval in the Review UI is a separate gate. |
112
112
  | 9 | `publish` | Mark it done and hand it off. |
113
113
 
114
+ For new agent-led films, add a [structured film plan](./docs/SHARED_FILMMAKING_WORKFLOW.md) at storyboard time. It records format, purpose, shot action and performance; compiled prompts and final edit reviews detect relevant changes before reuse. The host agent manages phases and progress.
115
+
114
116
  You don't always run these by hand — `vclaw video create` can do the whole front of the line in one shot — but this is the path everything follows underneath.
115
117
 
116
118
  ---
@@ -132,7 +134,7 @@ videoclaw is made of a few moving pieces. Here's each one in everyday terms:
132
134
  | **Obsidian workspace** | The same project data, rendered as browsable notes you can read in Obsidian instead of the terminal. |
133
135
  | **Skills** | Pre-built, ready-to-run workflows for common jobs (make a presenter video, clone an ad, build a character) that an AI agent can invoke. |
134
136
 
135
- That's the whole picture. Everything below is **reference detail** for power users, operators, and AI agents — you can stop here and still use the tool.
137
+ That's the whole picture. Everything below is **reference detail** for power users, people running vclaw day to day, and AI agents — you can stop here and still use the tool.
136
138
 
137
139
  ---
138
140
 
@@ -196,7 +198,7 @@ node dist/cli/vclaw.js video status --project demo
196
198
 
197
199
  > **Discovery and authoring need no provider keys.** Planning/direct dry-run can report blocked readiness when assets or a locally configured route are missing; that is diagnostic output, not a successful render. Keep `--dry-run` on plain `produce` while exploring, read the blockers, and configure only the route you intend to use. A zero-call queue compiler and a direct execution preview have different prerequisites.
198
200
 
199
- Add `--auto-chain` to `produce`/`execute` to compile the whole storyboard as a continuity chain into the durable Cinema queue — zero provider calls: the first pending scene is `awaiting-quote`, every later scene stays `blocked` behind its predecessor's selected video, and each link enters exact quotation only when that source exists. `--enqueue` is the explicit spelling of the same thing; `--execute`, `--dry-run` and `--confirm-spend` are refused. Each queued task is then quoted, authorized and run one at a time with `vclaw video cinema-work --task <id>` — for `veo-useapi` the shipped `dist/cli/flow-quote-adapter.js` quotes from the account's own Flow price table, so the 0-credit free model authorizes at `--maximum-spend 0`; only `runway-useapi` explore submits provider-free with `--confirm-provider-call`. See "Draining a queued Flow task" in `docs/CLI_REFERENCE.md`.
201
+ Add `--auto-chain` to `produce`/`execute` to compile the whole storyboard as a continuity chain into the durable Cinema queue — zero provider calls: the first pending scene is `awaiting-quote`, every later scene stays `blocked` behind its predecessor's selected video, and each link enters exact quotation only when that source exists. `--enqueue` can be added alongside `--auto-chain` (it does not replace it); `--execute`, `--dry-run` and `--confirm-spend` are refused. Each queued task is then quoted, authorized and run one at a time with `vclaw video cinema-work --task <id>` — for `veo-useapi` the shipped `dist/cli/flow-quote-adapter.js` quotes from the account's own Flow price table, so the 0-credit free model authorizes at `--maximum-spend 0`; only `runway-useapi` explore submits provider-free with `--confirm-provider-call`. See "Draining a queued Flow task" in `docs/CLI_REFERENCE.md`.
200
202
 
201
203
  `vclaw video pool --project <slug> [--max-concurrent <N>] [--scenes <csv>]` compiles pending scenes as independent tasks into the durable Cinema queue. The concurrency cap is recorded on the queue lane; compilation itself submits nothing. `--dry-run` previews without writing. `--execute` is retired and `--confirm-spend` is rejected for enqueueing. Quote, authorise and run the returned tasks through `cinema-work`, then review their candidates. Plain `produce` without `--auto-chain` retains its direct live execution path: use `--dry-run` to preview that path, and do not assume its director approval gate is the same as an exact Cinema spend authorisation.
202
204
 
@@ -231,7 +233,7 @@ approval for already-reviewed projects; for director storyboard-image handoffs,
231
233
  use `review-ui` or `review-autopilot` so `publishReady` is derived from locked
232
234
  scene candidates, artifact-backed 4K stills, and final assembly approvals.
233
235
 
234
- Full operator guide: [`docs/PRODUCTION_WORKFLOW.md`](https://videoclaw-docs.vercel.app/reference/PRODUCTION_WORKFLOW).
236
+ Full guide: [`docs/PRODUCTION_WORKFLOW.md`](https://videoclaw-docs.vercel.app/reference/PRODUCTION_WORKFLOW).
235
237
  Handoff checklist: [`docs/OPERATOR_HANDOFF.md`](https://videoclaw-docs.vercel.app/reference/OPERATOR_HANDOFF).
236
238
 
237
239
  ---
@@ -269,7 +271,7 @@ See [`docs/AGENT_INTEGRATION_RESEARCH.md`](https://videoclaw-docs.vercel.app/ref
269
271
 
270
272
  The system is layered: a thin command-line front, a domain core that does the real work, and an adapter tier that talks to the AI providers. Each stage writes to the artifact/checkpoint/event ledger on disk.
271
273
 
272
- <p align="center"><img src="./docs/assets/diagram-architecture.jpg" alt="videoclaw architecture layers — operator/agent at the top, CLI dispatching into domain modules, artifacts/checkpoints/events fanning out, execution runtime feeding the adapter layer, adapter layer branching into native transport, command shim, and custom adapter" width="100%" /></p>
274
+ <p align="center"><img src="./docs/assets/diagram-architecture.jpg" alt="videoclaw architecture layers — you or an agent at the top, CLI dispatching into domain modules, artifacts/checkpoints/events fanning out, execution runtime feeding the adapter layer, adapter layer branching into native transport, command shim, and custom adapter" width="100%" /></p>
273
275
 
274
276
  <details>
275
277
  <summary>Show diagram source (Mermaid)</summary>
@@ -302,7 +304,7 @@ flowchart TB
302
304
 
303
305
  - **CLI layer** — argparse + dispatch only; no business logic.
304
306
  - **Domain layer** (`src/video/*`) — small, single-purpose modules. Each file owns one concept (artifacts, checkpoints, readiness, execution-plan, execution-runtime, doctor, metrics, next-actions, project-index, obsidian-export, etc.).
305
- - **Provider platform** — route descriptors for `veo-useapi`, `seedance-direct`, `runway-useapi`, `dreamina-useapi`, `magnific-rest`.
307
+ - **Provider platform** — route descriptors for `veo-useapi`, `seedance-direct`, `runway-useapi`, `dreamina-useapi` (registered, not pursued since 2026-09-09), `magnific-rest`.
306
308
  - **Adapter layer** — three resolution strategies (custom binary → built-in adapter with command shim → native in-process transport). Explicit fall-through, never silent.
307
309
  - **Schemas** — JSON Schema contracts under `schemas/video/` are the source of truth for every artifact shape.
308
310
 
@@ -332,7 +334,7 @@ flowchart LR
332
334
  ingest --> assets([assets])
333
335
  assets --> review([review])
334
336
  review --> publish([publish])
335
- execStatus -. operator .-> cancel([execute-cancel])
337
+ execStatus -. you .-> cancel([execute-cancel])
336
338
  ```
337
339
 
338
340
  </details>
@@ -396,11 +398,11 @@ flowchart TD
396
398
  Start[["route ∈ { veo-useapi · seedance-direct · runway-useapi ·<br/>dreamina-useapi · magnific-rest }"]]
397
399
  Start --> Q1{"VCLAW_*_ADAPTER set?"}
398
400
  Q1 -->|yes| Custom[["Custom adapter binary<br/>stdin → JSON, stdout → JSON"]]
399
- Q1 -->|no| Q2{"Built-in adapter supports route?<br/>(seedance-direct · veo-useapi · runway-useapi)"}
401
+ Q1 -->|no| Q2{"Built-in adapter supports route?<br/>(all five routes ship one)"}
400
402
  Q2 -->|no| Fail([["❌ hard fail<br/>no silent fallback"]])
401
403
  Q2 -->|yes| Q3{"_SUBMIT_CMD / _POLL_CMD set?"}
402
404
  Q3 -->|yes| Shim[["Command shim<br/>through built-in adapter"]]
403
- Q3 -->|no| Q4{"Native creds available?<br/>SUTUI_API_KEY (seedance) · local vclaw-cli (veo) · USEAPI_API_TOKEN (runway)"}
405
+ Q3 -->|no| Q4{"Native creds available?<br/>SUTUI_API_KEY or the free Higgsfield engine (seedance) · local vclaw-cli (veo) · USEAPI_API_TOKEN (runway, dreamina) · MAGNIFIC_API_KEY (magnific)"}
404
406
  Q4 -->|yes| Native[["✅ Native in-process transport"]]
405
407
  Q4 -->|no| Fail
406
408
  ```
@@ -441,7 +443,7 @@ useapi.net's Google Flow v1 API (blog 260609) accepts **inline `@`-mention marke
441
443
 
442
444
  Markers are **case-insensitive** and **opt-in** (a slot without a marker is fine; a marker without a matching body slot makes the API 400). The grammar is reserved through videoclaw's prompt pipeline (`@Name` tag resolution preserves the tokens verbatim, like `@imageN`) and is **veo-useapi-route-only** — on any other route the tokens are stripped from the scene prompt with a warning. V2V deliberately has **no** marker (`referenceVideo_1` stays flag-only via `--ref-video`). Helper module: `src/video/flow-markers.ts`; full details in [`docs/CLI_REFERENCE.md`](https://videoclaw-docs.vercel.app/reference/CLI_REFERENCE).
443
445
 
444
- **Auto-injection:** on veo-useapi, when a scene's prompt tags a character that has a registered Flow ref (`flow-characters.json`), `buildExecutionPayload` rewrites the `@Name` tag into its canonical `@character_N` marker automatically. Slot order = scene cast order first, then tag-only characters (capped at 7, overflow warned); hand-authored markers pass through untouched. Cast-name matching stays **exact-case** (the legacy lookup, verbatim) — which is exactly why a tagless prompt produces a byte-identical payload; only `@Name` **tag** matching is case-insensitive (`@clawbot` resolves to a registered `Clawbot`). Note that a ref-registered character's tag no longer also attaches its loose portrait image — the saved Flow character bundles its identity images. Characters without a Flow ref keep the normal descriptor substitution (including portrait collection).
446
+ **Auto-injection:** on veo-useapi, when a scene's prompt tags a character that has a registered Flow ref (`flow-characters.json`), `buildExecutionPayload` rewrites the `@Name` tag into its canonical `@character_N` marker automatically. Slot order = scene cast order first, then tag-only characters (capped at 7, overflow warned); hand-authored markers pass through untouched. Cast-name matching stays **exact-case** (the legacy lookup, verbatim) — which is exactly why a tagless prompt produces a byte-identical payload; only `@Name` **tag** matching is case-insensitive (`@mascot` resolves to a registered `Mascot`). Note that a ref-registered character's tag no longer also attaches its loose portrait image — the saved Flow character bundles its identity images. Characters without a Flow ref keep the normal descriptor substitution (including portrait collection).
445
447
 
446
448
  ---
447
449
 
@@ -483,10 +485,10 @@ regenerated automatically on every `produce`/`execute` and `execute-status` poll
483
485
  (`VCLAW_NO_RUN_SURFACE=1` opts out).
484
486
 
485
487
  ### Templates · cloning · storyboard templates
486
- `analyze` · `analyze-template` · `template-create` · `template-save` · `template-list` · `template-show` · `template-validate` · `clone-plan` · `clone-init` · `clone-ad` · `clone-execute` · `storyboard-from-clone` · `storyboard-template-list` · `storyboard-template-show`
488
+ `analyze` (`analyze-template` is a deprecated spelling) · `template-save` (`template-create` is a deprecated spelling) · `template-list` · `template-show` · `template-validate` · `clone-plan` · `clone-init` · `clone-execute` (`clone-ad` is a deprecated spelling) · `storyboard-from-clone` · `storyboard-template-list` · `storyboard-template-show`
487
489
 
488
490
  ### Character subsystem
489
- `character-add` · `character-list` · `character-show` · `character-consistency` · `consistency-audit` · `motion-qc` · `clip-qc` · `keyframe-qc` · `character-auto-create` · `environment-auto-create` · `character-import-library` · `find-library` · `library find` · `library clean` · `list-library` · `seedance-register-assets` · `flow-register-characters` · `flow-register-voices` · `flow-r2v` · `voice-clone` · `show-bible` · `show-preflight`
491
+ `character-add` · `character-list` · `character-show` · `character-consistency` · `consistency-audit` · `motion-qc` · `clip-qc` · `keyframe-qc` · `character-auto-create` · `environment-auto-create` · `character-import-library` · `find-library` · `library find` (deprecated spelling of `find-library`) · `library clean` · `list-library` · `seedance-register-assets` · `flow-register-characters` · `flow-register-voices` · `flow-r2v` · `voice-clone` · `show-bible` · `show-preflight`
490
492
 
491
493
  `consistency-audit` is the **automated character identity/costume vision audit**: for each rendered scene it extracts a representative mid-frame and asks an (injectable, Gemini-backed) vision client whether each registered scene character still matches its locked reference face/hair AND costume/colours, plus a deterministic dark-border check and an extra-figure flag — catching wardrobe/identity drift (a dhoti rendering crimson in one scene and tan in another) BEFORE a render is presented as done. It writes `consistency-audit.json` and also runs advisory/non-fatal at the end of a real `produce`/`execute` run when a Gemini key is configured.
492
494
 
@@ -501,10 +503,10 @@ regenerated automatically on every `produce`/`execute` and `execute-status` poll
501
503
 
502
504
  ### Mission Control
503
505
  - `vclaw video monitor` — Mission Control: a live localhost cockpit across every project and provider.
504
- - `vclaw video migrate-home [--confirm] [--root <home>]` — consolidate scattered projects (`~/.videoclaw-*` roots) into the one canonical workspace home (`~/videoclaw`) via `mv` + a symlink left at the old path. Dry-run by default; `--confirm` performs the moves. Collision-safe and idempotent.
506
+ - `vclaw video migrate-home [--confirm] [--root <home>]` — (deprecated since 3.0.0-alpha.13, one-shot) consolidate scattered projects (`~/.videoclaw-*` roots) into the one canonical workspace home (`~/videoclaw`) via `mv` + a symlink left at the old path. Dry-run by default; `--confirm` performs the moves. Collision-safe and idempotent.
505
507
 
506
508
  ### Metadata
507
- `set-meta` · `set-execution-profile` · `import-legacy`
509
+ `set-meta` · `set-execution-profile` · `import-legacy` (deprecated, historical v2 import)
508
510
 
509
511
  ### Post-production
510
512
  `remix-narrated` · `verify-final` · `qc` · `make-vertical` · `make-square` · `make-loop` · `thumbnail` · `archive-project` · `motion-overlay` · subtitle burn-in
@@ -540,16 +542,16 @@ Two recent additions are worth calling out because they fix the two things that
540
542
  - **Diegetic stills** (`vclaw video gen-image`) — generate an in-world **prop**, on-screen **screen** (UI/dashboard), or **overlay** graphic (e.g. a "SYSTEM COMPROMISED" alert) into `assets/props/`. Three backends via `--backend`: **gobananas** (default, `GO_BANANAS_API_KEY`, no OpenAI key), **openai** (gpt-image), and **flow** — Google Flow via useapi.net (`USEAPI_API_TOKEN` + `USEAPI_ACCOUNT_EMAIL`): `nano-banana-2-lite` / `nano-banana-2` / `nano-banana-pro` auto-selected by reference count (the retired `imagen-4` and `nano-banana` ids still map to the current models), repeated `--ref` (`reference_1..10`, local paths upload first) + `--character` (`character_1..7`, names resolve via `flow-characters.json`) slots, `--count`/`--seed`, and inline `@reference_N`/`@character_N` prompt markers validated **before any upload or spend**. Per-kind render directives (screens/overlays keep text, props suppress it); `--dry-run` prints the composed request with no spend. Composite it onto footage with the assemble overlay builders. Full guide: [`docs/CLI_REFERENCE.md`](https://videoclaw-docs.vercel.app/reference/CLI_REFERENCE).
541
543
  - **Motion-graphics overlays** (`vclaw video overlay`) — composite a graphic onto a clip (time-gated, faded, positioned — pairs with `gen-image` to drop a generated screen/alert onto footage, **font-free + real-render validated**), or burn a pulsing `--alert` / boxed `--lower-third` caption (FFmpeg `drawtext`, needs a libfreetype build). `--dry-run` prints the planned ffmpeg command. Full guide: [`docs/CLI_REFERENCE.md`](https://videoclaw-docs.vercel.app/reference/CLI_REFERENCE).
542
544
  - **Motion-overlay reels** (`vclaw video motion-overlay`) — turn an existing **talking-head video** into a reel with **motion-graphics overlays synced to the speech** via Google Flow's **Omni Flash V2V** (kinetic typography / icons / metaphors painted on the footage, original voice preserved). Plan/dry by default — ingest → Gemini STT (or `--transcript`) → sentence-boundary slice into ≤10s takes → per-take overlay-prompt composition → work folder + manifest + `--preview` review surface, **no spend**. `--execute --confirm-spend` renders each take (V2V → audio-restore → clip-stitch). Four layouts (`split` / `overlay` / `motion-only` / `avatar-host`); the `avatar-host` layout fills the frame with an **identity-locked character host** (go-bananas `generate_with_character` → Veo I2V) and needs `--gb-character <Name:ID>`. Full guide: [`docs/MOTION_OVERLAY.md`](https://videoclaw-docs.vercel.app/reference/MOTION_OVERLAY).
543
- - **Style-locked motion graphics** (`vclaw video mograph-sheet` / `mograph-pack` / `mograph-render` / `mograph-logos`) — generate **fleets of explainer B-roll clips that share one look with a shared visual reference**. A **motion sheet** (master style-board image + ≤120-word style lock, persisted as `artifacts/motion-sheet.json`) locks the visual system ONCE; a **motion pack** turns the VO into time-coded, **action-only** blocks tagged P1/P2/P3, gated by an anti-drift lint (style words and hex codes are banned from choreography). `mograph-render` is plan-only — it assembles `style lock + SHOT + AUDIO + AVOID` per block and compiles a **batch-queue manifest** for `batch-submit`/`batch-monitor` (free explore lane by default); v2v modes route to omni-flash. Clips carry **sound design only** (never music/VO — they sit under your own narration). Full guide: [`docs/MOGRAPH.md`](https://videoclaw-docs.vercel.app/reference/MOGRAPH).
545
+ - **Style-locked motion graphics** (`vclaw video mograph-sheet` / `mograph-pack` / `mograph-render` / `mograph-logos`) — generate **fleets of explainer B-roll clips that share one look with a shared visual reference**. A **motion sheet** (master style-board image + ≤120-word style lock, persisted as `artifacts/motion-sheet.json`) locks the visual system ONCE; a **motion pack** turns the VO into time-coded, **action-only** blocks tagged P1/P2/P3, gated by an anti-drift lint (style words and hex codes are banned from choreography). `mograph-render` is plan-only — it assembles `style lock + SHOT + AUDIO + AVOID` per block and compiles a **batch-queue manifest** for `batch-submit`/`batch-monitor` (the free Runway explore route by default); v2v modes route to omni-flash. Clips carry **sound design only** (never music/VO — they sit under your own narration). Full guide: [`docs/MOGRAPH.md`](https://videoclaw-docs.vercel.app/reference/MOGRAPH).
544
546
 
545
547
  - **Music videos** (`vclaw video music-video`) — the **vocal-synced, beat-exact assembler**. From a hand-authored config (song + clip registry + B-roll pools + an explicit vocal map *or* a transcript it auto-classifies into rap / hook / instrumental / outro by **word density**), it pins each performer to **their own vocal** time-aligned across B-roll cutaways (lips stay locked to the muxed song), cuts every segment **frame-exact** (`-frames:v`, never `-t`, so there is **zero cumulative drift**), then concats + applies one grade pass + muxes the song. **Fully local — ffmpeg only, no provider, no spend.** Plan/dry by default; `--execute` renders and asserts the built master matches the plan within one frame. Full guide: [`docs/CLI_REFERENCE.md`](https://videoclaw-docs.vercel.app/reference/CLI_REFERENCE).
546
548
 
547
549
  - **Music-video titles** (`vclaw video title-card`) — burn the **titles you see in music videos** (a faded **lower-third** + a centred **end card** that holds to EOF) onto a finished cut. Text is rasterized via **Pillow + RAQM**, so it works on **any ffmpeg build** (no libfreetype) and **any script** — including **Devanagari/Arabic** (vowel marks shape + stack correctly). Each card is a looped PNG input so delayed alpha fades animate. Fully local, no spend; `--dry-run` plans, omit to render. Full guide: [`docs/CLI_REFERENCE.md`](https://videoclaw-docs.vercel.app/reference/CLI_REFERENCE).
548
550
 
549
- - **HD finish / upscale** (`vclaw video finish`) — upscale a rendered cut to a clean HD master via **Topaz** (hosted Proteus/Gaia/Starlight through the apiz/xskill aggregator, or a local Topaz CLI), **Magnific Video Upscaler Precision** (`--backend magnific-precision`, direct Magnific REST, `--target-resolution 1k|2k|4k`), or **free Runway Topaz 4K** (`--backend runway-topaz-free`, useapi `exploreMode` — $0 on a Runway Unlimited plan; chunks the source at the 40 s cap and re-muxes the original audio). Magnific accepts MP4/MOV/AVI/WebM/MKV and ffprobe-preflights every input against its limits (≤15 s / ≤450 frames / ≤150 MB / ≤4K), failing fast unless `--normalize` re-encodes to fit. The **anti-plastic** "detail-not-sharp" recipe (denoise + halo off, film grain kept + clamped to the real 0.1 cap, detail recovery high) avoids waxy skin. Hosted backends are **paid** → refuses without `--confirm-spend` (`--dry-run` plans free); `topaz-local` is free. Hosted needs `APIZ_API_KEY`/`XSKILL_API_KEY` (Topaz) or `MAGNIFIC_API_KEY` (Magnific). Full guide: [`docs/CLI_REFERENCE.md`](https://videoclaw-docs.vercel.app/reference/CLI_REFERENCE).
551
+ - **HD finish / upscale** (`vclaw video finish`) — upscale a rendered cut to a clean HD master via **Topaz** (hosted Proteus/Gaia/Starlight through the apiz/xskill service, or a local Topaz CLI), **Magnific Video Upscaler Precision** (`--backend magnific-precision`, direct Magnific REST, `--target-resolution 1k|2k|4k`), or **free Runway Topaz 4K** (`--backend runway-topaz-free`, useapi `exploreMode` — $0 on a Runway Unlimited plan; chunks the source at the 40 s cap and re-muxes the original audio). Magnific accepts MP4/MOV/AVI/WebM/MKV and ffprobe-preflights every input against its limits (≤15 s / ≤450 frames / ≤150 MB / ≤4K), failing fast unless `--normalize` re-encodes to fit. The **anti-plastic** "detail-not-sharp" recipe (denoise + halo off, film grain kept + clamped to the real 0.1 cap, detail recovery high) avoids waxy skin. Hosted backends are **paid** → refuses without `--confirm-spend` (`--dry-run` plans free); `topaz-local` is free. Hosted needs `APIZ_API_KEY`/`XSKILL_API_KEY` (Topaz) or `MAGNIFIC_API_KEY` (Magnific). Full guide: [`docs/CLI_REFERENCE.md`](https://videoclaw-docs.vercel.app/reference/CLI_REFERENCE).
550
552
  - **Image upscale** (`vclaw video image-ops --op upscale`) — still-image upscaling 2×–16× via **Magnific's image upscaler** (`image-upscaler-precision-v2`, live-verified). Local image is base64-encoded inline; an `http(s)` URL is passed through. `--logo-safe` keeps flat graphics/text crisp without hallucinated texture. **Paid** → `--confirm-spend` (`--dry-run` plans free); needs `MAGNIFIC_API_KEY`.
551
553
 
552
- - **Audio-driven lip-sync** (`vclaw video lipsync`) — a **still/keyframe + a vocal track** → a **lip-synced talking-head clip** via **OmniHuman v1.5** (apiz/xskill). Uploads image+audio → submits → awaits → downloads → **normalizes** to CFR fps + even dims (OmniHuman's 25fps/odd dims otherwise break frame-accurate seeking). Drives an **external** vocal (a rapper's verse, a singer's hook) — the lane's way to put a performer's real vocal on their face. Audio cap enforced up front (1080p≤30s, 720p≤60s). **Paid** → refuses without `--confirm-spend` (`--dry-run` plans free); needs `APIZ_API_KEY`/`XSKILL_API_KEY`. Full guide: [`docs/CLI_REFERENCE.md`](https://videoclaw-docs.vercel.app/reference/CLI_REFERENCE).
554
+ - **Audio-driven lip-sync** (`vclaw video lipsync`) — a **still/keyframe + a vocal track** → a **lip-synced talking-head clip** via **OmniHuman v1.5** (apiz/xskill). Uploads image+audio → submits → awaits → downloads → **normalizes** to CFR fps + even dims (OmniHuman's 25fps/odd dims otherwise break frame-accurate seeking). Drives an **external** vocal (a rapper's verse, a singer's hook) — the way to put a performer's real vocal on their face. Audio cap enforced up front (1080p≤30s, 720p≤60s). **Paid** → refuses without `--confirm-spend` (`--dry-run` plans free); needs `APIZ_API_KEY`/`XSKILL_API_KEY`. Full guide: [`docs/CLI_REFERENCE.md`](https://videoclaw-docs.vercel.app/reference/CLI_REFERENCE).
553
555
 
554
556
  ---
555
557
 
@@ -565,15 +567,15 @@ sane.
565
567
  |---|---|---|
566
568
  | **Canonical entry** | `video-framework`, `brand-presenter` | Generic / unspecified video request — the entry skill routes into a specialist. |
567
569
  | **Specialist** | `video-storyboard`, `video-clone-ad`, `movie-director`, `video-post`, ... | The mode is clearly known up front. |
568
- | **Compatibility alias** | `davendra-presenter`, `nex-presenter`, `bunty` | Personal/brand presets that delegate into `brand-presenter`. |
569
- | **Workflow** | `doctor`, `pipeline`, `worker`, `studio-mode`, ... | Orchestration, debugging, ops — independent of any one production mode. |
570
+ | **Compatibility alias** | `davendra-presenter`, `david-sales-presenter`, `nex-presenter`, `bunty` | Personal/brand presets that delegate into `brand-presenter`. |
571
+ | **Workflow** | `concierge`, `improvement-run`, `deepsearch`, `graphify`, ... | Orchestration, repo ops, search — independent of any one production mode. |
570
572
 
571
573
  **Rule of thumb:** start at a canonical entry, specialize only when the mode is clearly known.
572
574
 
573
575
  ### Quick skill map
574
576
 
575
577
  <details>
576
- <summary><strong>🎬 Video skills</strong> (15 — click to expand)</summary>
578
+ <summary><strong>🎬 Video skills</strong> (a curated 15 of 40 — click to expand; the <a href="https://videoclaw-docs.vercel.app/skills/video">docs site lists all 40</a>)</summary>
577
579
 
578
580
  | Skill | Role | One-liner |
579
581
  |---|---|---|
@@ -594,23 +596,21 @@ sane.
594
596
  | [`ugc`](./skills/ugc) | imported | Belief-driven UGC campaign generator (E5 method). |
595
597
 
596
598
  **Compatibility aliases** (all delegate into `brand-presenter`):
597
- [`davendra-presenter`](./skills/davendra-presenter) · [`nex-presenter`](./skills/nex-presenter) · [`bunty`](./skills/bunty)
599
+ [`davendra-presenter`](./skills/davendra-presenter) · [`david-sales-presenter`](./skills/david-sales-presenter) · [`nex-presenter`](./skills/nex-presenter) · [`bunty`](./skills/bunty)
598
600
 
599
601
  </details>
600
602
 
601
603
  <details>
602
- <summary><strong>⚙️ Workflow skills</strong> (13 — click to expand)</summary>
604
+ <summary><strong>⚙️ Workflow skills</strong> (9 — click to expand)</summary>
603
605
 
604
606
  | Group | Skills |
605
607
  |---|---|
606
- | **Multi-agent orchestration** | [`worker`](./skills/worker) · [`pipeline`](./skills/pipeline) · [`studio-mode`](./skills/studio-mode) |
607
- | **Diagnostics & exploration** | [`doctor`](./skills/doctor) · [`build-fix`](./skills/build-fix) · [`deepsearch`](./skills/deepsearch) · [`deep-interview`](./skills/deep-interview) |
608
- | **Review & governance** | [`review`](./skills/review) |
609
- | **Operational utilities** | [`ai-slop-cleaner`](./skills/ai-slop-cleaner) · [`configure-notifications`](./skills/configure-notifications) · [`skill`](./skills/skill) · [`note`](./skills/note) · [`help`](./skills/help) · [`web-clone`](./skills/web-clone) |
608
+ | **Front door & orchestration** | [`concierge`](./skills/concierge) (speaks as VideoClaw; alias [`videoclaw`](./skills/videoclaw)) · [`improvement-run`](./skills/improvement-run) |
609
+ | **Search & knowledge** | [`deepsearch`](./skills/deepsearch) · [`graphify`](./skills/graphify) · [`web-clone`](./skills/web-clone) |
610
+ | **Review & governance** | [`ai-slop-cleaner`](./skills/ai-slop-cleaner) · [`skills-auditor`](./skills/skills-auditor) |
611
+ | **Design utilities** | [`ui-ux-pro-max`](./skills/ui-ux-pro-max) |
610
612
 
611
- Generic orchestration skills (`autopilot`, `ralph`/`ralph-init`/`ralplan`, `team`, `cancel`,
612
- `trace`, `hud`, `git-master`, `code-review`, `security-review`, `omx-setup`) were culled —
613
- they duplicated the operator's global plugin set with zero repo-specific content.
613
+ Generic orchestration skills that duplicated the global plugin set were culled from the repo; use the global versions.
614
614
 
615
615
  </details>
616
616
 
@@ -619,7 +619,7 @@ they duplicated the operator's global plugin set with zero repo-specific content
619
619
 
620
620
  ---
621
621
 
622
- ## 🗂️ Obsidian operator workspace
622
+ ## 🗂️ Obsidian workspace
623
623
 
624
624
  The repo writes a **vault of machine-generated notes** that mirrors canonical project state — dashboards,
625
625
  queues, metrics, health, timelines, dependencies, and per-project notes — all regenerated from one command.
@@ -627,7 +627,7 @@ queues, metrics, health, timelines, dependencies, and per-project notes — all
627
627
  > **Obsidian is a view, not the source of truth.** The repo state on disk is canonical; the vault is a
628
628
  > regenerable rendering of it.
629
629
 
630
- <p align="center"><img src="./docs/assets/diagram-obsidian-loop.jpg" alt="Daily operator loop — five-step circular workflow: make changes via vclaw, sync vault, read Dashboard, triage queue, update metadata, then back to making changes" width="100%" /></p>
630
+ <p align="center"><img src="./docs/assets/diagram-obsidian-loop.jpg" alt="Daily loop — five-step circular workflow: make changes via vclaw, sync vault, read Dashboard, triage queue, update metadata, then back to making changes" width="100%" /></p>
631
631
 
632
632
  ### What you get
633
633
 
@@ -645,7 +645,7 @@ vclaw video export-obsidian --project my-project --output-dir ./ops/obsidian/Pro
645
645
  vclaw video sync-obsidian --root . --output-dir ./ops/obsidian # full regenerate (the common case)
646
646
  ```
647
647
 
648
- 📖 **Full operator guide** — vault layout, every dashboard note explained, frontmatter schema, daily loop,
648
+ 📖 **Full guide** — vault layout, every dashboard note explained, frontmatter schema, daily loop,
649
649
  common workflows: **[`docs/OBSIDIAN.md`](https://videoclaw-docs.vercel.app/reference/OBSIDIAN)**
650
650
 
651
651
  ---
@@ -763,16 +763,16 @@ Current status: **`npm test` green · `check:release-readiness-lite` passing.**
763
763
 
764
764
  | # | Doc | What it gives you |
765
765
  |---|---|---|
766
- | 1 | [Production workflow](https://videoclaw-docs.vercel.app/reference/PRODUCTION_WORKFLOW) | Operator-first workflow: make, review/fix, and manage video projects |
766
+ | 1 | [Production workflow](https://videoclaw-docs.vercel.app/reference/PRODUCTION_WORKFLOW) | A workflow built around you: make, review and fix, and manage video projects |
767
767
  | 2 | [Architecture](https://videoclaw-docs.vercel.app/reference/ARCHITECTURE) | Layer map + canonical flow |
768
768
  | 3 | [CLI reference](https://videoclaw-docs.vercel.app/reference/CLI_REFERENCE) | Full command reference |
769
769
  | 4 | [Skills](https://videoclaw-docs.vercel.app/skills/) | **Comprehensive per-skill reference with features and when-to-reach-for guidance** |
770
770
  | 5 | [Story bible](https://videoclaw-docs.vercel.app/reference/STORY_BIBLE) | **Story bible reference — the deterministic continuity artifact, when it's generated, its shape, and how downstream stages use it** |
771
- | 6 | [Assemble](https://videoclaw-docs.vercel.app/reference/ASSEMBLE) | **`vclaw video assemble` operator guide — pipeline stages, media QC, narration fit, API keys, dry-run vs real render, validation status** |
772
- | 7 | [Obsidian](https://videoclaw-docs.vercel.app/reference/OBSIDIAN) | **Obsidian operator workspace deep guide — vault layout, dashboard notes, frontmatter schema, daily loop** |
773
- | 8 | [Reference sheets](https://videoclaw-docs.vercel.app/reference/REFERENCE_SHEETS) | **Reference sheets operator guide — 5 sheet types, role vocabularies, CLI commands, readiness/preflight semantics, GB integration** |
774
- | 9 | [Scene candidates](https://videoclaw-docs.vercel.app/reference/SCENE_CANDIDATES) | **Scene candidates operator guide — append-only candidates + mutable selection, 9 CLI commands, partial reruns, chain-from-prev, migration** |
775
- | 10 | [Prompt quality](https://videoclaw-docs.vercel.app/reference/PROMPT_QUALITY) | **Prompt-quality preflight operator guide — Seedance-handbook anti-pattern checks, thresholds, strict-mode blocking** |
771
+ | 6 | [Assemble](https://videoclaw-docs.vercel.app/reference/ASSEMBLE) | **`vclaw video assemble` guide — pipeline stages, media QC, narration fit, API keys, dry-run vs real render, validation status** |
772
+ | 7 | [Obsidian](https://videoclaw-docs.vercel.app/reference/OBSIDIAN) | **Obsidian workspace deep guide — vault layout, dashboard notes, frontmatter schema, daily loop** |
773
+ | 8 | [Reference sheets](https://videoclaw-docs.vercel.app/reference/REFERENCE_SHEETS) | **Reference sheets guide — 5 sheet types, role vocabularies, CLI commands, readiness/preflight semantics, GB integration** |
774
+ | 9 | [Scene candidates](https://videoclaw-docs.vercel.app/reference/SCENE_CANDIDATES) | **Scene candidates guide — append-only candidates + mutable selection, 9 CLI commands, partial reruns, chain-from-prev, migration** |
775
+ | 10 | [Prompt quality](https://videoclaw-docs.vercel.app/reference/PROMPT_QUALITY) | **Prompt-quality preflight guide — Seedance-handbook anti-pattern checks, thresholds, strict-mode blocking** |
776
776
  | 11 | [Generation telemetry](https://videoclaw-docs.vercel.app/reference/GENERATION_TELEMETRY) | Generation event ledger + cost-estimate telemetry behavior |
777
777
  | 12 | [Operations](https://videoclaw-docs.vercel.app/reference/OPERATIONS) | Day-to-day maintenance loop |
778
778
  | 13 | [Templates](https://videoclaw-docs.vercel.app/reference/TEMPLATES) | Template store + clone bridge |
@@ -780,6 +780,7 @@ Current status: **`npm test` green · `check:release-readiness-lite` passing.**
780
780
  | 15 | [Deprecation](https://videoclaw-docs.vercel.app/reference/DEPRECATION) | Alias + deprecation status |
781
781
  | 16 | [Release readiness](https://videoclaw-docs.vercel.app/reference/RELEASE_READINESS) | Release checklist |
782
782
  | 17 | [Master plan alignment](https://videoclaw-docs.vercel.app/reference/MASTER_PLAN_ALIGNMENT) | What's shipped + remaining gaps |
783
+ | 18 | [Shared filmmaking workflow](https://videoclaw-docs.vercel.app/reference/SHARED_FILMMAKING_WORKFLOW) | Structured film plans, contextual acting, reference freshness and full-playback edit evidence |
783
784
 
784
785
  Skill deep-dives (also indexed in [`docs/SKILLS.md`](https://videoclaw-docs.vercel.app/skills/)):
785
786
 
@@ -787,6 +788,21 @@ Skill deep-dives (also indexed in [`docs/SKILLS.md`](https://videoclaw-docs.verc
787
788
  - [`skills/video-storyboard/SKILL.md`](./skills/video-storyboard/SKILL.md) · [`skills/video-clone-ad/SKILL.md`](./skills/video-clone-ad/SKILL.md) · [`skills/video-analyze-template/SKILL.md`](./skills/video-analyze-template/SKILL.md) — clean-room native specialists
788
789
  - Full catalog in [`skills/README.md`](./skills/README.md) · machine-readable in [`skills/catalog.json`](./skills/catalog.json)
789
790
 
791
+ ### Working notes & prompts (internal)
792
+
793
+ Not published to the site; kept in `docs/` for the sessions that use them:
794
+ [`AI_FILMMAKING_PROMPTS`](./docs/AI_FILMMAKING_PROMPTS.md) ·
795
+ [`CODEBASE_REVIEW_PROMPT`](./docs/CODEBASE_REVIEW_PROMPT.md) ·
796
+ [`CONCIERGE_PROMPT`](./docs/CONCIERGE_PROMPT.md) ·
797
+ [`CONCIERGE_COVERAGE_PROMPT`](./docs/CONCIERGE_COVERAGE_PROMPT.md) ·
798
+ [`IMPROVE_PROMPT`](./docs/IMPROVE_PROMPT.md) ·
799
+ [`INFOGRAPHICS_PROMPT`](./docs/INFOGRAPHICS_PROMPT.md) ·
800
+ [`SKILL_COHESION_PROMPT`](./docs/SKILL_COHESION_PROMPT.md) ·
801
+ [`UPDATE_DOCS_PROMPT`](./docs/UPDATE_DOCS_PROMPT.md) ·
802
+ [`ENGINE_ESCAPE_AUDIT`](./docs/ENGINE_ESCAPE_AUDIT.md) ·
803
+ [`SEEDANCE_HARVEST`](./docs/SEEDANCE_HARVEST.md) ·
804
+ [`HIGGSFIELD_MCP_CREATIVE_AGENCY`](./docs/HIGGSFIELD_MCP_CREATIVE_AGENCY.md)
805
+
790
806
  ---
791
807
 
792
808
  ## 🧬 Where it came from