@oh-story/dsh 0.1.3 → 0.1.5

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 (524) hide show
  1. package/README.md +58 -12
  2. package/lib/client.js +2970 -537
  3. package/lib/client.js.map +4 -4
  4. package/lib/drama/manifest.json +218 -178
  5. package/lib/drama/skills/short-drama/SKILL.md +110 -117
  6. package/lib/drama/skills/short-drama/references/audience-reveal.md +14 -67
  7. package/lib/drama/skills/short-drama/references/contract-and-ownership.md +26 -77
  8. package/lib/drama/skills/short-drama/references/creator-documents.md +204 -0
  9. package/lib/drama/skills/short-drama/references/creator-workflow.md +73 -63
  10. package/lib/drama/skills/short-drama/references/knowhow-index.md +5 -0
  11. package/lib/drama/skills/short-drama/references/look-development.md +2 -3
  12. package/lib/drama/skills/short-drama/references/pickup-and-alternate.md +14 -48
  13. package/lib/drama/skills/short-drama/references/production-form-profiles.md +1 -1
  14. package/lib/drama/skills/short-drama/references/reference-roles.md +32 -135
  15. package/lib/drama/skills/short-drama/references/runtime-preflight.md +16 -19
  16. package/lib/drama/skills/short-drama/scripts/creator_markdown_check.py +1002 -0
  17. package/lib/drama/skills/short-drama/scripts/project_tool.py +485 -5
  18. package/lib/drama/skills/short-drama-assets/SKILL.md +59 -170
  19. package/lib/drama/skills/short-drama-assets/references/asset-review-checklist.md +18 -25
  20. package/lib/drama/skills/short-drama-assets/references/character-and-look.md +13 -15
  21. package/lib/drama/skills/short-drama-assets/references/continuity-delta.md +11 -14
  22. package/lib/drama/skills/short-drama-assets/references/continuity-lock.md +116 -0
  23. package/lib/drama/skills/short-drama-assets/references/identity-vs-variant.md +6 -12
  24. package/lib/drama/skills/short-drama-assets/references/occurrence-extraction.md +8 -11
  25. package/lib/drama/skills/short-drama-assets/references/prop-and-state.md +21 -2
  26. package/lib/drama/skills/short-drama-assets/references/stage-contract.md +12 -105
  27. package/lib/drama/skills/short-drama-assets/references/voice-direction.md +12 -32
  28. package/lib/drama/skills/short-drama-assets/scripts/asset_check.py +1 -1
  29. package/lib/drama/skills/short-drama-image-prompts/SKILL.md +45 -155
  30. package/lib/drama/skills/short-drama-image-prompts/references/character-and-look.md +12 -13
  31. package/lib/drama/skills/short-drama-image-prompts/references/common-recipe.md +12 -13
  32. package/lib/drama/skills/short-drama-image-prompts/references/edit-and-revision.md +39 -51
  33. package/lib/drama/skills/short-drama-image-prompts/references/location-plate.md +3 -4
  34. package/lib/drama/skills/short-drama-image-prompts/references/look-and-state-variant.md +15 -14
  35. package/lib/drama/skills/short-drama-image-prompts/references/lookdev-frame.md +11 -15
  36. package/lib/drama/skills/short-drama-image-prompts/references/production-sheet-recipes.md +1 -1
  37. package/lib/drama/skills/short-drama-image-prompts/references/prop-plate.md +4 -7
  38. package/lib/drama/skills/short-drama-image-prompts/references/review-and-fixtures.md +23 -23
  39. package/lib/drama/skills/short-drama-image-prompts/references/stage-contract.md +8 -65
  40. package/lib/drama/skills/short-drama-image-prompts/scripts/image_prompt_check.py +8 -8
  41. package/lib/drama/skills/short-drama-image-prompts/scripts/selftest.py +4 -2
  42. package/lib/drama/skills/short-drama-produce/SKILL.md +67 -15
  43. package/lib/drama/skills/short-drama-produce/references/adapter-contract.md +65 -8
  44. package/lib/drama/skills/short-drama-produce/references/providers/minimax-h3-video.md +85 -0
  45. package/lib/drama/skills/short-drama-produce/references/providers/seedance.md +27 -10
  46. package/lib/drama/skills/short-drama-produce/scripts/production_tool.py +362 -3
  47. package/lib/drama/skills/short-drama-produce/scripts/provider_adapters.py +627 -40
  48. package/lib/drama/skills/short-drama-produce/scripts/selftest.py +5 -4
  49. package/lib/drama/skills/short-drama-review/SKILL.md +61 -123
  50. package/lib/drama/skills/short-drama-review/references/anti-template-repair.md +10 -15
  51. package/lib/drama/skills/short-drama-review/references/production-quality-gates.md +15 -16
  52. package/lib/drama/skills/short-drama-review/references/project-calibration.md +7 -9
  53. package/lib/drama/skills/short-drama-review/references/review-method.md +8 -9
  54. package/lib/drama/skills/short-drama-review/references/rubric-assets-prompts.md +9 -13
  55. package/lib/drama/skills/short-drama-review/references/rubric-story-script.md +104 -4
  56. package/lib/drama/skills/short-drama-review/references/rubric-visual-motion.md +27 -19
  57. package/lib/drama/skills/short-drama-review/references/stage-contract.md +4 -63
  58. package/lib/drama/skills/short-drama-review/scripts/review_check.py +1 -1
  59. package/lib/drama/skills/short-drama-storyboard/SKILL.md +116 -238
  60. package/lib/drama/skills/short-drama-storyboard/assets/shot-template.jsonl +1 -1
  61. package/lib/drama/skills/short-drama-storyboard/references/blocking-playbooks.md +9 -34
  62. package/lib/drama/skills/short-drama-storyboard/references/comic-keyframe-lexicon.md +156 -0
  63. package/lib/drama/skills/short-drama-storyboard/references/coverage-audition.md +5 -10
  64. package/lib/drama/skills/short-drama-storyboard/references/keyframe-craft.md +12 -7
  65. package/lib/drama/skills/short-drama-storyboard/references/production-shot-grammar.md +19 -4
  66. package/lib/drama/skills/short-drama-storyboard/references/review-and-fixtures.md +27 -62
  67. package/lib/drama/skills/short-drama-storyboard/references/scene-visual-plan.md +16 -25
  68. package/lib/drama/skills/short-drama-storyboard/references/screenplay-to-keyframe-example.md +21 -23
  69. package/lib/drama/skills/short-drama-storyboard/references/shot-craft.md +8 -10
  70. package/lib/drama/skills/short-drama-storyboard/references/shot-revision-identity.md +9 -13
  71. package/lib/drama/skills/short-drama-storyboard/references/stage-contract.md +16 -71
  72. package/lib/drama/skills/short-drama-storyboard/scripts/storyboard_check.py +1 -1
  73. package/lib/drama/skills/short-drama-video-prompts/SKILL.md +123 -230
  74. package/lib/drama/skills/short-drama-video-prompts/assets/motion-spec.jsonl.md +6 -1
  75. package/lib/drama/skills/short-drama-video-prompts/assets/video-prompts.md +17 -1
  76. package/lib/drama/skills/short-drama-video-prompts/references/camera-audio-continuity.md +10 -8
  77. package/lib/drama/skills/short-drama-video-prompts/references/delivery-profile.md +24 -6
  78. package/lib/drama/skills/short-drama-video-prompts/references/generability.md +2 -2
  79. package/lib/drama/skills/short-drama-video-prompts/references/minimax-h3.md +154 -0
  80. package/lib/drama/skills/short-drama-video-prompts/references/motion-recipe.md +35 -27
  81. package/lib/drama/skills/short-drama-video-prompts/references/performance-action-timing.md +8 -11
  82. package/lib/drama/skills/short-drama-video-prompts/references/production-prompt-grammar.md +13 -10
  83. package/lib/drama/skills/short-drama-video-prompts/references/review-and-fixtures.md +34 -63
  84. package/lib/drama/skills/short-drama-video-prompts/references/seedance-2.0.md +41 -0
  85. package/lib/drama/skills/short-drama-video-prompts/references/seedance-2.5.md +66 -0
  86. package/lib/drama/skills/short-drama-video-prompts/references/stage-contract.md +17 -73
  87. package/lib/drama/skills/short-drama-video-prompts/references/target-model-profile.md +115 -0
  88. package/lib/drama/skills/short-drama-video-prompts/scripts/container_check.py +1 -1
  89. package/lib/drama/skills/short-drama-video-prompts/scripts/music_spec_check.py +1 -1
  90. package/lib/drama/skills/short-drama-write/SKILL.md +74 -268
  91. package/lib/drama/skills/short-drama-write/references/dialogue-craft.md +7 -0
  92. package/lib/drama/skills/short-drama-write/references/scene-handoff-capsule.md +17 -43
  93. package/lib/drama/skills/short-drama-write/references/screenplay-format.md +15 -15
  94. package/lib/drama/skills/short-drama-write/references/script-craft.md +208 -21
  95. package/lib/drama/skills/short-drama-write/references/stage-contract.md +11 -70
  96. package/lib/drama/skills/short-drama-write/scripts/duration_estimate.py +1 -1
  97. package/lib/drama/skills/short-drama-write/scripts/screenplay_index.py +2 -2
  98. package/lib/drama/skills/short-drama-write/scripts/voice_sheet_check.py +1 -1
  99. package/lib/index.js +971 -46
  100. package/lib/index.js.map +4 -4
  101. package/lib/novel-to-game/LICENSE +21 -0
  102. package/lib/novel-to-game/README.md +180 -0
  103. package/lib/novel-to-game/README_ZH.md +178 -0
  104. package/lib/novel-to-game/VERSION +1 -0
  105. package/lib/novel-to-game/examples/jin-ping-mei/build/BUILD_BRIEF.md +217 -0
  106. package/lib/novel-to-game/examples/jin-ping-mei/build/app/.vercelignore +3 -0
  107. package/lib/novel-to-game/examples/jin-ping-mei/build/app/RUN.md +130 -0
  108. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/bg/compound_new_guofeng.webp +0 -0
  109. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/finale/fate_coda.webp +0 -0
  110. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/finale/meng.webp +0 -0
  111. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/finale/pan.webp +0 -0
  112. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/finale/pinger.webp +0 -0
  113. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/finale/xuee.webp +0 -0
  114. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/finale/yue.webp +0 -0
  115. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/group/inner_court_accord_five.webp +0 -0
  116. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/group/inner_court_afterglow_five.webp +0 -0
  117. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/group/inner_court_alliance.webp +0 -0
  118. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/group/public_day10.webp +0 -0
  119. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/group/public_day15.webp +0 -0
  120. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/group/public_day5.webp +0 -0
  121. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/group/title_new_guofeng.webp +0 -0
  122. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/joint/pan_pinger.webp +0 -0
  123. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/joint/pan_xuee.webp +0 -0
  124. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/joint/yue_meng.webp +0 -0
  125. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/joint/yue_pan.webp +0 -0
  126. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/joint/yue_pinger.webp +0 -0
  127. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/meng/explicit.webp +0 -0
  128. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/meng/prelude.webp +0 -0
  129. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/milestone/meng.webp +0 -0
  130. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/milestone/pan.webp +0 -0
  131. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/milestone/pinger.webp +0 -0
  132. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/milestone/xuee.webp +0 -0
  133. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/milestone/yue.webp +0 -0
  134. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/pan/explicit.webp +0 -0
  135. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/pan/prelude.webp +0 -0
  136. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/pinger/explicit.webp +0 -0
  137. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/pinger/prelude.webp +0 -0
  138. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/xuee/explicit.webp +0 -0
  139. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/xuee/prelude.webp +0 -0
  140. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/yue/explicit.webp +0 -0
  141. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/yue/prelude.webp +0 -0
  142. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/heroine/meng/night.webp +0 -0
  143. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/heroine/pan/night.webp +0 -0
  144. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/heroine/pinger/night.webp +0 -0
  145. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/heroine/xuee/night.webp +0 -0
  146. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/heroine/yue/night.webp +0 -0
  147. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/household/li_jiaoer.webp +0 -0
  148. package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/scene/gate_collector.webp +0 -0
  149. package/lib/novel-to-game/examples/jin-ping-mei/build/app/css/new-guofeng.css +1105 -0
  150. package/lib/novel-to-game/examples/jin-ping-mei/build/app/css/style.css +2539 -0
  151. package/lib/novel-to-game/examples/jin-ping-mei/build/app/index.html +18 -0
  152. package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/assets.js +147 -0
  153. package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/audio.js +332 -0
  154. package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/data.js +7472 -0
  155. package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/engine.js +13077 -0
  156. package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/main.js +3028 -0
  157. package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/text.js +32 -0
  158. package/lib/novel-to-game/examples/jin-ping-mei/build/app/package.json +10 -0
  159. package/lib/novel-to-game/examples/jin-ping-mei/build/app/vercel.json +23 -0
  160. package/lib/novel-to-game/examples/jin-ping-mei/build/art/generated-art.json +161 -0
  161. package/lib/novel-to-game/examples/jin-ping-mei/example.json +12 -0
  162. package/lib/novel-to-game/examples/jin-ping-mei/qa/README.md +31 -0
  163. package/lib/novel-to-game/examples/jin-ping-mei/qa/playable-model.json +99 -0
  164. package/lib/novel-to-game/examples/jin-ping-mei/qa/verification.json +41 -0
  165. package/lib/novel-to-game/examples/jin-ping-mei/qa/verify_playable_model.mjs +129 -0
  166. package/lib/novel-to-game/manifest.json +508 -0
  167. package/lib/novel-to-game/skills/game-art-direction/SKILL.md +73 -0
  168. package/lib/novel-to-game/skills/game-art-direction/agents/openai.yaml +4 -0
  169. package/lib/novel-to-game/skills/game-art-direction/references/art-direction-method.md +119 -0
  170. package/lib/novel-to-game/skills/game-build/SKILL.md +84 -0
  171. package/lib/novel-to-game/skills/game-build/agents/openai.yaml +4 -0
  172. package/lib/novel-to-game/skills/game-build/references/build-brief-contract.md +109 -0
  173. package/lib/novel-to-game/skills/game-build/references/generative-media-pipeline.md +56 -0
  174. package/lib/novel-to-game/skills/game-build/references/playable-model-contract.md +81 -0
  175. package/lib/novel-to-game/skills/game-build/references/tts-production-contract.md +37 -0
  176. package/lib/novel-to-game/skills/game-concept/SKILL.md +72 -0
  177. package/lib/novel-to-game/skills/game-concept/agents/openai.yaml +4 -0
  178. package/lib/novel-to-game/skills/game-concept/references/concept-method.md +94 -0
  179. package/lib/novel-to-game/skills/game-qa/SKILL.md +50 -0
  180. package/lib/novel-to-game/skills/game-qa/agents/openai.yaml +4 -0
  181. package/lib/novel-to-game/skills/game-qa/references/qa-contract.md +66 -0
  182. package/lib/novel-to-game/skills/game-qa/references/test-design-method.md +45 -0
  183. package/lib/novel-to-game/skills/game-world-design/SKILL.md +63 -0
  184. package/lib/novel-to-game/skills/game-world-design/agents/openai.yaml +4 -0
  185. package/lib/novel-to-game/skills/game-world-design/references/dialogue-design-method.md +59 -0
  186. package/lib/novel-to-game/skills/game-world-design/references/game-writing-craft.md +53 -0
  187. package/lib/novel-to-game/skills/game-world-design/references/narrative-design-method.md +84 -0
  188. package/lib/novel-to-game/skills/game-world-design/references/numeric-design-method.md +56 -0
  189. package/lib/novel-to-game/skills/game-world-design/references/world-design-method.md +124 -0
  190. package/lib/novel-to-game/skills/novel-game-analyze/SKILL.md +77 -0
  191. package/lib/novel-to-game/skills/novel-game-analyze/agents/openai.yaml +4 -0
  192. package/lib/novel-to-game/skills/novel-game-analyze/references/gameability-protocol.md +65 -0
  193. package/lib/novel-to-game/skills/novel-to-game/SKILL.md +71 -0
  194. package/lib/novel-to-game/skills/novel-to-game/agents/openai.yaml +4 -0
  195. package/lib/novel-to-game/skills/novel-to-game/references/intake-benchmark-reference.md +42 -0
  196. package/lib/novel-to-game/skills/novel-to-game/references/intake-method.md +51 -0
  197. package/lib/novel-to-game/skills/novel-to-game/references/pipeline-contract.md +65 -0
  198. package/lib/oh-story/manifest.json +419 -309
  199. package/lib/oh-story/roles/character-designer.md +4 -4
  200. package/lib/oh-story/roles/consistency-checker.md +1 -1
  201. package/lib/oh-story/roles/narrative-writer.md +41 -42
  202. package/lib/oh-story/roles/story-architect.md +19 -23
  203. package/lib/oh-story/roles/story-explorer.md +8 -5
  204. package/lib/oh-story/skills/browser-cdp/SKILL.md +1 -1
  205. package/lib/oh-story/skills/story/SKILL.md +16 -9
  206. package/lib/oh-story/skills/story/VERSION +1 -1
  207. package/lib/oh-story/skills/story/references/author-memory.md +163 -0
  208. package/lib/oh-story/skills/story/scripts/author_memory_commit.py +871 -0
  209. package/lib/oh-story/skills/story-cover/SKILL.md +1 -1
  210. package/lib/oh-story/skills/story-deslop/SKILL.md +10 -5
  211. package/lib/oh-story/skills/story-deslop/references/anti-ai-writing.md +2 -1
  212. package/lib/oh-story/skills/story-deslop/references/author-memory.md +163 -0
  213. package/lib/oh-story/skills/story-deslop/references/banned-words.md +6 -4
  214. package/lib/oh-story/skills/story-deslop/scripts/author_memory_commit.py +871 -0
  215. package/lib/oh-story/skills/story-deslop/scripts/check-ai-patterns.js +64 -1
  216. package/lib/oh-story/skills/story-import/SKILL.md +21 -8
  217. package/lib/oh-story/skills/story-import/references/format-and-structure.md +9 -10
  218. package/lib/oh-story/skills/story-import/references/structure-mapping-long.md +2 -2
  219. package/lib/oh-story/skills/story-import/references/structure-mapping-short.md +1 -1
  220. package/lib/oh-story/skills/story-import/references/tracking-transaction.md +14 -6
  221. package/lib/oh-story/skills/story-import/scripts/check-outline-contract.js +251 -0
  222. package/lib/oh-story/skills/story-import/scripts/tracking_commit.py +98 -9
  223. package/lib/oh-story/skills/story-import/scripts/wordcount_core.py +246 -0
  224. package/lib/oh-story/skills/story-long-analyze/SKILL.md +4 -4
  225. package/lib/oh-story/skills/story-long-scan/SKILL.md +1 -1
  226. package/lib/oh-story/skills/story-long-write/SKILL.md +35 -21
  227. package/lib/oh-story/skills/story-long-write/references/anti-ai-writing.md +2 -1
  228. package/lib/oh-story/skills/story-long-write/references/artifact-protocols.md +7 -3
  229. package/lib/oh-story/skills/story-long-write/references/author-memory.md +163 -0
  230. package/lib/oh-story/skills/story-long-write/references/banned-words.md +6 -4
  231. package/lib/oh-story/skills/story-long-write/references/cross-book-recall.md +6 -6
  232. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards.md +1 -1
  233. package/lib/oh-story/skills/story-long-write/references/genre-readers.md +1 -1
  234. package/lib/oh-story/skills/{story-setup/references/agent-references/hooks-chapter.md → story-long-write/references/long-chapter-hooks.md} +5 -5
  235. package/lib/oh-story/skills/story-long-write/references/{quality-checklist.md → long-chapter-quality.md} +2 -1
  236. package/lib/oh-story/skills/story-long-write/references/long-format.md +42 -0
  237. package/lib/oh-story/skills/{story-setup/references/agent-references/genre-catalog.md → story-long-write/references/long-genre-catalog.md} +11 -97
  238. package/lib/oh-story/skills/story-long-write/references/{genre-core-mechanics.md → long-genre-mechanics.md} +1 -1
  239. package/lib/oh-story/skills/story-long-write/references/{reversal-toolkit.md → long-reversal.md} +18 -32
  240. package/lib/oh-story/skills/story-long-write/references/{hooks-suspense.md → long-suspense.md} +6 -6
  241. package/lib/oh-story/skills/story-long-write/references/opening-design.md +1 -1
  242. package/lib/oh-story/skills/story-long-write/references/outline-structure-theory.md +1 -1
  243. package/lib/oh-story/skills/story-long-write/references/style-genre-modules.md +1 -1
  244. package/lib/oh-story/skills/story-long-write/references/tracking-transaction.md +14 -6
  245. package/lib/oh-story/skills/story-long-write/references/workflow-chapter.md +32 -27
  246. package/lib/oh-story/skills/story-long-write/references/workflow-daily.md +5 -4
  247. package/lib/oh-story/skills/story-long-write/references/workflow-revision.md +2 -2
  248. package/lib/oh-story/skills/story-long-write/references/workflow-setup.md +17 -11
  249. package/lib/oh-story/skills/story-long-write/references/writing-craft.md +54 -54
  250. package/lib/oh-story/skills/story-long-write/scripts/author_memory_commit.py +871 -0
  251. package/lib/oh-story/skills/story-long-write/scripts/check-ai-patterns.js +64 -1
  252. package/lib/oh-story/skills/story-long-write/scripts/check-outline-contract.js +251 -0
  253. package/lib/oh-story/skills/story-long-write/scripts/storyctl.py +303 -0
  254. package/lib/oh-story/skills/story-long-write/scripts/tracking_commit.py +98 -9
  255. package/lib/oh-story/skills/story-long-write/scripts/wordcount_core.py +246 -0
  256. package/lib/oh-story/skills/story-review/SKILL.md +26 -17
  257. package/lib/oh-story/skills/story-review/references/anti-ai-writing.md +2 -1
  258. package/lib/oh-story/skills/story-review/references/author-memory.md +163 -0
  259. package/lib/oh-story/skills/story-review/references/banned-words.md +6 -4
  260. package/lib/oh-story/skills/story-review/references/{quality-checklist.md → review-quality.md} +22 -21
  261. package/lib/oh-story/skills/story-review/references/tracking-transaction.md +14 -6
  262. package/lib/oh-story/skills/story-review/scripts/author_memory_commit.py +871 -0
  263. package/lib/oh-story/skills/story-review/scripts/check-ai-patterns.js +64 -1
  264. package/lib/oh-story/skills/story-review/scripts/tracking_commit.py +98 -9
  265. package/lib/oh-story/skills/story-review/scripts/wordcount_core.py +246 -0
  266. package/lib/oh-story/skills/story-setup/SKILL.md +85 -41
  267. package/lib/oh-story/skills/story-setup/references/agent-references/agent-quality.md +72 -0
  268. package/lib/oh-story/skills/story-setup/references/agent-references/agent-reference-profiles.md +55 -0
  269. package/lib/oh-story/skills/story-setup/references/agent-references/anti-ai-writing.md +2 -1
  270. package/lib/oh-story/skills/story-setup/references/agent-references/banned-words.md +6 -4
  271. package/lib/oh-story/skills/story-setup/references/agent-references/format-and-structure.md +9 -10
  272. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards.md +1 -1
  273. package/lib/oh-story/skills/story-setup/references/agent-references/genre-readers.md +1 -1
  274. package/lib/oh-story/skills/{story-short-analyze/references/hooks-chapter.md → story-setup/references/agent-references/long-chapter-hooks.md} +5 -5
  275. package/lib/oh-story/skills/story-setup/references/agent-references/long-emotional-methods.md +209 -0
  276. package/lib/oh-story/skills/{story-long-write/references/genre-catalog.md → story-setup/references/agent-references/long-genre-catalog.md} +11 -97
  277. package/lib/oh-story/skills/story-setup/references/agent-references/{genre-core-mechanics.md → long-genre-mechanics.md} +1 -1
  278. package/lib/oh-story/skills/story-setup/references/agent-references/long-quality.md +40 -0
  279. package/lib/oh-story/skills/{story-short-write/references/reversal-toolkit.md → story-setup/references/agent-references/long-reversal.md} +18 -32
  280. package/lib/oh-story/skills/{story-short-write/references/hooks-suspense.md → story-setup/references/agent-references/long-suspense.md} +6 -6
  281. package/lib/oh-story/skills/story-setup/references/agent-references/opening-design.md +1 -1
  282. package/lib/oh-story/skills/story-setup/references/agent-references/{emotional-methods.md → short-emotional-methods.md} +4 -4
  283. package/lib/oh-story/skills/{story-long-write/references/genre-writing-formulas.md → story-setup/references/agent-references/short-genre-formulas.md} +32 -44
  284. package/lib/oh-story/skills/story-setup/references/agent-references/short-quality.md +39 -0
  285. package/lib/oh-story/skills/story-setup/references/agent-references/{reversal-toolkit.md → short-reversal.md} +29 -23
  286. package/lib/oh-story/skills/story-setup/references/agent-references/{hooks-suspense.md → short-suspense.md} +31 -31
  287. package/lib/oh-story/skills/story-setup/references/agent-references/style-genre-modules.md +1 -1
  288. package/lib/oh-story/skills/story-setup/references/agent-references/writing-craft.md +55 -55
  289. package/lib/oh-story/skills/story-short-analyze/SKILL.md +28 -28
  290. package/lib/oh-story/skills/story-short-analyze/references/{character-basics.md → analysis-character-basics.md} +1 -1
  291. package/lib/oh-story/skills/story-short-analyze/references/{character-design-methods.md → analysis-character-design.md} +1 -1
  292. package/lib/oh-story/skills/story-short-analyze/references/{character-relations.md → analysis-character-relations.md} +1 -1
  293. package/lib/oh-story/skills/story-short-analyze/references/{hooks-paragraph.md → analysis-paragraph-hooks.md} +1 -1
  294. package/lib/oh-story/skills/story-short-analyze/references/{genre-readers.md → analysis-reader-profile.md} +2 -2
  295. package/lib/oh-story/skills/story-short-analyze/references/analysis-report-style.md +45 -0
  296. package/lib/oh-story/skills/story-short-analyze/references/analysis-short-genres.md +65 -0
  297. package/lib/oh-story/skills/story-short-analyze/references/analysis-short-hooks.md +77 -0
  298. package/lib/oh-story/skills/story-short-analyze/references/analysis-short-mechanics.md +82 -0
  299. package/lib/oh-story/skills/story-short-analyze/references/analysis-short-patterns.md +50 -0
  300. package/lib/oh-story/skills/story-short-analyze/references/analysis-short-suspense.md +98 -0
  301. package/lib/oh-story/skills/story-short-analyze/references/{genre-writing-techniques.md → analysis-writing-techniques.md} +21 -19
  302. package/lib/oh-story/skills/story-short-analyze/references/deconstruction-examples.md +1 -1
  303. package/lib/oh-story/skills/story-short-analyze/references/material-decomposition.md +21 -28
  304. package/lib/oh-story/skills/story-short-analyze/references/output-contract.md +1 -1
  305. package/lib/oh-story/skills/story-short-analyze/references/output-templates.md +17 -17
  306. package/lib/oh-story/skills/story-short-analyze/references/{quality-checklist.md → source-story-quality.md} +28 -49
  307. package/lib/oh-story/skills/story-short-analyze/references/zhihu-style.md +2 -2
  308. package/lib/oh-story/skills/story-short-scan/SKILL.md +1 -1
  309. package/lib/oh-story/skills/story-short-write/SKILL.md +78 -55
  310. package/lib/oh-story/skills/story-short-write/references/author-memory.md +163 -0
  311. package/lib/oh-story/skills/story-short-write/references/banned-words.md +6 -4
  312. package/lib/oh-story/skills/story-short-write/references/cross-book-recall.md +3 -3
  313. package/lib/oh-story/skills/story-short-write/references/emotional-methods.md +4 -4
  314. 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
  315. package/lib/oh-story/skills/story-short-write/references/genre-styles//345/217/214/347/224/267/344/270/273.md +2 -2
  316. 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
  317. 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
  318. 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
  319. package/lib/oh-story/skills/story-short-write/references/genre-styles//346/202/254/347/226/221.md +4 -4
  320. 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
  321. 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
  322. package/lib/oh-story/skills/story-short-write/references/genre-styles//347/224/234/345/256/240.md +4 -4
  323. 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
  324. package/lib/oh-story/skills/story-short-write/references/genre-writing-formulas.md +32 -44
  325. package/lib/oh-story/skills/story-short-write/references/genre-writing-techniques.md +20 -18
  326. package/lib/oh-story/skills/story-short-write/references/output-contract.md +1 -1
  327. package/lib/oh-story/skills/story-short-write/references/short-craft.md +18 -18
  328. package/lib/oh-story/skills/story-short-write/references/short-deslop.md +1 -1
  329. package/lib/oh-story/skills/story-short-write/references/short-format.md +38 -8
  330. package/lib/oh-story/skills/story-short-write/references/{quality-checklist.md → short-prose-quality.md} +22 -21
  331. package/lib/oh-story/skills/story-short-write/references/short-reversal.md +355 -0
  332. package/lib/oh-story/skills/{story-short-analyze/references/hooks-suspense.md → story-short-write/references/short-suspense.md} +31 -31
  333. package/lib/oh-story/skills/story-short-write/references/submission-craft.md +2 -2
  334. package/lib/oh-story/skills/story-short-write/references/writing-workflow.md +31 -22
  335. package/lib/oh-story/skills/story-short-write/scripts/author_memory_commit.py +871 -0
  336. package/lib/oh-story/skills/story-short-write/scripts/check-ai-patterns.js +64 -1
  337. package/lib/oh-story/skills/story-short-write/scripts/check-delivery-contract.js +212 -0
  338. package/lib/oh-story/skills/story-short-write/scripts/check-phase2-contract.js +363 -0
  339. package/lib/types/client/drama-production-view.d.ts +34 -0
  340. package/lib/types/client/drama-production-view.d.ts.map +1 -0
  341. package/lib/types/client/drama-production.d.ts +92 -0
  342. package/lib/types/client/drama-production.d.ts.map +1 -0
  343. package/lib/types/client/file-activity.d.ts +9 -2
  344. package/lib/types/client/file-activity.d.ts.map +1 -1
  345. package/lib/types/client/index.d.ts +1 -1
  346. package/lib/types/client/index.d.ts.map +1 -1
  347. package/lib/types/client/production-intents.d.ts +9 -0
  348. package/lib/types/client/production-intents.d.ts.map +1 -0
  349. package/lib/types/client/production-prompts.d.ts +9 -0
  350. package/lib/types/client/production-prompts.d.ts.map +1 -0
  351. package/lib/types/client/production-runtime.d.ts +58 -0
  352. package/lib/types/client/production-runtime.d.ts.map +1 -0
  353. package/lib/types/client/video-studio.d.ts +41 -0
  354. package/lib/types/client/video-studio.d.ts.map +1 -0
  355. package/lib/types/client/workbench-ui.d.ts +5 -0
  356. package/lib/types/client/workbench-ui.d.ts.map +1 -0
  357. package/lib/types/game-verification.d.ts +16 -0
  358. package/lib/types/game-verification.d.ts.map +1 -0
  359. package/lib/types/index.d.ts +5 -2
  360. package/lib/types/index.d.ts.map +1 -1
  361. package/lib/types/production-intent.d.ts +21 -0
  362. package/lib/types/production-intent.d.ts.map +1 -0
  363. package/lib/types/production-tool.d.ts +5 -0
  364. package/lib/types/production-tool.d.ts.map +1 -0
  365. package/lib/types/reference-tool.d.ts +6 -0
  366. package/lib/types/reference-tool.d.ts.map +1 -0
  367. package/lib/types/role-provider.d.ts.map +1 -1
  368. package/lib/types/role-tool.d.ts +3 -1
  369. package/lib/types/role-tool.d.ts.map +1 -1
  370. package/lib/types/skill-provider.d.ts +7 -0
  371. package/lib/types/skill-provider.d.ts.map +1 -1
  372. package/lib/types/video-project.d.ts +42 -0
  373. package/lib/types/video-project.d.ts.map +1 -0
  374. package/lib/types/workspace-request-trust.d.ts +6 -0
  375. package/lib/types/workspace-request-trust.d.ts.map +1 -1
  376. package/lib/types/workspace-route.d.ts +20 -0
  377. package/lib/types/workspace-route.d.ts.map +1 -1
  378. package/lib/video-recap/CHANGELOG.md +282 -0
  379. package/lib/video-recap/LICENSE +21 -0
  380. package/lib/video-recap/README.en.md +257 -0
  381. package/lib/video-recap/README.md +255 -0
  382. package/lib/video-recap/manifest.json +684 -0
  383. package/lib/video-recap/skills/video-assemble/SKILL.md +97 -0
  384. package/lib/video-recap/skills/video-assemble/references/jianying/LICENSE.duo-video +21 -0
  385. package/lib/video-recap/skills/video-assemble/references/jianying/SOURCE.md +15 -0
  386. package/lib/video-recap/skills/video-assemble/references/jianying/empty_draft_meta_info.json +69 -0
  387. package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_combination_segment.json +84 -0
  388. package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_combination_video_material.json +98 -0
  389. package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_draft.json +204 -0
  390. package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_material_video.json +83 -0
  391. package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_meta_material_value.json +23 -0
  392. package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_project_info.json +133 -0
  393. package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_segment.json +70 -0
  394. package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_text_styles.json +30 -0
  395. package/lib/video-recap/skills/video-assemble/references/jianying/empty_yj_material_audio.json +41 -0
  396. package/lib/video-recap/skills/video-assemble/references/jianying/empty_yj_material_text.json +109 -0
  397. package/lib/video-recap/skills/video-assemble/scripts/artifacts.py +88 -0
  398. package/lib/video-recap/skills/video-assemble/scripts/assemble.py +345 -0
  399. package/lib/video-recap/skills/video-assemble/scripts/assemble_constants.py +34 -0
  400. package/lib/video-recap/skills/video-assemble/scripts/assembly_contract.py +305 -0
  401. package/lib/video-recap/skills/video-assemble/scripts/assembly_settings.py +94 -0
  402. package/lib/video-recap/skills/video-assemble/scripts/audio_automation.py +205 -0
  403. package/lib/video-recap/skills/video-assemble/scripts/audio_mix.py +555 -0
  404. package/lib/video-recap/skills/video-assemble/scripts/export_jianying.py +261 -0
  405. package/lib/video-recap/skills/video-assemble/scripts/jianying_builders.py +767 -0
  406. package/lib/video-recap/skills/video-assemble/scripts/jianying_model.py +111 -0
  407. package/lib/video-recap/skills/video-assemble/scripts/jianying_optional.py +24 -0
  408. package/lib/video-recap/skills/video-assemble/scripts/jianying_schema.py +109 -0
  409. package/lib/video-recap/skills/video-assemble/scripts/jianying_templates.py +37 -0
  410. package/lib/video-recap/skills/video-assemble/scripts/jianying_timeline_contract.py +191 -0
  411. package/lib/video-recap/skills/video-assemble/scripts/jianying_tracks.py +75 -0
  412. package/lib/video-recap/skills/video-assemble/scripts/jianying_writer.py +394 -0
  413. package/lib/video-recap/skills/video-assemble/scripts/lib.py +239 -0
  414. package/lib/video-recap/skills/video-assemble/scripts/media.py +243 -0
  415. package/lib/video-recap/skills/video-assemble/scripts/narration_audio.py +477 -0
  416. package/lib/video-recap/skills/video-assemble/scripts/render_preflight.py +46 -0
  417. package/lib/video-recap/skills/video-assemble/scripts/source_subtitles.py +486 -0
  418. package/lib/video-recap/skills/video-assemble/scripts/subtitle_core.py +376 -0
  419. package/lib/video-recap/skills/video-assemble/scripts/subtitle_render.py +88 -0
  420. package/lib/video-recap/skills/video-assemble/scripts/timeline.py +248 -0
  421. package/lib/video-recap/skills/video-assemble/scripts/timeline_emit.py +89 -0
  422. package/lib/video-recap/skills/video-assemble/scripts/visual_render.py +512 -0
  423. package/lib/video-recap/skills/video-cut/SKILL.md +90 -0
  424. package/lib/video-recap/skills/video-cut/scripts/cut.py +67 -0
  425. package/lib/video-recap/skills/video-cut/scripts/cut_cli.py +320 -0
  426. package/lib/video-recap/skills/video-cut/scripts/cut_contract.py +545 -0
  427. package/lib/video-recap/skills/video-cut/scripts/cut_render.py +348 -0
  428. package/lib/video-recap/skills/video-cut/scripts/lib.py +77 -0
  429. package/lib/video-recap/skills/video-cut/scripts/media_geometry.py +341 -0
  430. package/lib/video-recap/skills/video-cut/scripts/narration_mapping.py +249 -0
  431. package/lib/video-recap/skills/video-cut/scripts/sentence_boundaries.py +745 -0
  432. package/lib/video-recap/skills/video-recap/SKILL.md +216 -0
  433. package/lib/video-recap/skills/video-recap/references/config-playbook.md +61 -0
  434. package/lib/video-recap/skills/video-recap/references/creative-editing-playbook.md +225 -0
  435. package/lib/video-recap/skills/video-recap/references/data-schema.md +534 -0
  436. package/lib/video-recap/skills/video-recap/references/research-guide.md +74 -0
  437. package/lib/video-recap/skills/video-recap/references/shift-left-qc-schema.md +23 -0
  438. package/lib/video-recap/skills/video-recap/references/timeline-and-jianying.md +251 -0
  439. package/lib/video-recap/skills/video-recap/scripts/doctor.py +483 -0
  440. package/lib/video-recap/skills/video-recap/scripts/final_qc.py +737 -0
  441. package/lib/video-recap/skills/video-recap/scripts/lib.py +242 -0
  442. package/lib/video-recap/skills/video-recap/scripts/materials.py +457 -0
  443. package/lib/video-recap/skills/video-recap/scripts/mimo_qc.py +95 -0
  444. package/lib/video-recap/skills/video-recap/scripts/mimo_qc_client.py +18 -0
  445. package/lib/video-recap/skills/video-recap/scripts/mimo_qc_contract.py +9 -0
  446. package/lib/video-recap/skills/video-recap/scripts/mimo_qc_evidence.py +371 -0
  447. package/lib/video-recap/skills/video-recap/scripts/mimo_qc_observations.py +201 -0
  448. package/lib/video-recap/skills/video-recap/scripts/mimo_qc_payload.py +227 -0
  449. package/lib/video-recap/skills/video-recap/scripts/mimo_qc_report.py +362 -0
  450. package/lib/video-recap/skills/video-recap/scripts/mimo_qc_runner.py +129 -0
  451. package/lib/video-recap/skills/video-recap/scripts/qc_contract.py +338 -0
  452. package/lib/video-recap/skills/video-recap/scripts/recap.py +9 -0
  453. package/lib/video-recap/skills/video-recap/scripts/recap_cli.py +140 -0
  454. package/lib/video-recap/skills/video-recap/scripts/recap_inspect.py +550 -0
  455. package/lib/video-recap/skills/video-recap/scripts/recap_review.py +77 -0
  456. package/lib/video-recap/skills/video-recap/scripts/recap_runner.py +654 -0
  457. package/lib/video-recap/skills/video-recap/scripts/recap_runtime.py +335 -0
  458. package/lib/video-recap/skills/video-recap/scripts/recap_stage_qc.py +217 -0
  459. package/lib/video-recap/skills/video-recap/scripts/recap_timeline.py +795 -0
  460. package/lib/video-recap/skills/video-script/SKILL.md +248 -0
  461. package/lib/video-recap/skills/video-script/references/creative-editing-playbook.md +225 -0
  462. package/lib/video-recap/skills/video-script/references/research-guide.md +75 -0
  463. package/lib/video-recap/skills/video-script/scripts/agent_brief.py +399 -0
  464. package/lib/video-recap/skills/video-script/scripts/agent_text.py +410 -0
  465. package/lib/video-recap/skills/video-script/scripts/brief_context.py +403 -0
  466. package/lib/video-recap/skills/video-script/scripts/brief_inputs.py +332 -0
  467. package/lib/video-recap/skills/video-script/scripts/brief_timeline.py +442 -0
  468. package/lib/video-recap/skills/video-script/scripts/deslop_qc.py +237 -0
  469. package/lib/video-recap/skills/video-script/scripts/evidence_bundle.py +492 -0
  470. package/lib/video-recap/skills/video-script/scripts/lib.py +327 -0
  471. package/lib/video-recap/skills/video-script/scripts/narration.py +12 -0
  472. package/lib/video-recap/skills/video-script/scripts/narration_lint.py +678 -0
  473. package/lib/video-recap/skills/video-script/scripts/review.py +42 -0
  474. package/lib/video-recap/skills/video-script/scripts/review_grounding.py +262 -0
  475. package/lib/video-recap/skills/video-script/scripts/review_response.py +761 -0
  476. package/lib/video-recap/skills/video-script/scripts/review_runner.py +200 -0
  477. package/lib/video-recap/skills/video-script/scripts/speech_ownership.py +204 -0
  478. package/lib/video-recap/skills/video-script/scripts/timeline_fusion.py +199 -0
  479. package/lib/video-recap/skills/video-script/scripts/validate.py +164 -0
  480. package/lib/video-recap/skills/video-understanding/SKILL.md +75 -0
  481. package/lib/video-recap/skills/video-understanding/references/data-schema.md +299 -0
  482. package/lib/video-recap/skills/video-understanding/references/prompt-templates.md +37 -0
  483. package/lib/video-recap/skills/video-understanding/references/research-guide.md +74 -0
  484. package/lib/video-recap/skills/video-understanding/scripts/agent_brief.py +399 -0
  485. package/lib/video-recap/skills/video-understanding/scripts/agent_text.py +410 -0
  486. package/lib/video-recap/skills/video-understanding/scripts/asr.py +260 -0
  487. package/lib/video-recap/skills/video-understanding/scripts/brief.py +12 -0
  488. package/lib/video-recap/skills/video-understanding/scripts/brief_context.py +403 -0
  489. package/lib/video-recap/skills/video-understanding/scripts/brief_inputs.py +332 -0
  490. package/lib/video-recap/skills/video-understanding/scripts/brief_timeline.py +442 -0
  491. package/lib/video-recap/skills/video-understanding/scripts/consolidate.py +647 -0
  492. package/lib/video-recap/skills/video-understanding/scripts/deslop_qc.py +237 -0
  493. package/lib/video-recap/skills/video-understanding/scripts/detect.py +513 -0
  494. package/lib/video-recap/skills/video-understanding/scripts/extract.py +62 -0
  495. package/lib/video-recap/skills/video-understanding/scripts/lib.py +470 -0
  496. package/lib/video-recap/skills/video-understanding/scripts/narration_lint.py +678 -0
  497. package/lib/video-recap/skills/video-understanding/scripts/speech_ownership.py +204 -0
  498. package/lib/video-recap/skills/video-understanding/scripts/storyboard.py +507 -0
  499. package/lib/video-recap/skills/video-understanding/scripts/timeline_fusion.py +199 -0
  500. package/lib/video-recap/skills/video-understanding/scripts/understand.py +9 -0
  501. package/lib/video-recap/skills/video-understanding/scripts/understanding_brief.py +216 -0
  502. package/lib/video-recap/skills/video-understanding/scripts/understanding_cache.py +327 -0
  503. package/lib/video-recap/skills/video-understanding/scripts/understanding_runner.py +367 -0
  504. package/lib/video-recap/skills/video-understanding/scripts/understanding_storyboard.py +162 -0
  505. package/lib/video-recap/skills/video-understanding/scripts/vlm.py +705 -0
  506. package/lib/video-recap/skills/video-voiceover/SKILL.md +81 -0
  507. package/lib/video-recap/skills/video-voiceover/scripts/dub.py +637 -0
  508. package/lib/video-recap/skills/video-voiceover/scripts/fish_audio.py +109 -0
  509. package/lib/video-recap/skills/video-voiceover/scripts/lib.py +421 -0
  510. package/lib/video-recap/skills/video-voiceover/scripts/tts_audio.py +113 -0
  511. package/lib/video-recap/skills/video-voiceover/scripts/voiceover.py +782 -0
  512. package/package.json +57 -41
  513. package/lib/drama/skills/short-drama/references/lifecycle-commands.md +0 -130
  514. package/lib/oh-story/skills/story-deslop/scripts/check-outline-copy.js +0 -241
  515. package/lib/oh-story/skills/story-long-write/references/format-and-structure.md +0 -169
  516. package/lib/oh-story/skills/story-setup/references/agent-references/genre-writing-formulas.md +0 -444
  517. package/lib/oh-story/skills/story-setup/references/agent-references/quality-checklist.md +0 -247
  518. package/lib/oh-story/skills/story-short-analyze/references/anti-ai-writing.md +0 -582
  519. package/lib/oh-story/skills/story-short-analyze/references/banned-words.md +0 -147
  520. package/lib/oh-story/skills/story-short-analyze/references/genre-catalog.md +0 -490
  521. package/lib/oh-story/skills/story-short-analyze/references/genre-core-mechanics.md +0 -425
  522. package/lib/oh-story/skills/story-short-analyze/references/genre-writing-formulas.md +0 -453
  523. /package/lib/oh-story/skills/{story-long-write/references/hooks-chapter.md → story-setup/references/agent-references/short-chapter-hooks.md} +0 -0
  524. /package/lib/oh-story/skills/{story-long-write/references/hooks-paragraph.md → story-setup/references/agent-references/short-paragraph-hooks.md} +0 -0
@@ -1,153 +1,146 @@
1
1
  ---
2
2
  name: short-drama
3
- description: 基于文件系统初始化、继续和交付短剧或漫剧项目,并提供面向创作者的本地 Dashboard;也负责项目级制作形态、视觉方向和 Look Development 路由。用户提出“创建/继续短剧项目”“看进度/下一步”“做 Look Development”“打开 dashboard/短剧创作台”“导出制作资料”,或任务跨多个环节而需要判断负责技能时使用;明确的写作、资产、提示词、分镜或审查请求由对应子 skill 直接处理。
3
+ description: 基于文件系统初始化和继续短剧或漫剧项目,提供 creator-first 五文档路由、本地 Dashboard、制作形态与 Look Development 决策。用户提出“创建/继续短剧项目”“看进度/下一步”“做 Look Development”“打开 dashboard/短剧创作台”“导出制作资料”,或任务跨多个创作阶段时使用;明确的写作、资产、提示词、分镜或审查请求由对应子 skill 直接处理。
4
4
  license: MIT
5
5
  ---
6
6
 
7
7
  # 短剧创作路由
8
8
 
9
- 本技能负责找到项目、显示当前状态并把工作交给正确的创作技能,不代写各阶段内容。
9
+ 本技能负责项目初始化、跨阶段路由、制作形态与 Dashboard。各阶段正文由对应 owner 完成。
10
10
 
11
11
  ## Quick Start
12
12
 
13
- 先离线确认本技能被单独复制后仍能初始化、读取和保护项目路径:
13
+ 所有项目统一使用 [creator-first 工作流](references/creator-workflow.md):每集按需维护
14
+ `剧本.md`、`视觉设定.md`、`分镜.md`、`图片提示词.md`、`视频提示词.md`,不建立并行的结构化创作真相。
15
+ 具体写法见 [五份创作文档](references/creator-documents.md)。
16
+
17
+ ## 路由
18
+
19
+ | 用户要做什么 | owner / 行为 |
20
+ |---|---|
21
+ | 开发点子、系列承诺、改编和分集地图 | `$short-drama-develop`,仅在用户需要时 |
22
+ | 已有多集完整剧本/散稿识别分集 | `$short-drama-develop` 按实际边界建立临时索引 |
23
+ | 分析长篇原著 | `$short-drama-novel-analyze`,仅在用户需要时 |
24
+ | 写或改单集剧本 | `$short-drama-write` → `剧本.md` |
25
+ | 拆人物、造型、地点、道具 | `$short-drama-assets` → `视觉设定.md` |
26
+ | 写资产图片提示词 | `$short-drama-image-prompts` → `图片提示词.md` |
27
+ | 做镜头和冻结关键帧 | `$short-drama-storyboard` → `分镜.md` |
28
+ | 写视频/时间线音乐提示词 | `$short-drama-video-prompts` → `视频提示词.md` |
29
+ | 实际生成媒体 | `$short-drama-produce`,先预览,再显式确认,最后运行 |
30
+ | 审稿或校验 | `$short-drama-review`,仅在用户点名时 |
31
+ | 初始化、Dashboard、归档点名文档 | 本技能 |
32
+
33
+ `项目开发/` 中的长材料分析与分集索引是可选分析工作区,不参与单集布局判定;写任何一集仍只维护
34
+ 该集的五份 creator-first Markdown。
35
+
36
+ 现成剧本可直接拆资产;已有视觉事实可直接写图片提示词或分镜;已有分镜可直接写视频提示词。
37
+ 不要为补齐名义流水线伪造上游。
38
+
39
+ ## 执行请求
40
+
41
+ 1. 找到用户给出的项目或资料,只读当前任务的直接输入。
42
+ 2. 把用户点名的完整范围交给相应 owner;批次只控制上下文,自动续跑。
43
+ 3. 只有真实创作分叉才询问;不要拿 schema、目录、事务或检查器询问创作者。
44
+ 4. 范围完成后一次回报完成内容、关键决定、真实未决项和可选下一步。
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
+ 再继续下游阶段。会话里的一句点名不落到档案上,下一轮就会退回通用路径,方言和时长要重猜。
54
+
55
+ ## 初始化与 Dashboard
56
+
57
+ 需要项目配置时运行:
14
58
 
15
59
  ```bash
16
- python3 {技能目录}/scripts/selftest.py
17
60
  python3 {技能目录}/scripts/project_tool.py init ./my-drama --title "示例短剧"
18
61
  ```
19
62
 
20
- 创作者可读内容使用 `short-drama.json#/language`;交给图片或视频生成器的提示词正文使用
21
- `#/format/prompt_language`。两者互不推断,详见
22
- [contract-and-ownership.md](references/contract-and-ownership.md#output-language-contract)。
23
-
24
- ## 每次请求的起点
25
-
26
- 1. 使用用户给出的路径,或从当前目录向上寻找最近的 `short-drama.json`。
27
- 2. 运行 `status`,只读完成当前任务所需的直接输入,不批量加载整个项目。
28
- 3. 按用户眼下要完成的工作路由;未安装的阶段技能只影响对应路由,不阻断其他工作。
29
- 4. 明确的单阶段任务直接交给独立安装的对应技能,按创作者要的那一步做。
30
-
31
- 统一预检见 [runtime-preflight.md](references/runtime-preflight.md),创作入口见
32
- [creator-workflow.md](references/creator-workflow.md),所有权见
33
- [contract-and-ownership.md](references/contract-and-ownership.md)。
63
+ 直接输入已经确认创作者说明语言、提示词语言、画幅、集数或单集目标时长时,首次 `init` 就带上对应的
64
+ `--language`、`--prompt-language`、`--aspect-ratio`、`--episode-count`、`--target-seconds`;只省略
65
+ 未确认项,不让 Brief 中的确定事实留成配置里的 `null`。写入已确认的生产档案时,状态统一为
66
+ `accepted`;`unset` 只表示尚未决定,不另造中间状态。
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
+ ```
34
75
 
35
- ## 意图路由
76
+ 再发布、接受、写入:
36
77
 
37
- | 创作者意图 | 路由 |
38
- |---|---|
39
- | 开发点子、系列承诺、改编和分集地图 | `$short-drama-develop` |
40
- | 导入已有多集完整剧本/散稿并生成或补分集地图 | `$short-drama-develop` 按文件实际结构建立索引,每次只读当前集并续跑 |
41
- | 判断长篇是否值得改、建立原文索引 | `$short-drama-novel-analyze` |
42
- | 写或改单集契约、节拍、剧本 | `$short-drama-write` |
43
- | 拆人物、造型、地点、道具和状态 | `$short-drama-assets` |
44
- | 写人物、地点、道具和 Look Development 图片提示词 | `$short-drama-image-prompts` |
45
- | 做覆盖设计、镜头和冻结关键帧 | `$short-drama-storyboard` |
46
- | 写动作、表演、运镜、声音视频提示词 | `$short-drama-video-prompts` |
47
- | 写主题曲/配乐意图或校验时间线音乐规格 | `$short-drama-video-prompts`,歌词必须由创作者提供并接受 |
48
- | 按已确认规格实际生成图片、视频、TTS 或时间线音乐 | `$short-drama-produce` 先展示本次 job,得到明确确认后才执行 |
49
- | 定制作形态、视觉方向或 Look Development 路径 | `$short-drama` |
50
- | 校验、审稿或发修订请求 | `$short-drama-review` |
51
- | 打开创作台、看内容和进度 | `$short-drama dashboard` |
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
+ ```
52
86
 
53
- 用户的明确意图优先。Look Development 是可选分支;资产图片提示词和分镜在资产确认后可以
54
- 并行,不互相等待。需要把已接受的视觉方向变成可比较的代表帧时,读
55
- [look-development.md](references/look-development.md)。
87
+ 各字段取值由命中的模型方言给出:`$short-drama-video-prompts` 的 MiniMax H3 / Seedance 方言文件都写了
88
+ 推荐档案。写完用 `status` 复核 `video_model_profile` 是否已经出现。
56
89
 
57
- **产物可以直接入场**。 上游的可选环节缺失不构成阻塞:现成剧本可直接进入资产;已接受资产
58
- 可直接进入资产图片提示词;已接受剧本加资产可直接进入分镜;已接受镜头与关键帧可直接进入
59
- 视频提示词。只补建对应技能拥有的、确实缺少的必要产物,绝不倒补虚构的创作简报或系列大纲。
90
+ 项目定位与安全写入见 [运行预检](references/runtime-preflight.md)。用户明确要求 Dashboard 时运行:
60
91
 
61
- **请求含糊时不要追问技术细节**。 遇到"帮我把这集做完"这类请求,先展示当前的创作者可读
62
- 状态,再给出不超过三个有意义的动作,优先能解开当前交付阻塞的那个;不要拿 schema、事务或
63
- 存储格式去问创作者。
92
+ ```bash
93
+ python3 {技能目录}/scripts/dashboard_server.py --workspace <workspace> --port 0 --detach --open
94
+ ```
64
95
 
65
- ## 有界续跑
96
+ `--detach` 让服务进程脱离当前 shell 独立运行,会话结束、终端关闭或智能体退出都不会带走它;
97
+ 链接因此在整个创作期间保持有效。运行中的地址、端口和 pid 记录在
98
+ `<workspace>/.short-drama/dashboard.json`(仅本人可读),日志在同目录 `dashboard.log`:
66
99
 
67
- 全链预览或“继续”每轮只授权一个 owner 的一个有界工作单元。写作、资产、图片提示词、分镜和
68
- 视频提示词按各自「每轮的工作单元」分批工作;完成当前批次后报告已覆盖范围、剩余范围与
69
- 下一步,并把控制权交还创作者。下一阶段、审查和生产各自需要明确的后续请求;生产还要先展示
70
- 准确 job 并取得确认。
100
+ ```bash
101
+ python3 {技能目录}/scripts/dashboard_server.py --workspace <workspace> --status # 打印当前链接
102
+ python3 {技能目录}/scripts/dashboard_server.py --workspace <workspace> --stop # 停止
103
+ ```
71
104
 
72
- 审查尽量交给没有参与该版本创作的 reviewer,以减少自证偏差;运行环境不支持隔离上下文时,
73
- 如实标注为自检即可。CLI 只记录 verdict、reviewer 标签和备注,不收集或伪造上下文证明。
74
- Reviewer 给出证据和修改请求,内容仍由原 owner 修改。
105
+ 同一 workspace 已有在跑的 Dashboard 时,再次启动只会打印同一个链接,不再开第二个端口;确实要换
106
+ 端口或换令牌时加 `--restart`。不加 `--detach` 时行为不变:前台运行,Ctrl-C 结束。
75
107
 
76
- ## 初始化
108
+ Dashboard 展示和编辑创作文件,不负责工作流编排或媒体生产。
77
109
 
78
- 没有项目且用户要初始化时:
110
+ ## 项目级创作决定
79
111
 
80
- 1. 确定标题、项目语言、提示词语言、画幅和路径;集数或时长未知就留空。
81
- 2. 运行 `init` 建立最小目录和空状态,不覆盖现有文件。
82
- 3. 将制作形态与视觉方向保持为 `unset`,告诉创作者下一个最有用的选择。
83
- 4. 创作者定下形态、方向、播放面或集长目标后,把这条决定发布并接受为一条创作者决策记录,
84
- 再用 `set-authority` 写回 `short-drama.json`,让下游读到已 `accepted` 的值。
112
+ 制作形态、视觉方向、播放面和集长目标确实约束多个阶段时,展示选择及影响后由用户决定。
113
+ Look Development 是可选分支,不是进入图片提示词或分镜的固定门槛。
85
114
 
86
- 初始化不自动生成故事、剧本或资产设定。
115
+ 按问题只读取一份相关知识:
87
116
 
88
- ## 本地 Dashboard
117
+ - 规则分级与 owner 路由:[规则与路由索引](references/knowhow-index.md)
118
+ - 输出语言、稳定 ID、所有权与安全边界:[契约与所有权](references/contract-and-ownership.md)
119
+ - 实拍、二维、三维、水墨、Q 版、国漫的形态差异:[制作形态](references/production-form-profiles.md)
120
+ - 需要比较代表帧时:[Look Development](references/look-development.md)
121
+ - 参考图能控制什么:[参考角色](references/reference-roles.md)
122
+ - 遮挡、延迟揭示和观众知情时机:[观众揭示](references/audience-reveal.md)
123
+ - 母版、补拍和替代版的职责:[补拍与替代](references/pickup-and-alternate.md)
89
124
 
90
- Dashboard 是项目内容的轻量展示与有限文本编辑层,核心能力仍在各 skill 中。当用户调用
91
- `$short-drama dashboard` 时:
125
+ ## 生产与交付边界
92
126
 
93
- 1. 项目存在时读取 `status`;浏览普通目录时直接使用该目录。
94
- 2. 项目内启动时用项目根作为 workspace;否则使用用户给出的容器目录或当前目录。
95
- 3. 从本技能安装目录运行:
127
+ 外部生产永远保留 `preview -> explicit confirm -> run`。归档只复制用户点名的当前文档和成品,排除
128
+ 私有输入、凭据、绝对路径与隐藏运行状态;不为归档补造审批、哈希或第二套内容。
96
129
 
97
- ```text
98
- python3 <short-drama-skill-dir>/scripts/dashboard_server.py --workspace <workspace> --port 0 --open
99
- ```
130
+ 用户问“做完了怎么导出/交付给我”时,用 `export` 打包当前状态:
100
131
 
101
- 4. 回报脚本打印的完整回环地址与停止方式,并保持进程运行。
132
+ ```bash
133
+ python3 {技能目录}/scripts/project_tool.py export <project> --out <项目外目录>
134
+ ```
102
135
 
103
- Dashboard 只读取 workspace 内的文件;密钥、生产 adapter 与工作流编排都在它之外。它按项目
104
- 和剧集展示正文、结构化卡片以及已有图片/音频/视频;保存只表示保存文件,不代表创作者确认。
105
- 每次启动使用独立本机会话,项目 API 只接受该会话。参数与安全边界见
106
- [lifecycle-commands.md](references/lifecycle-commands.md#dashboard-启动)。
136
+ 它把每集现有的五份创作文档和 `剧集/<EP>/制作成果/` 复制到 `--out`,附 `manifest.json` 与
137
+ `checksums.sha256`,并排除 `输入/`、`交付/` 和 `.short-drama/`。只要一部分时加
138
+ `--episode EP001`(可重复);只要文字时加 `--no-media`;覆盖旧目录加 `--overwrite`。
139
+ `--out` 必须在项目之外。
107
140
 
108
- ## 项目命令
141
+ `export` 是**当前状态快照**,manifest 里 `asserts_approval` 恒为 `false`:它不声称任何审查或
142
+ 创作者接受。需要带审批证据的正式交付包仍然只有 `package`/`verify` 那条路径。
109
143
 
110
- 从本技能安装目录调用 `scripts/project_tool.py`:
144
+ ## 安装维护
111
145
 
112
- | 命令 | 用途 |
113
- |---|---|
114
- | `init` | 初始化最小项目 |
115
- | `status` | 显示项目与产物状态 |
116
- | `publish` | 原子发布一项产物并记录它的直接输入 |
117
- | `accept` | 记录创作者接受或拒绝当前版本 |
118
- | `review` | 记录当前版本的复核结论 |
119
- | `set-authority` | 把已接受的创作者决策写回制作形态、视觉方向、播放面或集长目标 |
120
- | `package` | 打包当前已确认且复核通过的文本/JSON |
121
- | `verify` | 用交付校验和检查打包结果是否被改动 |
122
-
123
- 完整示例见 [lifecycle-commands.md](references/lifecycle-commands.md)。单文件发布用临时文件与
124
- 原子替换完成。
125
-
126
- ## 状态与修订
127
-
128
- 对创作者只使用六种状态:
129
-
130
- - `draft`:尚未发布;
131
- - `needs_confirmation`:等待创作者决定;
132
- - `accepted`:创作者已接受;
133
- - `revise`:创作者或 reviewer 要求修改;
134
- - `approved`:当前版本已确认且复核通过;
135
- - `update_needed`:输出或某个直接输入已经变化,需要重新发布。
136
-
137
- 状态在读取时核对当前文件,不把过期传播写回整个项目。修订时只说明负责技能、语义变化、
138
- 直接受影响的产物和下一步;重新发布会清除该产物旧的接受与复核结果,不触碰无关产物。
139
- 除非诊断需要,不向创作者显示内部 hash 或原始状态文件。
140
-
141
- ## 交付
142
-
143
- 先由 `$short-drama-review` 复核,再用 `package` 打包。包内只收录明确选择的、当前状态为
144
- `approved` 的文本和 JSON,并记录有意省略项;二进制媒体、非公开输入、机器状态、绝对路径、
145
- 凭据和未批准草稿不进入文本交付包。`verify` 检查清单、校验和及未登记新增文件。
146
-
147
- ## 边界
148
-
149
- - 图片、视频和 TTS 生产只由 `$short-drama-produce` 在展示准确 job 并取得本次明确确认后执行;
150
- 其他技能不直接调用生成服务。
151
- - 运行时不检索外部或非公开生产来源。
152
- - 不把别处案例提升为项目定律。
153
- - 语义冲突不静默修复;不明外部改动由创作者选择保留或重做。
146
+ 只有安装、升级或排障时运行 `python3 scripts/selftest.py`。
@@ -1,74 +1,21 @@
1
1
  # 观众此刻可以知道什么
2
2
 
3
- 背影、腿部入画、门缝、画外声、浅景深和遮挡不只是画面风格。它们同时决定观众**何时**
4
- 知道一个人是谁、看见那张字条、或者发现门后有人。
3
+ 背影、门缝、画外声、浅景深和遮挡会决定观众何时知道一个人是谁、看见证据或发现门后有人。
4
+ 需要同时防两种错:该给的信息被漂亮构图挡住;不该给的信息被镜头提前泄露。
5
5
 
6
- 这件事容易被当成构图偏好处理,于是出两种错,而且两种都不会被"这镜好看吗"抓到:
6
+ ## 一条事实一条判断
7
7
 
8
- - 本镜本来要交代证据,却被一个漂亮的遮挡挡住了——**该给的没给**;
9
- - 剧本只允许观众先看到鞋和停步位置,结果正脸提前露出来——**不该给的给了**。
8
+ 对每个有揭示时机的事实,在对应 `SHOT-...` 下写清:
10
9
 
11
- 所以每个镜头要按**事实**分开记录可见性,而不是给整镜写一句"稍后揭示"。
10
+ - **事实来源**:来自哪个场景 ID、对白、动作或画面文字;
11
+ - **本镜权限**:现在展示,还是暂时扣住;
12
+ - **可见/可听载体**:观众具体能看到或听到什么;
13
+ - **释放时机**:若暂时扣住,在哪个可见事件后释放;
14
+ - **保护方法**:靠遮挡、景深、画外声、光线或构图怎样实现;
15
+ - **戏剧理由**:为什么这个时机改变理解或压力。
12
16
 
13
- ## 一条记录只管一个事实
17
+ 同一镜头里“来者认识主角”和“来者是谁”是两件事:可以让旧称呼先从画外传来,同时让来者的脸
18
+ 留在暗处。揉成一句“稍后揭示”,下游就无法分别处理声音和身份。
14
19
 
15
- 这些记录写在镜头的 `audience_visibility[]` 里(字段属于 storyboard 的 shot 记录)。
16
-
17
- 同一个镜头里,"这人是谁"和"他手里有什么"是两件独立的事,可以有完全不同的揭示条件。
18
- 揉成一句,下游就只能一起放或一起收——所以 `audience_visibility` **按事实分条**,
19
- 不是每镜一条。
20
-
21
- 每条记录写清五项:
22
-
23
- | 字段 | 回答什么 |
24
- |---|---|
25
- | `fact` | 这条管的是哪一个具体事实 |
26
- | `source_ref` | 这个揭示义务来自剧本的哪一段 |
27
- | `permission` | 现在就给(`show_now`)还是先扣住(`withhold_now`) |
28
- | `carrier` | 观众此刻能看见或听见的是什么 |
29
- | `reveal_trigger` / `protection_method` / `rationale` | 什么时候放、靠什么扣住、为什么 |
30
-
31
- ### 合成示例
32
-
33
- 一个镜头里,观众要听见有人叫出主角的旧称呼(说明来者认识他),但**不能**看到来者的脸。
34
-
35
- `audience_visibility` 所在的 `shots.jsonl` 在第一行声明本文件引用到的上游快照:
36
-
37
- ```json
38
- {"record_type":"sources","schema_version":"1.0.0","sources":{"screenplay":{"owner":"short-drama-write","artifact":"剧集/EP001/screenplay.md"}}}
39
- ```
40
-
41
- 数组里每条只写快照键和记录 ID:
42
-
43
- ```json
44
- [
45
- {
46
- "fact": "来者认识主角的旧身份",
47
- "source_ref": {"src": "screenplay", "record_id": "BLK-EP001-SC003-A02"},
48
- "permission": "show_now",
49
- "carrier": "画外一声旧称呼,主角闻声停手",
50
- "reveal_trigger": "对方开口",
51
- "rationale": "本镜必须让观众意识到主角被认出来了"
52
- },
53
- {
54
- "fact": "来者是谁",
55
- "source_ref": {"src": "screenplay", "record_id": "BLK-EP001-SC003-A05"},
56
- "permission": "withhold_now",
57
- "carrier": "只有门框边的一只手和影子",
58
- "protection_method": "来者留在景深之外,不进正面光",
59
- "reveal_trigger": "下一场推门进屋时",
60
- "rationale": "身份揭示是场末的转折,提前露脸会让那一下失效"
61
- }
62
- ]
63
- ```
64
-
65
- 两条各有各的条件:**声音放,脸扣住**。写成一条就做不到这件事。
66
-
67
- ## 不是"神秘感越多越好"
68
-
69
- 扣住信息本身没有价值,它只在为后面某个具体时刻服务时才有价值。所以
70
- `withhold_now` 必须写出 `reveal_trigger`——说不出什么时候放,就说明这不是设计,
71
- 只是没想清楚。
72
-
73
- 审查时同时核对两侧:原文此刻**允许**透露什么,以及本镜**必须**传达什么。
74
- 只评价构图是否漂亮的审查,抓不到这类缺陷。
20
+ 扣住信息本身没有价值;说不出何时释放,就说明还没完成设计。审查时同时核对原文此刻允许透露什么,
21
+ 以及本镜必须让观众明白什么。
@@ -1,94 +1,43 @@
1
- # Contract And Ownership
1
+ # 契约与所有权
2
2
 
3
- ## Contents
4
-
5
- 1. Project flow
6
- 2. Runtime path ownership
7
- 3. Output language contract
8
- 4. Stable identities and references
9
- 5. Rule classes
10
- 6. Trust and file safety
11
-
12
- ## Project flow
3
+ ## 工作流不是瀑布
13
4
 
14
5
  ```text
15
- development? -> screenplay -> assets -> image prompts
16
- \-> storyboard -> video prompts
17
- \-> confirmed production -> review -> delivery
6
+ 开发? -> 剧本 -> 视觉设定 -> 图片提示词
7
+ \-> 分镜 -> 视频提示词
8
+ \-> 明确确认后的媒体生产
18
9
  ```
19
10
 
20
- This is a routing map, not a mandatory waterfall. Direct entry is valid, and Look Development is optional.
21
- Each artifact records only the project files it directly read. There is no recursive stale-propagation graph.
22
-
23
- ## Runtime path ownership
24
-
25
- `project_tool.py` does not contain a registry mapping business paths to skill names. The first published artifact
26
- claims its output paths in project state, and another artifact cannot silently overwrite those paths. Input,
27
- delivery and machine-state roots remain protected regardless of owner name.
11
+ 可以从任一已有材料直接进入;Look Development 和审查都按需发生。每个 owner 只修改自己的 Markdown,
12
+ 引用上游可见事实,但不静默改写它们。
28
13
 
29
- Each skill's own stage contract describes its semantic responsibility. An artifact may project another artifact's
30
- facts but may not silently redefine them. A reviewer requests changes; the responsible skill edits its source.
14
+ ## 输出语言
31
15
 
32
- ## Output language contract
33
-
34
- | Field | Governs | Default |
16
+ | 内容 | 有项目配置时 | 独立任务默认 |
35
17
  |---|---|---|
36
- | `short-drama.json#/language` | creator-facing artifacts, findings, status and Dashboard | `zh-CN` |
37
- | `short-drama.json#/format/prompt_language` | copyable image/video prompt bodies | `en` |
38
-
39
- Creator-facing prose follows `language`. Prompt bodies follow `prompt_language`. Depicted speech and on-screen text
40
- come from accepted story/asset facts, not from either description-language setting.
41
-
42
- ## Stable identities and references
18
+ | 创作者可读说明与审查 | `short-drama.json#/language` | 用户当前语言 |
19
+ | 图片、关键帧的可复制正文 | `short-drama.json#/format/prompt_language` | `en` |
20
+ | 视频的可复制正文 | 目标视频模型档案的 `production_profile.choices.video_prompt_language`;未声明时回退 `format.prompt_language` | 根据目标视频模型确认;未声明时使用用户当前语言 |
43
21
 
44
- Use stable IDs such as `EP001`, `SC001`, `BLK-...`, `CHAR-...`, `LOOK-...`, `LOC-...`, `PROP-...`,
45
- `SHOT-...`, `KEY-...` and `MOTION-...`. Display names may change without changing identity.
46
-
47
- For cross-artifact references, a file declares each upstream snapshot once, and every reference names that
48
- declaration plus the record it points at.
49
-
50
- A `.jsonl` file declares them on its first line:
51
-
52
- ```json
53
- {"record_type":"sources","schema_version":"1.0.0","sources":{"screenplay-index":{"owner":"short-drama-write","artifact":"剧集/EP001/screenplay-index.jsonl"}}}
54
- ```
55
-
56
- A `.json` file uses a top-level `"sources"` object with the same entries. A reference is then:
57
-
58
- ```json
59
- {"src": "screenplay-index", "record_id": "BLK-EP001-SC001-A01", "field": "/text"}
60
- ```
22
+ 创作者说明、通用提示词语言和视频模型提示词语言互相独立;画面中的对白和可读文字来自剧本/视觉事实,
23
+ 不由描述语言推断。
61
24
 
62
- `sources` keys are short, lowercase and derived from the artifact filename; each is unique and stable inside its
63
- file, and one artifact is declared under one key. `owner` and the project-relative `artifact` identify authority.
64
- `record_id` and `field` are optional selectors, and a reference pointing at a whole artifact keeps `src` alone.
65
- `authority` (`accepted` or `candidate`) belongs to the individual reference, because one snapshot can be read at
66
- different authority levels by different references. Do not copy whole authoritative values into consumers, and do
67
- not create self-references. A `sources` entry names the artifact the file was written against by `owner` and
68
- `artifact` only — no digest. Bytes are compared by the tool, in lifecycle state and delivery checksums, and that is not
69
- user-supplied lifecycle evidence and does not drive transitive invalidation.
25
+ ## 稳定身份与引用
70
26
 
71
- ## Rule classes
27
+ 创作文档条目使用创作者可见的稳定 ID:`EP001-SC001`、`IMG-...`、`SHOT-...`、`MOTION-...`。其中 `IMG-...` 专属《图片提示词.md》的提示词标题,不代表已有图片。显示名可以改变,身份不因此改变。跨文档条目引用直接写这些 ID;不写哈希、内部路径、隐藏状态或第二套 record ID。
72
28
 
73
- - `structural_invariant`: locally provable; a script may block.
74
- - `reviewed_invariant`: semantic obligation; a reviewer may request revision.
75
- - `craft_default`: usually useful, but creator intent may override it.
76
- - `taste_option`: present alternatives; never block by itself.
29
+ 真实输入参考图不是图片提示词条目,所以每张图使用独立稳定的 `REF-...` 槽位,槽位内写显式顺序、可见项目相对路径、中文名称、用途和控制范围。它不使用 `IMG-...`;路径只用 `/` 分隔,不写绝对路径、Windows 盘符/网络路径或项目外路径。
77
30
 
78
- Word counts, shot counts, emotional curves and patterns seen elsewhere are not structural invariants unless the
79
- creator explicitly chose them as format constraints.
31
+ ## 规则分级
80
32
 
81
- ## Trust and file safety
33
+ - `structural_invariant`:本地可证明的引用、ID、算术或显式矛盾;
34
+ - `reviewed_invariant`:需要结合语义证据判断的义务;
35
+ - `craft_default`:通常有效,但创作者可以说明理由覆盖;
36
+ - `taste_option`:表达选择,不能单独阻断。
82
37
 
83
- Deterministic suite scripts do not make outbound connections. Confirmed production may launch a project-external,
84
- locally configured adapter without a shell; that adapter owns any provider SDK/API access and reads credentials from
85
- its environment or system store. Released skills do not retrieve external or private production sources at runtime.
86
- Do not ship private identifiers, plot passages, prompt sentences, URLs, user data or credentials.
38
+ 字数、镜头数、情绪曲线和案例配方不是通用结构门槛。
87
39
 
88
- Creator input under `输入/` is immutable to publication commands. Machine state lives under `.short-drama/` and
89
- delivery under `交付/`; neither is an owner publication target. Text/JSON publication validates all sources before
90
- writing and replaces each target atomically under one project lock. A crash cannot expose a partially written file;
91
- rerun the command to continue. Unknown external edits are never silently overwritten.
40
+ ## 信任与文件安全
92
41
 
93
- Legacy v0.3 state remains readable. The next state-changing command rewrites only the compact artifact record; old
94
- transaction and propagation fields are not carried forward.
42
+ 普通创作不联网。实际媒体生产只允许项目外 adapter 读取环境凭据,并始终经过
43
+ `preview -> explicit confirm -> run`。不要把私有输入、凭据、绝对路径或非公开观察写入可交付文档。