@oh-story/dsh 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (488) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +38 -0
  3. package/cordis.patch.yml +3 -0
  4. package/lib/client.js +1201 -0
  5. package/lib/client.js.map +7 -0
  6. package/lib/drama/LICENSE.upstream +21 -0
  7. package/lib/drama/manifest.json +1012 -0
  8. package/lib/drama/skills/short-drama/SKILL.md +153 -0
  9. package/lib/drama/skills/short-drama/agents/openai.yaml +4 -0
  10. package/lib/drama/skills/short-drama/assets/creator-decision.example.jsonl +4 -0
  11. package/lib/drama/skills/short-drama/assets/production-observation.example.jsonl +2 -0
  12. package/lib/drama/skills/short-drama/assets/project-template/short-drama.json +36 -0
  13. package/lib/drama/skills/short-drama/assets/reference-observation.example.jsonl +2 -0
  14. package/lib/drama/skills/short-drama/references/audience-reveal.md +74 -0
  15. package/lib/drama/skills/short-drama/references/contract-and-ownership.md +94 -0
  16. package/lib/drama/skills/short-drama/references/creator-workflow.md +82 -0
  17. package/lib/drama/skills/short-drama/references/form-cards/Q/347/211/210/350/241/250/350/276/276.md +73 -0
  18. package/lib/drama/skills/short-drama/references/form-cards//344/272/214/347/273/264/345/212/250/346/200/201/346/274/253.md +74 -0
  19. package/lib/drama/skills/short-drama/references/form-cards//345/233/275/346/274/253/344/272/214/346/254/241/345/205/203.md +79 -0
  20. package/lib/drama/skills/short-drama/references/form-cards//345/256/236/346/213/215.md +75 -0
  21. package/lib/drama/skills/short-drama/references/form-cards//346/260/264/345/242/250/347/254/224/350/247/246.md +85 -0
  22. package/lib/drama/skills/short-drama/references/form-cards//351/243/216/346/240/274/345/214/226/344/270/211/347/273/264.md +72 -0
  23. package/lib/drama/skills/short-drama/references/knowhow-index.md +80 -0
  24. package/lib/drama/skills/short-drama/references/lifecycle-commands.md +130 -0
  25. package/lib/drama/skills/short-drama/references/look-development.md +52 -0
  26. package/lib/drama/skills/short-drama/references/pickup-and-alternate.md +58 -0
  27. package/lib/drama/skills/short-drama/references/production-form-profiles.md +126 -0
  28. package/lib/drama/skills/short-drama/references/reference-roles.md +142 -0
  29. package/lib/drama/skills/short-drama/references/runtime-preflight.md +27 -0
  30. package/lib/drama/skills/short-drama/scripts/project_tool.py +1963 -0
  31. package/lib/drama/skills/short-drama/scripts/selftest.py +287 -0
  32. package/lib/drama/skills/short-drama-assets/SKILL.md +187 -0
  33. package/lib/drama/skills/short-drama-assets/agents/openai.yaml +4 -0
  34. package/lib/drama/skills/short-drama-assets/assets/character-look.example.jsonl +3 -0
  35. package/lib/drama/skills/short-drama-assets/assets/continuity.example.jsonl +4 -0
  36. package/lib/drama/skills/short-drama-assets/assets/decisions.example.jsonl +5 -0
  37. package/lib/drama/skills/short-drama-assets/assets/location-view.example.jsonl +3 -0
  38. package/lib/drama/skills/short-drama-assets/assets/occurrences.example.jsonl +5 -0
  39. package/lib/drama/skills/short-drama-assets/assets/prop-state.example.jsonl +3 -0
  40. package/lib/drama/skills/short-drama-assets/examples/minimal/characters.jsonl +2 -0
  41. package/lib/drama/skills/short-drama-assets/examples/minimal/looks.jsonl +2 -0
  42. package/lib/drama/skills/short-drama-assets/references/asset-review-checklist.md +89 -0
  43. package/lib/drama/skills/short-drama-assets/references/character-and-look.md +164 -0
  44. package/lib/drama/skills/short-drama-assets/references/continuity-delta.md +123 -0
  45. package/lib/drama/skills/short-drama-assets/references/identity-vs-variant.md +146 -0
  46. package/lib/drama/skills/short-drama-assets/references/location-and-view.md +84 -0
  47. package/lib/drama/skills/short-drama-assets/references/occurrence-extraction.md +111 -0
  48. package/lib/drama/skills/short-drama-assets/references/prop-and-state.md +107 -0
  49. package/lib/drama/skills/short-drama-assets/references/stage-contract.md +136 -0
  50. package/lib/drama/skills/short-drama-assets/references/voice-direction.md +171 -0
  51. package/lib/drama/skills/short-drama-assets/scripts/asset_check.py +267 -0
  52. package/lib/drama/skills/short-drama-assets/scripts/selftest.py +89 -0
  53. package/lib/drama/skills/short-drama-develop/SKILL.md +157 -0
  54. package/lib/drama/skills/short-drama-develop/agents/openai.yaml +4 -0
  55. package/lib/drama/skills/short-drama-develop/assets/adaptation-map.example.jsonl +1 -0
  56. package/lib/drama/skills/short-drama-develop/assets/creative-brief.md +120 -0
  57. package/lib/drama/skills/short-drama-develop/assets/episode-map.jsonl +1 -0
  58. package/lib/drama/skills/short-drama-develop/assets/story-engine.md +181 -0
  59. package/lib/drama/skills/short-drama-develop/references/adaptation-craft.md +219 -0
  60. package/lib/drama/skills/short-drama-develop/references/creative-reference-intake.md +57 -0
  61. package/lib/drama/skills/short-drama-develop/references/director-brief-craft.md +113 -0
  62. package/lib/drama/skills/short-drama-develop/references/episode-design.md +509 -0
  63. package/lib/drama/skills/short-drama-develop/references/genre-and-hook-playbook.md +240 -0
  64. package/lib/drama/skills/short-drama-develop/references/genre-cards//344/272/262/345/255/220/351/232/220/347/247/230.md +112 -0
  65. package/lib/drama/skills/short-drama-develop/references/genre-cards//344/273/231/344/276/240/344/277/256/347/234/237.md +51 -0
  66. package/lib/drama/skills/short-drama-develop/references/genre-cards//345/212/250/344/275/234/344/273/273/345/212/241.md +51 -0
  67. package/lib/drama/skills/short-drama-develop/references/genre-cards//345/217/244/350/243/205/346/235/203/350/260/213.md +51 -0
  68. package/lib/drama/skills/short-drama-develop/references/genre-cards//345/244/215/344/273/207/346/211/223/350/204/270.md +51 -0
  69. package/lib/drama/skills/short-drama-develop/references/genre-cards//345/256/266/345/272/255/345/205/263/347/263/273.md +51 -0
  70. package/lib/drama/skills/short-drama-develop/references/genre-cards//346/202/254/347/226/221/350/247/204/345/210/231.md +51 -0
  71. package/lib/drama/skills/short-drama-develop/references/genre-cards//347/224/237/346/264/273/346/265/201.md +51 -0
  72. package/lib/drama/skills/short-drama-develop/references/genre-cards//347/240/264/351/225/234/351/207/215/345/234/206.md +109 -0
  73. package/lib/drama/skills/short-drama-develop/references/genre-cards//350/201/214/345/234/272/345/226/234/345/211/247.md +51 -0
  74. package/lib/drama/skills/short-drama-develop/references/genre-cards//350/261/252/351/227/250/345/251/232/346/201/213.md +51 -0
  75. package/lib/drama/skills/short-drama-develop/references/genre-cards//350/272/253/344/273/275/351/224/231/344/275/215.md +51 -0
  76. package/lib/drama/skills/short-drama-develop/references/genre-cards.md +92 -0
  77. package/lib/drama/skills/short-drama-develop/references/mechanism-loop.md +282 -0
  78. package/lib/drama/skills/short-drama-develop/references/multi-episode-intake.md +128 -0
  79. package/lib/drama/skills/short-drama-develop/references/premise-devices.md +211 -0
  80. package/lib/drama/skills/short-drama-develop/references/reveal-reversal-payoff.md +99 -0
  81. package/lib/drama/skills/short-drama-develop/references/serial-character-and-memory.md +293 -0
  82. package/lib/drama/skills/short-drama-develop/references/stage-contract.md +88 -0
  83. package/lib/drama/skills/short-drama-develop/references/story-craft.md +359 -0
  84. package/lib/drama/skills/short-drama-develop/scripts/episode_intake.py +699 -0
  85. package/lib/drama/skills/short-drama-develop/scripts/selftest.py +47 -0
  86. package/lib/drama/skills/short-drama-image-prompts/SKILL.md +181 -0
  87. package/lib/drama/skills/short-drama-image-prompts/agents/openai.yaml +4 -0
  88. package/lib/drama/skills/short-drama-image-prompts/assets/image-prompt-spec.jsonl.md +187 -0
  89. package/lib/drama/skills/short-drama-image-prompts/assets/image-prompts.md +37 -0
  90. package/lib/drama/skills/short-drama-image-prompts/assets/lookdev-frame-spec.jsonl.md +128 -0
  91. package/lib/drama/skills/short-drama-image-prompts/assets/lookdev-prompts.md +31 -0
  92. package/lib/drama/skills/short-drama-image-prompts/examples/minimal-image-prompt-specs.jsonl +2 -0
  93. package/lib/drama/skills/short-drama-image-prompts/references/character-and-look.md +154 -0
  94. package/lib/drama/skills/short-drama-image-prompts/references/common-recipe.md +231 -0
  95. package/lib/drama/skills/short-drama-image-prompts/references/edit-and-revision.md +122 -0
  96. package/lib/drama/skills/short-drama-image-prompts/references/location-plate.md +152 -0
  97. package/lib/drama/skills/short-drama-image-prompts/references/look-and-state-variant.md +96 -0
  98. package/lib/drama/skills/short-drama-image-prompts/references/lookdev-frame.md +38 -0
  99. package/lib/drama/skills/short-drama-image-prompts/references/production-sheet-recipes.md +177 -0
  100. package/lib/drama/skills/short-drama-image-prompts/references/prop-plate.md +140 -0
  101. package/lib/drama/skills/short-drama-image-prompts/references/review-and-fixtures.md +92 -0
  102. package/lib/drama/skills/short-drama-image-prompts/references/stage-contract.md +89 -0
  103. package/lib/drama/skills/short-drama-image-prompts/scripts/image_prompt_check.py +443 -0
  104. package/lib/drama/skills/short-drama-image-prompts/scripts/selftest.py +93 -0
  105. package/lib/drama/skills/short-drama-novel-analyze/SKILL.md +245 -0
  106. package/lib/drama/skills/short-drama-novel-analyze/agents/openai.yaml +4 -0
  107. package/lib/drama/skills/short-drama-novel-analyze/assets/episode-candidate.example.jsonl +3 -0
  108. package/lib/drama/skills/short-drama-novel-analyze/references/adaptation-triage.md +116 -0
  109. package/lib/drama/skills/short-drama-novel-analyze/references/adaptation-value.md +124 -0
  110. package/lib/drama/skills/short-drama-novel-analyze/references/aggregation-and-entities.md +155 -0
  111. package/lib/drama/skills/short-drama-novel-analyze/references/chapter-extraction.md +141 -0
  112. package/lib/drama/skills/short-drama-novel-analyze/references/stage-contract.md +67 -0
  113. package/lib/drama/skills/short-drama-novel-analyze/scripts/novel_index.py +651 -0
  114. package/lib/drama/skills/short-drama-novel-analyze/scripts/selftest.py +51 -0
  115. package/lib/drama/skills/short-drama-produce/SKILL.md +103 -0
  116. package/lib/drama/skills/short-drama-produce/agents/openai.yaml +4 -0
  117. package/lib/drama/skills/short-drama-produce/references/adapter-contract.md +140 -0
  118. package/lib/drama/skills/short-drama-produce/references/providers/gpt-image-2.md +24 -0
  119. package/lib/drama/skills/short-drama-produce/references/providers/minimax-music.md +25 -0
  120. package/lib/drama/skills/short-drama-produce/references/providers/seedance.md +40 -0
  121. package/lib/drama/skills/short-drama-produce/scripts/fixture_adapter.py +60 -0
  122. package/lib/drama/skills/short-drama-produce/scripts/production_tool.py +1635 -0
  123. package/lib/drama/skills/short-drama-produce/scripts/provider_adapters.py +964 -0
  124. package/lib/drama/skills/short-drama-produce/scripts/selftest.py +134 -0
  125. package/lib/drama/skills/short-drama-review/SKILL.md +178 -0
  126. package/lib/drama/skills/short-drama-review/agents/openai.yaml +4 -0
  127. package/lib/drama/skills/short-drama-review/assets/finding-template.jsonl +2 -0
  128. package/lib/drama/skills/short-drama-review/assets/supersession-decision.example.json +42 -0
  129. package/lib/drama/skills/short-drama-review/assets/verdict-template.json +32 -0
  130. package/lib/drama/skills/short-drama-review/examples/minimal-findings.jsonl +2 -0
  131. package/lib/drama/skills/short-drama-review/examples/minimal-verdict.json +34 -0
  132. package/lib/drama/skills/short-drama-review/references/anti-template-repair.md +114 -0
  133. package/lib/drama/skills/short-drama-review/references/production-quality-gates.md +270 -0
  134. package/lib/drama/skills/short-drama-review/references/project-calibration.md +85 -0
  135. package/lib/drama/skills/short-drama-review/references/review-method.md +82 -0
  136. package/lib/drama/skills/short-drama-review/references/rubric-assets-prompts.md +115 -0
  137. package/lib/drama/skills/short-drama-review/references/rubric-source-analysis.md +108 -0
  138. package/lib/drama/skills/short-drama-review/references/rubric-story-script.md +164 -0
  139. package/lib/drama/skills/short-drama-review/references/rubric-visual-motion.md +166 -0
  140. package/lib/drama/skills/short-drama-review/references/stage-contract.md +87 -0
  141. package/lib/drama/skills/short-drama-review/scripts/review_check.py +325 -0
  142. package/lib/drama/skills/short-drama-review/scripts/selftest.py +87 -0
  143. package/lib/drama/skills/short-drama-storyboard/SKILL.md +264 -0
  144. package/lib/drama/skills/short-drama-storyboard/agents/openai.yaml +4 -0
  145. package/lib/drama/skills/short-drama-storyboard/assets/coverage-audition.example.jsonl +2 -0
  146. package/lib/drama/skills/short-drama-storyboard/assets/coverage-template.json +49 -0
  147. package/lib/drama/skills/short-drama-storyboard/assets/keyframe-prompts.md +32 -0
  148. package/lib/drama/skills/short-drama-storyboard/assets/keyframe-template.jsonl +2 -0
  149. package/lib/drama/skills/short-drama-storyboard/assets/revision-lineage.fragment.json +12 -0
  150. package/lib/drama/skills/short-drama-storyboard/assets/scene-visual-plan.example.jsonl +2 -0
  151. package/lib/drama/skills/short-drama-storyboard/assets/shot-template.jsonl +2 -0
  152. package/lib/drama/skills/short-drama-storyboard/references/blocking-playbooks.md +241 -0
  153. package/lib/drama/skills/short-drama-storyboard/references/coverage-audition.md +39 -0
  154. package/lib/drama/skills/short-drama-storyboard/references/keyframe-craft.md +169 -0
  155. package/lib/drama/skills/short-drama-storyboard/references/production-shot-grammar.md +264 -0
  156. package/lib/drama/skills/short-drama-storyboard/references/review-and-fixtures.md +70 -0
  157. package/lib/drama/skills/short-drama-storyboard/references/scene-visual-plan.md +39 -0
  158. package/lib/drama/skills/short-drama-storyboard/references/screenplay-to-keyframe-example.md +157 -0
  159. package/lib/drama/skills/short-drama-storyboard/references/shot-craft.md +192 -0
  160. package/lib/drama/skills/short-drama-storyboard/references/shot-revision-identity.md +29 -0
  161. package/lib/drama/skills/short-drama-storyboard/references/stage-contract.md +110 -0
  162. package/lib/drama/skills/short-drama-storyboard/scripts/selftest.py +191 -0
  163. package/lib/drama/skills/short-drama-storyboard/scripts/storyboard_check.py +824 -0
  164. package/lib/drama/skills/short-drama-video-prompts/SKILL.md +245 -0
  165. package/lib/drama/skills/short-drama-video-prompts/agents/openai.yaml +4 -0
  166. package/lib/drama/skills/short-drama-video-prompts/assets/coverage-scope.fragment.json +21 -0
  167. package/lib/drama/skills/short-drama-video-prompts/assets/delivery-container.jsonl.md +101 -0
  168. package/lib/drama/skills/short-drama-video-prompts/assets/motion-spec.jsonl.md +212 -0
  169. package/lib/drama/skills/short-drama-video-prompts/assets/motion-terminal.example.jsonl +2 -0
  170. package/lib/drama/skills/short-drama-video-prompts/assets/music-spec.jsonl.md +31 -0
  171. package/lib/drama/skills/short-drama-video-prompts/assets/performance.fragment.json +38 -0
  172. package/lib/drama/skills/short-drama-video-prompts/assets/video-prompts.md +46 -0
  173. package/lib/drama/skills/short-drama-video-prompts/examples/minimal-music-specs.jsonl +2 -0
  174. package/lib/drama/skills/short-drama-video-prompts/references/camera-audio-continuity.md +240 -0
  175. package/lib/drama/skills/short-drama-video-prompts/references/delivery-profile.md +255 -0
  176. package/lib/drama/skills/short-drama-video-prompts/references/generability.md +93 -0
  177. package/lib/drama/skills/short-drama-video-prompts/references/motion-recipe.md +304 -0
  178. package/lib/drama/skills/short-drama-video-prompts/references/performance-action-timing.md +191 -0
  179. package/lib/drama/skills/short-drama-video-prompts/references/production-prompt-grammar.md +312 -0
  180. package/lib/drama/skills/short-drama-video-prompts/references/review-and-fixtures.md +168 -0
  181. package/lib/drama/skills/short-drama-video-prompts/references/stage-contract.md +110 -0
  182. package/lib/drama/skills/short-drama-video-prompts/scripts/container_check.py +329 -0
  183. package/lib/drama/skills/short-drama-video-prompts/scripts/motion_timing_check.py +450 -0
  184. package/lib/drama/skills/short-drama-video-prompts/scripts/music_spec_check.py +327 -0
  185. package/lib/drama/skills/short-drama-video-prompts/scripts/selftest.py +82 -0
  186. package/lib/drama/skills/short-drama-write/SKILL.md +284 -0
  187. package/lib/drama/skills/short-drama-write/agents/openai.yaml +4 -0
  188. package/lib/drama/skills/short-drama-write/assets/beats.jsonl +2 -0
  189. package/lib/drama/skills/short-drama-write/assets/episode-card-standalone.json +120 -0
  190. package/lib/drama/skills/short-drama-write/assets/episode-card.json +55 -0
  191. package/lib/drama/skills/short-drama-write/assets/screenplay.md +36 -0
  192. package/lib/drama/skills/short-drama-write/assets/voice-record-sheet.jsonl.md +89 -0
  193. package/lib/drama/skills/short-drama-write/references/dialogue-craft.md +519 -0
  194. package/lib/drama/skills/short-drama-write/references/production-format-dialect.md +273 -0
  195. package/lib/drama/skills/short-drama-write/references/scene-handoff-capsule.md +51 -0
  196. package/lib/drama/skills/short-drama-write/references/scene-sound-dramaturgy.md +43 -0
  197. package/lib/drama/skills/short-drama-write/references/screenplay-format.md +260 -0
  198. package/lib/drama/skills/short-drama-write/references/script-craft.md +558 -0
  199. package/lib/drama/skills/short-drama-write/references/stage-contract.md +94 -0
  200. package/lib/drama/skills/short-drama-write/references/substitutable-realization.md +107 -0
  201. package/lib/drama/skills/short-drama-write/scripts/duration_estimate.py +309 -0
  202. package/lib/drama/skills/short-drama-write/scripts/screenplay_index.py +1091 -0
  203. package/lib/drama/skills/short-drama-write/scripts/selftest.py +229 -0
  204. package/lib/drama/skills/short-drama-write/scripts/voice_sheet_check.py +416 -0
  205. package/lib/index.js +756 -0
  206. package/lib/index.js.map +7 -0
  207. package/lib/oh-story/LICENSE.upstream +21 -0
  208. package/lib/oh-story/manifest.json +1351 -0
  209. package/lib/oh-story/roles/chapter-extractor.md +314 -0
  210. package/lib/oh-story/roles/character-designer.md +169 -0
  211. package/lib/oh-story/roles/consistency-checker.md +190 -0
  212. package/lib/oh-story/roles/narrative-writer.md +294 -0
  213. package/lib/oh-story/roles/story-architect.md +195 -0
  214. package/lib/oh-story/roles/story-explorer.md +364 -0
  215. package/lib/oh-story/roles/story-researcher.md +304 -0
  216. package/lib/oh-story/skills/browser-cdp/SKILL.md +175 -0
  217. package/lib/oh-story/skills/story/SKILL.md +116 -0
  218. package/lib/oh-story/skills/story/VERSION +1 -0
  219. package/lib/oh-story/skills/story-cover/SKILL.md +327 -0
  220. package/lib/oh-story/skills/story-cover/references/cover-styles.md +210 -0
  221. package/lib/oh-story/skills/story-deslop/SKILL.md +445 -0
  222. package/lib/oh-story/skills/story-deslop/references/anti-ai-writing.md +582 -0
  223. package/lib/oh-story/skills/story-deslop/references/banned-words.md +147 -0
  224. package/lib/oh-story/skills/story-deslop/scripts/check-ai-patterns.js +1371 -0
  225. package/lib/oh-story/skills/story-deslop/scripts/check-degeneration.js +330 -0
  226. package/lib/oh-story/skills/story-deslop/scripts/check-outline-copy.js +241 -0
  227. package/lib/oh-story/skills/story-deslop/scripts/normalize-punctuation.js +410 -0
  228. package/lib/oh-story/skills/story-import/SKILL.md +634 -0
  229. package/lib/oh-story/skills/story-import/references/character-state-reverse.md +82 -0
  230. package/lib/oh-story/skills/story-import/references/format-and-structure.md +169 -0
  231. package/lib/oh-story/skills/story-import/references/length-routing.md +134 -0
  232. package/lib/oh-story/skills/story-import/references/state-tracking.md +108 -0
  233. package/lib/oh-story/skills/story-import/references/structure-mapping-long.md +442 -0
  234. package/lib/oh-story/skills/story-import/references/structure-mapping-short.md +175 -0
  235. package/lib/oh-story/skills/story-import/references/tracking-transaction.md +161 -0
  236. package/lib/oh-story/skills/story-import/scripts/tracking_commit.py +1139 -0
  237. package/lib/oh-story/skills/story-long-analyze/SKILL.md +329 -0
  238. package/lib/oh-story/skills/story-long-analyze/references/deconstruction-notes.md +270 -0
  239. package/lib/oh-story/skills/story-long-analyze/references/material-decomposition.md +530 -0
  240. package/lib/oh-story/skills/story-long-analyze/references/output-templates.md +559 -0
  241. package/lib/oh-story/skills/story-long-analyze/references/pipeline-ops.md +80 -0
  242. package/lib/oh-story/skills/story-long-analyze/references/style-profile-generator.md +149 -0
  243. package/lib/oh-story/skills/story-long-analyze/references/style-profile-protocol.md +133 -0
  244. package/lib/oh-story/skills/story-long-scan/SKILL.md +342 -0
  245. package/lib/oh-story/skills/story-long-scan/references/genre-trends.md +197 -0
  246. package/lib/oh-story/skills/story-long-scan/references/publishing-guide.md +114 -0
  247. package/lib/oh-story/skills/story-long-scan/references/reader-profiling.md +105 -0
  248. package/lib/oh-story/skills/story-long-scan/references/scan-output-format.md +207 -0
  249. package/lib/oh-story/skills/story-long-scan/references/topic-decision.md +78 -0
  250. package/lib/oh-story/skills/story-long-write/SKILL.md +327 -0
  251. package/lib/oh-story/skills/story-long-write/references/anti-ai-writing.md +582 -0
  252. package/lib/oh-story/skills/story-long-write/references/artifact-protocols.md +302 -0
  253. package/lib/oh-story/skills/story-long-write/references/banned-words.md +147 -0
  254. package/lib/oh-story/skills/story-long-write/references/character-basics.md +445 -0
  255. package/lib/oh-story/skills/story-long-write/references/character-design-methods.md +428 -0
  256. package/lib/oh-story/skills/story-long-write/references/character-relations.md +385 -0
  257. package/lib/oh-story/skills/story-long-write/references/commercial-core-methods.md +502 -0
  258. package/lib/oh-story/skills/story-long-write/references/cross-book-recall.md +62 -0
  259. package/lib/oh-story/skills/story-long-write/references/dialogue-mastery.md +282 -0
  260. package/lib/oh-story/skills/story-long-write/references/emotional-arc-design.md +426 -0
  261. package/lib/oh-story/skills/story-long-write/references/emotional-methods.md +209 -0
  262. package/lib/oh-story/skills/story-long-write/references/female-audience-writing.md +188 -0
  263. package/lib/oh-story/skills/story-long-write/references/format-and-structure.md +169 -0
  264. package/lib/oh-story/skills/story-long-write/references/genre-catalog.md +480 -0
  265. package/lib/oh-story/skills/story-long-write/references/genre-core-mechanics.md +415 -0
  266. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//344/270/234/346/226/271/344/273/231/344/276/240.md +51 -0
  267. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//344/274/240/347/273/237/347/216/204/345/271/273.md +51 -0
  268. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//345/216/206/345/217/262/345/217/244/344/273/243.md +51 -0
  269. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//345/216/206/345/217/262/350/204/221/346/264/236.md +51 -0
  270. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//345/217/214/347/224/267/344/270/273.md +53 -0
  271. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//345/217/244/350/250/200/350/204/221/346/264/236.md +51 -0
  272. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//345/217/244/351/243/216/344/270/226/346/203/205.md +51 -0
  273. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//345/245/263/351/242/221/346/202/254/347/226/221.md +51 -0
  274. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//345/245/263/351/242/221/347/247/215/347/224/260.md +51 -0
  275. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//345/256/253/346/226/227/345/256/205/346/226/227.md +51 -0
  276. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//345/271/264/344/273/243.md +53 -0
  277. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//345/277/253/347/251/277.md +51 -0
  278. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//346/202/254/347/226/221/347/201/265/345/274/202.md +51 -0
  279. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//346/202/254/347/226/221/350/204/221/346/264/236.md +51 -0
  280. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//346/210/230/347/245/236/350/265/230/345/251/277.md +51 -0
  281. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//346/212/227/346/210/230/350/260/215/346/210/230.md +51 -0
  282. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//346/230/237/345/205/211/347/222/200/347/222/250.md +51 -0
  283. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//346/260/221/345/233/275/350/250/200/346/203/205.md +51 -0
  284. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//346/270/270/346/210/217/344/275/223/350/202/262.md +51 -0
  285. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//347/216/204/345/271/273/350/204/221/346/264/236.md +53 -0
  286. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//347/216/204/345/271/273/350/250/200/346/203/205.md +51 -0
  287. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//347/216/260/350/250/200/350/204/221/346/264/236.md +51 -0
  288. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//347/247/221/345/271/273/346/234/253/344/270/226.md +51 -0
  289. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//350/201/214/345/234/272/345/251/232/346/201/213.md +51 -0
  290. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//350/245/277/346/226/271/345/245/207/345/271/273.md +51 -0
  291. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//350/261/252/351/227/250/346/200/273/350/243/201.md +53 -0
  292. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//351/203/275/345/270/202/344/277/256/347/234/237.md +51 -0
  293. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//351/203/275/345/270/202/346/227/245/345/270/270.md +53 -0
  294. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//351/203/275/345/270/202/347/247/215/347/224/260.md +51 -0
  295. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//351/203/275/345/270/202/350/204/221/346/264/236.md +53 -0
  296. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//351/203/275/345/270/202/351/253/230/346/255/246.md +53 -0
  297. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//351/235/222/346/230/245/347/224/234/345/256/240.md +51 -0
  298. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards.md +91 -0
  299. package/lib/oh-story/skills/story-long-write/references/genre-readers.md +235 -0
  300. package/lib/oh-story/skills/story-long-write/references/genre-writing-formulas.md +444 -0
  301. package/lib/oh-story/skills/story-long-write/references/hooks-chapter.md +225 -0
  302. package/lib/oh-story/skills/story-long-write/references/hooks-paragraph.md +146 -0
  303. package/lib/oh-story/skills/story-long-write/references/hooks-suspense.md +352 -0
  304. package/lib/oh-story/skills/story-long-write/references/opening-design.md +349 -0
  305. package/lib/oh-story/skills/story-long-write/references/outline-conflict.md +457 -0
  306. package/lib/oh-story/skills/story-long-write/references/outline-methods.md +287 -0
  307. package/lib/oh-story/skills/story-long-write/references/outline-rhythm.md +389 -0
  308. package/lib/oh-story/skills/story-long-write/references/outline-structure-theory.md +326 -0
  309. package/lib/oh-story/skills/story-long-write/references/plot-core-methods.md +522 -0
  310. package/lib/oh-story/skills/story-long-write/references/plot-emotion-system.md +354 -0
  311. package/lib/oh-story/skills/story-long-write/references/plot-frameworks.md +711 -0
  312. package/lib/oh-story/skills/story-long-write/references/plot-special-topics.md +622 -0
  313. package/lib/oh-story/skills/story-long-write/references/quality-checklist.md +184 -0
  314. package/lib/oh-story/skills/story-long-write/references/reader-contract-and-progression.md +109 -0
  315. package/lib/oh-story/skills/story-long-write/references/reversal-toolkit.md +349 -0
  316. package/lib/oh-story/skills/story-long-write/references/state-tracking.md +108 -0
  317. package/lib/oh-story/skills/story-long-write/references/style-combat-face.md +409 -0
  318. package/lib/oh-story/skills/story-long-write/references/style-craft.md +347 -0
  319. package/lib/oh-story/skills/story-long-write/references/style-genre-modules.md +510 -0
  320. package/lib/oh-story/skills/story-long-write/references/tracking-transaction.md +161 -0
  321. package/lib/oh-story/skills/story-long-write/references/workflow-chapter.md +140 -0
  322. package/lib/oh-story/skills/story-long-write/references/workflow-daily.md +171 -0
  323. package/lib/oh-story/skills/story-long-write/references/workflow-revision.md +99 -0
  324. package/lib/oh-story/skills/story-long-write/references/workflow-setup.md +284 -0
  325. package/lib/oh-story/skills/story-long-write/references/writing-craft.md +421 -0
  326. package/lib/oh-story/skills/story-long-write/scripts/check-ai-patterns.js +1371 -0
  327. package/lib/oh-story/skills/story-long-write/scripts/check-degeneration.js +330 -0
  328. package/lib/oh-story/skills/story-long-write/scripts/check-outline-copy.js +241 -0
  329. package/lib/oh-story/skills/story-long-write/scripts/normalize-punctuation.js +410 -0
  330. package/lib/oh-story/skills/story-long-write/scripts/tracking_commit.py +1139 -0
  331. package/lib/oh-story/skills/story-review/SKILL.md +483 -0
  332. package/lib/oh-story/skills/story-review/references/anti-ai-writing.md +582 -0
  333. package/lib/oh-story/skills/story-review/references/banned-words.md +147 -0
  334. package/lib/oh-story/skills/story-review/references/character-relations.md +385 -0
  335. package/lib/oh-story/skills/story-review/references/dialogue-mastery.md +282 -0
  336. package/lib/oh-story/skills/story-review/references/plot-core-methods.md +522 -0
  337. package/lib/oh-story/skills/story-review/references/quality-checklist.md +250 -0
  338. package/lib/oh-story/skills/story-review/references/quality-rubric.md +55 -0
  339. package/lib/oh-story/skills/story-review/references/rubrics/fanqie.md +18 -0
  340. package/lib/oh-story/skills/story-review/references/rubrics/qidian.md +19 -0
  341. package/lib/oh-story/skills/story-review/references/rubrics/zhihu.md +20 -0
  342. package/lib/oh-story/skills/story-review/references/tracking-transaction.md +161 -0
  343. package/lib/oh-story/skills/story-review/scripts/check-ai-patterns.js +1371 -0
  344. package/lib/oh-story/skills/story-review/scripts/check-degeneration.js +330 -0
  345. package/lib/oh-story/skills/story-review/scripts/normalize-punctuation.js +410 -0
  346. package/lib/oh-story/skills/story-review/scripts/tracking_commit.py +1139 -0
  347. package/lib/oh-story/skills/story-setup/SKILL.md +495 -0
  348. package/lib/oh-story/skills/story-setup/references/agent-references/anti-ai-writing.md +582 -0
  349. package/lib/oh-story/skills/story-setup/references/agent-references/banned-words.md +147 -0
  350. package/lib/oh-story/skills/story-setup/references/agent-references/character-basics.md +445 -0
  351. package/lib/oh-story/skills/story-setup/references/agent-references/character-design-methods.md +428 -0
  352. package/lib/oh-story/skills/story-setup/references/agent-references/character-relations.md +385 -0
  353. package/lib/oh-story/skills/story-setup/references/agent-references/dialogue-mastery.md +282 -0
  354. package/lib/oh-story/skills/story-setup/references/agent-references/emotional-arc-design.md +426 -0
  355. package/lib/oh-story/skills/story-setup/references/agent-references/emotional-methods.md +179 -0
  356. package/lib/oh-story/skills/story-setup/references/agent-references/format-and-structure.md +169 -0
  357. package/lib/oh-story/skills/story-setup/references/agent-references/genre-catalog.md +480 -0
  358. package/lib/oh-story/skills/story-setup/references/agent-references/genre-core-mechanics.md +415 -0
  359. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//344/270/234/346/226/271/344/273/231/344/276/240.md +51 -0
  360. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//344/274/240/347/273/237/347/216/204/345/271/273.md +51 -0
  361. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//345/216/206/345/217/262/345/217/244/344/273/243.md +51 -0
  362. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//345/216/206/345/217/262/350/204/221/346/264/236.md +51 -0
  363. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//345/217/214/347/224/267/344/270/273.md +53 -0
  364. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//345/217/244/350/250/200/350/204/221/346/264/236.md +51 -0
  365. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//345/217/244/351/243/216/344/270/226/346/203/205.md +51 -0
  366. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//345/245/263/351/242/221/346/202/254/347/226/221.md +51 -0
  367. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//345/245/263/351/242/221/347/247/215/347/224/260.md +51 -0
  368. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//345/256/253/346/226/227/345/256/205/346/226/227.md +51 -0
  369. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//345/271/264/344/273/243.md +53 -0
  370. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//345/277/253/347/251/277.md +51 -0
  371. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//346/202/254/347/226/221/347/201/265/345/274/202.md +51 -0
  372. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//346/202/254/347/226/221/350/204/221/346/264/236.md +51 -0
  373. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//346/210/230/347/245/236/350/265/230/345/251/277.md +51 -0
  374. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//346/212/227/346/210/230/350/260/215/346/210/230.md +51 -0
  375. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//346/230/237/345/205/211/347/222/200/347/222/250.md +51 -0
  376. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//346/260/221/345/233/275/350/250/200/346/203/205.md +51 -0
  377. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//346/270/270/346/210/217/344/275/223/350/202/262.md +51 -0
  378. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//347/216/204/345/271/273/350/204/221/346/264/236.md +53 -0
  379. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//347/216/204/345/271/273/350/250/200/346/203/205.md +51 -0
  380. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//347/216/260/350/250/200/350/204/221/346/264/236.md +51 -0
  381. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//347/247/221/345/271/273/346/234/253/344/270/226.md +51 -0
  382. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//350/201/214/345/234/272/345/251/232/346/201/213.md +51 -0
  383. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//350/245/277/346/226/271/345/245/207/345/271/273.md +51 -0
  384. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//350/261/252/351/227/250/346/200/273/350/243/201.md +53 -0
  385. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//351/203/275/345/270/202/344/277/256/347/234/237.md +51 -0
  386. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//351/203/275/345/270/202/346/227/245/345/270/270.md +53 -0
  387. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//351/203/275/345/270/202/347/247/215/347/224/260.md +51 -0
  388. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//351/203/275/345/270/202/350/204/221/346/264/236.md +53 -0
  389. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//351/203/275/345/270/202/351/253/230/346/255/246.md +53 -0
  390. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//351/235/222/346/230/245/347/224/234/345/256/240.md +51 -0
  391. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards.md +91 -0
  392. package/lib/oh-story/skills/story-setup/references/agent-references/genre-readers.md +235 -0
  393. package/lib/oh-story/skills/story-setup/references/agent-references/genre-writing-formulas.md +444 -0
  394. package/lib/oh-story/skills/story-setup/references/agent-references/hooks-chapter.md +225 -0
  395. package/lib/oh-story/skills/story-setup/references/agent-references/hooks-suspense.md +352 -0
  396. package/lib/oh-story/skills/story-setup/references/agent-references/opening-design.md +349 -0
  397. package/lib/oh-story/skills/story-setup/references/agent-references/outline-conflict.md +457 -0
  398. package/lib/oh-story/skills/story-setup/references/agent-references/outline-methods.md +287 -0
  399. package/lib/oh-story/skills/story-setup/references/agent-references/outline-rhythm.md +389 -0
  400. package/lib/oh-story/skills/story-setup/references/agent-references/plot-core-methods.md +522 -0
  401. package/lib/oh-story/skills/story-setup/references/agent-references/quality-checklist.md +247 -0
  402. package/lib/oh-story/skills/story-setup/references/agent-references/reversal-toolkit.md +349 -0
  403. package/lib/oh-story/skills/story-setup/references/agent-references/style-combat-face.md +409 -0
  404. package/lib/oh-story/skills/story-setup/references/agent-references/style-genre-modules.md +510 -0
  405. package/lib/oh-story/skills/story-setup/references/agent-references/writing-craft.md +421 -0
  406. package/lib/oh-story/skills/story-short-analyze/SKILL.md +278 -0
  407. package/lib/oh-story/skills/story-short-analyze/references/anti-ai-writing.md +582 -0
  408. package/lib/oh-story/skills/story-short-analyze/references/banned-words.md +147 -0
  409. package/lib/oh-story/skills/story-short-analyze/references/character-basics.md +453 -0
  410. package/lib/oh-story/skills/story-short-analyze/references/character-design-methods.md +438 -0
  411. package/lib/oh-story/skills/story-short-analyze/references/character-relations.md +395 -0
  412. package/lib/oh-story/skills/story-short-analyze/references/deconstruction-examples.md +79 -0
  413. package/lib/oh-story/skills/story-short-analyze/references/genre-catalog.md +490 -0
  414. package/lib/oh-story/skills/story-short-analyze/references/genre-core-mechanics.md +425 -0
  415. package/lib/oh-story/skills/story-short-analyze/references/genre-readers.md +245 -0
  416. package/lib/oh-story/skills/story-short-analyze/references/genre-writing-formulas.md +453 -0
  417. package/lib/oh-story/skills/story-short-analyze/references/genre-writing-techniques.md +475 -0
  418. package/lib/oh-story/skills/story-short-analyze/references/hooks-chapter.md +225 -0
  419. package/lib/oh-story/skills/story-short-analyze/references/hooks-paragraph.md +146 -0
  420. package/lib/oh-story/skills/story-short-analyze/references/hooks-suspense.md +352 -0
  421. package/lib/oh-story/skills/story-short-analyze/references/material-decomposition.md +685 -0
  422. package/lib/oh-story/skills/story-short-analyze/references/output-contract.md +165 -0
  423. package/lib/oh-story/skills/story-short-analyze/references/output-templates.md +561 -0
  424. package/lib/oh-story/skills/story-short-analyze/references/quality-checklist.md +242 -0
  425. package/lib/oh-story/skills/story-short-analyze/references/real-market-data.md +90 -0
  426. package/lib/oh-story/skills/story-short-analyze/references/zhihu-style.md +54 -0
  427. package/lib/oh-story/skills/story-short-scan/SKILL.md +212 -0
  428. package/lib/oh-story/skills/story-short-scan/references/real-market-data.md +90 -0
  429. package/lib/oh-story/skills/story-short-write/SKILL.md +433 -0
  430. package/lib/oh-story/skills/story-short-write/references/banned-words.md +147 -0
  431. package/lib/oh-story/skills/story-short-write/references/cross-book-recall.md +62 -0
  432. package/lib/oh-story/skills/story-short-write/references/dialogue-mastery.md +282 -0
  433. package/lib/oh-story/skills/story-short-write/references/emotional-methods.md +179 -0
  434. package/lib/oh-story/skills/story-short-write/references/genre-styles//344/270/226/346/203/205/346/211/223/350/204/270.md +159 -0
  435. package/lib/oh-story/skills/story-short-write/references/genre-styles//345/217/214/347/224/267/344/270/273.md +156 -0
  436. package/lib/oh-story/skills/story-short-write/references/genre-styles//345/244/215/344/273/207/346/211/223/350/204/270.md +163 -0
  437. package/lib/oh-story/skills/story-short-write/references/genre-styles//345/256/205/346/226/227/345/256/253/346/226/227.md +167 -0
  438. package/lib/oh-story/skills/story-short-write/references/genre-styles//346/200/273/350/243/201/350/261/252/351/227/250.md +178 -0
  439. package/lib/oh-story/skills/story-short-write/references/genre-styles//346/202/254/347/226/221.md +166 -0
  440. package/lib/oh-story/skills/story-short-write/references/genre-styles//346/260/221/344/277/227/346/200/252/350/260/210.md +159 -0
  441. package/lib/oh-story/skills/story-short-write/references/genre-styles//346/262/231/351/233/225/350/204/221/346/264/236.md +151 -0
  442. package/lib/oh-story/skills/story-short-write/references/genre-styles//347/224/234/345/256/240.md +153 -0
  443. 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 +210 -0
  444. package/lib/oh-story/skills/story-short-write/references/genre-writing-formulas.md +444 -0
  445. package/lib/oh-story/skills/story-short-write/references/genre-writing-techniques.md +488 -0
  446. package/lib/oh-story/skills/story-short-write/references/hooks-chapter.md +225 -0
  447. package/lib/oh-story/skills/story-short-write/references/hooks-paragraph.md +146 -0
  448. package/lib/oh-story/skills/story-short-write/references/hooks-suspense.md +352 -0
  449. package/lib/oh-story/skills/story-short-write/references/output-contract.md +165 -0
  450. package/lib/oh-story/skills/story-short-write/references/quality-checklist.md +222 -0
  451. package/lib/oh-story/skills/story-short-write/references/reversal-toolkit.md +349 -0
  452. package/lib/oh-story/skills/story-short-write/references/short-craft.md +185 -0
  453. package/lib/oh-story/skills/story-short-write/references/short-deslop.md +133 -0
  454. package/lib/oh-story/skills/story-short-write/references/short-format.md +167 -0
  455. package/lib/oh-story/skills/story-short-write/references/submission-craft.md +35 -0
  456. package/lib/oh-story/skills/story-short-write/references/villain-and-reveal.md +158 -0
  457. package/lib/oh-story/skills/story-short-write/references/writing-workflow.md +153 -0
  458. package/lib/oh-story/skills/story-short-write/scripts/check-ai-patterns.js +1371 -0
  459. package/lib/oh-story/skills/story-short-write/scripts/check-degeneration.js +330 -0
  460. package/lib/oh-story/skills/story-short-write/scripts/check-outline-copy.js +241 -0
  461. package/lib/oh-story/skills/story-short-write/scripts/normalize-punctuation.js +410 -0
  462. package/lib/types/client/file-activity.d.ts +30 -0
  463. package/lib/types/client/file-activity.d.ts.map +1 -0
  464. package/lib/types/client/file-tree.d.ts +20 -0
  465. package/lib/types/client/file-tree.d.ts.map +1 -0
  466. package/lib/types/client/index.d.ts +12 -0
  467. package/lib/types/client/index.d.ts.map +1 -0
  468. package/lib/types/client/jsonl-preview.d.ts +15 -0
  469. package/lib/types/client/jsonl-preview.d.ts.map +1 -0
  470. package/lib/types/client/markdown-preview.d.ts +38 -0
  471. package/lib/types/client/markdown-preview.d.ts.map +1 -0
  472. package/lib/types/index.d.ts +25 -0
  473. package/lib/types/index.d.ts.map +1 -0
  474. package/lib/types/native-hooks.d.ts +16 -0
  475. package/lib/types/native-hooks.d.ts.map +1 -0
  476. package/lib/types/role-provider.d.ts +6 -0
  477. package/lib/types/role-provider.d.ts.map +1 -0
  478. package/lib/types/role-tool.d.ts +10 -0
  479. package/lib/types/role-tool.d.ts.map +1 -0
  480. package/lib/types/skill-provider.d.ts +15 -0
  481. package/lib/types/skill-provider.d.ts.map +1 -0
  482. package/lib/types/workspace-request-trust.d.ts +13 -0
  483. package/lib/types/workspace-request-trust.d.ts.map +1 -0
  484. package/lib/types/workspace-route.d.ts +10 -0
  485. package/lib/types/workspace-route.d.ts.map +1 -0
  486. package/lib/types/workspace-security.d.ts +9 -0
  487. package/lib/types/workspace-security.d.ts.map +1 -0
  488. package/package.json +107 -0
@@ -0,0 +1,4 @@
1
+ interface:
2
+ display_name: "短剧分镜"
3
+ short_description: "把剧本与资产拆成完整coverage、有动机镜头和冻结关键帧"
4
+ default_prompt: "使用 $short-drama-storyboard 把已接受剧本和资产拆成有动机的镜头与冻结关键帧提示词。"
@@ -0,0 +1,2 @@
1
+ {"record_type":"sources","schema_version":"1.0.0","sources":{"<characters-or-props>":{"owner":"short-drama-assets","artifact":"设定集/<characters-or-props>.jsonl"},"<looks-or-prop-states>":{"owner":"short-drama-assets","artifact":"设定集/<looks-or-prop-states>.jsonl"},"location-views":{"owner":"short-drama-assets","artifact":"设定集/location-views.jsonl"},"locations":{"owner":"short-drama-assets","artifact":"设定集/locations.jsonl"},"screenplay-index":{"owner":"short-drama-write","artifact":"剧集/EP001/screenplay-index.jsonl"},"short-drama":{"owner":"creator","artifact":"short-drama.json"}}}
2
+ {"example_only":true,"audition_id":"AUD-EP001-SC001","status":"candidate","scene_ref":{"src":"screenplay-index","record_id":"BLK-EP001-SC001-H01","field":"/scene_id"},"visual_direction_ref":{"src":"short-drama","field":"/creator_authority/visual_direction"},"production_profile_ref":{"src":"short-drama","field":"/creator_authority/production_profile"},"location_binding":{"identity_ref":{"src":"locations","record_id":"LOC-<id>"},"variant_ref":{"src":"location-views","record_id":"VIEW-<id>"}},"asset_bindings":[{"identity_ref":{"src":"<characters-or-props>","record_id":"CHAR/PROP-<id>"},"variant_ref":{"src":"<looks-or-prop-states>","record_id":"LOOK/PSTATE-<id>"},"role":"<performance_owner/evidence/observer>"}],"reason_for_audition":"<为什么导演选择会显著改变体验>","approaches":[{"approach_id":"APPROACH-A","directing_hypothesis":"<表演/证据/主观/空间/声音等真正不同的命题>","audience_knowledge":"<何时知道什么>","audience_alignment":"<站在哪个人物一边>","performance_space":"<谁拥有主要表演通道,谁只承担差异化反应>","strongest_image":"<最强画面>","landing":"<最终落点>","tradeoffs":{"preserves":["<保住什么>"],"risks_losing":["<可能丢什么>"],"production_fit":"<与已接受制作形态怎样相容或冲突>"}}],"comparison_summary":"<真正分歧与不可同时获得的收益>"}
@@ -0,0 +1,49 @@
1
+ {
2
+ "sources": {
3
+ "shots": {
4
+ "owner": "short-drama-storyboard",
5
+ "artifact": "剧集/EP001/storyboard/shots.jsonl"
6
+ },
7
+ "screenplay-index": {
8
+ "owner": "short-drama-write",
9
+ "artifact": "剧集/EP001/screenplay-index.jsonl"
10
+ },
11
+ "short-drama": {
12
+ "owner": "short-drama",
13
+ "artifact": "short-drama.json"
14
+ }
15
+ },
16
+ "episode_id": "EP001",
17
+ "dispositions": [
18
+ {
19
+ "block_id": "BLK-EXAMPLE",
20
+ "status": "covered",
21
+ "reason": "Primary action and reaction remain continuous.",
22
+ "shot_refs": [
23
+ {
24
+ "src": "shots",
25
+ "record_id": "SHOT-EXAMPLE",
26
+ "authority": "candidate"
27
+ }
28
+ ]
29
+ }
30
+ ],
31
+ "episode_duration": {
32
+ "shot_seconds_total": null,
33
+ "counted_shot_ids": [
34
+ "SHOT-EXAMPLE"
35
+ ],
36
+ "unresolved_durations": [],
37
+ "target_ref": {
38
+ "src": "short-drama",
39
+ "field": "/format/target_seconds_per_episode"
40
+ },
41
+ "target_seconds": null,
42
+ "delta_seconds": null,
43
+ "disposition": "no_target_declared | within_creator_tolerance | creator_accepted_overrun | to_revise"
44
+ },
45
+ "screenplay_ref": {
46
+ "src": "screenplay-index"
47
+ },
48
+ "status": "candidate"
49
+ }
@@ -0,0 +1,32 @@
1
+ # `keyframe-prompts.md` 可复制输出模板
2
+
3
+ 这是由已接受的 `keyframes.jsonl` 生成的文本,不是镜头边界或资产事实来源。
4
+ 每次导出都记下配方版本;文本被手改时,先预览恢复、
5
+ 采用或合并的结果。
6
+
7
+ ```markdown
8
+ # EP<编号> · 冻结关键帧提示词
9
+
10
+ > 来源:`keyframes.jsonl` 的已接受记录
11
+ > 配方:`keyframe-generic@<version>`
12
+ > 范围:单一静止瞬间;不生成图片,不写时间动作
13
+
14
+ ## `SHOT-<id>` · `KEY-<id>`
15
+
16
+ - **镜头目的**:<观众此刻必须看见什么>
17
+ - **观众可见性**:逐项列出 `<来源 · 展示或暂缓 · 声画载体 · 揭示条件 · 保护方法>`
18
+ - **边界来源**:`SHOT-<id>/start_boundary`
19
+ - **资产绑定**:`<准确人物与造型 · 地点与观察视角 · 道具与状态>`
20
+ - **文字处理**:`<已接受的来源文字政策 -> 本帧呈现方法>`
21
+
22
+ ### 可复制通用提示词
23
+
24
+ > <焦点主体与识别锚点>。<构图层级、人物/道具/空间锚点关系>。摄影机<景别、角度、镜头意图>。
25
+ > <一个可冻结的身体朝向、姿态、目光、双手、持物与可见表演状态>。<继承的光向、时段、天气与必要气氛>。
26
+ > <文字处理>。保持<边界与身份事实>;排除<本帧高风险漂移>。
27
+
28
+ ---
29
+ ```
30
+
31
+ 若一句话必须靠“先、再、随后、最终”才能成立,就交给运动提示词环节;若要改变镜头
32
+ 开始边界,先向分镜负责人提出修订请求,不要在派生文本中偷偷改。
@@ -0,0 +1,2 @@
1
+ {"record_type":"sources","schema_version":"1.0.0","sources":{"<identity-owner-file>":{"owner":"short-drama-assets","artifact":"设定集/<identity-owner-file>.jsonl"},"<variant-owner-file>":{"owner":"short-drama-assets","artifact":"设定集/<variant-owner-file>.jsonl"},"location-views":{"owner":"short-drama-assets","artifact":"设定集/location-views.jsonl"},"props":{"owner":"short-drama-assets","artifact":"设定集/props.jsonl"},"short-drama":{"owner":"short-drama","artifact":"short-drama.json"},"shots":{"owner":"short-drama-storyboard","artifact":"剧集/<EP>/storyboard/shots.jsonl"}}}
2
+ {"keyframe_id":"KEY-EXAMPLE","status":"candidate","shot_ref":{"src":"shots","record_id":"SHOT-EXAMPLE","authority":"candidate"},"boundary_role":"start | end","boundary_ref":{"src":"shots","record_id":"SHOT-EXAMPLE","field":"/start_boundary | /end_boundary","authority":"candidate"},"purpose":"<frozen viewing purpose>","asset_bindings":[{"identity_ref":{"src":"<identity-owner-file>","record_id":"CHAR/LOC/PROP-<id>"},"variant_ref":{"src":"<variant-owner-file>","record_id":"LOOK/VIEW/PSTATE-<id>"}}],"focal_subjects":[],"composition":{"hierarchy":[],"spatial_relations":[],"foreground":[],"background":[]},"delivery_surface_ref":{"src":"short-drama","field":"/creator_authority/delivery_surface"},"camera":{"framing":"<shot-owned projection>","angle":"<shot-owned projection>","camera_height":"<shot-owned projection>","lens_intent":"<广/标准/长 — frame-only choice; the compression wanted, not a focal length>"},"boundary_projection":{"positions":[],"facing":[],"pose_balance":[],"gaze":[],"hands":[],"held_props":[],"visible_state":[]},"light_projection":{"source_ref":{"src":"location-views","record_id":"VIEW-<id>","field":"/state_differences/light"},"direction":"<direction>","frame_relevant_detail":"<minimal>"},"text_treatment_refs":[{"src":"props","record_id":"PROP-<id>","field":"/text_policy"}],"exclusions":[],"generic_prompt":"<这一瞬间要拍出来的画面:谁在哪、彼此距离、前中后景、视线落点、构图与景别、机位side/俯仰/焦段意图、光从哪来什么质感、每个在场者的姿态朝向手部持物、与上一镜相同的部分写一句「与上一镜相同」、排除项;不写镜头/记录 ID、规则 ID、状态词与成段否定罗列;写满的样子见 references/keyframe-craft.md>","derivation":{"recipe_version":"<version>"}}
@@ -0,0 +1,12 @@
1
+ {
2
+ "revision_lineage": {
3
+ "change": "split | merge | restore",
4
+ "predecessor_shot_ids": [
5
+ "SHOT-<same-file-prior-id>"
6
+ ],
7
+ "retired_shot_ids": [
8
+ "SHOT-<same-file-retired-id>"
9
+ ],
10
+ "reason": "<导演职责怎样被拆开、合并或恢复>"
11
+ }
12
+ }
@@ -0,0 +1,2 @@
1
+ {"record_type":"sources","schema_version":"1.0.0","sources":{"<characters-or-props>":{"owner":"short-drama-assets","artifact":"设定集/<characters-or-props>.jsonl"},"<looks-or-prop-states>":{"owner":"short-drama-assets","artifact":"设定集/<looks-or-prop-states>.jsonl"},"coverage-audition":{"owner":"short-drama-storyboard","artifact":"剧集/EP001/storyboard/coverage-auditions/SC001.jsonl"},"creator-decision":{"owner":"creator","artifact":"创作者决策/EP001-coverage-audition-SC001.json"},"location-views":{"owner":"short-drama-assets","artifact":"设定集/location-views.jsonl"},"locations":{"owner":"short-drama-assets","artifact":"设定集/locations.jsonl"},"screenplay-index":{"owner":"short-drama-write","artifact":"剧集/EP001/screenplay-index.jsonl"},"short-drama":{"owner":"creator","artifact":"short-drama.json"}}}
2
+ {"example_only":true,"plan_id":"SVP-EP001-SC001","status":"candidate","scene_ref":{"src":"screenplay-index","record_id":"BLK-EP001-SC001-H01","field":"/scene_id"},"source_block_refs":[{"src":"screenplay-index","record_id":"BLK-EP001-SC001-A01"}],"visual_direction_ref":{"src":"short-drama","field":"/creator_authority/visual_direction"},"production_profile_ref":{"src":"short-drama","field":"/creator_authority/production_profile"},"location_binding":{"identity_ref":{"src":"locations","record_id":"LOC-<id>"},"variant_ref":{"src":"location-views","record_id":"VIEW-<id>"}},"asset_bindings":[{"identity_ref":{"src":"<characters-or-props>","record_id":"CHAR/PROP-<id>"},"variant_ref":{"src":"<looks-or-prop-states>","record_id":"LOOK/PSTATE-<id>"},"role":"<performance_owner/evidence/observer>"}],"source_audition_ref":{"src":"coverage-audition","record_id":"AUD-EP001-SC001"},"creator_selection_ref":{"src":"creator-decision","record_id":"CD-EP001-COVERAGE-AUDITION-SC001","field":"/selected_approach_id"},"dramatic_turn":"<本场不可逆的关系/信息/选择变化>","audience_alignment":{"start":"<开场站在哪一方或保持什么距离>","end":"<结束被移到哪里>"},"spatial_pressure":"<入口、距离、占位、遮挡、让路或退路怎样承载人物策略>","visual_progression":["<按注意、关系、信息、压力或节奏写推进,不预写 shot 数量>"],"camera_strategy":"<何时固定、移动、切近或停留,以及触发原因>","reveal_image":"<关键揭示怎样进入画面且服从信息权限>","reaction_landing":"<谁的选择、反应或空间后果承担结尾>","sound_strategy":{"opening_attention":"<先听见什么>","power_or_space_sound":"<代表当前空间/权力的声源>","withdrawal_or_silence":"<何时撤出/留白及对象>","return_or_distance_change":"<何时恢复或改变距离>","sound_bridge":"<与相邻场怎样连接或 none>"},"constraints":["<必须保持的剧本、资产与视觉方向事实>"],"creator_overrides":[]}
@@ -0,0 +1,2 @@
1
+ {"record_type":"sources","schema_version":"1.0.0","sources":{"<characters-or-props>":{"owner":"short-drama-assets","artifact":"设定集/<characters-or-props>.jsonl"},"<looks-or-prop-states>":{"owner":"short-drama-assets","artifact":"设定集/<looks-or-prop-states>.jsonl"},"location-views":{"owner":"short-drama-assets","artifact":"设定集/location-views.jsonl"},"locations":{"owner":"short-drama-assets","artifact":"设定集/locations.jsonl"},"props":{"owner":"short-drama-assets","artifact":"设定集/props.jsonl"},"screenplay-index":{"owner":"short-drama-write","artifact":"剧集/<EP>/screenplay-index.jsonl"},"short-drama":{"owner":"short-drama","artifact":"short-drama.json"}}}
2
+ {"shot_id":"SHOT-EXAMPLE","status":"candidate","source_refs":[{"src":"screenplay-index","record_id":"BLK-EXAMPLE"}],"coverage_role":"primary | intentional_repeat","purpose":"<what the audience must notice and why this is a new shot>","information_change":"<before -> after for audience/character>","audience_visibility":[{"source_ref":{"src":"screenplay-index","record_id":"BLK-<id>"},"fact":"<本镜必须展示或暂缓的一个事实>","permission":"show_now | withhold_now","carrier":"<可见/可听载体;暂未出现则写 none>","reveal_trigger":"<允许释放的动作/台词/cut;不在本镜则写 future>","protection_method":"<framing/crop/occlusion/offscreen/focus/timing/none,可组合说明>","rationale":"<与 source 信息权限和本镜职责的关系>"}],"location_binding":{"identity_ref":{"src":"locations","record_id":"LOC-<id>"},"variant_ref":{"src":"location-views","record_id":"VIEW-<id>"}},"asset_bindings":[{"identity_ref":{"src":"<characters-or-props>","record_id":"CHAR/PROP-<id>"},"variant_ref":{"src":"<looks-or-prop-states>","record_id":"LOOK/PSTATE-<id>"},"role":"<subject/evidence/background>"}],"duration_seconds":null,"start_boundary":{"positions":["<每条都写成不读上一镜也能理解的绝对事实:谁在哪个锚点的哪一侧;『同上』『位置不变』『同前』要往回翻才解释得通,不算已写>"],"facing":[],"gaze":[],"hands":[],"held_props":[],"visible_state":[]},"end_boundary":{"positions":["<同样是绝对事实:本镜结束时人在哪、朝哪,不写成与开始状态的差异>"],"facing":[],"gaze":[],"hands":[],"held_props":[],"visible_state":[]},"framing":{"size":"<extreme_wide 远景/wide 全景/medium 中景/medium_close 中近景/close 近景/close_up 特写/extreme_close_up 大特写/detail 细节镜头 or creator vocabulary>","angle":"<horizontal: 正面/斜侧/正侧/后斜侧/背面 or creator vocabulary; say which side of the axis>","camera_height":"<地平/低(仰)/平视/高(俯)/顶视; 平视 is a choice, not an unset field>","aspect_notes":"<composition constraint>"},"delivery_surface_ref":{"src":"short-drama","field":"/creator_authority/delivery_surface"},"blocking":{"axis":"<working side/bridge/deliberate break>","screen_direction":"<direction>","paths":[],"fixed_anchors":[]},"camera_plan":{"behavior":"locked | pan | tilt | push | pull | track | follow | orbit | crane | handheld | transition","motivation":"<attention/pressure/alignment/reveal/rhythm>","intervals":[]},"dialogue_audio_refs":[],"text_treatment_refs":[{"src":"props","record_id":"PROP-<id>","field":"/text_policy"}],"transition_intent":null,"creator_overrides":[]}
@@ -0,0 +1,241 @@
1
+ # 常见场面的分镜方法:竖屏、单房、证据与群体轴线
2
+
3
+ ## 目录
4
+
5
+ - [竖屏多人](#1-竖屏多人调度)
6
+ - [单房对白](#2-单房对白)
7
+ - [证据揭示](#3-证据揭示)
8
+ - [群体与轴线](#4-群体与轴线)
9
+ - [动态对象与竞赛](#5-动态对象与竞赛)
10
+ - [观察视角与边界](#6-观察视角与边界)
11
+ - [规则分级](#7-规则分级)
12
+
13
+ 先使用镜头设计资料中的原文落实、镜头目的和场景地理方法。只有遇到下列场面时才读
14
+ 本文;这些是思考步骤,不是镜头数量模板。
15
+
16
+ ## 1. 竖屏多人调度
17
+
18
+ 竖屏不是把所有人排成上下两层。先画出人物能怎样通行,再决定纵向画幅怎样表现关系与权力:
19
+
20
+ - 用前景、中景、后景、门框、台阶和桌沿建立深度。
21
+ - 明确谁能接近证据、出口或权力座位。
22
+ - 头像高低只在空间真实且有意义时表达地位。
23
+ - 两人对话时,仍要保留第三人的监听、反应或阻挡位置。
24
+ - 先保证进出方向和视线连续,再用近景强化选择。
25
+
26
+ 可以按以下顺序设计:空间锚点与入口 → 每人的行动目标和筹码 → 群体注意中心 →
27
+ 关键动作前后的站位 → 哪些同时反应必须留在全景中 → 只有丢失信息时才切插入镜头或近景。
28
+
29
+ 常见问题:每句台词都切一个头像近景;站位只为填满画面;背景人物在切镜后无原因换边;
30
+ 重要人物一直被前景遮住,但剧情并未利用这种遮挡。
31
+
32
+ ### 交付面遮挡 (`SHT-15`)
33
+
34
+ 竖屏画面在播放时通常不是完整可见的:播放界面会在画幅上叠一层东西——字幕条、播放控件、
35
+ 进度条、侧边的互动控件、片头片尾的角标。**画幅是满的,可读区不是**。 这与拍摄无关,
36
+ 是交付面的事实,所以它约束的是构图决定,而不是画面内容。
37
+
38
+ **`reviewed_invariant`**:当创作者已声明交付面的遮挡区时,本镜必须被读到的内容(脸与
39
+ 眼神、证据上的可读文字、决定性的手部动作)不能只落在这些区域里。遮挡区、是否常驻及其
40
+ 来源引用都取自已接受的交付方案;**没有声明就没有这条约束**。
41
+
42
+ - **未声明时保持未解决,不要猜**。 记为待创作者决定,照常按画面本身的可读性构图,
43
+ **不因为猜测的区域改变构图**——猜出来的避让同样是一个通用安全框,只是没写在纸上。
44
+ 需要时向创作者提一次问:这次交付的播放面会在画幅哪些位置叠加什么、是否常驻。
45
+
46
+ 声明由**创作者拥有**,落在 `short-drama.json` 的 `/creator_authority/delivery_surface`,
47
+ 与视觉方向、制作形态同级。它要能回答三件事——**占用哪里、是否常驻、依据来自哪**:
48
+
49
+ ```json
50
+ {
51
+ "status": "unset | declared",
52
+ "aspect": "<已接受画幅>",
53
+ "overlay_regions": [
54
+ {
55
+ "id": "<稳定 ID>",
56
+ "where": "<用画幅比例或可命名边带描述的占用范围>",
57
+ "permanence": "persistent | intermittent | conditional",
58
+ "carries": "<字幕 | 控件 | 角标 | 其他>"
59
+ }
60
+ ],
61
+ "source_ref": {
62
+ "src": "creator-decision",
63
+ "record_id": "<接受该声明的决定记录>"
64
+ }
65
+ }
66
+ ```
67
+
68
+ `creator-decision` 是 `short-drama.json` 的 `sources` 为那份创作者决定声明的快照键:
69
+
70
+ ```json
71
+ {"creator-decision": {"owner": "creator", "artifact": "创作者决策/<artifact-id>.json"}}
72
+ ```
73
+
74
+ 镜头与关键帧记录用 `delivery_surface_ref` 绑定该声明的**精确快照与字段**(模板已有该字段,
75
+ 指向 `short-drama.json#/creator_authority/delivery_surface`)。创作者改版后引用变
76
+ `stale`,受影响的镜头与关键帧按恢复流程重新核对,不沿用上一版的避让结论。
77
+
78
+ `status` 为 `unset` 时本规则不生效:镜头照常按画面可读性构图,把它记为待创作者决定。
79
+ 声明自身不引用自己所在的文件。
80
+ - **已声明时绑定版本**:镜头与关键帧引用该声明的具体版本;交付方案改版时,受影响的镜头
81
+ 按 `stale` 处理并重新核对,而不是沿用上一版的避让结论。
82
+ 已声明遮挡区后,按下面的优先级判断哪些内容必须挪开:
83
+
84
+ - **可读文字最敏感**:证据类道具上必须被读出的字,一旦落在字幕条位置,观众永远读不到。
85
+ 这类镜头要么把文字挪到中部可读区,要么改用更近的景别单独给一次。
86
+ - **脸与眼神次之**:竖屏习惯把人物放得很高,容易压到顶部角标区;也不宜为了避让而把人
87
+ 一律推到正中,那会让全片构图变平。判断依据是"这一镜要被读到的是什么",不是固定安全框。
88
+ - **一侧的互动控件**是竖屏特有的:如果本镜的关键动作发生在被占用的那一侧,把动作调到
89
+ 另一侧,或用镜像的机位关系解决——不要靠缩小主体来避让,那会同时削弱表演。
90
+ - **不要把避让写成通用禁区**。它是本项目交付方案下的构图约束;换交付面就要重新确认,
91
+ 也不能反过来要求剧本改动作发生的位置。
92
+
93
+ 失效方式是安静的:单帧看构图很好,只有放到实际播放面上才发现关键信息被压住,而这时
94
+ 关键帧与视频提示词都已经做完了。所以这个判断属于分镜阶段,不属于交付前检查。
95
+
96
+ ## 1b. 轴线、屏幕方向与正反打
97
+
98
+ ### 左右的唯一读法
99
+
100
+ **`structural_invariant`**:本套件所有产物里,**裸写的"左/右"一律指画面左右**(观众看到的
101
+ 左右)。指人物自身的左右时必须带主体——"他的左手""她的右肩"。两种读法混用是正反打
102
+ 最常见的失效来源,因为单看每一句都成立。
103
+
104
+ - ✅ `沈一舟站在画面左三分之一处,赵经理占画面右侧`
105
+ - ✅ `秘书把工牌递到他的右手边`(带主体,指人物右手)
106
+ - ❌ `秘书从右侧接近`(谁的右?下游只能猜)
107
+
108
+ ### 轴线怎么记
109
+
110
+ 轴线不是一个形容词,是**两个可命名锚点的连线**。记法要落成可比较的断言,让下一镜能
111
+ 逐字核对:
112
+
113
+ ```text
114
+ 轴线:沈一舟 ↔ 赵经理(两人连线)
115
+ working side:摄影机常驻红毯一侧
116
+ 屏幕方向:沈一舟固定占画面左,赵经理固定占画面右
117
+ ```
118
+
119
+ 写成 `<working side>` 这类占位等于没写。判据是:换一个人来拍下一镜,他能不能只读这
120
+ 三行就把机位放对。
121
+
122
+ ### 正反打的配对规则
123
+
124
+ - **屏幕方向必须互补**:A 镜里甲在画面左看向右,B 镜里乙就必须在画面右看向左。两镜
125
+ 人物都望向同一侧时,观众读到的不是对话,是两人在看同一个画外的第三者。
126
+ - **视线高度按实际身高差匹配**:一方明显高时,A 镜的俯角与 B 镜的仰角要对应;两镜都
127
+ 平视会把身高差抹平,也会让"逼近"失去压迫感。
128
+ - **过肩镜写明前景是谁的肩、占画多少**:只写"过肩"不够,前景肩的归属决定了这一镜属于
129
+ 谁的视角。
130
+ - **A/B 两镜是否对称是主动选择**:机位高度与景别对称表示势均力敌,不对称表示权力倾斜。
131
+ 选了不对称就写清理由,别让它变成随手的结果。
132
+
133
+ ### 越轴之后要重新记账
134
+
135
+ 越轴的合法手段见本文上一节。但越完之后,**新的 working side 必须重新声明并被后续镜头
136
+ 继承**——否则后面每一镜都在各自猜轴线在哪。越轴那一镜本身也要标明它是越轴,而不是让
137
+ 下游从方向矛盾里反推。
138
+
139
+ ## 2. 单房对白
140
+
141
+ 单房戏的运动来自人物策略、物件和注意变化,不来自无理由走动。先画出会造成压力的
142
+ 空间关系:
143
+
144
+ - 出口、座位、桌面或证物、电话或电梯的声源。
145
+ - 谁先占据或控制哪个位置。
146
+ - 谁能触碰、打开、藏起或拒绝某件物。
147
+ - 哪个声音会增加时间压力,但不引入新人物。
148
+
149
+ 每轮可以按以下关系检查:
150
+
151
+ ~~~text
152
+ 说话或沉默的策略 -> 对方怎样接住或拒绝 -> 物件、目光或空间发生什么 -> 谁暂时掌权
153
+ ~~~
154
+
155
+ 同一个双人镜头可以承载多轮对话。只有注意、解释或权力真的改变时才需要切镜。
156
+ 反应不必总拍脸,也可以是不碰纸袋、把钥匙推过边界、手从门把移开,或让沉默继续。
157
+
158
+ 不要为了“画面丰富”让人物轮流起身、倒水、看窗。动作若不改变议程或证据条件,反而会削弱表演。
159
+
160
+ ## 3. 证据揭示
161
+
162
+ 先写清观众知道了什么,再选镜头:
163
+
164
+ 1. 证据在哪里,由谁控制。
165
+ 2. 揭示前观众能读到什么。
166
+ 3. 构成证据的是形状、状态、精确文字,还是人物与物件的关系。
167
+ 4. 谁先看见,谁又看见对方已经看见。
168
+ 5. 得知后,哪个行动发生变化。
169
+
170
+ 镜头可以负责建立方位、获得证据、展示证据、表现接收者反应或交代后果,不要求固定
171
+ 顺序。若精确文字就是证据,镜头必须绑定来源文字政策和本帧呈现方法;不要用一闪而过的
172
+ 插入镜头假装观众能读完。若证据只是纹样或断角,提示词不得临时造字。
173
+
174
+ ## 4. 群体与轴线
175
+
176
+ 把群体按作用分区,不要给每个人单建一条轴线:
177
+
178
+ - 主行动者与对手的主要轴线。
179
+ - 见证者或队列所在区域。
180
+ - 入口、出口与权力位置。
181
+ - 群体注意方向的变化。
182
+
183
+ 公开揭示或家庭冲突中,再按行动能力区分知情者、能作决定的人、利益相关者和普通
184
+ 旁观者。只有新事实改变某组人能做什么时,才给这组人新的动作:作证、拦住、让路、
185
+ 退出或保持沉默。不要让所有人轮流说同一种惊叹,也不要把每个背景人物都建成独立资产。
186
+
187
+ **`SHT-13 · reviewed_invariant`**:多人对峙先画一张**有方向的关系投影**:谁此刻保护/协作/施压/观察谁,这条关系由哪个
188
+ 剧本动作或信息状态支持,再把它翻成站位、身体朝向、视线、距离和行动线。关系投影只对
189
+ 本镜有效;同一人物可在剧情转向后换边,但一帧内不能既与甲背靠背结盟、又从对立行动线
190
+ 朝甲施压,除非镜头明确表现转向发生的边界。逐句核对人物、手持物和阵营,避免自然语言
191
+ 提示词因重复段落把同一角色写进两个互斥位置。
192
+
193
+ 跨越轴线时,可以让人物在同一镜内穿过轴线,用中性过渡镜头,或用新的全景重新建立
194
+ 场景方位;也可以由创作者明确选择主观错乱。群体反应不需齐刷刷给特写;选择一个会
195
+ 改变风险的代表反应,或用全景展示沉默、退让、围拢和让路。
196
+
197
+ ## 5. 动态对象与竞赛
198
+
199
+ **`SHT-14 · reviewed_invariant`**:球、车辆、武器、证物、接力物或争夺中的工具会把控制权和空间关系带过切镜。设计前先写
200
+ 当前时间/回合、区域、控制者、运动方向、目标路线与可用反制;若某项不适用就省略,不为
201
+ 填表虚构数据。
202
+
203
+ 一次关键行动至少要让观众理解:动作从什么可见状态开始、控制权怎样被争夺或转移、方向
204
+ 或战术为何改变、结束时对象与人物分别在哪里。镜头数量由力学和注意变化决定;慢动作、
205
+ 特写、群众反应或解说不能替代丢失的空间阶段。
206
+
207
+ - 切镜后动态对象应从上一镜结束位置和方向继续,除非明确发生跳时或省略;
208
+ - 比分、计时和阵形只有在改变选择时进入画面;若精确文字不可可靠呈现,标记为后期图形
209
+ 或声音信息,不让提示词临时造字;
210
+ - 对手的战术调整应能追溯到此前看见的信息,避免每轮都重置成同一站位;
211
+ - 反应镜只在接收者的新判断会改变下一动作时承担职责,不能用欢呼遮住控制权转移。
212
+
213
+ ## 6. 观察视角与边界
214
+
215
+ **`SHT-09 · reviewed_invariant`**: 准确的地点和观察视角,其方向和可见锚点必须与
216
+ 摄影机实际所在一侧一致。
217
+
218
+ 地点记录整体地理;观察视角记录一个可复用的方向、时段和光线状态。镜头在门外朝内时,
219
+ 不能只因为“仍是同一城门”,就绑定门内朝外的视角。选择前逐项比较摄影机所在一侧、
220
+ 可见锚点、朝向、时段、天气和光线;缺少合适视角时,向资产技能请求新版本。
221
+
222
+ 每次切镜前后比较:
223
+
224
+ - 位置、面向和目光。
225
+ - 左右手与持有道具。
226
+ - 伤势、造型和可见状态。
227
+ - 轴线与屏幕运动方向。
228
+ - 门、灯、天气和文字状态。
229
+ - 谁知道什么;这一项只引用剧本来源。
230
+
231
+ 镜头结束边界是事实来源;关键帧只投影镜头开始边界;运动规格只实现这段过程。
232
+ 不能把本镜动作结果提前写进起始关键帧,也不能在相邻两镜重复完整动作。若 SHOT-02
233
+ 的结束状态是“右手刚开始伸出”,SHOT-03 才能完成取物;若 SHOT-02 已完成取物,
234
+ SHOT-03 就必须从“已经持有”继续。
235
+
236
+ ## 7. 规则分级
237
+
238
+ - `structural_invariant`:原文落实、产物引用、已接受绑定、起止边界和相邻关系都能解析。
239
+ - `reviewed_invariant`:切镜保留剧本原意,观察视角匹配摄影机一侧,证据有足够可读时间和接收反应。
240
+ - `craft_default`:先建立地理、按注意变化切镜、在单房中用策略和物件制造运动;有理由时可以调整。
241
+ - `taste_option`:镜头数量、景别、手持或固定、留白和反应方式由已接受的视觉方向决定。
@@ -0,0 +1,39 @@
1
+ # 关键场景 Coverage Audition
2
+
3
+ Coverage audition 在正式 shots 前比较真正不同的导演方案,避免第一种合理做法直接成为唯一答案。
4
+ 它不是固定镜头数、固定宫格或自动变体器;创作者选择之后才投影为正式场次视觉计划和 shots。
5
+
6
+ ## 什么时候比较
7
+
8
+ 只用于人物首次亮相、身份/证据揭示、关系反转、高潮与结尾、复杂多人调度、悬念延迟或视觉母题。
9
+ 普通场景不做。判断标准不是“场次重要”四个字,而是不同观看位置、信息时机或表演所有权会不会
10
+ 显著改变观众体验。
11
+
12
+ ## 什么叫真正不同
13
+
14
+ 方案必须至少改变一个导演命题,而不是只换景别名称:
15
+
16
+ - **表演中心**:延迟证据特写,让停顿、撤步和旁观者让路完成权力变化;
17
+ - **证据中心**:先给局部,再给听者反应,最后允许观众确认;
18
+ - **主观错位**:揭示前后更换观众所站的一侧,让原观察者变成被观察者;
19
+ - **空间中心**:用入口、距离、阻挡和通道归属完成转向;
20
+ - **声音中心**:让画外声、环境撤出或留白先改变权力,再决定何时给画面确认。
21
+
22
+ 这些是比较方向,不是每场必须生成的套餐。若两项方案的观众知情时机、对齐对象、表演空间、
23
+ 最强画面和结尾落点都相同,它们仍是同一个方案。
24
+
25
+ ## 比较记录
26
+
27
+ 使用 `assets/coverage-audition.example.jsonl`,用真实的 screenplay-index `BLK-…` 记录绑定场次,
28
+ 并绑定已接受视觉方向、制作形态、Location/View 与参与资产;逐方案回答:观众何时知道什么、
29
+ 站在哪一边、谁拥有表演空间、最强画面与最终落点、可能丢失的空间/反应/信息、与制作形态是否
30
+ 相容。保留反对理由,不替创作者选择。
31
+
32
+ 不得固定四宫格、九宫格、二十五宫格或景别比例。宫格只是人工比较界面,不是镜头数量公式。
33
+ audition 本体只保存方案与比较,**不把事后选择写回自身**。创作者选择与接受使用独立的
34
+ `创作者决策/<artifact-id>.json`:它以 `decision_kind: artifact_acceptance` 指向当前 audition,并额外记录 `selected_audition_record_id` 与 `selected_approach_id`。
35
+ 这样选择不需要写回 audition 本体。
36
+
37
+ 正式 `scene_visual_plan` 同时绑定已接受的 `source_audition_ref` 与这份决定的
38
+ `creator_selection_ref`,且只能投影 `selected_approach_id` 指向的方案。未选择时 audition 保持候选,
39
+ 不能据此发布正式 plan 或 shots。
@@ -0,0 +1,169 @@
1
+ # Frozen Keyframe Craft
2
+
3
+ ## 目录
4
+
5
+ - [Boundary and instant tests](#boundary-and-instant-tests)
6
+ - [Purpose](#purpose)
7
+ - [Ordered recipe](#ordered-recipe)
8
+ - [尾帧:什么时候可以有,以及它换来什么代价](#尾帧什么时候可以有以及它换来什么代价sht-17)
9
+ - [Start-only drafting discipline](#start-only-drafting-discipline)
10
+ - [Static test](#static-test)
11
+
12
+ ## Boundary and instant tests
13
+
14
+ - `SHT-05` — Project exactly one accepted shot boundary and bind the exact
15
+ Character/Look, Location/View, and Prop/State variants visible there.
16
+ - `SHT-06` — Describe one freezeable instant. Ordered action, expression arcs,
17
+ camera movement, and transforming weather belong to motion, not the keyframe.
18
+
19
+ ## Purpose
20
+
21
+ Describe one frame that can exist at a single instant and accurately anchors the
22
+ accepted shot. A keyframe is not a compressed video prompt.
23
+
24
+ ## Ordered recipe
25
+
26
+ 1. **Purpose:** what the audience must notice now.
27
+ 2. **Focal subject:** exact asset and variant IDs.
28
+ 3. **Frame:** shot size, angle, lens intent, aspect-aware composition.
29
+ 4. **Geography:** Location/View, fixed anchors, foreground/background zones.
30
+ 5. **Boundary projection:** exact start position, body facing, pose, gaze, hands,
31
+ held props. Give body facing for every person — it fixes which screen side they
32
+ hold and which side the next reverse cuts from; `gaze` does not cover it. Add
33
+ head facing only when it differs from body facing.
34
+ 6. **Performance instant:** one visible expression/tension state, not an arc.
35
+ Pick a channel the current shot size can actually read — gaze, breath, body
36
+ set, object handling, or a held decision. A wide shot cannot carry an eyelid;
37
+ a close-up cannot carry a full-body retreat. Naming only the emotion ("愤怒")
38
+ leaves the translation to a downstream stage, and the keyframe is the first
39
+ frame — a mistranslation there is wrong from frame one.
40
+ 7. **Light and atmosphere:** inherit accepted direction/time/weather; add only
41
+ frame-relevant detail.
42
+ 8. **Text policy:** readable/symbolic/blank/postproduction for visible surfaces.
43
+ 9. **Exclusions:** contradictions or drift likely for this frame.
44
+
45
+ Identity and boundary facts remain source references. The keyframe owns focal,
46
+ composition, camera/lens, frame-only staging, and exclusions.
47
+
48
+ ### 写完之后过一遍可渲染检查
49
+
50
+ 判据是一句话:**接手的人能不能照着画出来,而不用自己发明任何事实**。逐条对照,
51
+ 缺哪条补哪条——这些不是可选修辞,缺一条执行端就得替你决定一次:
52
+
53
+ | 必须写出来 | 缺了会发生什么 |
54
+ |---|---|
55
+ | 每个人在哪、彼此距离多少("站在他正前方约两步") | 人物间距逐镜漂移,观众读成换了场地 |
56
+ | 前景、中景、背景各有什么 | 纵深塌成一层,主体贴在背景上 |
57
+ | 视线该落在哪(本镜的视觉重点) | 画面平均用力,观众不知道该看谁 |
58
+ | 构图方式与景别 | 同一场每镜构图随机,剪不到一起 |
59
+ | 机位在轴线哪一侧、俯仰角度、焦段意图 | 越轴;正反打方向对不上 |
60
+ | 光从哪来、什么质感 | 同场光位逐镜跳变 |
61
+ | 每个在场者的姿态、朝向、手部、持物 | 下一镜接不住,道具凭空易手 |
62
+ | 哪些与上一镜相同 | 执行端把"没写"读成"可以变" |
63
+
64
+ 最后一条最容易漏,也最便宜:与上一镜一致的部分**写一句"与上一镜相同"即可**,
65
+ 不必重述细节;真正变了的才展开写。这一句是连续性的承载点。
66
+
67
+ **写紧**:一件事只说一次,能并进一句就不另起一句。上表十二项写满大约五百字就够;
68
+ 写到八百字往上,多出来的通常是连接词、铺垫句和把同一件事换个说法再说一遍——它们不增加
69
+ 可渲染的事实,却按字数付费。检查办法:删掉任意一句,如果画面没有变得更不确定,那句就是
70
+ 多的。
71
+
72
+ 写出来是这样(合成材料,四百余字覆盖上表全部十二项):
73
+
74
+ ```text
75
+ 竖屏 9:16 中近景。机位在轴线左侧、高约一米二,平视略低约五度,中焦 50mm。前景是长凳
76
+ 扶手与半张湿报纸(占下缘约六分之一);中景是两人对峙;背景是虚焦的候车牌。三分构图,
77
+ 她落在右三分线上。她:坐长凳右端,双手交叠压膝,身体朝向正前,视线落在对方鞋尖,
78
+ 无持物。人物乙:站她正前方约两步、略偏画面左,双手插袋,身体朝向她,头略偏向出口。
79
+ 光自画面右上顶棚缝隙斜下为主光(硬),左侧留暗,无补光。视觉重点在她压膝的双手——
80
+ 本镜唯一不动的东西。位置与持物与上一镜相同,只有她的视线从水洼移到对方鞋尖。
81
+ 排除:无动作过程,无雨丝拖影。
82
+ ```
83
+
84
+ `text_treatment_refs` must resolve to the asset owner's accepted text-policy
85
+ field (or explicitly candidate policy in a provisional chain). A frozen frame
86
+ may determine whether the surface is legible in this composition; it may not
87
+ replace the source wording or policy with an untraceable prose instruction.
88
+
89
+ ## 尾帧:什么时候可以有,以及它换来什么代价(`SHT-17`)
90
+
91
+ 默认每镜一张关键帧,冻结的是 start。但首尾帧接续是 AI 视频里最常用的工作流之一:把首帧
92
+ 和尾帧一起交给执行端,中间由它补。套件此前没有尾帧的位置,于是这条路要么走不通,要么被
93
+ 私自绕过——后者更糟,因为绕过时尾帧往往是**独立画出来的**,它就成了第二个终点权威,与
94
+ 镜头 `end_boundary` 各说各话。
95
+
96
+ **`structural_invariant`**:关键帧记录必须声明 `boundary_role`(`start` 或 `end`),
97
+ `boundary_ref` 指向同一镜头对应的那个边界字段。**尾帧是 `end_boundary` 的投影,
98
+ 不是新的终点事实**——它与首帧对 `start_boundary` 的关系完全一样:可以决定这一帧怎么构图、
99
+ 用什么景别镜头、光怎么落,不能决定人在哪、手里有什么、看着谁。尾帧与镜头终点不一致时,
100
+ 错的是尾帧。
101
+
102
+ 每镜的关键帧数量**不是固定的**。默认一张首帧;只有当交付工作流真的要消费尾帧时才加一张,
103
+ 不为凑齐而画。补尾帧不改变 `SHT-10`:首帧仍然只能写 start 事实,尾帧只能写 end 事实,
104
+ 两张各自守自己的边界,不互相借用。
105
+
106
+ **代价要说清楚:交出一对首尾帧,等于把两帧之间的运动交给了执行端插值**。 而运动路径本来
107
+ 是运动规格拥有的东西。所以选了首尾帧接续的镜头,其运动规格不是"照旧再写一遍",而是被
108
+ 两端夹住了:它仍然要写清中间必须发生什么(动作顺序、对白落点、摄影机行为),但要意识到
109
+ 执行端会优先满足两端的画面一致性。因此——
110
+
111
+ - 中间必须被看到的动作**不要只靠插值兑现**。如果一个动作是本镜存在的理由,两端之间没有
112
+ 任何东西保证它会发生,就该拆镜,或者让该动作落在其中一端。
113
+ - 两端差异越大,插值越自由,中间越不可控。首尾帧接续适合"状态改变清楚、路径无所谓"的
114
+ 镜头(转身、递交完成、坐下),不适合"路径本身是戏"的镜头。
115
+ - 终点报告仍然对照镜头 `end_boundary`,不对照尾帧。尾帧只是它的投影,不能自证到达。
116
+
117
+ ## Start-only drafting discipline
118
+
119
+ **`SHT-10 · reviewed_invariant`**: rendered keyframe prose may contain only facts
120
+ from the boundary that frame declares. 首帧写进任何由运动或终点首次产生的事实是漂移;
121
+ 尾帧写进在它之前就已经消耗掉的事实同样是漂移。两帧各守各的边界,不互相借用。
122
+
123
+ Keyframe 默认是 shot start,不是“本镜最有戏的时刻”。为避免把 end 提前:
124
+
125
+ 1. 先冻结 `boundary_ref`(`boundary_role: start`),草拟 prompt 时暂不读 end/motion prose;
126
+ 2. 只填 start 已成立的 position/pose/gaze/hands/held props/visible state;
127
+ 3. 再与 end 做“新出现事实”差集;差集中的事实不得出现在 keyframe prompt;
128
+ 4. 渲染 Markdown 后从自然语言反向提取手位/持物/目光/可见状态,与
129
+ structured boundary 再比一次;不能只验 JSON 投影而忽略真正交付的 prompt。
130
+
131
+ 反例:start 是“右手空置、看对方”,end 是“右手握铃绳、看门”。冻结帧写
132
+ “手已握铃绳”即使很好看,也属于 boundary drift。
133
+
134
+ ## Static test
135
+
136
+ Ask: could a still photographer capture every described fact at once?
137
+
138
+ Move these to motion:
139
+
140
+ - ordered verbs (先、再、随后、最终);
141
+ - expression changing from A to B;
142
+ - camera push/pan/track over time;
143
+ - entering/leaving/turning/reaching sequences;
144
+ - dialogue delivery arc or sound progression;
145
+ - light/weather transforming during the shot.
146
+
147
+ A single held pose may imply tension, but it must not require several moments.
148
+
149
+ ## Prompt economy
150
+
151
+ Do not restate full character or location 设定集s. Bind accepted variants and
152
+ repeat only facts the frame needs to prevent ambiguity: distinguishing anchor,
153
+ current Look, crucial spatial anchor, held prop, light direction, text state.
154
+
155
+ Generic “cinematic, 8K, masterpiece” language cannot replace subject identity,
156
+ geography, composition, or continuity.
157
+
158
+ ## Failure examples
159
+
160
+ - incompatible Looks appear in the same frame;
161
+ - “turns, runs, then looks back” appears in a still;
162
+ - the start hand/prop differs from the shot boundary;
163
+ - background changes location identity or orientation;
164
+ - light direction resets without source change;
165
+ - readable evidence is paired with no-text;
166
+ - prompt lists subjects but not their spatial relationship;
167
+ - framing has no focal hierarchy.
168
+ - structured projection matches start but rendered prompt describes a fact that
169
+ first appears in the shot end or motion.