@oh-story/dsh 0.1.8 → 0.1.9

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 (272) hide show
  1. package/README.md +11 -11
  2. package/lib/client.js +35 -14
  3. package/lib/client.js.map +2 -2
  4. package/lib/drama/manifest.json +165 -69
  5. package/lib/drama/skills/short-drama/SKILL.md +5 -1
  6. package/lib/drama/skills/short-drama/scripts/creator_markdown_check.py +126 -9
  7. package/lib/drama/skills/short-drama/scripts/project_tool.py +11 -0
  8. package/lib/drama/skills/short-drama-assets/references/character-and-look.md +18 -0
  9. package/lib/drama/skills/short-drama-assets/references/continuity-lock.md +10 -1
  10. package/lib/drama/skills/short-drama-edit/SKILL.md +148 -0
  11. package/lib/drama/skills/short-drama-edit/agents/openai.yaml +4 -0
  12. package/lib/drama/skills/short-drama-edit/assets/remotion/README.md +60 -0
  13. package/lib/drama/skills/short-drama-edit/assets/remotion/package.json +15 -0
  14. package/lib/drama/skills/short-drama-edit/assets/remotion/remotion.config.ts +6 -0
  15. package/lib/drama/skills/short-drama-edit/assets/remotion/src/Root.tsx +26 -0
  16. package/lib/drama/skills/short-drama-edit/assets/remotion/src/Subtitles.tsx +88 -0
  17. package/lib/drama/skills/short-drama-edit/assets/remotion/src/font.ts +46 -0
  18. package/lib/drama/skills/short-drama-edit/assets/remotion/src/index.ts +4 -0
  19. package/lib/drama/skills/short-drama-edit/assets/remotion/src/schema.ts +32 -0
  20. package/lib/drama/skills/short-drama-edit/assets/remotion/tsconfig.json +13 -0
  21. package/lib/drama/skills/short-drama-edit/assets//345/211/252/350/276/221/345/215/225.md +43 -0
  22. package/lib/drama/skills/short-drama-edit/references/cut-craft.md +81 -0
  23. package/lib/drama/skills/short-drama-edit/references/delivery-verify.md +58 -0
  24. package/lib/drama/skills/short-drama-edit/references/generated-footage.md +96 -0
  25. package/lib/drama/skills/short-drama-edit/references/sound-and-subtitles.md +113 -0
  26. package/lib/drama/skills/short-drama-edit/references/stage-contract.md +55 -0
  27. package/lib/drama/skills/short-drama-edit/scripts/edit_tool.py +1041 -0
  28. package/lib/drama/skills/short-drama-edit/scripts/selftest.py +456 -0
  29. package/lib/drama/skills/short-drama-image-prompts/assets/image-prompts.md +5 -0
  30. package/lib/drama/skills/short-drama-image-prompts/assets/lookdev-prompts.md +3 -0
  31. package/lib/drama/skills/short-drama-novel-analyze/references/aggregation-and-entities.md +2 -2
  32. package/lib/drama/skills/short-drama-novel-analyze/references/chapter-extraction.md +4 -1
  33. package/lib/drama/skills/short-drama-produce/SKILL.md +24 -3
  34. package/lib/drama/skills/short-drama-produce/references/adapter-contract.md +28 -0
  35. package/lib/drama/skills/short-drama-produce/references/providers/minimax-h3-video.md +24 -5
  36. package/lib/drama/skills/short-drama-produce/references/providers/seedance.md +7 -0
  37. package/lib/drama/skills/short-drama-produce/scripts/fixture_adapter.py +18 -1
  38. package/lib/drama/skills/short-drama-produce/scripts/production_tool.py +181 -2
  39. package/lib/drama/skills/short-drama-produce/scripts/provider_adapters.py +57 -2
  40. package/lib/drama/skills/short-drama-review/SKILL.md +3 -0
  41. package/lib/drama/skills/short-drama-review/references/production-quality-gates.md +20 -0
  42. package/lib/drama/skills/short-drama-review/references/rubric-visual-motion.md +36 -0
  43. package/lib/drama/skills/short-drama-storyboard/SKILL.md +7 -0
  44. package/lib/drama/skills/short-drama-storyboard/assets/keyframe-prompts.md +4 -0
  45. package/lib/drama/skills/short-drama-storyboard/references/shot-craft.md +39 -0
  46. package/lib/drama/skills/short-drama-storyboard/references/stage-contract.md +2 -0
  47. package/lib/drama/skills/short-drama-video-prompts/SKILL.md +7 -1
  48. package/lib/drama/skills/short-drama-video-prompts/references/minimax-h3.md +101 -6
  49. package/lib/drama/skills/short-drama-video-prompts/references/motion-recipe.md +7 -1
  50. package/lib/drama/skills/short-drama-video-prompts/references/performance-action-timing.md +35 -0
  51. package/lib/drama/skills/short-drama-video-prompts/references/production-prompt-grammar.md +3 -1
  52. package/lib/drama/skills/short-drama-video-prompts/references/seedance-2.0.md +13 -3
  53. package/lib/drama/skills/short-drama-video-prompts/references/seedance-2.5.md +35 -4
  54. package/lib/drama/skills/short-drama-video-prompts/references/stage-contract.md +1 -1
  55. package/lib/drama/skills/short-drama-write/SKILL.md +13 -2
  56. package/lib/drama/skills/short-drama-write/references/screenplay-format.md +6 -0
  57. package/lib/drama/skills/short-drama-write/references/stage-contract.md +1 -0
  58. package/lib/index.js +4 -2
  59. package/lib/index.js.map +2 -2
  60. package/lib/novel-to-game/VERSION +1 -1
  61. package/lib/novel-to-game/manifest.json +28 -28
  62. package/lib/novel-to-game/skills/game-art-direction/SKILL.md +6 -27
  63. package/lib/novel-to-game/skills/game-build/SKILL.md +12 -29
  64. package/lib/novel-to-game/skills/game-concept/SKILL.md +10 -26
  65. package/lib/novel-to-game/skills/game-qa/SKILL.md +5 -15
  66. package/lib/novel-to-game/skills/game-qa/references/test-design-method.md +1 -1
  67. package/lib/novel-to-game/skills/game-world-design/SKILL.md +19 -28
  68. package/lib/novel-to-game/skills/game-world-design/references/dialogue-design-method.md +1 -2
  69. package/lib/novel-to-game/skills/novel-game-analyze/SKILL.md +6 -9
  70. package/lib/novel-to-game/skills/novel-to-game/SKILL.md +6 -11
  71. package/lib/novel-to-game/skills/novel-to-game/references/intake-benchmark-reference.md +0 -4
  72. package/lib/novel-to-game/skills/novel-to-game/references/intake-method.md +1 -3
  73. package/lib/novel-to-game/skills/novel-to-game/references/pipeline-contract.md +3 -5
  74. package/lib/oh-story/manifest.json +292 -172
  75. package/lib/oh-story/roles/character-designer.md +1 -1
  76. package/lib/oh-story/roles/narrative-writer.md +56 -242
  77. package/lib/oh-story/roles/story-architect.md +1 -1
  78. package/lib/oh-story/skills/story/SKILL.md +1 -1
  79. package/lib/oh-story/skills/story/VERSION +1 -1
  80. package/lib/oh-story/skills/story/references/author-memory.md +10 -8
  81. package/lib/oh-story/skills/story-deslop/SKILL.md +20 -182
  82. package/lib/oh-story/skills/story-deslop/references/anti-ai-writing.md +19 -47
  83. package/lib/oh-story/skills/story-deslop/references/author-memory.md +10 -8
  84. package/lib/oh-story/skills/story-deslop/references/banned-words.md +3 -1
  85. package/lib/oh-story/skills/story-deslop/references/deslop-gates.md +154 -0
  86. package/lib/oh-story/skills/story-deslop/references/style-resolution.md +27 -0
  87. package/lib/oh-story/skills/story-deslop/scripts/check-ai-patterns.js +6 -1
  88. package/lib/oh-story/skills/story-deslop/scripts/check-degeneration.js +39 -20
  89. package/lib/oh-story/skills/story-deslop/scripts/normalize-punctuation.js +10 -5
  90. package/lib/oh-story/skills/story-deslop/scripts/style-whitelist.js +39 -0
  91. package/lib/oh-story/skills/story-import/SKILL.md +2 -2
  92. package/lib/oh-story/skills/story-import/references/format-and-structure.md +2 -2
  93. package/lib/oh-story/skills/story-import/references/tracking-initialization.md +31 -0
  94. package/lib/oh-story/skills/story-import/references/tracking-transaction.md +2 -29
  95. package/lib/oh-story/skills/story-import/scripts/check-outline-contract.js +176 -12
  96. package/lib/oh-story/skills/story-long-analyze/SKILL.md +1 -1
  97. package/lib/oh-story/skills/story-long-write/SKILL.md +20 -193
  98. package/lib/oh-story/skills/story-long-write/references/anti-ai-writing.md +19 -47
  99. package/lib/oh-story/skills/story-long-write/references/artifact-protocols.md +62 -7
  100. package/lib/oh-story/skills/story-long-write/references/author-memory.md +10 -8
  101. package/lib/oh-story/skills/story-long-write/references/banned-words.md +3 -1
  102. package/lib/oh-story/skills/story-long-write/references/benchmark-recall.md +20 -0
  103. package/lib/oh-story/skills/story-long-write/references/dialogue-mastery.md +6 -4
  104. package/lib/oh-story/skills/story-long-write/references/long-chapter-quality.md +2 -2
  105. package/lib/oh-story/skills/story-long-write/references/long-format.md +2 -0
  106. package/lib/oh-story/skills/story-long-write/references/outline-structure-theory.md +2 -0
  107. package/lib/oh-story/skills/story-long-write/references/project-files.md +108 -0
  108. package/lib/oh-story/skills/story-long-write/references/reference-index.md +87 -0
  109. package/lib/oh-story/skills/story-long-write/references/style-combat-face.md +1 -1
  110. package/lib/oh-story/skills/story-long-write/references/style-craft.md +9 -29
  111. package/lib/oh-story/skills/story-long-write/references/style-genre-modules.md +1 -1
  112. package/lib/oh-story/skills/story-long-write/references/style-resolution.md +27 -0
  113. package/lib/oh-story/skills/story-long-write/references/tracking-initialization.md +31 -0
  114. package/lib/oh-story/skills/story-long-write/references/tracking-transaction.md +2 -29
  115. package/lib/oh-story/skills/story-long-write/references/workflow-chapter.md +51 -52
  116. package/lib/oh-story/skills/story-long-write/references/workflow-daily.md +8 -7
  117. package/lib/oh-story/skills/story-long-write/references/workflow-setup.md +36 -15
  118. package/lib/oh-story/skills/story-long-write/references/writer-prompt-fallback.md +22 -0
  119. package/lib/oh-story/skills/story-long-write/references/writing-craft.md +69 -2
  120. package/lib/oh-story/skills/story-long-write/scripts/build_writer_prompt.py +410 -0
  121. package/lib/oh-story/skills/story-long-write/scripts/check-ai-patterns.js +6 -1
  122. package/lib/oh-story/skills/story-long-write/scripts/check-degeneration.js +39 -20
  123. package/lib/oh-story/skills/story-long-write/scripts/check-outline-contract.js +176 -12
  124. package/lib/oh-story/skills/story-long-write/scripts/check-outline-copy.js +90 -23
  125. package/lib/oh-story/skills/story-long-write/scripts/normalize-punctuation.js +10 -5
  126. package/lib/oh-story/skills/story-long-write/scripts/outline_view.py +283 -0
  127. package/lib/oh-story/skills/story-long-write/scripts/style-whitelist.js +39 -0
  128. package/lib/oh-story/skills/story-review/SKILL.md +13 -3
  129. package/lib/oh-story/skills/story-review/references/anti-ai-writing.md +19 -47
  130. package/lib/oh-story/skills/story-review/references/author-memory.md +10 -8
  131. package/lib/oh-story/skills/story-review/references/banned-words.md +3 -1
  132. package/lib/oh-story/skills/story-review/references/dialogue-mastery.md +6 -4
  133. package/lib/oh-story/skills/story-review/references/review-quality.md +2 -2
  134. package/lib/oh-story/skills/story-review/references/style-resolution.md +27 -0
  135. package/lib/oh-story/skills/story-review/references/tracking-initialization.md +31 -0
  136. package/lib/oh-story/skills/story-review/references/tracking-transaction.md +2 -29
  137. package/lib/oh-story/skills/story-review/scripts/check-ai-patterns.js +6 -1
  138. package/lib/oh-story/skills/story-review/scripts/check-degeneration.js +39 -20
  139. package/lib/oh-story/skills/story-review/scripts/normalize-punctuation.js +10 -5
  140. package/lib/oh-story/skills/story-review/scripts/style-whitelist.js +39 -0
  141. package/lib/oh-story/skills/story-setup/SKILL.md +17 -10
  142. package/lib/oh-story/skills/story-setup/references/agent-references/anti-ai-writing.md +19 -47
  143. package/lib/oh-story/skills/story-setup/references/agent-references/banned-words.md +3 -1
  144. package/lib/oh-story/skills/story-setup/references/agent-references/deslop-gates.md +154 -0
  145. package/lib/oh-story/skills/story-setup/references/agent-references/dialogue-mastery.md +6 -4
  146. package/lib/oh-story/skills/story-setup/references/agent-references/format-and-structure.md +2 -2
  147. package/lib/oh-story/skills/story-setup/references/agent-references/short-genre-formulas.md +1 -1
  148. package/lib/oh-story/skills/story-setup/references/agent-references/style-combat-face.md +1 -1
  149. package/lib/oh-story/skills/story-setup/references/agent-references/style-genre-modules.md +1 -1
  150. package/lib/oh-story/skills/story-setup/references/agent-references/style-resolution.md +27 -0
  151. package/lib/oh-story/skills/story-setup/references/agent-references/writing-craft.md +69 -2
  152. package/lib/oh-story/skills/story-setup/references/diagnostics.md +38 -0
  153. package/lib/oh-story/skills/story-short-analyze/references/analysis-writing-techniques.md +1 -1
  154. package/lib/oh-story/skills/story-short-analyze/references/source-story-quality.md +2 -2
  155. package/lib/oh-story/skills/story-short-write/SKILL.md +18 -186
  156. package/lib/oh-story/skills/story-short-write/references/author-memory.md +10 -8
  157. package/lib/oh-story/skills/story-short-write/references/banned-words.md +3 -1
  158. package/lib/oh-story/skills/story-short-write/references/benchmark-recall.md +60 -0
  159. package/lib/oh-story/skills/story-short-write/references/dialogue-mastery.md +6 -4
  160. package/lib/oh-story/skills/story-short-write/references/genre-styles//344/270/226/346/203/205/346/211/223/350/204/270.md +2 -2
  161. package/lib/oh-story/skills/story-short-write/references/genre-styles//345/217/214/347/224/267/344/270/273.md +1 -1
  162. 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
  163. package/lib/oh-story/skills/story-short-write/references/genre-styles//345/256/205/346/226/227/345/256/253/346/226/227.md +3 -3
  164. 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
  165. package/lib/oh-story/skills/story-short-write/references/genre-styles//346/202/254/347/226/221.md +5 -5
  166. package/lib/oh-story/skills/story-short-write/references/genre-styles//346/260/221/344/277/227/346/200/252/350/260/210.md +4 -4
  167. package/lib/oh-story/skills/story-short-write/references/genre-styles//347/224/234/345/256/240.md +5 -5
  168. 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
  169. package/lib/oh-story/skills/story-short-write/references/genre-writing-formulas.md +1 -1
  170. package/lib/oh-story/skills/story-short-write/references/genre-writing-techniques.md +1 -1
  171. package/lib/oh-story/skills/story-short-write/references/reference-index.md +53 -0
  172. package/lib/oh-story/skills/story-short-write/references/short-craft.md +12 -14
  173. package/lib/oh-story/skills/story-short-write/references/short-deslop.md +10 -10
  174. package/lib/oh-story/skills/story-short-write/references/short-format.md +3 -1
  175. package/lib/oh-story/skills/story-short-write/references/short-prose-quality.md +2 -2
  176. package/lib/oh-story/skills/story-short-write/references/style-resolution.md +27 -0
  177. package/lib/oh-story/skills/story-short-write/references/workflow-design.md +77 -0
  178. package/lib/oh-story/skills/story-short-write/references/writing-workflow.md +5 -5
  179. package/lib/oh-story/skills/story-short-write/scripts/check-ai-patterns.js +6 -1
  180. package/lib/oh-story/skills/story-short-write/scripts/check-degeneration.js +39 -20
  181. package/lib/oh-story/skills/story-short-write/scripts/check-delivery-contract.js +34 -5
  182. package/lib/oh-story/skills/story-short-write/scripts/check-outline-copy.js +90 -23
  183. package/lib/oh-story/skills/story-short-write/scripts/normalize-punctuation.js +10 -5
  184. package/lib/oh-story/skills/story-short-write/scripts/style-whitelist.js +39 -0
  185. package/lib/types/client/drama-production-view.d.ts.map +1 -1
  186. package/lib/types/client/index.d.ts.map +1 -1
  187. package/lib/types/client/production-prompts.d.ts.map +1 -1
  188. package/lib/types/client/production-runtime.d.ts +17 -0
  189. package/lib/types/client/production-runtime.d.ts.map +1 -1
  190. package/lib/types/skill-provider.d.ts.map +1 -1
  191. package/lib/video-recap/CHANGELOG.md +31 -1
  192. package/lib/video-recap/manifest.json +162 -162
  193. package/lib/video-recap/skills/video-assemble/scripts/artifacts.py +4 -9
  194. package/lib/video-recap/skills/video-assemble/scripts/assemble.py +47 -60
  195. package/lib/video-recap/skills/video-assemble/scripts/assembly_contract.py +77 -115
  196. package/lib/video-recap/skills/video-assemble/scripts/assembly_settings.py +41 -40
  197. package/lib/video-recap/skills/video-assemble/scripts/audio_automation.py +22 -32
  198. package/lib/video-recap/skills/video-assemble/scripts/audio_mix.py +102 -192
  199. package/lib/video-recap/skills/video-assemble/scripts/jianying_builders.py +14 -35
  200. package/lib/video-recap/skills/video-assemble/scripts/jianying_model.py +14 -12
  201. package/lib/video-recap/skills/video-assemble/scripts/jianying_optional.py +8 -9
  202. package/lib/video-recap/skills/video-assemble/scripts/jianying_schema.py +3 -14
  203. package/lib/video-recap/skills/video-assemble/scripts/jianying_timeline_contract.py +23 -12
  204. package/lib/video-recap/skills/video-assemble/scripts/jianying_tracks.py +1 -4
  205. package/lib/video-recap/skills/video-assemble/scripts/jianying_writer.py +24 -25
  206. package/lib/video-recap/skills/video-assemble/scripts/lib.py +31 -85
  207. package/lib/video-recap/skills/video-assemble/scripts/media.py +100 -144
  208. package/lib/video-recap/skills/video-assemble/scripts/narration_audio.py +101 -195
  209. package/lib/video-recap/skills/video-assemble/scripts/render_preflight.py +10 -21
  210. package/lib/video-recap/skills/video-assemble/scripts/source_subtitles.py +90 -169
  211. package/lib/video-recap/skills/video-assemble/scripts/subtitle_core.py +69 -122
  212. package/lib/video-recap/skills/video-assemble/scripts/subtitle_render.py +10 -17
  213. package/lib/video-recap/skills/video-assemble/scripts/timeline.py +33 -48
  214. package/lib/video-recap/skills/video-assemble/scripts/timeline_emit.py +14 -20
  215. package/lib/video-recap/skills/video-assemble/scripts/visual_render.py +135 -213
  216. package/lib/video-recap/skills/video-cut/scripts/cut_cli.py +49 -57
  217. package/lib/video-recap/skills/video-cut/scripts/cut_contract.py +38 -74
  218. package/lib/video-recap/skills/video-cut/scripts/cut_render.py +46 -95
  219. package/lib/video-recap/skills/video-cut/scripts/lib.py +23 -25
  220. package/lib/video-recap/skills/video-cut/scripts/media_geometry.py +70 -173
  221. package/lib/video-recap/skills/video-cut/scripts/narration_mapping.py +28 -53
  222. package/lib/video-recap/skills/video-cut/scripts/sentence_boundaries.py +162 -322
  223. package/lib/video-recap/skills/video-recap/references/timeline-and-jianying.md +6 -7
  224. package/lib/video-recap/skills/video-recap/scripts/doctor.py +104 -124
  225. package/lib/video-recap/skills/video-recap/scripts/final_qc.py +255 -412
  226. package/lib/video-recap/skills/video-recap/scripts/lib.py +30 -52
  227. package/lib/video-recap/skills/video-recap/scripts/materials.py +97 -120
  228. package/lib/video-recap/skills/video-recap/scripts/mimo_qc_client.py +7 -12
  229. package/lib/video-recap/skills/video-recap/scripts/mimo_qc_evidence.py +46 -97
  230. package/lib/video-recap/skills/video-recap/scripts/mimo_qc_observations.py +18 -36
  231. package/lib/video-recap/skills/video-recap/scripts/mimo_qc_payload.py +29 -47
  232. package/lib/video-recap/skills/video-recap/scripts/mimo_qc_report.py +43 -76
  233. package/lib/video-recap/skills/video-recap/scripts/mimo_qc_runner.py +2 -1
  234. package/lib/video-recap/skills/video-recap/scripts/qc_contract.py +2 -1
  235. package/lib/video-recap/skills/video-recap/scripts/recap_cli.py +2 -2
  236. package/lib/video-recap/skills/video-recap/scripts/recap_inspect.py +129 -145
  237. package/lib/video-recap/skills/video-recap/scripts/recap_review.py +27 -20
  238. package/lib/video-recap/skills/video-recap/scripts/recap_runner.py +20 -31
  239. package/lib/video-recap/skills/video-recap/scripts/recap_runtime.py +31 -106
  240. package/lib/video-recap/skills/video-recap/scripts/recap_stage_qc.py +43 -113
  241. package/lib/video-recap/skills/video-recap/scripts/recap_timeline.py +196 -377
  242. package/lib/video-recap/skills/video-script/scripts/agent_brief.py +1 -1
  243. package/lib/video-recap/skills/video-script/scripts/agent_text.py +63 -172
  244. package/lib/video-recap/skills/video-script/scripts/brief_context.py +80 -135
  245. package/lib/video-recap/skills/video-script/scripts/brief_inputs.py +125 -167
  246. package/lib/video-recap/skills/video-script/scripts/brief_timeline.py +93 -208
  247. package/lib/video-recap/skills/video-script/scripts/deslop_qc.py +20 -46
  248. package/lib/video-recap/skills/video-script/scripts/lib.py +30 -26
  249. package/lib/video-recap/skills/video-script/scripts/narration_lint.py +145 -140
  250. package/lib/video-recap/skills/video-script/scripts/review_response.py +12 -42
  251. package/lib/video-recap/skills/video-script/scripts/review_runner.py +0 -6
  252. package/lib/video-recap/skills/video-script/scripts/speech_ownership.py +39 -100
  253. package/lib/video-recap/skills/video-script/scripts/timeline_fusion.py +33 -124
  254. package/lib/video-recap/skills/video-understanding/scripts/agent_brief.py +1 -1
  255. package/lib/video-recap/skills/video-understanding/scripts/agent_text.py +63 -172
  256. package/lib/video-recap/skills/video-understanding/scripts/asr.py +1 -2
  257. package/lib/video-recap/skills/video-understanding/scripts/brief_context.py +80 -135
  258. package/lib/video-recap/skills/video-understanding/scripts/brief_inputs.py +125 -167
  259. package/lib/video-recap/skills/video-understanding/scripts/brief_timeline.py +93 -208
  260. package/lib/video-recap/skills/video-understanding/scripts/consolidate.py +1 -1
  261. package/lib/video-recap/skills/video-understanding/scripts/deslop_qc.py +20 -46
  262. package/lib/video-recap/skills/video-understanding/scripts/lib.py +31 -26
  263. package/lib/video-recap/skills/video-understanding/scripts/narration_lint.py +145 -140
  264. package/lib/video-recap/skills/video-understanding/scripts/speech_ownership.py +39 -100
  265. package/lib/video-recap/skills/video-understanding/scripts/timeline_fusion.py +33 -124
  266. package/lib/video-recap/skills/video-understanding/scripts/vlm.py +1 -4
  267. package/lib/video-recap/skills/video-voiceover/scripts/dub.py +7 -13
  268. package/lib/video-recap/skills/video-voiceover/scripts/fish_audio.py +12 -30
  269. package/lib/video-recap/skills/video-voiceover/scripts/lib.py +98 -131
  270. package/lib/video-recap/skills/video-voiceover/scripts/tts_audio.py +17 -28
  271. package/lib/video-recap/skills/video-voiceover/scripts/voiceover.py +151 -240
  272. package/package.json +41 -41
@@ -1 +1 @@
1
- 0.3.0
1
+ 0.3.1
@@ -2,10 +2,10 @@
2
2
  "schemaVersion": 1,
3
3
  "upstream": {
4
4
  "repository": "git@github.com:zenstory-ai/novel-to-game.git",
5
- "commit": "57b54fa9253309cf46071380cc3ec43259ce1ed5",
6
- "releaseVersion": "0.3.0"
5
+ "commit": "e13a6fb4d61367be221d323c23159dff32d59a2e",
6
+ "releaseVersion": "0.3.1"
7
7
  },
8
- "generatedAt": "2026-08-29T04:50:35.078Z",
8
+ "generatedAt": "2026-09-10T13:26:15.874Z",
9
9
  "skills": [
10
10
  "game-art-direction",
11
11
  "game-build",
@@ -36,7 +36,7 @@
36
36
  },
37
37
  {
38
38
  "path": "VERSION",
39
- "sha256": "d915cc95d6ca8f47ae297713ed46d4e5c5d99ddd29fc3c61e263bdf305f2b5b0",
39
+ "sha256": "79e3f22ca37c7fdf4c29ae3648d6b008c3cb6547260a453409275470919dc674",
40
40
  "bytes": 6
41
41
  },
42
42
  {
@@ -351,8 +351,8 @@
351
351
  },
352
352
  {
353
353
  "path": "skills/game-art-direction/SKILL.md",
354
- "sha256": "1a798bab9818580c1bfe08b175794a060bbe3065bdb2b778822de9b9f29d1c7b",
355
- "bytes": 6039
354
+ "sha256": "cb205230e55d06f697874758af33e440ac69b6a93f4e88f59ff12101ff486377",
355
+ "bytes": 3919
356
356
  },
357
357
  {
358
358
  "path": "skills/game-art-direction/agents/openai.yaml",
@@ -366,8 +366,8 @@
366
366
  },
367
367
  {
368
368
  "path": "skills/game-build/SKILL.md",
369
- "sha256": "4aaf579704e864339387697f351cc4c98da8661b6910704ab39b5fb00bad4224",
370
- "bytes": 6668
369
+ "sha256": "09d235ef85d5d238936dd451067497750bb6b99924a5a8b95ca526648c759dd6",
370
+ "bytes": 4789
371
371
  },
372
372
  {
373
373
  "path": "skills/game-build/agents/openai.yaml",
@@ -396,8 +396,8 @@
396
396
  },
397
397
  {
398
398
  "path": "skills/game-concept/SKILL.md",
399
- "sha256": "7080002eb9aaf684192f3dfaf3feb81446ea35ba3297b9e8b86402456043b099",
400
- "bytes": 4912
399
+ "sha256": "a8d321eb3d6469ee142f128800060e284c563ff0639c047e20e55708a67a8b25",
400
+ "bytes": 3718
401
401
  },
402
402
  {
403
403
  "path": "skills/game-concept/agents/openai.yaml",
@@ -411,8 +411,8 @@
411
411
  },
412
412
  {
413
413
  "path": "skills/game-qa/SKILL.md",
414
- "sha256": "6835e17fcdec987bc10a3091716e953033442388aca7824f87553f9a7e5a8e01",
415
- "bytes": 3767
414
+ "sha256": "5f76bc51fe8957540f8099cb19550b4158df6075662a2d5ad5c95e453a441794",
415
+ "bytes": 2800
416
416
  },
417
417
  {
418
418
  "path": "skills/game-qa/agents/openai.yaml",
@@ -426,13 +426,13 @@
426
426
  },
427
427
  {
428
428
  "path": "skills/game-qa/references/test-design-method.md",
429
- "sha256": "5e720bfd7cf955998fb4f6beb73b1236b22d7e73d13fceb10515cab59b11b96a",
430
- "bytes": 3558
429
+ "sha256": "b6ef8e16a0cb84790674a20b5a3daa08283589f02223af1ff074f37beb00513b",
430
+ "bytes": 3495
431
431
  },
432
432
  {
433
433
  "path": "skills/game-world-design/SKILL.md",
434
- "sha256": "357cbc9ec023796a92179cd7044c23b2de8318482cf70b5f29bd7dedc4efae19",
435
- "bytes": 5284
434
+ "sha256": "0fbf8b1036c29a6a3951d050360d8880549d60159be74539654059ec0f8d06c4",
435
+ "bytes": 4305
436
436
  },
437
437
  {
438
438
  "path": "skills/game-world-design/agents/openai.yaml",
@@ -441,8 +441,8 @@
441
441
  },
442
442
  {
443
443
  "path": "skills/game-world-design/references/dialogue-design-method.md",
444
- "sha256": "61202bd7c9ba310f56375ad962d61caa51870ccfb0d2356e52ebad28bde4f34d",
445
- "bytes": 3291
444
+ "sha256": "4934b97a4587a4c68fe5e12c963d9c4b87ae9c02400de416ff74801c9ddb2f86",
445
+ "bytes": 3167
446
446
  },
447
447
  {
448
448
  "path": "skills/game-world-design/references/game-writing-craft.md",
@@ -466,8 +466,8 @@
466
466
  },
467
467
  {
468
468
  "path": "skills/novel-game-analyze/SKILL.md",
469
- "sha256": "d0bd415c694c92c1f7d15ab85fe7cff9a848a70e6cf8bf2e24ff49f85a8847b1",
470
- "bytes": 6044
469
+ "sha256": "2b4608a882c3c3c90f001de95ae21341739d496f1b6ca5d672a6725114d2a66c",
470
+ "bytes": 5743
471
471
  },
472
472
  {
473
473
  "path": "skills/novel-game-analyze/agents/openai.yaml",
@@ -481,8 +481,8 @@
481
481
  },
482
482
  {
483
483
  "path": "skills/novel-to-game/SKILL.md",
484
- "sha256": "15b8bcaa2cf13d53de86f871add34c8ffcc8ea7c40682941b50a5405fd4ae2d1",
485
- "bytes": 5725
484
+ "sha256": "795732e43690e99a62223aa70ca302bc340bac32374bd9e4ed7e2218012dc02f",
485
+ "bytes": 5602
486
486
  },
487
487
  {
488
488
  "path": "skills/novel-to-game/agents/openai.yaml",
@@ -491,18 +491,18 @@
491
491
  },
492
492
  {
493
493
  "path": "skills/novel-to-game/references/intake-benchmark-reference.md",
494
- "sha256": "4aada4b5b5d24558e295aec8febc93a8c1e7181b5a510923275cfcb73e99c9e7",
495
- "bytes": 2428
494
+ "sha256": "4f0411df62170dd7a91f39058ade44ca9f12663d72d3f571bd67b0bc5a784ea8",
495
+ "bytes": 2126
496
496
  },
497
497
  {
498
498
  "path": "skills/novel-to-game/references/intake-method.md",
499
- "sha256": "dd75a46879ee88e8bf5461e570d15eb91583a37d574333d5fda75332839203b4",
500
- "bytes": 3119
499
+ "sha256": "1afbc535f6d7b7fcb1790c7f566673b6279fbfbee59510bd5a261665dfca3d2e",
500
+ "bytes": 2925
501
501
  },
502
502
  {
503
503
  "path": "skills/novel-to-game/references/pipeline-contract.md",
504
- "sha256": "b77b8ec9229d01ee56c3b42a9069c11bc69c821462ffcbac69ab8cdbd09e1d2a",
505
- "bytes": 3390
504
+ "sha256": "130df7d50c99ebd634183e5a1c23c3dd119ba80b675f5f6b01afa3c5cb8a9206",
505
+ "bytes": 3122
506
506
  }
507
507
  ]
508
508
  }
@@ -15,18 +15,6 @@ description: "Direct game art and creative vision. Turn GAME_DESIGN into a produ
15
15
  声明的构图、材质、色光或信息原则,不复制他作角色、地图、界面和资产。原作文化与目标市场分别
16
16
  研究,不用流行刻板符号替代原作身份。
17
17
 
18
- 默认不得把“高级、电影感、成人、历史、严肃”翻译成全局低曝光。除非原作依据、产品承诺或核心玩法
19
- 明确属于恐怖、黑色、潜行、灾难等低照度题材,否则首屏与核心循环应保持可辨的中高明度,并用局部
20
- 对比、材质、构图和功能性色表达压力。夜景也必须看清人物轮廓、关键器物、可行动目标与正文;不能让
21
- 黑幕、暗角、降饱和或烟雾同时吞掉信息。确需整体偏暗时,在 `ART_DIRECTION.md` 写出依据、受影响界面、
22
- 最低可读层级和亮度 fallback。
23
-
24
- 历史、神话、民俗等题材还要把“时代真实性”和“当代审美媒介”分开裁决。用户要现代人喜欢的古风,
25
- 不等于批准现代服装、摄影棚、品牌海报、几何背景或真人皮肤;用户否决古旧感,也不等于必须抛弃古代
26
- 空间、器物、发式和关系礼法。先锁世界属于哪个时代,再锁画面是古画复刻、二维游戏插画、动画化角色、
27
- 3D 场景或真人摄影中的哪一种媒介。高风险风格在批量生产前必须用一张实际目标图校准,并记录“太旧、
28
- 太现代、太真实、太幼态、太暗”等反向边界;未通过目标图时不得把同一偏差扩散到整批资产。
29
-
30
18
  ## 设计
31
19
 
32
20
  1. 定义 3–5 个能否决错误方案的视觉原则和反向原则;时代题材分别锁定世界真实性、媒介风格与人物理想化程度;
@@ -38,20 +26,12 @@ description: "Direct game art and creative vision. Turn GAME_DESIGN into a produ
38
26
  7. 为每个实际交互界面或模式描述一个招牌时刻,说明玩家动作、压力、焦点、前后节拍和界面;
39
27
  8. 定义声音世界、功能反馈层级和音乐边界;语音只在确有独特价值时选择,并始终保留字幕/静音路径。
40
28
 
41
- `narrative-led` 或 `hybrid` 的叙事层还要说明人物距离、朝向、遮挡和姿态如何表现关系变化;对白区
42
- 怎样保证阅读、历史回看、跳过与加速;隐藏关系或立场优先通过称呼、站位、可选行动和场景可达性
43
- 表达,不默认做成数字面板。
44
-
45
- 动态媒体只规定体验角色、触发状态、镜头两端必须接续的事实和静帧/低动效 fallback;生成资产只
46
- 规定风格、身份、构图和状态连续性。生产台账、调用、格式、缓存与接入属于构建阶段。
29
+ `narrative-led` 或 `hybrid` 的叙事层还要说明人物距离、朝向、遮挡和姿态如何表现关系变化,以及对白区
30
+ 怎样保证阅读、历史回看、跳过与加速。
47
31
 
48
32
  表现层读取已经裁决的状态、事件与知识权限:同一个“获得物件、隐瞒证词、公开承诺”可以换文字、镜头
49
33
  或动画,但不能由表现代码另算一次效果,也不能向玩家或角色提前泄露未获知事实。
50
34
 
51
- 若 GAME_DESIGN 选择了 `signature_command`,界面必须区分玩家原表述、待补/被拒的候选、执行过程、
52
- 实际结果、留下的证物/见证和到期事项;输入已接收不能画成事情已经办成,部分完成或泄露也不能被成功
53
- 动画覆盖。
54
-
55
35
  不要写着色器、拓扑、贴图规格、接口、文件格式教程或供应商参数。
56
36
 
57
37
  ## 输出
@@ -65,9 +45,8 @@ description: "Direct game art and creative vision. Turn GAME_DESIGN into a produ
65
45
  - 必需与可降级资产,以及原创/授权边界和仍未确定的视觉风险。
66
46
 
67
47
  只有 `targetFinish`、用户用途或高风险视觉问题确实需要时,才追加 `design/VISUAL_TARGETS.md` 与少量
68
- 持久目标图;文字方向本身不因缺图片工具而失效。采用语音或动态媒体时只在 ART_DIRECTION 中补方向
69
- 条目,不建立生产级空表。
48
+ 持久目标图,条件见方法「视觉目标」。
70
49
 
71
- 交付前确认:玩家一眼能找到当前动作与压力;非低照度题材没有用全局压暗冒充气氛;夜景仍能辨认
72
- 人物、器物、目标与正文;招牌时刻在实际界面而非概念海报中成立;方向覆盖核心循环、失败和结果;
73
- 构建无需重新发明风格或反馈,但仍保有实现自由。
50
+ 交付前确认:玩家一眼能找到当前动作与压力;明度与夜景通过「默认明度裁决」的可读层;招牌时刻在
51
+ 实际界面而非概念海报中成立;方向覆盖核心循环、失败和结果;构建无需重新发明风格或反馈,但仍保有
52
+ 实现自由。
@@ -19,14 +19,8 @@ description: "Build a risk-matched whitebox or the approved production game for
19
19
  目标工具链不可用时不得自动改做网页;只有 brief 已批准替代运行时才可使用,并分开记录
20
20
  `targetRuntime`、`testedRuntime` 与未覆盖项。
21
21
 
22
- 正式生产继承美术方向的明度边界。非低照度题材不得在实现阶段擅自用全局黑罩、暗角、降曝光或低对比
23
- 小字制造“电影感”;夜景也要保留人物、器物、行动与结果可读性。确需偏暗的界面只按已批准范围实现,
24
- 并保留方向中约定的亮度或高对比 fallback。
25
-
26
- 时代题材的高风险画风先接入一张实际目标图并在目标视口确认,再批量生产。目标图已批准后,后续资产
27
- 必须继承同一时代世界、表现媒介、人物成熟度、身份锚点、光色和文本留白;不得把“当代审美”擅自实现成
28
- 现代服装/棚拍,也不得把“古风”擅自实现成古画旧化。用户否决方向时停止扩批,替换运行引用并清理被
29
- 否决资产,不能让旧图、试验图和批准图混在同一发布包。
22
+ 正式生产继承 `ART_DIRECTION.md` 的明度边界与时代题材目标图合同;实现阶段不得擅自压暗,也不得把
23
+ “当代审美”做成现代棚拍或把“古风”做成古画旧化。检查项见 build-brief-contract「视觉与必需资产」。
30
24
 
31
25
  BUILD_BRIEF 只压缩产品边界、必须保真的体验事实、运行方式与完成证据,实现细节交给实现模型。
32
26
 
@@ -48,37 +42,26 @@ BUILD_BRIEF 只压缩产品边界、必须保真的体验事实、运行方式
48
42
 
49
43
  1. 先实现一个最小但完整的核心循环:启动、真实输入、状态变化、结果和重开。范围不足时修范围,
50
44
  不先堆审计材料。
51
- 2. 先集中实现最小状态面与规则裁决器,再接表现层。模型可解释自由输入、提出候选动作或根据已提交结果
52
- 写对白;只有规则器能提交资源、位置、知识、承诺、物件归属、胜负与事件日志。
53
- 设计含 `signature_command` 时,先逐字继承 `id / label / intents / slots / validators / commit`,管线固定为
54
- “表述 → 有版本的候选结构 → schema/前置/知识/承诺验证
55
- → 执行阻力 → 确定性提交 → 叙述”;含混、冲突或越界候选返回澄清/拒绝且不提交,不能让关键词命中
56
- 或模型 `effects` 直接改状态。
57
- 3. 固定内容/规则/存档版本、初态、seed 与输入序列;事件日志记录 action、观察者和前后状态摘要。专属
58
- 命令还记录解析器版本、规范化候选、验证结果、执行轨迹和到期事项;回放消费已记录候选,不重新调用
59
- 在线模型。试玩反馈定位到节点,局部 patch 后重放失败路径和相邻反例,不让未选分支进入历史。
45
+ 2. 按 playable-model-contract「最小语义面」「裁决边界」实现运行时真正消费的状态与规则;存在
46
+ `signature_command` 时再执行其专属合同。模型只解释输入和结果,规则器拥有提交权。
47
+ 3. 按该合同「Snapshot、事件日志与回放」「反馈与局部 patch」固定版本、初态、seed 和输入序列,
48
+ 修订后重放失败路径与相邻反例。
60
49
  4. 回写实际工具链、install/build/start 命令和版本;未知值写 `NOT_AVAILABLE: 原因`,不猜。
61
50
 
62
- `whitebox` 到此只运行最窄的模型/回放检查与启动 smoke,输出结构化观察并交回 design owner;不调用
63
- `game-qa`,不写或覆盖 `qa/verification.json`,也不把白盒通过冒充生产候选完成。设计修订后重放受影响
64
- 路径,直到最大风险已被实际暴露或当前方向被否决。
51
+ `whitebox` 到此按 build-brief-contract「最小完成证据」运行最窄检查并交回 design owner;设计修订后
52
+ 重放受影响路径,直到最大风险已被实际暴露或当前方向被否决。
65
53
 
66
54
  `production` 继续:
67
55
 
68
56
  5. 提供一条权威验证命令和最小可观察状态,使 `game-qa` 能一次走完
69
- `clean start → 核心动作 → 设计结果 → restart`;构建阶段不预写 QA 结论或重复跑完整验收。
57
+ `clean start → 核心动作 → 设计结果 → restart`。
70
58
  6. 运行最窄的开发检查与启动 smoke,修复构建失败、阻断日志、资源失败和崩溃;替代运行时未覆盖的
71
59
  目标平台输入、性能、打包或设备项写入 limitation。
72
60
  7. 达到 brief 的 `targetFinish`;更高完成度只处理已批准的焦点资产和招牌时刻,不制造与可玩闭环
73
61
  无关的发布审计。
74
- 8. 交给 `game-qa` 只运行一次权威命令并写最终事实。时间、预算或生成调用用尽只会留下
75
- FAIL/NOT_RUN,不会生成 PASS。
76
-
77
- 连续 3D、语音、生成媒体、多语言与无障碍仅在实际采用时增加项目自己的回归检查。必需异步资产
78
- 加载或解码失败不得静默换灰盒仍宣称通过;可继续的 fallback 条件见 build-brief-contract.md。
62
+ 8. 交给 `game-qa` 只运行一次权威命令并写最终事实。
79
63
 
80
64
  ## 输出
81
65
 
82
- 生成 `build/BUILD_BRIEF.md` 与实际候选;production 还生成权威验证入口。构建不生成最终 QA 结论。
83
- 截图、录制与 raw trace 只保留调试所需的最小集合;`game-qa` 是 production 完整路径与
84
- `qa/verification.json` 的唯一 owner。
66
+ 生成 `build/BUILD_BRIEF.md` 与实际候选;production 还生成权威验证入口。截图、录制与 raw trace 只保留
67
+ 调试所需的最小集合。
@@ -17,10 +17,6 @@ description: "Design game concepts from a novel. From SOURCE_BIBLE and PRODUCT_B
17
17
  时回总入口修订,不在概念阶段静默改值。原作语言、文化语境、目标市场和界面语言分别处理,不从
18
18
  其中一个自动推出另一个。
19
19
 
20
- 先例只用于解释玩法为什么可识别:选一个最接近核心动词与循环的主要玩法先例,必要时再补一个解决
21
- 独立问题的辅助先例。写清借用的动词/循环/结构与明确不借的内容,不要求销量数字、固定名单或为每个
22
- 方向重复市场研究。外部事实只有在会改变选择且可能变化时才核实。
23
-
24
20
  互动叙事是成熟玩法,不因以阅读和对白承载就降低标准;它的动词可以是读局面、追问、比对信息、
25
21
  表态、隐瞒、交出与承担回响。先例提供语法,原作规则负责改变动作对象、顺序、代价和世界回应,
26
22
  不能只做 IP 换皮。
@@ -35,24 +31,10 @@ description: "Design game concepts from a novel. From SOURCE_BIBLE and PRODUCT_B
35
31
  子类型、核心循环、压力来源、原作选段、空间/镜头、成长关系或美术方向;已锁的主玩法不可偷换,
36
32
  未锁的核心循环可以正面比较。
37
33
 
38
- 每个概念卡只回答:
39
-
40
- - `player_job`:玩家以什么身份长期做哪份工作,想获得什么独特幻想;
41
- - `recurring_job_loop`:这份工作每个周期反复做什么;
42
- - 主类型、`experienceProfile`、主要玩法先例,以及本作借什么/不借什么;
43
- - 3–5 个核心动词、循环、压力、失败和世界响应;
44
- - `signature_command`:只有当自然语言表达本身能体现该身份时,写 `id`、`label` 与候选 `intents`;
45
- 不合适时明确 `N/A`,不得给所有游戏统一添加聊天框;
46
- - `resistance_chain`:谁或什么会阻止、拒绝、扭曲或泄露玩家的安排;
47
- - `advancement_ladder`:玩家在探索、成长、成熟阶段分别新学会什么、新能组合什么;
48
- - 原作独有的规则或情感/伦理张力怎样被玩家亲手 enact,而不是留在过场;
49
- - 一张能同时看出身份、动作与世界特征的招牌画面;
50
- - 最小验证切片、最大风险,以及什么观察结果会否决该方向。
51
-
52
34
  ## 选择
53
35
 
54
- 先按 concept-method 的硬否决逐个淘汰,不计算总分。再比较原作适配、玩家能动性、可读性、文化
55
- 准确性、传播画面和完成风险。`quick` 自动选证据最强的方向;`director` 给出推荐后等待用户决定。
36
+ 先按 concept-method 的硬否决逐个淘汰,不计算总分,再按其比较维度选择。`quick` 自动选证据最强的
37
+ 方向;`director` 给出推荐后等待用户决定。
56
38
 
57
39
  ## 输出
58
40
 
@@ -61,12 +43,14 @@ description: "Design game concepts from a novel. From SOURCE_BIBLE and PRODUCT_B
61
43
  1. brief 锁定值与开放维度;
62
44
  2. 三条体验支柱,各配可观察现象和失败现象;
63
45
  3. 紧凑先例说明;
64
- 4. 三个概念卡;
46
+ 4. 三个概念卡,每张只写主类型、`experienceProfile`、借用/拒绝的玩法先例、3–5 个核心动词、循环、
47
+ 压力、失败、世界响应,以及 `player_job`、`recurring_job_loop`、`resistance_chain` 和
48
+ `advancement_ladder`;仅当自然语言能体现玩家身份时写 `signature_command` 的 `id`、`label` 与候选
49
+ `intents`,否则写 `N/A`;最后说明原作张力如何由玩家亲手 enact、招牌画面、最小验证切片、最大风险
50
+ 和否决观察;
65
51
  5. 硬否决结果、关键取舍、推荐与选择状态;
66
- 6. 选定方向的 `experienceProfile`、玩家能动性合同、不可妥协体验承诺,以及五项独立交接字段:
67
- `player_job`、`recurring_job_loop`、`signature_command`(或 `N/A`)、`resistance_chain`、
68
- `advancement_ladder`;
52
+ 6. 选定方向的玩家能动性合同、不可妥协体验承诺;上述五项交接字段必须独立成项;
69
53
  7. 最小验证问题与开放问题。
70
54
 
71
- `narrative-led` 或 `hybrid` 的叙事层还要选择一种分支结构语法并说明内容预算。概念不得写伤害公式、
72
- 具体百分比、敌人血量、代码结构或逐场脚本;交接前确认选定方向可在 brief 范围内做成完整切片。
55
+ `narrative-led` 或 `hybrid` 的叙事层还要选择一种分支结构语法并说明内容预算。交接前确认选定方向
56
+ 可在 brief 范围内做成完整切片。
@@ -14,11 +14,7 @@ description: "Verify a game with evidence on its selected target runtime. Launch
14
14
  ## 唯一必需合同
15
15
 
16
16
  每个候选都必须用真实运行证据覆盖:`launch`、`render`、`input`、`coreLoop`、`outcome`、`restart`。
17
- `targetFinish` 描述成色,不改变这组六项。`checks` 恰好只含六键;项目回归与诊断只能映射回其中
18
- 一项、写入 `verify.suites` / evidence,或作为 limitation,不得生成第七道门。
19
-
20
- 这是一条自动化或代理可执行的运行验证,不要求真人试玩、主观评分或逐项人工批准。需要真人研究时
21
- 另立产品研究任务,不得把它变成当前候选 PASS 的隐藏前置条件。
17
+ `targetFinish` 描述成色,不改变这组六项,也不得生成第七道门。
22
18
 
23
19
  ## 执行
24
20
 
@@ -28,12 +24,8 @@ description: "Verify a game with evidence on its selected target runtime. Launch
28
24
  完成整条路径,并记录 command、exit code、环境、六项结果、最小证据和实际失败。
29
25
  3. 对照 GAME_DESIGN 中会改变结果的不变量和三段弧结束标记;只验证批准的设计承诺,不遍历所有
30
26
  代码路径。
31
- 4. 若候选有可执行模型、事件日志或 patch,由同一权威 verify 内嵌项目回归,不由 QA 另跑第二条命令:
32
- 同版本同初态/seed/输入得到同一终态,非法动作不提交,未选分支不污染,角色与玩家不读取未获知事实;
33
- patch 只改变声明节点并重放受影响路径。若有 `signature_command`,还验证规范化候选的确定性提交、
34
- 否定/含混/冲突输入不误命中、执行阻力可拒绝或部分完成、实际结果与反馈一致、到期事项准时且只触发
35
- 一次;谈话不得越权提交效果或泄露知识。失败按影响映射到 `coreLoop` / `outcome` / `restart` 或写
36
- limitation,不新增 checks。
27
+ 4. 若候选有可执行模型、事件日志、patch 或 `signature_command`,按 test-design-method 的对应合同把
28
+ 项目回归嵌入同一权威 verify;失败映射到已有 checks 或 limitation,不另跑命令或新增门禁。
37
29
  5. 记录 limitation 和问题的 product/design/art/build 归属。趣味、长期平衡、留存和商业价值只能写成
38
30
  未验证风险,不给确定性 PASS。
39
31
 
@@ -43,8 +35,6 @@ description: "Verify a game with evidence on its selected target runtime. Launch
43
35
  ## 输出
44
36
 
45
37
  - `qa/verification.json`:唯一 QA 事实源,包含三态 status、权威命令、complete run、六项 checks、
46
- 一条证据路径和 limitations。证据文件保留运行细节,不再复制一份 `qa` 结论对象,也不再生成
47
- 重复的人工可读 QA 报告。
38
+ 一条证据路径和 limitations;字段与证据要求见 qa-contract.md。
48
39
 
49
- 状态只取 `NOT_RUN` / `FAIL` / `PASS`。缺口写结构化 limitation,不发明 `PASS_WITH_GAPS`;未运行或
50
- 失败的必需项不能满足整体 PASS。
40
+ 缺口写结构化 limitation,不发明 `PASS_WITH_GAPS`;未运行或失败的必需项不能满足整体 PASS。
@@ -4,7 +4,7 @@
4
4
 
5
5
  ## 一、从六项结果反推
6
6
 
7
- 为 launch、render、input、coreLoop、outcome、restart 各选择一条最小证据,不为项目自己的回归与诊断复制平行验收矩阵。
7
+ 为 launch、render、input、coreLoop、outcome、restart 各选择一条最小证据。
8
8
 
9
9
  ## 二、从设计承诺写断言
10
10
 
@@ -20,44 +20,35 @@ description: "Design game experience, systems, and levels. Converge the chosen c
20
20
  ## 设计原则
21
21
 
22
22
  - 保护 CONCEPT 的玩家承诺、`experienceProfile` 和不可妥协项;发现范围冲突时回上游修订。
23
- - 只保留一个核心系统、最多两个支持系统;删除后不影响核心循环的内容不要升格为系统。
24
- - 规则写成玩家动作 → 状态变化 → 世界反馈 → 后续选择,不用背景设定代替可玩因果。
25
- - 用“教会 → 变式 → 组合 → 检验 → 命运回收”组织最小切片;默认 10–30 分钟且不超过 brief 时长。
26
- - NPC、势力、资源和历史只设计到玩家能感知、利用或改变的深度。
23
+ - 最小切片默认 10–30 分钟且不超过 brief 时长;系统预算、因果句式与关卡节拍按 world-design-method。
27
24
  - 不写文件名、函数、存储键、测试脚本、着色器或资产管线;实现结构由构建阶段决定。
28
25
 
29
26
  ## 输出合同
30
27
 
31
28
  生成一个 `design/GAME_DESIGN.md`,保持紧凑并包含:
32
29
 
33
- 1. **体验合同**:玩家身份、承诺、目标感受、`experienceProfile` 与首分钟目标;
34
- 2. **核心动词与循环**:3–5 个动词、短循环、长循环、主要玩法先例,以及原作如何改变动作对象、
35
- 顺序、代价和世界回应;
36
- 3. **世界规则与必要系统**:玩家可见/隐藏信息、行动顺序、随机性、资源或持久状态及其读取点;
37
- 4. **成长与三段弧**:探索、成长、成熟阶段新增的参与手段、可达空间或局面,以及可观察结束标记;
38
- 5. **代表性决策**:用一个场景证明最优选择会随局面翻转,并写清因果权与结算权;
39
- 6. **空间、镜头与关卡节拍**:路线、地标、压力、教学、组合和检验如何制造选择;
40
- 7. **反馈、失败与重开**:输入反馈、状态变化、失败原因、下次可改之处和定义初态;
41
- 8. **叙事附件**:仅在叙事实际承载体验时写场景脊柱、人物议程、知识/证词边界、持久回响、
30
+ 1. **体验与循环合同**:玩家身份、承诺、目标感受、`experienceProfile`、首分钟目标、3–5 个核心动词、
31
+ 短/长循环和主要玩法先例,以及原作如何改变动作对象、顺序、代价和世界回应;
32
+ 2. **世界规则与成长**:玩家可见/隐藏信息、行动顺序、随机性、资源或持久状态及其读取点;探索、成长、
33
+ 成熟阶段新增的参与手段、可达空间或局面,以及可观察结束标记;
34
+ 3. **决策与关卡节拍**:用一个场景证明最优选择会随局面翻转并写清因果权与结算权;说明路线、地标、
35
+ 压力、教学、组合和检验如何制造选择;
36
+ 4. **反馈、失败与重开**:输入反馈、状态变化、失败原因、下次可改之处和定义初态;
37
+ 5. **叙事附件**:仅在叙事实际承载体验时写场景脊柱、人物议程、知识/证词边界、持久回响、
42
38
  分支汇流和结局回收;否则写 N/A;
43
- 9. **语言、文化与交接边界**:界面语言、术语、阅读顺序、内容尺度,以及交给美术和构建的玩家效果;
44
- 10. **可执行切片合同**:最大设计风险、与风险匹配的原型形态、最小状态面、关键动作的前置/效果/观察者、
45
- 会被后续读取的事件,以及固定初态、seed、输入序列、预期状态与反馈;若概念选择了
46
- `signature_command`,固定 `id / label / intents / slots / validators / commit` 六组最小结构,再追加
47
- 澄清与拒绝条件、委托执行链、实际结果、证物/知情变化和到期回响;
48
- 11. **验证切片**:范围、明确非目标、完整路径和会触发设计修改的观察结果。
49
-
50
- 只有门槛、结局或张力确实读取数值时才做数值预算;叙事状态同理,写入后没有可见读取点就删除。
39
+ 6. **语言、文化与交接边界**:界面语言、术语、阅读顺序、内容尺度,以及交给美术和构建的玩家效果;
40
+ 7. **可执行切片合同**:最大设计风险、与风险匹配的原型形态、最小状态面、关键动作的前置/效果/观察者、
41
+ 会被后续读取的事件,以及固定初态、seed、输入序列、预期状态与反馈;若概念选择了
42
+ `signature_command`,固定 `id / label / intents / slots / validators / commit` 六组最小结构,再追加
43
+ 澄清与拒绝条件、委托执行链、实际结果、证物/知情变化和到期回响;
44
+ 8. **验证切片**:范围、明确非目标、完整路径和会触发设计修改的观察结果。
45
+
51
46
  规则优先用短表表达,不复制成平行 JSON、go/no-go 表或第二份验收矩阵。
52
47
 
53
48
  ## 完成检查
54
49
 
55
- - 玩家能从初态通过真实选择到达至少一个结果并重开;
56
- - 三段弧改变的是可用动作、空间或局面,不只是数字、文本或收集量增加;
57
- - 核心状态都在后续被读取,主要选择至少一次被世界明确回响;
58
- - 同一初态、规则版本、seed 与规范化动作输入序列可重放到同一终态;未见证角色不能读取秘密,未选分支不能污染历史;
59
- - 专属命令若存在,玩家表述、解析候选、实际执行与反馈彼此可区分;无效或含混输入不得偷偷提交近似动作;
60
- - 支持系统、分支和角色内容没有静默扩出 brief 范围;
61
- - 文档没有替实现做技术设计,也没有把趣味或平衡写成确定性 PASS。
50
+ 按 world-design-method 反向走读可执行闭环、世界回响、三段弧、重放与范围;存在叙事或专属命令时,
51
+ 再按对应方法检查知识、分支、人物行动、解析候选与实际执行没有串线。只交付设计合同,不替实现选技术,
52
+ 也不把趣味或平衡写成确定性 PASS。
62
53
 
63
54
  输出交回总入口,不自行推进美术、构建或 QA。
@@ -52,8 +52,7 @@
52
52
  逐场检查:是否过度解释或收口;人物是否只会重复同一策略;证据、筹码和信息密度是否变化;
53
53
  选择是否总套用同一模板;代价是否被当场结清;巧合或第三人是否反复替人物解决问题。
54
54
 
55
- 修订优先删解释、合并重复轮次、让反对方使用筹码,并让物件或空间承担意义。保留原作中的方言、
56
- 笨拙、急话、称呼和不整齐句式,不把所有人物润色成同一种标准范文。
55
+ 修订优先删解释、合并重复轮次、让反对方使用筹码,并让物件或空间承担意义。
57
56
 
58
57
  交付前反向走读分支,确认未选事实没有串入;每场至少留下可见变化和退出压力;玩家作判断所需
59
58
  的证据不能在删解释时一并删掉。
@@ -19,12 +19,12 @@ description: "Deconstruct a novel for game adaptation. Compress a raw novel, dec
19
19
  本 skill 的全书管道。已有分析若只覆盖黄金三章或快速预览,只能帮助判断开篇,不能
20
20
  证明理解了全书。除非用户明确只改编某一卷或片段,否则来源未覆盖全文时不得进入概念设计。
21
21
 
22
- 不因目录看起来完整就直接信任;按协议「来源清点」清点来源与已有拆文后,再判定是否算全量。
22
+ 不因目录看起来完整就直接信任;按协议「来源与覆盖」清点来源与已有拆文后,再判定是否算全量。
23
23
 
24
24
  若存在 `PRODUCT_BRIEF.md`,先读取:分级、核心幻想与已锁类型决定取证优先级——优先为
25
25
  核心幻想涉及的动作、关系、场面取证;对已锁类型需要而原作未系统提供的体系(如属性相克、
26
26
  数值成长),在设计空白中写明「原作无系统化的对应体系,属下游发明」,供下游改编边界如实
27
- 引用。仍不在本阶段发明或评价类型。
27
+ 引用。
28
28
 
29
29
  ## 全书管道
30
30
 
@@ -52,10 +52,9 @@ gameability-protocol.md 为准,此处只列顺序,不重述。选定改编
52
52
  生成一份 `analysis/SOURCE_BIBLE.md`,包含来源范围、**全书覆盖**、世界身份、原作事实与
53
53
  证据、改编边界、玩家身份候选(PRODUCT_BRIEF 已锁身份时改为该身份的动作空间验证)、
54
54
  可玩动词、可下达/承接的身份动作及其执行阻力、世界模型、空间与角色能动性、文化语境、
55
- 术语表(语言条件见上)、视觉锚点、风险和设计空白。全书覆盖按连续范围列出每一阶段的关键变化、
56
- 强弱节奏、反例/回收与游戏化意义,
57
- 表头写明来源单元数与成功数,使覆盖集合与来源单元集合完全一致。短表格优先于重复文档、
58
- 结构化数据和证据索引。
55
+ 术语表(语言条件见上)、视觉锚点、风险和设计空白。全书覆盖按连续范围列出开篇、中段、结局和跨段
56
+ 回收的关键变化、强弱节奏、反例与游戏化意义;表头写明来源单元数与成功数,覆盖集合必须与来源单元
57
+ 集合一致。短表格优先于重复文档、结构化数据和证据索引。
59
58
 
60
59
  改编边界必须是表格:`条目 | 边界类型 | 证据位置`,边界类型只用协议的四种标签;涉及
61
60
  名分、座次、官阶或队伍序列的作品必须附人物名册行(`姓名 | 身份/次序 | 结局 | 证据回目`),
@@ -72,6 +71,4 @@ scene_id、Hub/界面结构、QA 与范围计划只属于 GAME_DESIGN,不得
72
71
  来源范围只记录会影响复核的版本、覆盖范围和授权边界。下载日期、字节数、校验值和
73
72
  本地路径只有在复现契约确实需要时才写,不把获取日志当策划内容。
74
73
 
75
- 完成前确认:覆盖数与来源数一致且无未处理失败;核心规则可追溯;改编边界成表且证据位置
76
- 齐全;能回答玩家可能做什么、在哪里做、世界如何回应;理解开篇、中段、结局和跨段回收;
77
- 没有把一次性剧情冒充核心循环,也没有提前选定游戏类型。
74
+ 其余完成门禁见协议「事实保真与交付」。
@@ -13,10 +13,10 @@ description: "Turn a novel into a fully playable game on the selected target pla
13
13
  [intake-method.md](references/intake-method.md) 只处理会实质改变方向或带来权利、尺度、平台风险的
14
14
  歧义。低风险空白集中列为未确认假设,不逐项拦停。
15
15
 
16
- `targetFinish` 只表示想做到的成色:`graybox`、`playable-prototype`、
17
- `polished-vertical-slice` 或 `showcase`。所有项目使用同一最小 QA:真实启动、渲染、输入、核心循环、
18
- 至少一个设计结果和重开。连续 3D、语音、生成媒体、多语言或无障碍只在实际采用时运行项目自己的
19
- 效果回归,不形成第二套验收等级。
16
+ `targetFinish` 只表示想做到的成色:`graybox`、`playable-prototype`、`polished-vertical-slice` 或
17
+ `showcase`,不改变真实启动、渲染、输入、核心循环、至少一个设计结果和重开这六项最小 QA。六项全部
18
+ PASS 才算完成;`NOT_RUN` 不能满足完成声明,`qa/verification.json` 是唯一机器事实源。连续 3D、语音、
19
+ 生成媒体、多语言或无障碍只在实际采用时做效果回归,不形成第二套验收等级。
20
20
 
21
21
  `PRODUCT_BRIEF.md` 与 `SOURCE_BIBLE.md` 是上游事实,下游不得静默改写。brief 必须锁定平台、生产
22
22
  引擎、实际交付物、目标运行时和可用的实际测试运行时。工具链不可用时,只能使用 brief 已批准的
@@ -43,10 +43,8 @@ description: "Turn a novel into a fully playable game on the selected target pla
43
43
  8. 再由 `game-build` 将验证后的因果语义实现为完整候选,`game-qa` 验证最小闭环;问题按
44
44
  product/design/art/build 归属回流,不让实现阶段静默重做策划。
45
45
 
46
- 编排器只记录两项完成结果:
47
-
48
- - `scope`:上游范围和阶段 owner 齐全且不冲突;
49
- - `playable`:六项最小玩家效果均有真实运行证据。
46
+ 编排器只记录 `scope`(上游范围和阶段 owner 齐全且不冲突)与 `playable`(六项最小玩家效果均有
47
+ 真实运行证据)。
50
48
 
51
49
  ## 语言与文化
52
50
 
@@ -66,6 +64,3 @@ description: "Turn a novel into a fully playable game on the selected target pla
66
64
  证物/见证反馈与延期回响,不能退化成通用聊天或“说了就发生”。
67
65
  - 验证切片必须在实际运行环境中完整走通;范围服从 brief,不默认扩成长篇全量游戏。
68
66
  - 完成以运行、画面、真实输入、结果和重开证据为准;AI 不能客观证明趣味、长期平衡或商业价值。
69
-
70
- 六项必需检查全部 PASS 才报告当前候选完成最小 QA。`NOT_RUN` 可以诚实结束本次执行,但不能满足
71
- 完成声明;`qa/verification.json` 是唯一机器事实源。
@@ -22,8 +22,6 @@
22
22
  - 题材相似但玩法不同只能帮助文化或视觉判断,不能冒充玩法先例。
23
23
  - 互动叙事是成熟玩法:读局面、追问/调查、比对信息、表态或行动、承受回响都可成为核心动词。
24
24
  - 原作规则可以改变动作对象、顺序、代价和世界回应;先例是起点,不是禁止改编创新的模板。
25
- - 只核实会改变当前决定的外部事实。较新、小众或版本敏感信息用当前可靠来源;常识性玩法结构不
26
- 为了仪式感重复研究。
27
25
 
28
26
  ## 平台只锁真实约束
29
27
 
@@ -34,8 +32,6 @@
34
32
  | 移动 App | 朝向、触控、机型性能、安装包与离线需求 |
35
33
  | 小程序 / 小游戏 | 当前渠道包体、输入、联网、审核与分包限制 |
36
34
 
37
- 平台能力、许可或渠道规格可能变化时查当前官方文档;仓库不保存版本号、价格或包体上限快照。
38
-
39
35
  ## 交给概念阶段
40
36
 
41
37
  PRODUCT_BRIEF 只需写明主玩法、3–5 个候选核心动词、一个主要先例、目标平台和最大未知。若玩法仍
@@ -18,9 +18,7 @@ intake 的目的不是举行逐项审批会,而是尽早锁住会让下游返
18
18
  ## 产品框架
19
19
 
20
20
  填表前按需读取 [intake-benchmark-reference.md](intake-benchmark-reference.md),用它选择同玩法先例、
21
- 平台与视觉维度。引擎由目标交付物、团队现有工程、输入/显示、性能和导出约束决定;frontier 模型已知
22
- 主流框架,不在仓库维护版本、价格或渠道规格目录。只有许可、导出能力或平台限制会实质改变决定时,
23
- 才核实当前官方文档。
21
+ 平台与视觉维度。引擎由目标交付物、团队现有工程、输入/显示、性能和导出约束决定。
24
22
 
25
23
  | 维度 | 最小锁定内容 |
26
24
  |---|---|
@@ -40,9 +40,8 @@ JSON/YAML。设计理由仍由 `GAME_DESIGN.md` 拥有,运行状态与动作
40
40
 
41
41
  ## 证据角色
42
42
 
43
- `qa/verification.json` 是唯一 QA 事实源。schema v3 只写整体状态、权威命令、一次 complete run、
44
- 六项游戏效果 checks 和包含 `scope` / `reason` 的 limitations。目标运行环境与实际环境不同就如实
45
- 记录,不能用替代运行结果冒充目标平台通过。
43
+ `qa/verification.json` schema v3 只写整体状态、权威命令、一次 complete run、六项游戏效果 checks
44
+ 和包含 `scope` / `reason` 的 limitations。
46
45
 
47
46
  构建只准备候选与 verify 入口,QA 只运行一次完整路径;不要求真人试玩、逐项人工批准、重复机器
48
47
  证据对象或第二份 QA 报告。
@@ -51,8 +50,7 @@ JSON/YAML。设计理由仍由 `GAME_DESIGN.md` 拥有,运行状态与动作
51
50
  的状态/动作/知识/回响节点和 owner;修订后固定同一初态、规则版本、seed 与输入序列重放受影响路径。
52
51
  若节点 id、变量语义、动作效果或知识权限改变,必须迁移旧存档/日志或明确拒绝兼容,不能静默解释成新历史。
53
52
 
54
- `targetFinish` 描述成色,不改变最小 QA。预算或工具耗尽只会留下 `NOT_RUN` / `FAIL`、缩小范围或
55
- 延期,不会生成 PASS。主观趣味、平衡、权利合规和发布质量不由机器事实确定。
53
+ 预算或工具耗尽只会留下 `NOT_RUN` / `FAIL`、缩小范围或延期,不会生成 PASS。
56
54
 
57
55
  ## resume 与回流
58
56