@oh-story/dsh 0.1.4 → 0.1.6

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 (479) hide show
  1. package/README.md +56 -12
  2. package/lib/client.js +2707 -268
  3. package/lib/client.js.map +4 -4
  4. package/lib/drama/manifest.json +136 -101
  5. package/lib/drama/skills/short-drama/SKILL.md +61 -1
  6. package/lib/drama/skills/short-drama/references/contract-and-ownership.md +7 -4
  7. package/lib/drama/skills/short-drama/references/creator-documents.md +133 -8
  8. package/lib/drama/skills/short-drama/references/creator-workflow.md +38 -2
  9. package/lib/drama/skills/short-drama/references/knowhow-index.md +3 -0
  10. package/lib/drama/skills/short-drama/references/reference-roles.md +10 -7
  11. package/lib/drama/skills/short-drama/references/runtime-preflight.md +3 -0
  12. package/lib/drama/skills/short-drama/scripts/creator_markdown_check.py +1002 -0
  13. package/lib/drama/skills/short-drama/scripts/project_tool.py +485 -5
  14. package/lib/drama/skills/short-drama-assets/SKILL.md +13 -3
  15. package/lib/drama/skills/short-drama-assets/references/continuity-lock.md +116 -0
  16. package/lib/drama/skills/short-drama-assets/references/identity-vs-variant.md +2 -1
  17. package/lib/drama/skills/short-drama-assets/references/prop-and-state.md +19 -0
  18. package/lib/drama/skills/short-drama-assets/references/stage-contract.md +2 -0
  19. package/lib/drama/skills/short-drama-assets/scripts/asset_check.py +1 -1
  20. package/lib/drama/skills/short-drama-image-prompts/SKILL.md +6 -2
  21. package/lib/drama/skills/short-drama-image-prompts/references/common-recipe.md +4 -3
  22. package/lib/drama/skills/short-drama-image-prompts/references/lookdev-frame.md +1 -1
  23. package/lib/drama/skills/short-drama-image-prompts/references/review-and-fixtures.md +1 -1
  24. package/lib/drama/skills/short-drama-image-prompts/references/stage-contract.md +3 -1
  25. package/lib/drama/skills/short-drama-image-prompts/scripts/image_prompt_check.py +8 -8
  26. package/lib/drama/skills/short-drama-image-prompts/scripts/selftest.py +4 -2
  27. package/lib/drama/skills/short-drama-produce/SKILL.md +46 -10
  28. package/lib/drama/skills/short-drama-produce/references/adapter-contract.md +65 -8
  29. package/lib/drama/skills/short-drama-produce/references/providers/minimax-h3-video.md +85 -0
  30. package/lib/drama/skills/short-drama-produce/references/providers/seedance.md +27 -10
  31. package/lib/drama/skills/short-drama-produce/scripts/production_tool.py +362 -3
  32. package/lib/drama/skills/short-drama-produce/scripts/provider_adapters.py +627 -40
  33. package/lib/drama/skills/short-drama-produce/scripts/selftest.py +5 -4
  34. package/lib/drama/skills/short-drama-review/references/rubric-visual-motion.md +12 -0
  35. package/lib/drama/skills/short-drama-review/scripts/review_check.py +1 -1
  36. package/lib/drama/skills/short-drama-storyboard/SKILL.md +76 -7
  37. package/lib/drama/skills/short-drama-storyboard/assets/shot-template.jsonl +1 -1
  38. package/lib/drama/skills/short-drama-storyboard/references/keyframe-craft.md +6 -2
  39. package/lib/drama/skills/short-drama-storyboard/references/production-shot-grammar.md +19 -4
  40. package/lib/drama/skills/short-drama-storyboard/references/review-and-fixtures.md +5 -2
  41. package/lib/drama/skills/short-drama-storyboard/references/screenplay-to-keyframe-example.md +16 -0
  42. package/lib/drama/skills/short-drama-storyboard/references/stage-contract.md +8 -3
  43. package/lib/drama/skills/short-drama-storyboard/scripts/storyboard_check.py +1 -1
  44. package/lib/drama/skills/short-drama-video-prompts/SKILL.md +81 -13
  45. package/lib/drama/skills/short-drama-video-prompts/assets/motion-spec.jsonl.md +6 -1
  46. package/lib/drama/skills/short-drama-video-prompts/assets/video-prompts.md +17 -1
  47. package/lib/drama/skills/short-drama-video-prompts/references/delivery-profile.md +21 -1
  48. package/lib/drama/skills/short-drama-video-prompts/references/minimax-h3.md +154 -0
  49. package/lib/drama/skills/short-drama-video-prompts/references/motion-recipe.md +24 -6
  50. package/lib/drama/skills/short-drama-video-prompts/references/production-prompt-grammar.md +11 -7
  51. package/lib/drama/skills/short-drama-video-prompts/references/seedance-2.0.md +41 -0
  52. package/lib/drama/skills/short-drama-video-prompts/references/seedance-2.5.md +66 -0
  53. package/lib/drama/skills/short-drama-video-prompts/references/stage-contract.md +5 -2
  54. package/lib/drama/skills/short-drama-video-prompts/references/target-model-profile.md +115 -0
  55. package/lib/drama/skills/short-drama-video-prompts/scripts/container_check.py +1 -1
  56. package/lib/drama/skills/short-drama-video-prompts/scripts/music_spec_check.py +1 -1
  57. package/lib/drama/skills/short-drama-write/SKILL.md +3 -2
  58. package/lib/drama/skills/short-drama-write/scripts/duration_estimate.py +1 -1
  59. package/lib/drama/skills/short-drama-write/scripts/screenplay_index.py +2 -2
  60. package/lib/drama/skills/short-drama-write/scripts/voice_sheet_check.py +1 -1
  61. package/lib/index.js +865 -33
  62. package/lib/index.js.map +4 -4
  63. package/lib/novel-to-game/LICENSE +21 -0
  64. package/lib/novel-to-game/README.md +180 -0
  65. package/lib/novel-to-game/README_ZH.md +178 -0
  66. package/lib/novel-to-game/VERSION +1 -0
  67. package/lib/novel-to-game/examples/jin-ping-mei/build/BUILD_BRIEF.md +217 -0
  68. package/lib/novel-to-game/examples/jin-ping-mei/build/app/.vercelignore +3 -0
  69. package/lib/novel-to-game/examples/jin-ping-mei/build/app/RUN.md +130 -0
  70. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/bg/compound_new_guofeng.webp +0 -0
  71. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/finale/fate_coda.webp +0 -0
  72. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/finale/meng.webp +0 -0
  73. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/finale/pan.webp +0 -0
  74. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/finale/pinger.webp +0 -0
  75. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/finale/xuee.webp +0 -0
  76. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/finale/yue.webp +0 -0
  77. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/group/inner_court_accord_five.webp +0 -0
  78. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/group/inner_court_afterglow_five.webp +0 -0
  79. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/group/inner_court_alliance.webp +0 -0
  80. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/group/public_day10.webp +0 -0
  81. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/group/public_day15.webp +0 -0
  82. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/group/public_day5.webp +0 -0
  83. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/group/title_new_guofeng.webp +0 -0
  84. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/joint/pan_pinger.webp +0 -0
  85. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/joint/pan_xuee.webp +0 -0
  86. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/joint/yue_meng.webp +0 -0
  87. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/joint/yue_pan.webp +0 -0
  88. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/joint/yue_pinger.webp +0 -0
  89. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/meng/explicit.webp +0 -0
  90. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/meng/prelude.webp +0 -0
  91. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/milestone/meng.webp +0 -0
  92. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/milestone/pan.webp +0 -0
  93. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/milestone/pinger.webp +0 -0
  94. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/milestone/xuee.webp +0 -0
  95. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/milestone/yue.webp +0 -0
  96. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/pan/explicit.webp +0 -0
  97. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/pan/prelude.webp +0 -0
  98. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/pinger/explicit.webp +0 -0
  99. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/pinger/prelude.webp +0 -0
  100. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/xuee/explicit.webp +0 -0
  101. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/xuee/prelude.webp +0 -0
  102. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/yue/explicit.webp +0 -0
  103. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/yue/prelude.webp +0 -0
  104. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/heroine/meng/night.webp +0 -0
  105. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/heroine/pan/night.webp +0 -0
  106. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/heroine/pinger/night.webp +0 -0
  107. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/heroine/xuee/night.webp +0 -0
  108. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/heroine/yue/night.webp +0 -0
  109. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/household/li_jiaoer.webp +0 -0
  110. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/scene/gate_collector.webp +0 -0
  111. package/lib/novel-to-game/examples/jin-ping-mei/build/app/css/new-guofeng.css +1105 -0
  112. package/lib/novel-to-game/examples/jin-ping-mei/build/app/css/style.css +2539 -0
  113. package/lib/novel-to-game/examples/jin-ping-mei/build/app/index.html +18 -0
  114. package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/assets.js +147 -0
  115. package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/audio.js +332 -0
  116. package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/data.js +7472 -0
  117. package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/engine.js +13077 -0
  118. package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/main.js +3028 -0
  119. package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/text.js +32 -0
  120. package/lib/novel-to-game/examples/jin-ping-mei/build/app/package.json +10 -0
  121. package/lib/novel-to-game/examples/jin-ping-mei/build/app/vercel.json +23 -0
  122. package/lib/novel-to-game/examples/jin-ping-mei/build/art/generated-art.json +161 -0
  123. package/lib/novel-to-game/examples/jin-ping-mei/example.json +12 -0
  124. package/lib/novel-to-game/examples/jin-ping-mei/qa/README.md +31 -0
  125. package/lib/novel-to-game/examples/jin-ping-mei/qa/playable-model.json +99 -0
  126. package/lib/novel-to-game/examples/jin-ping-mei/qa/verification.json +41 -0
  127. package/lib/novel-to-game/examples/jin-ping-mei/qa/verify_playable_model.mjs +129 -0
  128. package/lib/novel-to-game/manifest.json +508 -0
  129. package/lib/novel-to-game/skills/game-art-direction/SKILL.md +73 -0
  130. package/lib/novel-to-game/skills/game-art-direction/agents/openai.yaml +4 -0
  131. package/lib/novel-to-game/skills/game-art-direction/references/art-direction-method.md +119 -0
  132. package/lib/novel-to-game/skills/game-build/SKILL.md +84 -0
  133. package/lib/novel-to-game/skills/game-build/agents/openai.yaml +4 -0
  134. package/lib/novel-to-game/skills/game-build/references/build-brief-contract.md +109 -0
  135. package/lib/novel-to-game/skills/game-build/references/generative-media-pipeline.md +56 -0
  136. package/lib/novel-to-game/skills/game-build/references/playable-model-contract.md +81 -0
  137. package/lib/novel-to-game/skills/game-build/references/tts-production-contract.md +37 -0
  138. package/lib/novel-to-game/skills/game-concept/SKILL.md +72 -0
  139. package/lib/novel-to-game/skills/game-concept/agents/openai.yaml +4 -0
  140. package/lib/novel-to-game/skills/game-concept/references/concept-method.md +94 -0
  141. package/lib/novel-to-game/skills/game-qa/SKILL.md +50 -0
  142. package/lib/novel-to-game/skills/game-qa/agents/openai.yaml +4 -0
  143. package/lib/novel-to-game/skills/game-qa/references/qa-contract.md +66 -0
  144. package/lib/novel-to-game/skills/game-qa/references/test-design-method.md +45 -0
  145. package/lib/novel-to-game/skills/game-world-design/SKILL.md +63 -0
  146. package/lib/novel-to-game/skills/game-world-design/agents/openai.yaml +4 -0
  147. package/lib/novel-to-game/skills/game-world-design/references/dialogue-design-method.md +59 -0
  148. package/lib/novel-to-game/skills/game-world-design/references/game-writing-craft.md +53 -0
  149. package/lib/novel-to-game/skills/game-world-design/references/narrative-design-method.md +84 -0
  150. package/lib/novel-to-game/skills/game-world-design/references/numeric-design-method.md +56 -0
  151. package/lib/novel-to-game/skills/game-world-design/references/world-design-method.md +124 -0
  152. package/lib/novel-to-game/skills/novel-game-analyze/SKILL.md +77 -0
  153. package/lib/novel-to-game/skills/novel-game-analyze/agents/openai.yaml +4 -0
  154. package/lib/novel-to-game/skills/novel-game-analyze/references/gameability-protocol.md +65 -0
  155. package/lib/novel-to-game/skills/novel-to-game/SKILL.md +71 -0
  156. package/lib/novel-to-game/skills/novel-to-game/agents/openai.yaml +4 -0
  157. package/lib/novel-to-game/skills/novel-to-game/references/intake-benchmark-reference.md +42 -0
  158. package/lib/novel-to-game/skills/novel-to-game/references/intake-method.md +51 -0
  159. package/lib/novel-to-game/skills/novel-to-game/references/pipeline-contract.md +65 -0
  160. package/lib/oh-story/manifest.json +415 -305
  161. package/lib/oh-story/roles/consistency-checker.md +1 -1
  162. package/lib/oh-story/roles/narrative-writer.md +32 -33
  163. package/lib/oh-story/roles/story-architect.md +16 -26
  164. package/lib/oh-story/skills/browser-cdp/SKILL.md +1 -1
  165. package/lib/oh-story/skills/story/SKILL.md +16 -9
  166. package/lib/oh-story/skills/story/VERSION +1 -1
  167. package/lib/oh-story/skills/story/references/author-memory.md +163 -0
  168. package/lib/oh-story/skills/story/scripts/author_memory_commit.py +871 -0
  169. package/lib/oh-story/skills/story-cover/SKILL.md +1 -1
  170. package/lib/oh-story/skills/story-deslop/SKILL.md +10 -5
  171. package/lib/oh-story/skills/story-deslop/references/anti-ai-writing.md +2 -1
  172. package/lib/oh-story/skills/story-deslop/references/author-memory.md +163 -0
  173. package/lib/oh-story/skills/story-deslop/references/banned-words.md +6 -4
  174. package/lib/oh-story/skills/story-deslop/scripts/author_memory_commit.py +871 -0
  175. package/lib/oh-story/skills/story-deslop/scripts/check-ai-patterns.js +64 -1
  176. package/lib/oh-story/skills/story-import/SKILL.md +19 -10
  177. package/lib/oh-story/skills/story-import/references/format-and-structure.md +9 -10
  178. package/lib/oh-story/skills/story-import/references/structure-mapping-long.md +2 -2
  179. package/lib/oh-story/skills/story-import/references/structure-mapping-short.md +1 -1
  180. package/lib/oh-story/skills/story-import/references/tracking-transaction.md +14 -6
  181. package/lib/oh-story/skills/story-import/scripts/check-outline-contract.js +251 -0
  182. package/lib/oh-story/skills/story-import/scripts/tracking_commit.py +98 -9
  183. package/lib/oh-story/skills/story-import/scripts/wordcount_core.py +246 -0
  184. package/lib/oh-story/skills/story-long-analyze/SKILL.md +4 -4
  185. package/lib/oh-story/skills/story-long-scan/SKILL.md +1 -1
  186. package/lib/oh-story/skills/story-long-write/SKILL.md +35 -21
  187. package/lib/oh-story/skills/story-long-write/references/anti-ai-writing.md +2 -1
  188. package/lib/oh-story/skills/story-long-write/references/artifact-protocols.md +7 -3
  189. package/lib/oh-story/skills/story-long-write/references/author-memory.md +163 -0
  190. package/lib/oh-story/skills/story-long-write/references/banned-words.md +6 -4
  191. package/lib/oh-story/skills/story-long-write/references/cross-book-recall.md +6 -6
  192. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards.md +1 -1
  193. package/lib/oh-story/skills/story-long-write/references/genre-readers.md +1 -1
  194. package/lib/oh-story/skills/{story-setup/references/agent-references/hooks-chapter.md → story-long-write/references/long-chapter-hooks.md} +5 -5
  195. package/lib/oh-story/skills/story-long-write/references/{quality-checklist.md → long-chapter-quality.md} +2 -1
  196. package/lib/oh-story/skills/story-long-write/references/long-format.md +42 -0
  197. package/lib/oh-story/skills/{story-setup/references/agent-references/genre-catalog.md → story-long-write/references/long-genre-catalog.md} +11 -97
  198. package/lib/oh-story/skills/{story-setup/references/agent-references/genre-core-mechanics.md → story-long-write/references/long-genre-mechanics.md} +1 -1
  199. package/lib/oh-story/skills/{story-short-write/references/reversal-toolkit.md → story-long-write/references/long-reversal.md} +18 -32
  200. package/lib/oh-story/skills/story-long-write/references/{hooks-suspense.md → long-suspense.md} +6 -6
  201. package/lib/oh-story/skills/story-long-write/references/opening-design.md +1 -1
  202. package/lib/oh-story/skills/story-long-write/references/outline-structure-theory.md +1 -1
  203. package/lib/oh-story/skills/story-long-write/references/style-genre-modules.md +1 -1
  204. package/lib/oh-story/skills/story-long-write/references/tracking-transaction.md +14 -6
  205. package/lib/oh-story/skills/story-long-write/references/workflow-chapter.md +32 -27
  206. package/lib/oh-story/skills/story-long-write/references/workflow-daily.md +4 -4
  207. package/lib/oh-story/skills/story-long-write/references/workflow-revision.md +2 -2
  208. package/lib/oh-story/skills/story-long-write/references/workflow-setup.md +14 -14
  209. package/lib/oh-story/skills/story-long-write/references/writing-craft.md +54 -54
  210. package/lib/oh-story/skills/story-long-write/scripts/author_memory_commit.py +871 -0
  211. package/lib/oh-story/skills/story-long-write/scripts/check-ai-patterns.js +64 -1
  212. package/lib/oh-story/skills/story-long-write/scripts/check-outline-contract.js +251 -0
  213. package/lib/oh-story/skills/story-long-write/scripts/storyctl.py +303 -0
  214. package/lib/oh-story/skills/story-long-write/scripts/tracking_commit.py +98 -9
  215. package/lib/oh-story/skills/story-long-write/scripts/wordcount_core.py +246 -0
  216. package/lib/oh-story/skills/story-review/SKILL.md +26 -17
  217. package/lib/oh-story/skills/story-review/references/anti-ai-writing.md +2 -1
  218. package/lib/oh-story/skills/story-review/references/author-memory.md +163 -0
  219. package/lib/oh-story/skills/story-review/references/banned-words.md +6 -4
  220. package/lib/oh-story/skills/story-review/references/{quality-checklist.md → review-quality.md} +22 -21
  221. package/lib/oh-story/skills/story-review/references/tracking-transaction.md +14 -6
  222. package/lib/oh-story/skills/story-review/scripts/author_memory_commit.py +871 -0
  223. package/lib/oh-story/skills/story-review/scripts/check-ai-patterns.js +64 -1
  224. package/lib/oh-story/skills/story-review/scripts/tracking_commit.py +98 -9
  225. package/lib/oh-story/skills/story-review/scripts/wordcount_core.py +246 -0
  226. package/lib/oh-story/skills/story-setup/SKILL.md +74 -33
  227. package/lib/oh-story/skills/story-setup/references/agent-references/agent-quality.md +72 -0
  228. package/lib/oh-story/skills/story-setup/references/agent-references/agent-reference-profiles.md +55 -0
  229. package/lib/oh-story/skills/story-setup/references/agent-references/anti-ai-writing.md +2 -1
  230. package/lib/oh-story/skills/story-setup/references/agent-references/banned-words.md +6 -4
  231. package/lib/oh-story/skills/story-setup/references/agent-references/format-and-structure.md +9 -10
  232. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards.md +1 -1
  233. package/lib/oh-story/skills/story-setup/references/agent-references/genre-readers.md +1 -1
  234. package/lib/oh-story/skills/{story-short-analyze/references/hooks-chapter.md → story-setup/references/agent-references/long-chapter-hooks.md} +5 -5
  235. package/lib/oh-story/skills/story-setup/references/agent-references/long-emotional-methods.md +209 -0
  236. package/lib/oh-story/skills/{story-long-write/references/genre-catalog.md → story-setup/references/agent-references/long-genre-catalog.md} +11 -97
  237. package/lib/oh-story/skills/{story-long-write/references/genre-core-mechanics.md → story-setup/references/agent-references/long-genre-mechanics.md} +1 -1
  238. package/lib/oh-story/skills/story-setup/references/agent-references/long-quality.md +40 -0
  239. package/lib/oh-story/skills/story-setup/references/agent-references/{reversal-toolkit.md → long-reversal.md} +18 -32
  240. package/lib/oh-story/skills/{story-short-write/references/hooks-suspense.md → story-setup/references/agent-references/long-suspense.md} +6 -6
  241. package/lib/oh-story/skills/story-setup/references/agent-references/opening-design.md +1 -1
  242. package/lib/oh-story/skills/story-setup/references/agent-references/{emotional-methods.md → short-emotional-methods.md} +4 -4
  243. package/lib/oh-story/skills/{story-long-write/references/genre-writing-formulas.md → story-setup/references/agent-references/short-genre-formulas.md} +32 -44
  244. package/lib/oh-story/skills/story-setup/references/agent-references/short-quality.md +39 -0
  245. package/lib/oh-story/skills/{story-long-write/references/reversal-toolkit.md → story-setup/references/agent-references/short-reversal.md} +29 -23
  246. package/lib/oh-story/skills/story-setup/references/agent-references/{hooks-suspense.md → short-suspense.md} +31 -31
  247. package/lib/oh-story/skills/story-setup/references/agent-references/style-genre-modules.md +1 -1
  248. package/lib/oh-story/skills/story-setup/references/agent-references/writing-craft.md +55 -55
  249. package/lib/oh-story/skills/story-short-analyze/SKILL.md +28 -28
  250. package/lib/oh-story/skills/story-short-analyze/references/{character-basics.md → analysis-character-basics.md} +1 -1
  251. package/lib/oh-story/skills/story-short-analyze/references/{character-design-methods.md → analysis-character-design.md} +1 -1
  252. package/lib/oh-story/skills/story-short-analyze/references/{character-relations.md → analysis-character-relations.md} +1 -1
  253. package/lib/oh-story/skills/story-short-analyze/references/{hooks-paragraph.md → analysis-paragraph-hooks.md} +1 -1
  254. package/lib/oh-story/skills/story-short-analyze/references/{genre-readers.md → analysis-reader-profile.md} +2 -2
  255. package/lib/oh-story/skills/story-short-analyze/references/analysis-report-style.md +45 -0
  256. package/lib/oh-story/skills/story-short-analyze/references/analysis-short-genres.md +65 -0
  257. package/lib/oh-story/skills/story-short-analyze/references/analysis-short-hooks.md +77 -0
  258. package/lib/oh-story/skills/story-short-analyze/references/analysis-short-mechanics.md +82 -0
  259. package/lib/oh-story/skills/story-short-analyze/references/analysis-short-patterns.md +50 -0
  260. package/lib/oh-story/skills/story-short-analyze/references/analysis-short-suspense.md +98 -0
  261. package/lib/oh-story/skills/story-short-analyze/references/{genre-writing-techniques.md → analysis-writing-techniques.md} +21 -19
  262. package/lib/oh-story/skills/story-short-analyze/references/deconstruction-examples.md +1 -1
  263. package/lib/oh-story/skills/story-short-analyze/references/material-decomposition.md +21 -28
  264. package/lib/oh-story/skills/story-short-analyze/references/output-contract.md +1 -1
  265. package/lib/oh-story/skills/story-short-analyze/references/output-templates.md +17 -17
  266. package/lib/oh-story/skills/story-short-analyze/references/{quality-checklist.md → source-story-quality.md} +28 -49
  267. package/lib/oh-story/skills/story-short-analyze/references/zhihu-style.md +2 -2
  268. package/lib/oh-story/skills/story-short-scan/SKILL.md +1 -1
  269. package/lib/oh-story/skills/story-short-write/SKILL.md +78 -55
  270. package/lib/oh-story/skills/story-short-write/references/author-memory.md +163 -0
  271. package/lib/oh-story/skills/story-short-write/references/banned-words.md +6 -4
  272. package/lib/oh-story/skills/story-short-write/references/cross-book-recall.md +3 -3
  273. package/lib/oh-story/skills/story-short-write/references/emotional-methods.md +4 -4
  274. package/lib/oh-story/skills/story-short-write/references/genre-styles//344/270/226/346/203/205/346/211/223/350/204/270.md +3 -3
  275. package/lib/oh-story/skills/story-short-write/references/genre-styles//345/217/214/347/224/267/344/270/273.md +2 -2
  276. package/lib/oh-story/skills/story-short-write/references/genre-styles//345/244/215/344/273/207/346/211/223/350/204/270.md +3 -3
  277. package/lib/oh-story/skills/story-short-write/references/genre-styles//345/256/205/346/226/227/345/256/253/346/226/227.md +6 -6
  278. package/lib/oh-story/skills/story-short-write/references/genre-styles//346/200/273/350/243/201/350/261/252/351/227/250.md +3 -3
  279. package/lib/oh-story/skills/story-short-write/references/genre-styles//346/202/254/347/226/221.md +4 -4
  280. package/lib/oh-story/skills/story-short-write/references/genre-styles//346/260/221/344/277/227/346/200/252/350/260/210.md +7 -7
  281. package/lib/oh-story/skills/story-short-write/references/genre-styles//346/262/231/351/233/225/350/204/221/346/264/236.md +5 -5
  282. package/lib/oh-story/skills/story-short-write/references/genre-styles//347/224/234/345/256/240.md +4 -4
  283. package/lib/oh-story/skills/story-short-write/references/genre-styles//350/277/275/345/246/273/347/201/253/350/221/254/345/234/272.md +3 -3
  284. package/lib/oh-story/skills/story-short-write/references/genre-writing-formulas.md +32 -44
  285. package/lib/oh-story/skills/story-short-write/references/genre-writing-techniques.md +20 -18
  286. package/lib/oh-story/skills/story-short-write/references/output-contract.md +1 -1
  287. package/lib/oh-story/skills/story-short-write/references/short-craft.md +18 -18
  288. package/lib/oh-story/skills/story-short-write/references/short-deslop.md +1 -1
  289. package/lib/oh-story/skills/story-short-write/references/short-format.md +38 -8
  290. package/lib/oh-story/skills/story-short-write/references/{quality-checklist.md → short-prose-quality.md} +22 -21
  291. package/lib/oh-story/skills/story-short-write/references/short-reversal.md +355 -0
  292. package/lib/oh-story/skills/{story-short-analyze/references/hooks-suspense.md → story-short-write/references/short-suspense.md} +31 -31
  293. package/lib/oh-story/skills/story-short-write/references/submission-craft.md +2 -2
  294. package/lib/oh-story/skills/story-short-write/references/writing-workflow.md +31 -22
  295. package/lib/oh-story/skills/story-short-write/scripts/author_memory_commit.py +871 -0
  296. package/lib/oh-story/skills/story-short-write/scripts/check-ai-patterns.js +64 -1
  297. package/lib/oh-story/skills/story-short-write/scripts/check-delivery-contract.js +212 -0
  298. package/lib/oh-story/skills/story-short-write/scripts/check-phase2-contract.js +363 -0
  299. package/lib/types/client/drama-production-view.d.ts +34 -0
  300. package/lib/types/client/drama-production-view.d.ts.map +1 -0
  301. package/lib/types/client/drama-production.d.ts +92 -0
  302. package/lib/types/client/drama-production.d.ts.map +1 -0
  303. package/lib/types/client/file-activity.d.ts +4 -2
  304. package/lib/types/client/file-activity.d.ts.map +1 -1
  305. package/lib/types/client/index.d.ts +1 -1
  306. package/lib/types/client/index.d.ts.map +1 -1
  307. package/lib/types/client/production-intents.d.ts +9 -0
  308. package/lib/types/client/production-intents.d.ts.map +1 -0
  309. package/lib/types/client/production-prompts.d.ts +9 -0
  310. package/lib/types/client/production-prompts.d.ts.map +1 -0
  311. package/lib/types/client/production-runtime.d.ts +58 -0
  312. package/lib/types/client/production-runtime.d.ts.map +1 -0
  313. package/lib/types/client/video-studio.d.ts +41 -0
  314. package/lib/types/client/video-studio.d.ts.map +1 -0
  315. package/lib/types/client/workbench-ui.d.ts +5 -0
  316. package/lib/types/client/workbench-ui.d.ts.map +1 -0
  317. package/lib/types/game-verification.d.ts +16 -0
  318. package/lib/types/game-verification.d.ts.map +1 -0
  319. package/lib/types/index.d.ts +3 -1
  320. package/lib/types/index.d.ts.map +1 -1
  321. package/lib/types/production-intent.d.ts +21 -0
  322. package/lib/types/production-intent.d.ts.map +1 -0
  323. package/lib/types/production-tool.d.ts +5 -0
  324. package/lib/types/production-tool.d.ts.map +1 -0
  325. package/lib/types/role-tool.d.ts.map +1 -1
  326. package/lib/types/skill-provider.d.ts +7 -0
  327. package/lib/types/skill-provider.d.ts.map +1 -1
  328. package/lib/types/video-project.d.ts +42 -0
  329. package/lib/types/video-project.d.ts.map +1 -0
  330. package/lib/types/workspace-request-trust.d.ts +6 -0
  331. package/lib/types/workspace-request-trust.d.ts.map +1 -1
  332. package/lib/types/workspace-route.d.ts +20 -0
  333. package/lib/types/workspace-route.d.ts.map +1 -1
  334. package/lib/video-recap/CHANGELOG.md +282 -0
  335. package/lib/video-recap/LICENSE +21 -0
  336. package/lib/video-recap/README.en.md +257 -0
  337. package/lib/video-recap/README.md +255 -0
  338. package/lib/video-recap/manifest.json +684 -0
  339. package/lib/video-recap/skills/video-assemble/SKILL.md +97 -0
  340. package/lib/video-recap/skills/video-assemble/references/jianying/LICENSE.duo-video +21 -0
  341. package/lib/video-recap/skills/video-assemble/references/jianying/SOURCE.md +15 -0
  342. package/lib/video-recap/skills/video-assemble/references/jianying/empty_draft_meta_info.json +69 -0
  343. package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_combination_segment.json +84 -0
  344. package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_combination_video_material.json +98 -0
  345. package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_draft.json +204 -0
  346. package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_material_video.json +83 -0
  347. package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_meta_material_value.json +23 -0
  348. package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_project_info.json +133 -0
  349. package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_segment.json +70 -0
  350. package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_text_styles.json +30 -0
  351. package/lib/video-recap/skills/video-assemble/references/jianying/empty_yj_material_audio.json +41 -0
  352. package/lib/video-recap/skills/video-assemble/references/jianying/empty_yj_material_text.json +109 -0
  353. package/lib/video-recap/skills/video-assemble/scripts/artifacts.py +88 -0
  354. package/lib/video-recap/skills/video-assemble/scripts/assemble.py +345 -0
  355. package/lib/video-recap/skills/video-assemble/scripts/assemble_constants.py +34 -0
  356. package/lib/video-recap/skills/video-assemble/scripts/assembly_contract.py +305 -0
  357. package/lib/video-recap/skills/video-assemble/scripts/assembly_settings.py +94 -0
  358. package/lib/video-recap/skills/video-assemble/scripts/audio_automation.py +205 -0
  359. package/lib/video-recap/skills/video-assemble/scripts/audio_mix.py +555 -0
  360. package/lib/video-recap/skills/video-assemble/scripts/export_jianying.py +261 -0
  361. package/lib/video-recap/skills/video-assemble/scripts/jianying_builders.py +767 -0
  362. package/lib/video-recap/skills/video-assemble/scripts/jianying_model.py +111 -0
  363. package/lib/video-recap/skills/video-assemble/scripts/jianying_optional.py +24 -0
  364. package/lib/video-recap/skills/video-assemble/scripts/jianying_schema.py +109 -0
  365. package/lib/video-recap/skills/video-assemble/scripts/jianying_templates.py +37 -0
  366. package/lib/video-recap/skills/video-assemble/scripts/jianying_timeline_contract.py +191 -0
  367. package/lib/video-recap/skills/video-assemble/scripts/jianying_tracks.py +75 -0
  368. package/lib/video-recap/skills/video-assemble/scripts/jianying_writer.py +394 -0
  369. package/lib/video-recap/skills/video-assemble/scripts/lib.py +239 -0
  370. package/lib/video-recap/skills/video-assemble/scripts/media.py +243 -0
  371. package/lib/video-recap/skills/video-assemble/scripts/narration_audio.py +477 -0
  372. package/lib/video-recap/skills/video-assemble/scripts/render_preflight.py +46 -0
  373. package/lib/video-recap/skills/video-assemble/scripts/source_subtitles.py +486 -0
  374. package/lib/video-recap/skills/video-assemble/scripts/subtitle_core.py +376 -0
  375. package/lib/video-recap/skills/video-assemble/scripts/subtitle_render.py +88 -0
  376. package/lib/video-recap/skills/video-assemble/scripts/timeline.py +248 -0
  377. package/lib/video-recap/skills/video-assemble/scripts/timeline_emit.py +89 -0
  378. package/lib/video-recap/skills/video-assemble/scripts/visual_render.py +512 -0
  379. package/lib/video-recap/skills/video-cut/SKILL.md +90 -0
  380. package/lib/video-recap/skills/video-cut/scripts/cut.py +67 -0
  381. package/lib/video-recap/skills/video-cut/scripts/cut_cli.py +320 -0
  382. package/lib/video-recap/skills/video-cut/scripts/cut_contract.py +545 -0
  383. package/lib/video-recap/skills/video-cut/scripts/cut_render.py +348 -0
  384. package/lib/video-recap/skills/video-cut/scripts/lib.py +77 -0
  385. package/lib/video-recap/skills/video-cut/scripts/media_geometry.py +341 -0
  386. package/lib/video-recap/skills/video-cut/scripts/narration_mapping.py +249 -0
  387. package/lib/video-recap/skills/video-cut/scripts/sentence_boundaries.py +745 -0
  388. package/lib/video-recap/skills/video-recap/SKILL.md +216 -0
  389. package/lib/video-recap/skills/video-recap/references/config-playbook.md +61 -0
  390. package/lib/video-recap/skills/video-recap/references/creative-editing-playbook.md +225 -0
  391. package/lib/video-recap/skills/video-recap/references/data-schema.md +534 -0
  392. package/lib/video-recap/skills/video-recap/references/research-guide.md +74 -0
  393. package/lib/video-recap/skills/video-recap/references/shift-left-qc-schema.md +23 -0
  394. package/lib/video-recap/skills/video-recap/references/timeline-and-jianying.md +251 -0
  395. package/lib/video-recap/skills/video-recap/scripts/doctor.py +483 -0
  396. package/lib/video-recap/skills/video-recap/scripts/final_qc.py +737 -0
  397. package/lib/video-recap/skills/video-recap/scripts/lib.py +242 -0
  398. package/lib/video-recap/skills/video-recap/scripts/materials.py +457 -0
  399. package/lib/video-recap/skills/video-recap/scripts/mimo_qc.py +95 -0
  400. package/lib/video-recap/skills/video-recap/scripts/mimo_qc_client.py +18 -0
  401. package/lib/video-recap/skills/video-recap/scripts/mimo_qc_contract.py +9 -0
  402. package/lib/video-recap/skills/video-recap/scripts/mimo_qc_evidence.py +371 -0
  403. package/lib/video-recap/skills/video-recap/scripts/mimo_qc_observations.py +201 -0
  404. package/lib/video-recap/skills/video-recap/scripts/mimo_qc_payload.py +227 -0
  405. package/lib/video-recap/skills/video-recap/scripts/mimo_qc_report.py +362 -0
  406. package/lib/video-recap/skills/video-recap/scripts/mimo_qc_runner.py +129 -0
  407. package/lib/video-recap/skills/video-recap/scripts/qc_contract.py +338 -0
  408. package/lib/video-recap/skills/video-recap/scripts/recap.py +9 -0
  409. package/lib/video-recap/skills/video-recap/scripts/recap_cli.py +140 -0
  410. package/lib/video-recap/skills/video-recap/scripts/recap_inspect.py +550 -0
  411. package/lib/video-recap/skills/video-recap/scripts/recap_review.py +77 -0
  412. package/lib/video-recap/skills/video-recap/scripts/recap_runner.py +654 -0
  413. package/lib/video-recap/skills/video-recap/scripts/recap_runtime.py +335 -0
  414. package/lib/video-recap/skills/video-recap/scripts/recap_stage_qc.py +217 -0
  415. package/lib/video-recap/skills/video-recap/scripts/recap_timeline.py +795 -0
  416. package/lib/video-recap/skills/video-script/SKILL.md +248 -0
  417. package/lib/video-recap/skills/video-script/references/creative-editing-playbook.md +225 -0
  418. package/lib/video-recap/skills/video-script/references/research-guide.md +75 -0
  419. package/lib/video-recap/skills/video-script/scripts/agent_brief.py +399 -0
  420. package/lib/video-recap/skills/video-script/scripts/agent_text.py +410 -0
  421. package/lib/video-recap/skills/video-script/scripts/brief_context.py +403 -0
  422. package/lib/video-recap/skills/video-script/scripts/brief_inputs.py +332 -0
  423. package/lib/video-recap/skills/video-script/scripts/brief_timeline.py +442 -0
  424. package/lib/video-recap/skills/video-script/scripts/deslop_qc.py +237 -0
  425. package/lib/video-recap/skills/video-script/scripts/evidence_bundle.py +492 -0
  426. package/lib/video-recap/skills/video-script/scripts/lib.py +327 -0
  427. package/lib/video-recap/skills/video-script/scripts/narration.py +12 -0
  428. package/lib/video-recap/skills/video-script/scripts/narration_lint.py +678 -0
  429. package/lib/video-recap/skills/video-script/scripts/review.py +42 -0
  430. package/lib/video-recap/skills/video-script/scripts/review_grounding.py +262 -0
  431. package/lib/video-recap/skills/video-script/scripts/review_response.py +761 -0
  432. package/lib/video-recap/skills/video-script/scripts/review_runner.py +200 -0
  433. package/lib/video-recap/skills/video-script/scripts/speech_ownership.py +204 -0
  434. package/lib/video-recap/skills/video-script/scripts/timeline_fusion.py +199 -0
  435. package/lib/video-recap/skills/video-script/scripts/validate.py +164 -0
  436. package/lib/video-recap/skills/video-understanding/SKILL.md +75 -0
  437. package/lib/video-recap/skills/video-understanding/references/data-schema.md +299 -0
  438. package/lib/video-recap/skills/video-understanding/references/prompt-templates.md +37 -0
  439. package/lib/video-recap/skills/video-understanding/references/research-guide.md +74 -0
  440. package/lib/video-recap/skills/video-understanding/scripts/agent_brief.py +399 -0
  441. package/lib/video-recap/skills/video-understanding/scripts/agent_text.py +410 -0
  442. package/lib/video-recap/skills/video-understanding/scripts/asr.py +260 -0
  443. package/lib/video-recap/skills/video-understanding/scripts/brief.py +12 -0
  444. package/lib/video-recap/skills/video-understanding/scripts/brief_context.py +403 -0
  445. package/lib/video-recap/skills/video-understanding/scripts/brief_inputs.py +332 -0
  446. package/lib/video-recap/skills/video-understanding/scripts/brief_timeline.py +442 -0
  447. package/lib/video-recap/skills/video-understanding/scripts/consolidate.py +647 -0
  448. package/lib/video-recap/skills/video-understanding/scripts/deslop_qc.py +237 -0
  449. package/lib/video-recap/skills/video-understanding/scripts/detect.py +513 -0
  450. package/lib/video-recap/skills/video-understanding/scripts/extract.py +62 -0
  451. package/lib/video-recap/skills/video-understanding/scripts/lib.py +470 -0
  452. package/lib/video-recap/skills/video-understanding/scripts/narration_lint.py +678 -0
  453. package/lib/video-recap/skills/video-understanding/scripts/speech_ownership.py +204 -0
  454. package/lib/video-recap/skills/video-understanding/scripts/storyboard.py +507 -0
  455. package/lib/video-recap/skills/video-understanding/scripts/timeline_fusion.py +199 -0
  456. package/lib/video-recap/skills/video-understanding/scripts/understand.py +9 -0
  457. package/lib/video-recap/skills/video-understanding/scripts/understanding_brief.py +216 -0
  458. package/lib/video-recap/skills/video-understanding/scripts/understanding_cache.py +327 -0
  459. package/lib/video-recap/skills/video-understanding/scripts/understanding_runner.py +367 -0
  460. package/lib/video-recap/skills/video-understanding/scripts/understanding_storyboard.py +162 -0
  461. package/lib/video-recap/skills/video-understanding/scripts/vlm.py +705 -0
  462. package/lib/video-recap/skills/video-voiceover/SKILL.md +81 -0
  463. package/lib/video-recap/skills/video-voiceover/scripts/dub.py +637 -0
  464. package/lib/video-recap/skills/video-voiceover/scripts/fish_audio.py +109 -0
  465. package/lib/video-recap/skills/video-voiceover/scripts/lib.py +421 -0
  466. package/lib/video-recap/skills/video-voiceover/scripts/tts_audio.py +113 -0
  467. package/lib/video-recap/skills/video-voiceover/scripts/voiceover.py +782 -0
  468. package/package.json +55 -40
  469. package/lib/oh-story/skills/story-deslop/scripts/check-outline-copy.js +0 -241
  470. package/lib/oh-story/skills/story-long-write/references/format-and-structure.md +0 -169
  471. package/lib/oh-story/skills/story-setup/references/agent-references/genre-writing-formulas.md +0 -444
  472. package/lib/oh-story/skills/story-setup/references/agent-references/quality-checklist.md +0 -247
  473. package/lib/oh-story/skills/story-short-analyze/references/anti-ai-writing.md +0 -582
  474. package/lib/oh-story/skills/story-short-analyze/references/banned-words.md +0 -147
  475. package/lib/oh-story/skills/story-short-analyze/references/genre-catalog.md +0 -490
  476. package/lib/oh-story/skills/story-short-analyze/references/genre-core-mechanics.md +0 -425
  477. package/lib/oh-story/skills/story-short-analyze/references/genre-writing-formulas.md +0 -453
  478. /package/lib/oh-story/skills/{story-long-write/references/hooks-chapter.md → story-setup/references/agent-references/short-chapter-hooks.md} +0 -0
  479. /package/lib/oh-story/skills/{story-long-write/references/hooks-paragraph.md → story-setup/references/agent-references/short-paragraph-hooks.md} +0 -0
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
3
  "upstream": {
4
- "repository": "https://github.com/worldwonderer/drama-skills.git",
5
- "commit": "7811065c171f8b0a83230bb2e0ccfe2c2b5b337a"
4
+ "repository": "https://github.com/zenstory-ai/drama-skills.git",
5
+ "commit": "ebcb02ea488132da9211f8c76e71e03b6f1956a0"
6
6
  },
7
- "generatedAt": "2026-08-23T14:48:42.386Z",
7
+ "generatedAt": "2026-09-02T02:39:35.239Z",
8
8
  "skills": [
9
9
  "short-drama",
10
10
  "short-drama-assets",
@@ -25,8 +25,8 @@
25
25
  },
26
26
  {
27
27
  "path": "skills/short-drama-assets/SKILL.md",
28
- "sha256": "4c350f8b19d4c0cbfd8193c9695423471f345cea67ba65b176b93e7ef53e9efb",
29
- "bytes": 3528
28
+ "sha256": "a8d3a4568b98ce256b8340bea221bb03f2cd8839f80485e46fae5a164c7bd737",
29
+ "bytes": 5321
30
30
  },
31
31
  {
32
32
  "path": "skills/short-drama-assets/agents/openai.yaml",
@@ -88,10 +88,15 @@
88
88
  "sha256": "9406f36b5d3ba9697760773480f6b3101b81e0e645ec6d2569ef6e571f3a2b4b",
89
89
  "bytes": 7322
90
90
  },
91
+ {
92
+ "path": "skills/short-drama-assets/references/continuity-lock.md",
93
+ "sha256": "5ba6bfa82597c89756b765263f618a21f98d9b534d9f2ee3c23308c026f97f41",
94
+ "bytes": 6746
95
+ },
91
96
  {
92
97
  "path": "skills/short-drama-assets/references/identity-vs-variant.md",
93
- "sha256": "8375d11617d08ee2171f206b5095e6d6c13ab76a5cb4ecc17b8a605dc9c14a79",
94
- "bytes": 7792
98
+ "sha256": "06eac61e6b6b497f1071775903d85f5a08b27917805847cc3b9842022e0e3a23",
99
+ "bytes": 7911
95
100
  },
96
101
  {
97
102
  "path": "skills/short-drama-assets/references/location-and-view.md",
@@ -105,13 +110,13 @@
105
110
  },
106
111
  {
107
112
  "path": "skills/short-drama-assets/references/prop-and-state.md",
108
- "sha256": "96110454b0a959ac614dd475eaaa349eeb0e9beeddc1dcf2d46772cb7849fce1",
109
- "bytes": 5403
113
+ "sha256": "66e9eaa6e31a0ee5f74cabd6a19f2c4b38a6595fe9433fd1b323ff80bce42b4b",
114
+ "bytes": 6962
110
115
  },
111
116
  {
112
117
  "path": "skills/short-drama-assets/references/stage-contract.md",
113
- "sha256": "dab8ba5b31ca83b886bd309d198a18abc85f82b28e945a762fc7277526836373",
114
- "bytes": 3486
118
+ "sha256": "ddfe599f7d1b86669b999a2483093bd9d90572adbb749233f5a434e1b741e81b",
119
+ "bytes": 4141
115
120
  },
116
121
  {
117
122
  "path": "skills/short-drama-assets/references/voice-direction.md",
@@ -120,8 +125,8 @@
120
125
  },
121
126
  {
122
127
  "path": "skills/short-drama-assets/scripts/asset_check.py",
123
- "sha256": "413ee8e37927690b482d1f0809d61675bc6035f9fc1ba20d1b2a30f585f88221",
124
- "bytes": 10261
128
+ "sha256": "e19bf29a16d407c4b397fe721267ddffe5000f280db43fe89b5436a7db0bc9a7",
129
+ "bytes": 10260
125
130
  },
126
131
  {
127
132
  "path": "skills/short-drama-assets/scripts/selftest.py",
@@ -295,8 +300,8 @@
295
300
  },
296
301
  {
297
302
  "path": "skills/short-drama-image-prompts/SKILL.md",
298
- "sha256": "a7fa035fed6fa66fc4a74b72237fc3e46b9143d8d784df8bff99d62503d6cece",
299
- "bytes": 3603
303
+ "sha256": "a3341fc0c5562ab2808c3e61ed5b9c57e720ea339bea58cf3a65268660d9032f",
304
+ "bytes": 4255
300
305
  },
301
306
  {
302
307
  "path": "skills/short-drama-image-prompts/agents/openai.yaml",
@@ -335,8 +340,8 @@
335
340
  },
336
341
  {
337
342
  "path": "skills/short-drama-image-prompts/references/common-recipe.md",
338
- "sha256": "eab3c68b14c5b5d640f30dbec2c3a4542790c2c1bbab57ae305098eb0ac000e8",
339
- "bytes": 14551
343
+ "sha256": "a185edab74e7cf2c68e9c21057c13808a366b319787ecd0307ac4f6c475a32bb",
344
+ "bytes": 15099
340
345
  },
341
346
  {
342
347
  "path": "skills/short-drama-image-prompts/references/edit-and-revision.md",
@@ -355,8 +360,8 @@
355
360
  },
356
361
  {
357
362
  "path": "skills/short-drama-image-prompts/references/lookdev-frame.md",
358
- "sha256": "ff6672832e3c1a7d098fa3fd3b5836e4665527addd5e009c6212dd109f3e178d",
359
- "bytes": 2122
363
+ "sha256": "7977688d131689bc29d08bbc17237c7b626e70bd768bbc30c8e5af9b2d96212f",
364
+ "bytes": 2407
360
365
  },
361
366
  {
362
367
  "path": "skills/short-drama-image-prompts/references/production-sheet-recipes.md",
@@ -370,23 +375,23 @@
370
375
  },
371
376
  {
372
377
  "path": "skills/short-drama-image-prompts/references/review-and-fixtures.md",
373
- "sha256": "2a56cb8ae0062c2b0ce2361a74d1a8e9a0c95ce0881e36bce6cec01ad97e7fc7",
374
- "bytes": 5213
378
+ "sha256": "6da6d575617c7caf3983ec17e2c4d6af24443a210e109651e70708745f552e65",
379
+ "bytes": 5354
375
380
  },
376
381
  {
377
382
  "path": "skills/short-drama-image-prompts/references/stage-contract.md",
378
- "sha256": "80a55a494fc6a95a3a9ac87bb4e6b09eb8b10fedeb4a1d761fd8165397e9ab30",
379
- "bytes": 2975
383
+ "sha256": "7813c87297ef94ec26178cc59bf3a59a93b47fc19be2793a7e80cdc9d3c5ebb9",
384
+ "bytes": 3712
380
385
  },
381
386
  {
382
387
  "path": "skills/short-drama-image-prompts/scripts/image_prompt_check.py",
383
- "sha256": "86b14704ea92b88f71d020732fbc41e0454f924b3ea9201c2042c70ca8fb171a",
384
- "bytes": 17932
388
+ "sha256": "a6e3217410e366f0626766218e41e5d41501efde87f5f2283c65c7e7adb901f4",
389
+ "bytes": 17936
385
390
  },
386
391
  {
387
392
  "path": "skills/short-drama-image-prompts/scripts/selftest.py",
388
- "sha256": "839b5e6c6a62d096193fb580783627af5769cbcc071e4edb2731aedf18f8c7d4",
389
- "bytes": 3725
393
+ "sha256": "9cc21ea2b835df84289d3d1f6bd363ed20c2cb2f81870a69e75bd53052c01968",
394
+ "bytes": 3862
390
395
  },
391
396
  {
392
397
  "path": "skills/short-drama-novel-analyze/SKILL.md",
@@ -440,8 +445,8 @@
440
445
  },
441
446
  {
442
447
  "path": "skills/short-drama-produce/SKILL.md",
443
- "sha256": "806ede77cb1deb80cf0dacce07f0c22702c1ad1d3ea34d4f8b5d96cda091797e",
444
- "bytes": 7991
448
+ "sha256": "e9f3678b49a156ada1d777457101f6bc6703f5d1c77a737099a51bd4cc41dbde",
449
+ "bytes": 11989
445
450
  },
446
451
  {
447
452
  "path": "skills/short-drama-produce/agents/openai.yaml",
@@ -450,14 +455,19 @@
450
455
  },
451
456
  {
452
457
  "path": "skills/short-drama-produce/references/adapter-contract.md",
453
- "sha256": "ed4bae0e868958c04deabefd6179a53d875eea2662b3b3c4664c0d9117533c2c",
454
- "bytes": 5954
458
+ "sha256": "a2825dd9dee723fbc0cf24486348df9fd0a7cb2fcb39b384179a8302677fe4b1",
459
+ "bytes": 9863
455
460
  },
456
461
  {
457
462
  "path": "skills/short-drama-produce/references/providers/gpt-image-2.md",
458
463
  "sha256": "823735597abc95ee34ef82d0869c368feb1e732ffc6bd2a4a061f3b0fcd08ee4",
459
464
  "bytes": 1329
460
465
  },
466
+ {
467
+ "path": "skills/short-drama-produce/references/providers/minimax-h3-video.md",
468
+ "sha256": "ed2ebb0234cf841442f54342196b52df65c6f42a74a5bdfe80bc774bf6911e54",
469
+ "bytes": 5531
470
+ },
461
471
  {
462
472
  "path": "skills/short-drama-produce/references/providers/minimax-music.md",
463
473
  "sha256": "ef1d00a430edf31a451b3ed588b5e5775a7f61376a4f74d6fe75139f8f1c49cc",
@@ -465,8 +475,8 @@
465
475
  },
466
476
  {
467
477
  "path": "skills/short-drama-produce/references/providers/seedance.md",
468
- "sha256": "168c77b31eebb1f56502c57904917fd60092532a79b9de693c150cfcb7925881",
469
- "bytes": 2063
478
+ "sha256": "0c5672a8c6a1d9e47f7b950773d4a12843df92aa5ec4b67b053cc8e17de84ada",
479
+ "bytes": 3380
470
480
  },
471
481
  {
472
482
  "path": "skills/short-drama-produce/scripts/fixture_adapter.py",
@@ -475,18 +485,18 @@
475
485
  },
476
486
  {
477
487
  "path": "skills/short-drama-produce/scripts/production_tool.py",
478
- "sha256": "0ebac2fe72ca4d463dd05810cdab8fb2ed5a7ca3c03b3743756e38be8e1e3284",
479
- "bytes": 63120
488
+ "sha256": "6b13682f4769495ee1cddb678651c48572623a1480c070d1b2565262761388df",
489
+ "bytes": 77848
480
490
  },
481
491
  {
482
492
  "path": "skills/short-drama-produce/scripts/provider_adapters.py",
483
- "sha256": "0d0e6e7658f81bdf8ced49c30e0363a57e8c8264ba1cc54e11b45a537089f63e",
484
- "bytes": 37489
493
+ "sha256": "056f49984683bffd7f7c8e13faa3aee3b7d73bc0f22e33d8f06b054bceb9ce67",
494
+ "bytes": 62022
485
495
  },
486
496
  {
487
497
  "path": "skills/short-drama-produce/scripts/selftest.py",
488
- "sha256": "60125eb64f8e10c153054833332eb43f4c28181a30fecd23c84a9036b3d66b0f",
489
- "bytes": 4101
498
+ "sha256": "d93f6717f3a347be3188d0619946002d1e49e86db5315fb550e7cd8c314bcac3",
499
+ "bytes": 4122
490
500
  },
491
501
  {
492
502
  "path": "skills/short-drama-review/SKILL.md",
@@ -560,8 +570,8 @@
560
570
  },
561
571
  {
562
572
  "path": "skills/short-drama-review/references/rubric-visual-motion.md",
563
- "sha256": "810e512cce41eaf6ad9c41278cbb76037ef450782013c64623912a1e9971cc3d",
564
- "bytes": 9010
573
+ "sha256": "03b14c6b8d708b0f3b24a6f8693f5b43343b20c7197690e472f94376cf334cca",
574
+ "bytes": 9951
565
575
  },
566
576
  {
567
577
  "path": "skills/short-drama-review/references/stage-contract.md",
@@ -570,8 +580,8 @@
570
580
  },
571
581
  {
572
582
  "path": "skills/short-drama-review/scripts/review_check.py",
573
- "sha256": "701bef4fa99d82326fa5883a2bbdb5f519e05379333868d02d50da3cbd222ae4",
574
- "bytes": 12685
583
+ "sha256": "01503d966920ff9b931eaa50fb7aebc6500c94e75e2ae0e387a2bac8c7c3c27a",
584
+ "bytes": 12684
575
585
  },
576
586
  {
577
587
  "path": "skills/short-drama-review/scripts/selftest.py",
@@ -580,8 +590,8 @@
580
590
  },
581
591
  {
582
592
  "path": "skills/short-drama-storyboard/SKILL.md",
583
- "sha256": "e961e45c7bede65b02d4b97c07daae2e988db7be2792909b0170aa6765605eb8",
584
- "bytes": 4137
593
+ "sha256": "e3d444376dd3a6e8e51efe3b03bc1167eeadb3005d1a9dd7ed42399256359275",
594
+ "bytes": 14011
585
595
  },
586
596
  {
587
597
  "path": "skills/short-drama-storyboard/agents/openai.yaml",
@@ -620,8 +630,8 @@
620
630
  },
621
631
  {
622
632
  "path": "skills/short-drama-storyboard/assets/shot-template.jsonl",
623
- "sha256": "c1048e3b4ca395625707402ad6df46a00c9690715a7addb17d077d39a8bb0f77",
624
- "bytes": 3343
633
+ "sha256": "e40ec0f0e7b7f36095fbfe4484dae5ec8efeeaf06937def309a3141ca8718e65",
634
+ "bytes": 3590
625
635
  },
626
636
  {
627
637
  "path": "skills/short-drama-storyboard/references/blocking-playbooks.md",
@@ -640,18 +650,18 @@
640
650
  },
641
651
  {
642
652
  "path": "skills/short-drama-storyboard/references/keyframe-craft.md",
643
- "sha256": "99c75be7e5aaf93535f735b6030792d856b09810c4c3a70f4d177d9eff2a6448",
644
- "bytes": 9886
653
+ "sha256": "02c095439f73211817a3f75ae2af264459356060755eecaf51ce11c1512ce2ca",
654
+ "bytes": 10255
645
655
  },
646
656
  {
647
657
  "path": "skills/short-drama-storyboard/references/production-shot-grammar.md",
648
- "sha256": "66838602dc063c0e3ef6cd36aeb25ca8b3df577eb77dabfe2c17d9a532346903",
649
- "bytes": 19721
658
+ "sha256": "c8723d9f628ea7b546a2e4a558f9d5463da8296286c15a1eeb146e492b6fe04f",
659
+ "bytes": 21127
650
660
  },
651
661
  {
652
662
  "path": "skills/short-drama-storyboard/references/review-and-fixtures.md",
653
- "sha256": "8eae659b6394f2f413e56338204d14d2e6eb18da3ac7a05eac344df4498e59f3",
654
- "bytes": 2099
663
+ "sha256": "c71f525973c895849e7b1cb8807ddac9e60c31afe16dd8e521960ca8cc178d51",
664
+ "bytes": 3067
655
665
  },
656
666
  {
657
667
  "path": "skills/short-drama-storyboard/references/scene-visual-plan.md",
@@ -660,8 +670,8 @@
660
670
  },
661
671
  {
662
672
  "path": "skills/short-drama-storyboard/references/screenplay-to-keyframe-example.md",
663
- "sha256": "6d4e033057765187905d1da244be66ebf21d7e9564066ce5e3d82f38f4f07d77",
664
- "bytes": 6744
673
+ "sha256": "85b2db8f0ba9c476c5c216170482cd9f6e1e4963f6ab97bace51fe4cb0386ab5",
674
+ "bytes": 7882
665
675
  },
666
676
  {
667
677
  "path": "skills/short-drama-storyboard/references/shot-craft.md",
@@ -675,8 +685,8 @@
675
685
  },
676
686
  {
677
687
  "path": "skills/short-drama-storyboard/references/stage-contract.md",
678
- "sha256": "7d5789002fa6d3b3720b0d58b3b1201da1261afce87068fcc02718fe843adc88",
679
- "bytes": 6519
688
+ "sha256": "2aabdd9043869ec87569b61f70e593517c91cdfc605c1deaa7f781241da6a86e",
689
+ "bytes": 8691
680
690
  },
681
691
  {
682
692
  "path": "skills/short-drama-storyboard/scripts/selftest.py",
@@ -685,13 +695,13 @@
685
695
  },
686
696
  {
687
697
  "path": "skills/short-drama-storyboard/scripts/storyboard_check.py",
688
- "sha256": "24272959aa5821863f5f06c7ad98a07d13a65d0fe695f8114f0c67809bcf26a5",
689
- "bytes": 31134
698
+ "sha256": "0f9956fd53782b6da43ab0d63bfda1f3b7be3ceb4a776d32f3272088f7be912d",
699
+ "bytes": 31133
690
700
  },
691
701
  {
692
702
  "path": "skills/short-drama-video-prompts/SKILL.md",
693
- "sha256": "cd6a1b78d2083a30f4a514addcdb08f4b1c73d06c673fc368feecc7e5ea07997",
694
- "bytes": 3958
703
+ "sha256": "de7681a06df9f7fa78d609065400ce1588fc929853614b125a231c4257dc5a34",
704
+ "bytes": 14289
695
705
  },
696
706
  {
697
707
  "path": "skills/short-drama-video-prompts/agents/openai.yaml",
@@ -710,8 +720,8 @@
710
720
  },
711
721
  {
712
722
  "path": "skills/short-drama-video-prompts/assets/motion-spec.jsonl.md",
713
- "sha256": "34b8d91552a46da190da55c462b7ad2bdb4eeb0e898eb375da0912cce034f1ff",
714
- "bytes": 7791
723
+ "sha256": "b7b03298bbedc14143ed136e009021a5673e6e99677ccc985aba2b73db5ce736",
724
+ "bytes": 7956
715
725
  },
716
726
  {
717
727
  "path": "skills/short-drama-video-prompts/assets/motion-terminal.example.jsonl",
@@ -730,8 +740,8 @@
730
740
  },
731
741
  {
732
742
  "path": "skills/short-drama-video-prompts/assets/video-prompts.md",
733
- "sha256": "0cad8182daf69a5955d026bd88eeb076f881f2b3e2f9eb6f73b50aa77aabff07",
734
- "bytes": 2935
743
+ "sha256": "e6aa175dc99c14d593b9bd61bf99c581f9986bf03fda4da28a4a5f3596045a39",
744
+ "bytes": 4634
735
745
  },
736
746
  {
737
747
  "path": "skills/short-drama-video-prompts/examples/minimal-music-specs.jsonl",
@@ -745,18 +755,23 @@
745
755
  },
746
756
  {
747
757
  "path": "skills/short-drama-video-prompts/references/delivery-profile.md",
748
- "sha256": "c4c4cdc491b68f201870f548e70ed196e29191d63003a2f591b0f79e9f18ebf5",
749
- "bytes": 18553
758
+ "sha256": "ce88cbc66e52246e2a4a77fc9db272c32db9fe6cb28d2d439d7ca5bfd6f0cf0f",
759
+ "bytes": 20373
750
760
  },
751
761
  {
752
762
  "path": "skills/short-drama-video-prompts/references/generability.md",
753
763
  "sha256": "c8ef1a75f24fdb1ad633e294a89b78e09589d2bd2177a31d252e25a7f5d2d79d",
754
764
  "bytes": 5233
755
765
  },
766
+ {
767
+ "path": "skills/short-drama-video-prompts/references/minimax-h3.md",
768
+ "sha256": "1f1e619cf0e5b5a84bb7d09d65748d5df11aba79bbbeb7d614240957a9905f9c",
769
+ "bytes": 9840
770
+ },
756
771
  {
757
772
  "path": "skills/short-drama-video-prompts/references/motion-recipe.md",
758
- "sha256": "be901691e53535c4fe663e5b1b14853692e95d1dafae3add989b842241f4e7ad",
759
- "bytes": 18602
773
+ "sha256": "60fecef7a573b364ddb3d13708a6d2adc432e939fefd09653d2749a23b91c87b",
774
+ "bytes": 20275
760
775
  },
761
776
  {
762
777
  "path": "skills/short-drama-video-prompts/references/performance-action-timing.md",
@@ -765,23 +780,38 @@
765
780
  },
766
781
  {
767
782
  "path": "skills/short-drama-video-prompts/references/production-prompt-grammar.md",
768
- "sha256": "a6098b2b94eee4c1a38018cbf04c467b7f08a5a16aff0aeba4fe63973f970208",
769
- "bytes": 22697
783
+ "sha256": "774b3fc3949a92ee3d1fe4f1daa2f278d5ecf2e4d93b19fb282ae0123b179abc",
784
+ "bytes": 23136
770
785
  },
771
786
  {
772
787
  "path": "skills/short-drama-video-prompts/references/review-and-fixtures.md",
773
788
  "sha256": "75b516ce26ffe0eb23893048eeabb86b3f90390bca35b5c398f24b86002172ec",
774
789
  "bytes": 9313
775
790
  },
791
+ {
792
+ "path": "skills/short-drama-video-prompts/references/seedance-2.0.md",
793
+ "sha256": "24a7a6f6b15088a015d7e646458de109017e1f52ba45f4171c46c5121f7f88f9",
794
+ "bytes": 2466
795
+ },
796
+ {
797
+ "path": "skills/short-drama-video-prompts/references/seedance-2.5.md",
798
+ "sha256": "c0365b29478aa81f5eeea78f07c83f1a8caff3f5ac56b4372ea629207835fdd6",
799
+ "bytes": 4427
800
+ },
776
801
  {
777
802
  "path": "skills/short-drama-video-prompts/references/stage-contract.md",
778
- "sha256": "0910cb1e451f2adc490999f6ad7308e596c7c3c77c4fd6dca6bfa2a038c29b05",
779
- "bytes": 7840
803
+ "sha256": "adc27a15538db3db3fb8d04278653c6cedb0c5944b1103559c4926549d69a4eb",
804
+ "bytes": 9932
805
+ },
806
+ {
807
+ "path": "skills/short-drama-video-prompts/references/target-model-profile.md",
808
+ "sha256": "0eb11385cb1a9d8108bc42044562e3b86f316acbc3752ea06fa1aba1fde6e1c1",
809
+ "bytes": 8709
780
810
  },
781
811
  {
782
812
  "path": "skills/short-drama-video-prompts/scripts/container_check.py",
783
- "sha256": "7753699cce40fd4616e24bfc452bf81c2db132c5f360cbca0a7f4e88724b0070",
784
- "bytes": 12663
813
+ "sha256": "74650a2e5c9fa982f82df17a4b5796f2f80280a1d4a6af69cf67fcafcb351837",
814
+ "bytes": 12662
785
815
  },
786
816
  {
787
817
  "path": "skills/short-drama-video-prompts/scripts/motion_timing_check.py",
@@ -790,8 +820,8 @@
790
820
  },
791
821
  {
792
822
  "path": "skills/short-drama-video-prompts/scripts/music_spec_check.py",
793
- "sha256": "8147116d0093ed6cf61710f4011c7d3d8e579bd425c872c8d0054adde2b425b7",
794
- "bytes": 12503
823
+ "sha256": "abcbd5d3fc55b281b5b05989b81919a0a8477bb85d4c580d47cc7de22b95c493",
824
+ "bytes": 12502
795
825
  },
796
826
  {
797
827
  "path": "skills/short-drama-video-prompts/scripts/selftest.py",
@@ -800,8 +830,8 @@
800
830
  },
801
831
  {
802
832
  "path": "skills/short-drama-write/SKILL.md",
803
- "sha256": "34671eae5ce637ec0a85969b5f404cc67953f9c00272633322ebabaf8aa4aec1",
804
- "bytes": 8174
833
+ "sha256": "859d01337ed392be36393d444d0222ee4742bafac8cd6cf4e3e8bcdd659a90cf",
834
+ "bytes": 8719
805
835
  },
806
836
  {
807
837
  "path": "skills/short-drama-write/agents/openai.yaml",
@@ -875,13 +905,13 @@
875
905
  },
876
906
  {
877
907
  "path": "skills/short-drama-write/scripts/duration_estimate.py",
878
- "sha256": "c53f38c0a1825a62358981fe04e3d39e51ff15401dfc81a3a4242da14f3a9286",
879
- "bytes": 12408
908
+ "sha256": "7e885c057d389a15ad47546890ad530cc2ec4ee860bc801959d3b838b2e341a8",
909
+ "bytes": 12407
880
910
  },
881
911
  {
882
912
  "path": "skills/short-drama-write/scripts/screenplay_index.py",
883
- "sha256": "53c07e39440d537424bc2de7b4c5df25f95c0565300b63102c256f53b682ed6a",
884
- "bytes": 43580
913
+ "sha256": "11ce6307b615e91ea9ff277212875c3adf5aafb58289bed5ff54f0f2d877dec9",
914
+ "bytes": 43578
885
915
  },
886
916
  {
887
917
  "path": "skills/short-drama-write/scripts/selftest.py",
@@ -890,13 +920,13 @@
890
920
  },
891
921
  {
892
922
  "path": "skills/short-drama-write/scripts/voice_sheet_check.py",
893
- "sha256": "e469bce96806d084e7b13e208810d3d1c470d049550fdfc9dd92d98782f6db17",
894
- "bytes": 15354
923
+ "sha256": "c3862db34546c6bad280e44c5cb08d680c250b7f62c73cb8bfe33876a9494753",
924
+ "bytes": 15353
895
925
  },
896
926
  {
897
927
  "path": "skills/short-drama/SKILL.md",
898
- "sha256": "a7217641a828b8c52778b9c2e0a19772c0faa0e830bc57ffa48e362a9a748b9f",
899
- "bytes": 4677
928
+ "sha256": "8cec2c92391c017074dd3a4fc8c3ab00a85b5e9c2f52870423499e488b88fc45",
929
+ "bytes": 9371
900
930
  },
901
931
  {
902
932
  "path": "skills/short-drama/agents/openai.yaml",
@@ -930,18 +960,18 @@
930
960
  },
931
961
  {
932
962
  "path": "skills/short-drama/references/contract-and-ownership.md",
933
- "sha256": "c5121d993dba89123a57ddb72e2503d6f03d2d968d91b902eb4f5372bcc4d66f",
934
- "bytes": 1705
963
+ "sha256": "8db8bda47e74619ad68bbd86dd0e63e3f6c9c27fb1a8a599a79950755c2507f3",
964
+ "bytes": 2419
935
965
  },
936
966
  {
937
967
  "path": "skills/short-drama/references/creator-documents.md",
938
- "sha256": "b317579f8061bc72c64e71f14d2b06670fa1efd3a5bc158f9489df2ee0174439",
939
- "bytes": 3200
968
+ "sha256": "d4e0c13e41859cc78aa902561060dcb2fde39b72a01edcf5924b58b19d17989a",
969
+ "bytes": 14026
940
970
  },
941
971
  {
942
972
  "path": "skills/short-drama/references/creator-workflow.md",
943
- "sha256": "4762b01714f67f03782f6e562c673c6d63c12a8e182bbf2e623a3c5a135334a7",
944
- "bytes": 3341
973
+ "sha256": "b7a6ef8d2fafce3fab1efbb91531dfa70a3d2713003f2cc1e3a14fc4d7afb626",
974
+ "bytes": 5660
945
975
  },
946
976
  {
947
977
  "path": "skills/short-drama/references/form-cards/Q版表达.md",
@@ -975,8 +1005,8 @@
975
1005
  },
976
1006
  {
977
1007
  "path": "skills/short-drama/references/knowhow-index.md",
978
- "sha256": "76716afc5e6b17b4faecd75a0a254c54d6e288ed3f2706a6e4f5932ead8f0d40",
979
- "bytes": 8746
1008
+ "sha256": "bfcf27e6456a2a4fac69e97b1b3c5beee29ced1422c5d8e80d1a8c9a0af7f6bc",
1009
+ "bytes": 9477
980
1010
  },
981
1011
  {
982
1012
  "path": "skills/short-drama/references/look-development.md",
@@ -995,18 +1025,23 @@
995
1025
  },
996
1026
  {
997
1027
  "path": "skills/short-drama/references/reference-roles.md",
998
- "sha256": "e944517369d4cd229618387acac6c2db59e2bc64fb9127a8a0c9e50c6e0d871e",
999
- "bytes": 2217
1028
+ "sha256": "536b50bdff1194ed3a8d3f72c3f1a4a75aa851fb30ce0a173853b469d4c26260",
1029
+ "bytes": 2873
1000
1030
  },
1001
1031
  {
1002
1032
  "path": "skills/short-drama/references/runtime-preflight.md",
1003
- "sha256": "8bbd461081668bb6f0aca8b144d878608ce673adbff6e6172ecb2ee336501981",
1004
- "bytes": 1033
1033
+ "sha256": "6f4473e6d8dc00ad4843d26c6c34c4560ef8ed8a457c23ea4f2236d2a14e9df4",
1034
+ "bytes": 1226
1035
+ },
1036
+ {
1037
+ "path": "skills/short-drama/scripts/creator_markdown_check.py",
1038
+ "sha256": "2ea4596b7f2de62065186fb09208baa86a345a54be1fd596630a7d5d702dd16e",
1039
+ "bytes": 43157
1005
1040
  },
1006
1041
  {
1007
1042
  "path": "skills/short-drama/scripts/project_tool.py",
1008
- "sha256": "21f842c22944ce58dd97825aaa98746f239a8cae79a11bf99d3f9fdee01a103d",
1009
- "bytes": 75655
1043
+ "sha256": "5a195d69a256056940af74e89cae862ad7af12b350e2554376df445747a19f69",
1044
+ "bytes": 95059
1010
1045
  },
1011
1046
  {
1012
1047
  "path": "skills/short-drama/scripts/selftest.py",
@@ -43,6 +43,14 @@ license: MIT
43
43
  3. 只有真实创作分叉才询问;不要拿 schema、目录、事务或检查器询问创作者。
44
44
  4. 范围完成后一次回报完成内容、关键决定、真实未决项和可选下一步。
45
45
  5. 不自动开始用户没点名的审查、归档或生产。
46
+ 6. 请求横跨视觉设定、图片提示词、分镜或视频提示词时,结束前按当前五文档做一次视觉依赖对账;
47
+ 不因图片提示词和分镜可并行,就把后完成的一支留在另一支的旧引用之外。
48
+ 7. 视频提示词请求遇到「输入参考图:无」或仍带「待补参考图」时,先路由分镜 owner 检查项目已有图片并刷新绑定。有匹配图就同请求续跑;有必要图缺失就列表停下。
49
+ 只有用户明确选择文生视频才允许无图续跑,不把“没有手工指定”当成这个选择。这一轮如果镜头还缺「视觉依据」,
50
+ 同时按已成稿的冻结关键帧回填;两条依据描述同一格画面,不要只补一条。
51
+ 8. 用户在会话里点名目标视频模型(“按 MiniMax H3 写”“用 Seedance 2.5”)而 `short-drama.json` 的
52
+ `production_profile` 还是 `unset` 时,先把这个选择连同它带来的原生时长、参考方式和正文语言写进档案,
53
+ 再继续下游阶段。会话里的一句点名不落到档案上,下一轮就会退回通用路径,方言和时长要重猜。
46
54
 
47
55
  ## 初始化与 Dashboard
48
56
 
@@ -52,13 +60,51 @@ license: MIT
52
60
  python3 {技能目录}/scripts/project_tool.py init ./my-drama --title "示例短剧"
53
61
  ```
54
62
 
63
+ 直接输入已经确认创作者说明语言、提示词语言、画幅、集数或单集目标时长时,首次 `init` 就带上对应的
64
+ `--language`、`--prompt-language`、`--aspect-ratio`、`--episode-count`、`--target-seconds`;只省略
65
+ 未确认项,不让 Brief 中的确定事实留成配置里的 `null`。写入已确认的生产档案时,状态统一为
66
+ `accepted`;`unset` 只表示尚未决定,不另造中间状态。
55
67
  `init` 只建立配置和空目录;第一次创作时再把文档写入 `剧集/<EP>/`,不预建空文件。
68
+ 项目已经建好、用户之后才定下目标视频模型时,把选择写进档案,并同时展示它对时长区间、参考方式和
69
+ 正文语言的影响。档案只接受已发布并已接受的创作者决策,所以是三步,不是一步。先写一行决策记录
70
+ (`accepted_value` 就是要落进 `choices` 的对象本身,不要再包一层 `choices`):
71
+
72
+ ```jsonl
73
+ {"decision_id":"CD-H3","status":"accepted","target_locators":[{"src":"short-drama","field":"/creator_authority/production_profile/choices"}],"accepted_value":{"target_video_model":"minimax-h3","video_prompt_dialect":"minimax-h3","video_prompt_language":"en","native_duration_seconds":{"min":4,"max":15},"supported_generation_modes":["text","first_frame","first_last_frame","reference"],"audio_generation":"same_pass"}}
74
+ ```
75
+
76
+ 再发布、接受、写入:
77
+
78
+ ```bash
79
+ python3 {技能目录}/scripts/project_tool.py publish <project> --owner short-drama \
80
+ --artifact-id AR-PROFILE --output "创作者决策/production-profile.jsonl=输入/profile.jsonl"
81
+ python3 {技能目录}/scripts/project_tool.py accept <project> --artifact-id AR-PROFILE --decision accepted
82
+ python3 {技能目录}/scripts/project_tool.py set-authority <project> \
83
+ --field /creator_authority/production_profile/choices \
84
+ --decision-ref "创作者决策/production-profile.jsonl#CD-H3"
85
+ ```
86
+
87
+ 各字段取值由命中的模型方言给出:`$short-drama-video-prompts` 的 MiniMax H3 / Seedance 方言文件都写了
88
+ 推荐档案。写完用 `status` 复核 `video_model_profile` 是否已经出现。
89
+
56
90
  项目定位与安全写入见 [运行预检](references/runtime-preflight.md)。用户明确要求 Dashboard 时运行:
57
91
 
58
92
  ```bash
59
- python3 {技能目录}/scripts/dashboard_server.py --workspace <workspace> --port 0 --open
93
+ python3 {技能目录}/scripts/dashboard_server.py --workspace <workspace> --port 0 --detach --open
60
94
  ```
61
95
 
96
+ `--detach` 让服务进程脱离当前 shell 独立运行,会话结束、终端关闭或智能体退出都不会带走它;
97
+ 链接因此在整个创作期间保持有效。运行中的地址、端口和 pid 记录在
98
+ `<workspace>/.short-drama/dashboard.json`(仅本人可读),日志在同目录 `dashboard.log`:
99
+
100
+ ```bash
101
+ python3 {技能目录}/scripts/dashboard_server.py --workspace <workspace> --status # 打印当前链接
102
+ python3 {技能目录}/scripts/dashboard_server.py --workspace <workspace> --stop # 停止
103
+ ```
104
+
105
+ 同一 workspace 已有在跑的 Dashboard 时,再次启动只会打印同一个链接,不再开第二个端口;确实要换
106
+ 端口或换令牌时加 `--restart`。不加 `--detach` 时行为不变:前台运行,Ctrl-C 结束。
107
+
62
108
  Dashboard 展示和编辑创作文件,不负责工作流编排或媒体生产。
63
109
 
64
110
  ## 项目级创作决定
@@ -81,6 +127,20 @@ Look Development 是可选分支,不是进入图片提示词或分镜的固定
81
127
  外部生产永远保留 `preview -> explicit confirm -> run`。归档只复制用户点名的当前文档和成品,排除
82
128
  私有输入、凭据、绝对路径与隐藏运行状态;不为归档补造审批、哈希或第二套内容。
83
129
 
130
+ 用户问“做完了怎么导出/交付给我”时,用 `export` 打包当前状态:
131
+
132
+ ```bash
133
+ python3 {技能目录}/scripts/project_tool.py export <project> --out <项目外目录>
134
+ ```
135
+
136
+ 它把每集现有的五份创作文档和 `剧集/<EP>/制作成果/` 复制到 `--out`,附 `manifest.json` 与
137
+ `checksums.sha256`,并排除 `输入/`、`交付/` 和 `.short-drama/`。只要一部分时加
138
+ `--episode EP001`(可重复);只要文字时加 `--no-media`;覆盖旧目录加 `--overwrite`。
139
+ `--out` 必须在项目之外。
140
+
141
+ `export` 是**当前状态快照**,manifest 里 `asserts_approval` 恒为 `false`:它不声称任何审查或
142
+ 创作者接受。需要带审批证据的正式交付包仍然只有 `package`/`verify` 那条路径。
143
+
84
144
  ## 安装维护
85
145
 
86
146
  只有安装、升级或排障时运行 `python3 scripts/selftest.py`。
@@ -16,14 +16,17 @@
16
16
  | 内容 | 有项目配置时 | 独立任务默认 |
17
17
  |---|---|---|
18
18
  | 创作者可读说明与审查 | `short-drama.json#/language` | 用户当前语言 |
19
- | 图片、关键帧、视频的可复制正文 | `short-drama.json#/format/prompt_language` | `en` |
19
+ | 图片、关键帧的可复制正文 | `short-drama.json#/format/prompt_language` | `en` |
20
+ | 视频的可复制正文 | 目标视频模型档案的 `production_profile.choices.video_prompt_language`;未声明时回退 `format.prompt_language` | 根据目标视频模型确认;未声明时使用用户当前语言 |
20
21
 
21
- 两种语言互相独立;画面中的对白和可读文字来自剧本/视觉事实,不由描述语言推断。
22
+ 创作者说明、通用提示词语言和视频模型提示词语言互相独立;画面中的对白和可读文字来自剧本/视觉事实,
23
+ 不由描述语言推断。
22
24
 
23
25
  ## 稳定身份与引用
24
26
 
25
- 使用创作者可见的稳定 ID:`EP001-SC001`、`IMG-...`、`SHOT-...`、`MOTION-...`。显示名可以改变,
26
- 身份不因此改变。跨文档引用直接写这些 ID;不写哈希、内部路径、隐藏状态或第二套 record ID。
27
+ 创作文档条目使用创作者可见的稳定 ID:`EP001-SC001`、`IMG-...`、`SHOT-...`、`MOTION-...`。其中 `IMG-...` 专属《图片提示词.md》的提示词标题,不代表已有图片。显示名可以改变,身份不因此改变。跨文档条目引用直接写这些 ID;不写哈希、内部路径、隐藏状态或第二套 record ID。
28
+
29
+ 真实输入参考图不是图片提示词条目,所以每张图使用独立稳定的 `REF-...` 槽位,槽位内写显式顺序、可见项目相对路径、中文名称、用途和控制范围。它不使用 `IMG-...`;路径只用 `/` 分隔,不写绝对路径、Windows 盘符/网络路径或项目外路径。
27
30
 
28
31
  ## 规则分级
29
32