@oh-story/dsh 0.1.9 → 0.1.11

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 (529) hide show
  1. package/README.md +14 -14
  2. package/lib/client.js +209 -73
  3. package/lib/client.js.map +3 -3
  4. package/lib/drama/manifest.json +248 -168
  5. package/lib/drama/skills/short-drama/SKILL.md +16 -4
  6. package/lib/drama/skills/short-drama/assets/project-template/short-drama.json +3 -0
  7. package/lib/drama/skills/short-drama/references/creator-documents.md +3 -0
  8. package/lib/drama/skills/short-drama/references/knowhow-index.md +15 -0
  9. package/lib/drama/skills/short-drama/scripts/creator_markdown_check.py +14 -0
  10. package/lib/drama/skills/short-drama/scripts/project_tool.py +131 -0
  11. package/lib/drama/skills/short-drama-assets/SKILL.md +2 -1
  12. package/lib/drama/skills/short-drama-assets/references/asset-review-checklist.md +2 -0
  13. package/lib/drama/skills/short-drama-assets/references/character-and-look.md +10 -0
  14. package/lib/drama/skills/short-drama-assets/references/continuity-lock.md +6 -9
  15. package/lib/drama/skills/short-drama-assets/references/era-anchors.md +37 -0
  16. package/lib/drama/skills/short-drama-assets/references/stage-contract.md +2 -0
  17. package/lib/drama/skills/short-drama-assets/references/voice-direction.md +28 -0
  18. package/lib/drama/skills/short-drama-develop/SKILL.md +10 -4
  19. package/lib/drama/skills/short-drama-develop/assets/adaptation-map.example.jsonl +1 -1
  20. package/lib/drama/skills/short-drama-develop/assets/creative-brief.md +8 -0
  21. package/lib/drama/skills/short-drama-develop/references/adaptation-craft.md +80 -13
  22. package/lib/drama/skills/short-drama-develop/references/episode-design.md +95 -12
  23. package/lib/drama/skills/short-drama-develop/references/genre-and-hook-playbook.md +9 -5
  24. package/lib/drama/skills/short-drama-develop/references/genre-cards//345/244/215/344/273/207/346/211/223/350/204/270.md +1 -1
  25. package/lib/drama/skills/short-drama-develop/references/genre-cards//347/263/273/347/273/237/346/265/201.md +51 -0
  26. package/lib/drama/skills/short-drama-develop/references/genre-cards//351/200/206/350/242/255.md +51 -0
  27. package/lib/drama/skills/short-drama-develop/references/genre-cards//351/207/215/347/224/237/347/251/277/350/266/212.md +51 -0
  28. package/lib/drama/skills/short-drama-develop/references/genre-cards.md +10 -7
  29. package/lib/drama/skills/short-drama-develop/references/premise-devices.md +15 -9
  30. package/lib/drama/skills/short-drama-develop/references/serial-character-and-memory.md +3 -2
  31. package/lib/drama/skills/short-drama-develop/references/stage-contract.md +14 -7
  32. package/lib/drama/skills/short-drama-develop/references/story-craft.md +7 -3
  33. package/lib/drama/skills/short-drama-edit/SKILL.md +65 -44
  34. package/lib/drama/skills/short-drama-edit/assets/remotion/README.md +49 -13
  35. package/lib/drama/skills/short-drama-edit/assets/remotion/package.json +4 -2
  36. package/lib/drama/skills/short-drama-edit/assets/remotion/src/Overlay.tsx +31 -0
  37. package/lib/drama/skills/short-drama-edit/assets/remotion/src/Root.tsx +5 -5
  38. package/lib/drama/skills/short-drama-edit/assets/remotion/src/Subtitles.tsx +68 -69
  39. package/lib/drama/skills/short-drama-edit/assets/remotion/src/font.ts +39 -29
  40. package/lib/drama/skills/short-drama-edit/assets/remotion/src/rules.mjs +188 -0
  41. package/lib/drama/skills/short-drama-edit/assets/remotion/src/schema.ts +26 -13
  42. package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/Card.tsx +72 -0
  43. package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/CornerChip.tsx +39 -0
  44. package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/ScreenText.tsx +36 -0
  45. package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/SystemPanel.tsx +44 -0
  46. package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/TaskPanel.tsx +100 -0
  47. package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/chrome.tsx +197 -0
  48. package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/tokens.ts +62 -0
  49. package/lib/drama/skills/short-drama-edit/assets/remotion/tsconfig.json +1 -0
  50. package/lib/drama/skills/short-drama-edit/assets//345/211/252/350/276/221/345/215/225.md +6 -4
  51. package/lib/drama/skills/short-drama-edit/references/cut-craft.md +26 -67
  52. package/lib/drama/skills/short-drama-edit/references/delivery-verify.md +31 -56
  53. package/lib/drama/skills/short-drama-edit/references/generated-footage.md +42 -78
  54. package/lib/drama/skills/short-drama-edit/references/sound-and-subtitles.md +44 -92
  55. package/lib/drama/skills/short-drama-edit/references/stage-contract.md +14 -16
  56. package/lib/drama/skills/short-drama-edit/scripts/edit_tool.py +1272 -125
  57. package/lib/drama/skills/short-drama-edit/scripts/selftest.py +113 -9
  58. package/lib/drama/skills/short-drama-image-prompts/SKILL.md +2 -0
  59. package/lib/drama/skills/short-drama-image-prompts/references/common-recipe.md +11 -0
  60. package/lib/drama/skills/short-drama-novel-analyze/SKILL.md +3 -3
  61. package/lib/drama/skills/short-drama-novel-analyze/assets/episode-candidate.example.jsonl +2 -2
  62. package/lib/drama/skills/short-drama-novel-analyze/references/adaptation-triage.md +8 -4
  63. package/lib/drama/skills/short-drama-novel-analyze/references/adaptation-value.md +10 -3
  64. package/lib/drama/skills/short-drama-novel-analyze/references/aggregation-and-entities.md +25 -1
  65. package/lib/drama/skills/short-drama-novel-analyze/references/stage-contract.md +1 -0
  66. package/lib/drama/skills/short-drama-produce/SKILL.md +5 -1
  67. package/lib/drama/skills/short-drama-produce/references/adapter-contract.md +14 -20
  68. package/lib/drama/skills/short-drama-produce/references/providers/minimax-h3-video.md +8 -26
  69. package/lib/drama/skills/short-drama-produce/references/providers/minimax-speech.md +41 -0
  70. package/lib/drama/skills/short-drama-produce/scripts/provider_adapters.py +142 -1
  71. package/lib/drama/skills/short-drama-review/SKILL.md +4 -5
  72. package/lib/drama/skills/short-drama-review/references/production-quality-gates.md +6 -19
  73. package/lib/drama/skills/short-drama-review/references/review-method.md +6 -1
  74. package/lib/drama/skills/short-drama-review/references/rubric-assets-prompts.md +11 -0
  75. package/lib/drama/skills/short-drama-review/references/rubric-story-script.md +77 -3
  76. package/lib/drama/skills/short-drama-review/references/rubric-visual-motion.md +24 -35
  77. package/lib/drama/skills/short-drama-review/references/stage-contract.md +3 -0
  78. package/lib/drama/skills/short-drama-storyboard/SKILL.md +23 -11
  79. package/lib/drama/skills/short-drama-storyboard/references/blocking-playbooks.md +1 -1
  80. package/lib/drama/skills/short-drama-storyboard/references/lighting-craft.md +39 -0
  81. package/lib/drama/skills/short-drama-storyboard/references/production-shot-grammar.md +2 -2
  82. package/lib/drama/skills/short-drama-storyboard/references/shot-craft.md +139 -34
  83. package/lib/drama/skills/short-drama-storyboard/references/stage-contract.md +5 -3
  84. package/lib/drama/skills/short-drama-video-prompts/SKILL.md +15 -12
  85. package/lib/drama/skills/short-drama-video-prompts/references/camera-audio-continuity.md +29 -0
  86. package/lib/drama/skills/short-drama-video-prompts/references/delivery-profile.md +4 -5
  87. package/lib/drama/skills/short-drama-video-prompts/references/generability.md +4 -2
  88. package/lib/drama/skills/short-drama-video-prompts/references/minimax-h3.md +52 -39
  89. package/lib/drama/skills/short-drama-video-prompts/references/motion-recipe.md +24 -21
  90. package/lib/drama/skills/short-drama-video-prompts/references/performance-action-timing.md +9 -23
  91. package/lib/drama/skills/short-drama-video-prompts/references/production-prompt-grammar.md +14 -26
  92. package/lib/drama/skills/short-drama-video-prompts/references/review-and-fixtures.md +1 -1
  93. package/lib/drama/skills/short-drama-video-prompts/references/seedance-2.0.md +2 -3
  94. package/lib/drama/skills/short-drama-video-prompts/references/seedance-2.5.md +34 -9
  95. package/lib/drama/skills/short-drama-video-prompts/references/stage-contract.md +3 -2
  96. package/lib/drama/skills/short-drama-video-prompts/references/target-model-profile.md +8 -1
  97. package/lib/drama/skills/short-drama-video-prompts/references/wan-3.0.md +103 -0
  98. package/lib/drama/skills/short-drama-video-prompts/scripts/motion_timing_check.py +8 -7
  99. package/lib/drama/skills/short-drama-write/SKILL.md +10 -7
  100. package/lib/drama/skills/short-drama-write/references/dialogue-craft.md +1 -1
  101. package/lib/drama/skills/short-drama-write/references/script-craft.md +56 -3
  102. package/lib/drama/skills/short-drama-write/references/stage-contract.md +4 -0
  103. package/lib/drama/skills/short-drama-write/scripts/duration_estimate.py +48 -2
  104. package/lib/index.js +346 -98
  105. package/lib/index.js.map +4 -4
  106. package/lib/novel-to-game/README.md +299 -59
  107. package/lib/novel-to-game/README_ZH.md +299 -56
  108. package/lib/novel-to-game/VERSION +1 -1
  109. package/lib/novel-to-game/examples/jin-ping-mei/build/BUILD_BRIEF.md +3 -1
  110. package/lib/novel-to-game/examples/jin-ping-mei/build/app/RUN.md +11 -3
  111. package/lib/novel-to-game/examples/jin-ping-mei/build/app/css/new-guofeng.css +397 -8
  112. package/lib/novel-to-game/examples/jin-ping-mei/build/app/css/style.css +0 -31
  113. package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/data.js +71 -73
  114. package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/engine.js +78 -89
  115. package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/main.js +37 -14
  116. package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/text.js +5 -5
  117. package/lib/novel-to-game/examples/jin-ping-mei/build/app/package.json +2 -1
  118. package/lib/novel-to-game/examples/jin-ping-mei/qa/README.md +11 -16
  119. package/lib/novel-to-game/examples/jin-ping-mei/qa/verification.json +11 -11
  120. package/lib/novel-to-game/examples/jin-ping-mei/qa/verify_playable_model.mjs +23 -0
  121. package/lib/novel-to-game/manifest.json +77 -87
  122. package/lib/novel-to-game/skills/game-art-direction/SKILL.md +7 -12
  123. package/lib/novel-to-game/skills/game-art-direction/references/art-direction-method.md +27 -106
  124. package/lib/novel-to-game/skills/game-build/SKILL.md +13 -14
  125. package/lib/novel-to-game/skills/game-build/references/blender-asset-workflow.md +24 -0
  126. package/lib/novel-to-game/skills/game-build/references/build-brief-contract.md +45 -82
  127. package/lib/novel-to-game/skills/game-build/references/generative-media-pipeline.md +14 -45
  128. package/lib/novel-to-game/skills/game-build/references/playable-model-contract.md +30 -65
  129. package/lib/novel-to-game/skills/game-build/references/tts-production-contract.md +13 -27
  130. package/lib/novel-to-game/skills/game-concept/SKILL.md +13 -15
  131. package/lib/novel-to-game/skills/game-concept/references/concept-method.md +28 -75
  132. package/lib/novel-to-game/skills/game-qa/SKILL.md +6 -7
  133. package/lib/novel-to-game/skills/game-qa/references/test-design-method.md +9 -5
  134. package/lib/novel-to-game/skills/game-world-design/SKILL.md +12 -16
  135. package/lib/novel-to-game/skills/game-world-design/references/narrative-design-method.md +23 -72
  136. package/lib/novel-to-game/skills/game-world-design/references/numeric-design-method.md +14 -48
  137. package/lib/novel-to-game/skills/game-world-design/references/world-design-method.md +36 -103
  138. package/lib/novel-to-game/skills/novel-game-analyze/SKILL.md +4 -10
  139. package/lib/novel-to-game/skills/novel-game-analyze/references/gameability-protocol.md +4 -4
  140. package/lib/novel-to-game/skills/novel-to-game/SKILL.md +9 -21
  141. package/lib/novel-to-game/skills/novel-to-game/references/intake-method.md +5 -4
  142. package/lib/novel-to-game/skills/novel-to-game/references/pipeline-contract.md +5 -8
  143. package/lib/oh-story/manifest.json +607 -327
  144. package/lib/oh-story/roles/chapter-extractor.md +177 -237
  145. package/lib/oh-story/roles/character-designer.md +1 -2
  146. package/lib/oh-story/roles/consistency-checker.md +15 -13
  147. package/lib/oh-story/roles/narrative-writer.md +36 -38
  148. package/lib/oh-story/roles/story-architect.md +9 -61
  149. package/lib/oh-story/roles/story-explorer.md +20 -125
  150. package/lib/oh-story/roles/story-researcher.md +0 -1
  151. package/lib/oh-story/skills/story/SKILL.md +15 -9
  152. package/lib/oh-story/skills/story/VERSION +1 -1
  153. package/lib/oh-story/skills/story/references/author-memory-maintenance.md +75 -0
  154. package/lib/oh-story/skills/story/references/author-memory.md +46 -94
  155. package/lib/oh-story/skills/story/scripts/author_memory_commit.py +934 -170
  156. package/lib/oh-story/skills/story-cover/SKILL.md +10 -1
  157. package/lib/oh-story/skills/story-deslop/SKILL.md +59 -73
  158. package/lib/oh-story/skills/story-deslop/references/agent-calls.md +5 -0
  159. package/lib/oh-story/skills/story-deslop/references/anti-ai-writing.md +12 -11
  160. package/lib/oh-story/skills/story-deslop/references/author-memory-maintenance.md +75 -0
  161. package/lib/oh-story/skills/story-deslop/references/author-memory.md +46 -94
  162. package/lib/oh-story/skills/story-deslop/references/banned-words.md +2 -2
  163. package/lib/oh-story/skills/story-deslop/references/deslop-gates.md +22 -5
  164. package/lib/oh-story/skills/story-deslop/references/style-resolution.md +4 -4
  165. package/lib/oh-story/skills/story-deslop/scripts/author_memory_commit.py +934 -170
  166. package/lib/oh-story/skills/story-deslop/scripts/check-ai-patterns.js +155 -8
  167. package/lib/oh-story/skills/story-import/SKILL.md +64 -584
  168. package/lib/oh-story/skills/story-import/references/character-state-reverse.md +1 -1
  169. package/lib/oh-story/skills/story-import/references/deep-analysis.md +47 -0
  170. package/lib/oh-story/skills/story-import/references/format-and-structure.md +1 -1
  171. package/lib/oh-story/skills/story-import/references/import-report.md +64 -0
  172. package/lib/oh-story/skills/story-import/references/import-special-cases.md +34 -0
  173. package/lib/oh-story/skills/story-import/references/import-tracking.md +95 -0
  174. package/lib/oh-story/skills/story-import/references/length-routing.md +1 -1
  175. package/lib/oh-story/skills/story-import/references/outline-reverse-rules.md +79 -0
  176. package/lib/oh-story/skills/story-import/references/outline-reverse.md +24 -0
  177. package/lib/oh-story/skills/story-import/references/state-tracking.md +4 -69
  178. package/lib/oh-story/skills/story-import/references/structure-mapping-long.md +98 -92
  179. package/lib/oh-story/skills/story-import/references/structure-mapping-short.md +24 -12
  180. package/lib/oh-story/skills/story-import/references/tracking-initialization.md +1 -1
  181. package/lib/oh-story/skills/story-import/references/tracking-transaction.md +15 -11
  182. package/lib/oh-story/skills/story-import/scripts/build_outline_brief.py +332 -0
  183. package/lib/oh-story/skills/story-import/scripts/check-outline-contract.js +132 -27
  184. package/lib/oh-story/skills/story-import/scripts/tracking_commit.py +478 -15
  185. package/lib/oh-story/skills/story-import/scripts/wordcount_core.py +182 -23
  186. package/lib/oh-story/skills/story-long-analyze/SKILL.md +81 -270
  187. package/lib/oh-story/skills/story-long-analyze/references/author-facing.md +252 -0
  188. package/lib/oh-story/skills/story-long-analyze/references/deconstruction-notes.md +3 -3
  189. package/lib/oh-story/skills/story-long-analyze/references/final-checks.md +19 -0
  190. package/lib/oh-story/skills/story-long-analyze/references/index-rebuild.md +11 -0
  191. package/lib/oh-story/skills/story-long-analyze/references/inspiration-library.md +105 -0
  192. package/lib/oh-story/skills/story-long-analyze/references/pipeline-ops.md +138 -64
  193. package/lib/oh-story/skills/story-long-analyze/references/semantic-acceptance-fixtures.md +84 -0
  194. package/lib/oh-story/skills/story-long-analyze/references/stage1-golden-chapters.md +128 -0
  195. package/lib/oh-story/skills/story-long-analyze/references/stage2-extraction.md +229 -0
  196. package/lib/oh-story/skills/story-long-analyze/references/stage3-plot-rhythm.md +480 -0
  197. package/lib/oh-story/skills/story-long-analyze/references/stage4-characters-settings.md +195 -0
  198. package/lib/oh-story/skills/story-long-analyze/references/stage5-report.md +33 -0
  199. package/lib/oh-story/skills/story-long-analyze/references/style-profile-generator.md +55 -128
  200. package/lib/oh-story/skills/story-long-analyze/references/style-profile-protocol.md +6 -6
  201. package/lib/oh-story/skills/story-long-analyze/references/synthesis-inputs.md +39 -0
  202. package/lib/oh-story/skills/story-long-analyze/scripts/build_chapter_index.py +466 -0
  203. package/lib/oh-story/skills/story-long-analyze/scripts/inspect_existing_assets.py +702 -0
  204. package/lib/oh-story/skills/story-long-analyze/scripts/inspiration_index.py +864 -0
  205. package/lib/oh-story/skills/story-long-analyze/scripts/manage_analysis_run.py +1145 -0
  206. package/lib/oh-story/skills/story-long-analyze/scripts/render_relation_chart.py +425 -0
  207. package/lib/oh-story/skills/story-long-scan/SKILL.md +45 -194
  208. package/lib/oh-story/skills/story-long-scan/references/platform-ciweimao.md +19 -0
  209. package/lib/oh-story/skills/story-long-scan/references/platform-fanqie.md +45 -0
  210. package/lib/oh-story/skills/story-long-scan/references/platform-jjwxc.md +28 -0
  211. package/lib/oh-story/skills/story-long-scan/references/platform-qidian.md +35 -0
  212. package/lib/oh-story/skills/story-long-scan/references/platform-qimao.md +27 -0
  213. package/lib/oh-story/skills/story-long-scan/references/topic-decision.md +6 -2
  214. package/lib/oh-story/skills/story-long-write/SKILL.md +49 -81
  215. package/lib/oh-story/skills/story-long-write/references/agent-calls.md +47 -0
  216. package/lib/oh-story/skills/story-long-write/references/anti-ai-writing.md +12 -11
  217. package/lib/oh-story/skills/story-long-write/references/artifact-protocols.md +24 -202
  218. package/lib/oh-story/skills/story-long-write/references/author-memory-maintenance.md +75 -0
  219. package/lib/oh-story/skills/story-long-write/references/author-memory.md +46 -94
  220. package/lib/oh-story/skills/story-long-write/references/banned-words.md +2 -2
  221. package/lib/oh-story/skills/story-long-write/references/benchmark-recall.md +7 -11
  222. package/lib/oh-story/skills/story-long-write/references/character-relations.md +49 -1
  223. package/lib/oh-story/skills/story-long-write/references/cross-book-recall.md +26 -0
  224. package/lib/oh-story/skills/story-long-write/references/deslop-gates.md +171 -0
  225. package/lib/oh-story/skills/story-long-write/references/dialogue-mastery.md +4 -0
  226. package/lib/oh-story/skills/story-long-write/references/emotion-on-page.md +116 -0
  227. package/lib/oh-story/skills/story-long-write/references/emotional-arc-design.md +1 -114
  228. package/lib/oh-story/skills/story-long-write/references/emotional-methods.md +2 -2
  229. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards.md +1 -1
  230. package/lib/oh-story/skills/story-long-write/references/long-chapter-quality.md +7 -15
  231. package/lib/oh-story/skills/story-long-write/references/long-format.md +0 -8
  232. package/lib/oh-story/skills/story-long-write/references/long-genre-catalog.md +1 -1
  233. package/lib/oh-story/skills/story-long-write/references/long-genre-mechanics.md +3 -3
  234. package/lib/oh-story/skills/story-long-write/references/opening-design.md +2 -2
  235. package/lib/oh-story/skills/story-long-write/references/outline-conflict.md +4 -4
  236. package/lib/oh-story/skills/story-long-write/references/outline-methods.md +7 -7
  237. package/lib/oh-story/skills/story-long-write/references/outline-rhythm.md +3 -3
  238. package/lib/oh-story/skills/story-long-write/references/outline-structure-theory.md +14 -69
  239. package/lib/oh-story/skills/story-long-write/references/plot-frameworks.md +1 -1
  240. package/lib/oh-story/skills/story-long-write/references/plot-special-topics.md +2 -2
  241. package/lib/oh-story/skills/story-long-write/references/project-files.md +19 -13
  242. package/lib/oh-story/skills/story-long-write/references/reader-contract-and-progression.md +13 -5
  243. package/lib/oh-story/skills/story-long-write/references/reference-index.md +5 -6
  244. package/lib/oh-story/skills/story-long-write/references/stop-and-fix.md +9 -0
  245. package/lib/oh-story/skills/story-long-write/references/style-combat-face.md +1 -58
  246. package/lib/oh-story/skills/story-long-write/references/style-genre-modules.md +1 -1
  247. package/lib/oh-story/skills/story-long-write/references/style-resolution.md +4 -4
  248. package/lib/oh-story/skills/story-long-write/references/tracking-initialization.md +1 -1
  249. package/lib/oh-story/skills/story-long-write/references/tracking-transaction.md +15 -11
  250. package/lib/oh-story/skills/story-long-write/references/workflow-chapter.md +81 -121
  251. package/lib/oh-story/skills/story-long-write/references/workflow-daily.md +41 -139
  252. package/lib/oh-story/skills/story-long-write/references/workflow-outline.md +157 -0
  253. package/lib/oh-story/skills/story-long-write/references/workflow-revision.md +57 -67
  254. package/lib/oh-story/skills/story-long-write/references/workflow-setup.md +112 -253
  255. package/lib/oh-story/skills/story-long-write/references/workflow-volume.md +142 -0
  256. package/lib/oh-story/skills/story-long-write/references/writer-prompt-fallback.md +6 -4
  257. package/lib/oh-story/skills/story-long-write/references/writing-craft.md +19 -65
  258. package/lib/oh-story/skills/story-long-write/scripts/author_memory_commit.py +934 -170
  259. package/lib/oh-story/skills/story-long-write/scripts/build_architect_brief.py +260 -0
  260. package/lib/oh-story/skills/story-long-write/scripts/build_writer_prompt.py +226 -25
  261. package/lib/oh-story/skills/story-long-write/scripts/check-ai-patterns.js +155 -8
  262. package/lib/oh-story/skills/story-long-write/scripts/check-outline-contract.js +132 -27
  263. package/lib/oh-story/skills/story-long-write/scripts/check-outline-copy.js +7 -2
  264. package/lib/oh-story/skills/story-long-write/scripts/outline_view.py +7 -4
  265. package/lib/oh-story/skills/story-long-write/scripts/storyctl.py +304 -46
  266. package/lib/oh-story/skills/story-long-write/scripts/tracking_commit.py +478 -15
  267. package/lib/oh-story/skills/story-long-write/scripts/wordcount_core.py +182 -23
  268. package/lib/oh-story/skills/story-review/SKILL.md +31 -302
  269. package/lib/oh-story/skills/story-review/references/agent-prompts.md +184 -0
  270. package/lib/oh-story/skills/story-review/references/anti-ai-writing.md +12 -11
  271. package/lib/oh-story/skills/story-review/references/author-memory-maintenance.md +75 -0
  272. package/lib/oh-story/skills/story-review/references/author-memory.md +46 -94
  273. package/lib/oh-story/skills/story-review/references/banned-words.md +2 -2
  274. package/lib/oh-story/skills/story-review/references/batch-review.md +19 -0
  275. package/lib/oh-story/skills/story-review/references/character-relations.md +49 -1
  276. package/lib/oh-story/skills/story-review/references/dialogue-mastery.md +4 -0
  277. package/lib/oh-story/skills/story-review/references/review-quality.md +6 -11
  278. package/lib/oh-story/skills/story-review/references/review-tracking.md +10 -0
  279. package/lib/oh-story/skills/story-review/references/solo.md +52 -0
  280. package/lib/oh-story/skills/story-review/references/style-resolution.md +4 -4
  281. package/lib/oh-story/skills/story-review/references/tracking-initialization.md +1 -1
  282. package/lib/oh-story/skills/story-review/references/tracking-transaction.md +15 -11
  283. package/lib/oh-story/skills/story-review/scripts/author_memory_commit.py +934 -170
  284. package/lib/oh-story/skills/story-review/scripts/check-ai-patterns.js +155 -8
  285. package/lib/oh-story/skills/story-review/scripts/tracking_commit.py +478 -15
  286. package/lib/oh-story/skills/story-review/scripts/wordcount_core.py +182 -23
  287. package/lib/oh-story/skills/story-setup/SKILL.md +71 -452
  288. package/lib/oh-story/skills/story-setup/references/agent-references/agent-quality.md +4 -4
  289. package/lib/oh-story/skills/story-setup/references/agent-references/anti-ai-writing.md +12 -11
  290. package/lib/oh-story/skills/story-setup/references/agent-references/banned-words.md +2 -2
  291. package/lib/oh-story/skills/story-setup/references/agent-references/benchmark-style-load.md +107 -0
  292. package/lib/oh-story/skills/story-setup/references/agent-references/character-relations.md +49 -1
  293. package/lib/oh-story/skills/story-setup/references/agent-references/deslop-gates.md +22 -5
  294. package/lib/oh-story/skills/story-setup/references/agent-references/dialogue-mastery.md +4 -0
  295. package/lib/oh-story/skills/story-setup/references/agent-references/emotion-on-page.md +116 -0
  296. package/lib/oh-story/skills/story-setup/references/agent-references/emotional-arc-design.md +1 -114
  297. package/lib/oh-story/skills/story-setup/references/agent-references/format-and-structure.md +1 -1
  298. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards.md +1 -1
  299. package/lib/oh-story/skills/story-setup/references/agent-references/long-emotional-methods.md +2 -2
  300. package/lib/oh-story/skills/story-setup/references/agent-references/long-genre-catalog.md +1 -1
  301. package/lib/oh-story/skills/story-setup/references/agent-references/long-genre-mechanics.md +3 -3
  302. package/lib/oh-story/skills/story-setup/references/agent-references/long-quality.md +7 -5
  303. package/lib/oh-story/skills/story-setup/references/agent-references/opening-design.md +2 -2
  304. package/lib/oh-story/skills/story-setup/references/agent-references/outline-conflict.md +4 -4
  305. package/lib/oh-story/skills/story-setup/references/agent-references/outline-methods.md +7 -7
  306. package/lib/oh-story/skills/story-setup/references/agent-references/outline-rhythm.md +3 -3
  307. package/lib/oh-story/skills/story-setup/references/agent-references/short-emotional-methods.md +1 -1
  308. package/lib/oh-story/skills/story-setup/references/agent-references/short-genre-formulas.md +0 -15
  309. package/lib/oh-story/skills/story-setup/references/agent-references/short-reversal.md +1 -1
  310. package/lib/oh-story/skills/story-setup/references/agent-references/style-combat-face.md +1 -58
  311. package/lib/oh-story/skills/story-setup/references/agent-references/style-genre-modules.md +1 -1
  312. package/lib/oh-story/skills/story-setup/references/agent-references/style-resolution.md +4 -4
  313. package/lib/oh-story/skills/story-setup/references/agent-references/writing-craft.md +19 -65
  314. package/lib/oh-story/skills/story-setup/references/diagnostics.md +4 -4
  315. package/lib/oh-story/skills/story-short-analyze/SKILL.md +56 -110
  316. package/lib/oh-story/skills/story-short-analyze/references/analysis-character-relations.md +1 -1
  317. package/lib/oh-story/skills/story-short-analyze/references/analysis-method.md +42 -0
  318. package/lib/oh-story/skills/story-short-analyze/references/optional-modules.md +97 -0
  319. package/lib/oh-story/skills/story-short-analyze/references/output-contract.md +9 -47
  320. package/lib/oh-story/skills/story-short-analyze/references/quality-checklist.md +80 -0
  321. package/lib/oh-story/skills/story-short-analyze/references/source-story-quality.md +4 -4
  322. package/lib/oh-story/skills/story-short-analyze/references/stage2-3-structure-emotion.md +308 -0
  323. package/lib/oh-story/skills/story-short-analyze/references/stage4-6-reversal-summary.md +611 -0
  324. package/lib/oh-story/skills/story-short-scan/SKILL.md +35 -65
  325. package/lib/oh-story/skills/story-short-scan/references/manual-rank-input.md +36 -0
  326. package/lib/oh-story/skills/story-short-scan/references/platform-dianzhong.md +24 -0
  327. package/lib/oh-story/skills/story-short-scan/references/platform-heiyan.md +21 -0
  328. package/lib/oh-story/skills/story-short-scan/references/topic-match.md +38 -0
  329. package/lib/oh-story/skills/story-short-write/SKILL.md +23 -175
  330. package/lib/oh-story/skills/story-short-write/references/agent-calls.md +13 -0
  331. package/lib/oh-story/skills/story-short-write/references/author-memory-maintenance.md +75 -0
  332. package/lib/oh-story/skills/story-short-write/references/author-memory.md +46 -94
  333. package/lib/oh-story/skills/story-short-write/references/banned-words.md +2 -2
  334. package/lib/oh-story/skills/story-short-write/references/benchmark-recall.md +1 -21
  335. package/lib/oh-story/skills/story-short-write/references/dialogue-mastery.md +4 -0
  336. package/lib/oh-story/skills/story-short-write/references/emotional-methods.md +1 -1
  337. package/lib/oh-story/skills/story-short-write/references/genre-writing-formulas.md +0 -15
  338. package/lib/oh-story/skills/story-short-write/references/output-contract.md +9 -47
  339. package/lib/oh-story/skills/story-short-write/references/reference-index.md +17 -47
  340. package/lib/oh-story/skills/story-short-write/references/scene-craft.md +40 -0
  341. package/lib/oh-story/skills/story-short-write/references/short-craft.md +7 -43
  342. package/lib/oh-story/skills/story-short-write/references/short-format.md +3 -3
  343. package/lib/oh-story/skills/story-short-write/references/short-prose-quality.md +2 -1
  344. package/lib/oh-story/skills/story-short-write/references/short-reversal.md +1 -1
  345. package/lib/oh-story/skills/story-short-write/references/style-resolution.md +4 -4
  346. package/lib/oh-story/skills/story-short-write/references/submission-craft.md +1 -1
  347. package/lib/oh-story/skills/story-short-write/references/villain-and-reveal.md +5 -10
  348. package/lib/oh-story/skills/story-short-write/references/workflow-design.md +21 -13
  349. package/lib/oh-story/skills/story-short-write/references/workflow-draft.md +116 -0
  350. package/lib/oh-story/skills/story-short-write/references/workflow-revision.md +99 -0
  351. package/lib/oh-story/skills/story-short-write/references/writing-workflow.md +7 -119
  352. package/lib/oh-story/skills/story-short-write/scripts/author_memory_commit.py +934 -170
  353. package/lib/oh-story/skills/story-short-write/scripts/check-ai-patterns.js +155 -8
  354. package/lib/oh-story/skills/story-short-write/scripts/check-outline-copy.js +7 -2
  355. package/lib/types/client/drama-production-view.d.ts.map +1 -1
  356. package/lib/types/client/file-activity.d.ts +19 -1
  357. package/lib/types/client/file-activity.d.ts.map +1 -1
  358. package/lib/types/client/index.d.ts.map +1 -1
  359. package/lib/types/client/production-prompts.d.ts +7 -0
  360. package/lib/types/client/production-prompts.d.ts.map +1 -1
  361. package/lib/types/client/production-runtime.d.ts +16 -0
  362. package/lib/types/client/production-runtime.d.ts.map +1 -1
  363. package/lib/types/client/video-studio.d.ts.map +1 -1
  364. package/lib/types/drama-adapters.d.ts +5 -3
  365. package/lib/types/drama-adapters.d.ts.map +1 -1
  366. package/lib/types/native-hooks.d.ts +53 -1
  367. package/lib/types/native-hooks.d.ts.map +1 -1
  368. package/lib/types/role-identity.d.ts +17 -0
  369. package/lib/types/role-identity.d.ts.map +1 -0
  370. package/lib/types/role-tool.d.ts.map +1 -1
  371. package/lib/types/skill-provider.d.ts.map +1 -1
  372. package/lib/types/video-project.d.ts.map +1 -1
  373. package/lib/types/workspace-route.d.ts.map +1 -1
  374. package/lib/video-recap/CHANGELOG.md +60 -1
  375. package/lib/video-recap/README.en.md +348 -137
  376. package/lib/video-recap/README.md +340 -136
  377. package/lib/video-recap/manifest.json +406 -251
  378. package/lib/video-recap/skills/video-assemble/SKILL.md +30 -15
  379. package/lib/video-recap/skills/video-assemble/references/audio-modes.md +63 -0
  380. package/lib/video-recap/skills/video-assemble/references/explicit-audio-mix.md +75 -0
  381. package/lib/video-recap/skills/video-assemble/references/foreground-compose.md +118 -0
  382. package/lib/video-recap/skills/video-assemble/references/narration-adoption.md +103 -0
  383. package/lib/video-recap/skills/video-assemble/references/packaging.md +45 -0
  384. package/lib/video-recap/skills/video-assemble/references/pair-media.md +74 -0
  385. package/lib/video-recap/skills/video-assemble/references/source-score.md +147 -0
  386. package/lib/video-recap/skills/video-assemble/references/subtitle-track.md +202 -0
  387. package/lib/video-recap/skills/video-assemble/scripts/adoption/__init__.py +1 -0
  388. package/lib/video-recap/skills/video-assemble/scripts/adoption/audio_mix_binding.py +279 -0
  389. package/lib/video-recap/skills/video-assemble/scripts/adoption/frozen_audio.py +187 -0
  390. package/lib/video-recap/skills/video-assemble/scripts/adoption/narration_binding.py +323 -0
  391. package/lib/video-recap/skills/video-assemble/scripts/adoption/strict_inputs.py +109 -0
  392. package/lib/video-recap/skills/video-assemble/scripts/adoption/strict_publish.py +130 -0
  393. package/lib/video-recap/skills/video-assemble/scripts/artifacts.py +10 -46
  394. package/lib/video-recap/skills/video-assemble/scripts/assemble.py +378 -119
  395. package/lib/video-recap/skills/video-assemble/scripts/assemble_constants.py +29 -12
  396. package/lib/video-recap/skills/video-assemble/scripts/assembly_contract.py +95 -44
  397. package/lib/video-recap/skills/video-assemble/scripts/assembly_settings.py +75 -32
  398. package/lib/video-recap/skills/video-assemble/scripts/audio_mix.py +11 -11
  399. package/lib/video-recap/skills/video-assemble/scripts/compose_foreground.py +293 -0
  400. package/lib/video-recap/skills/video-assemble/scripts/export_jianying.py +71 -78
  401. package/lib/video-recap/skills/video-assemble/scripts/jianying/__init__.py +1 -0
  402. package/lib/video-recap/skills/video-assemble/scripts/{jianying_builders.py → jianying/builders.py} +39 -67
  403. package/lib/video-recap/skills/video-assemble/scripts/{jianying_model.py → jianying/model.py} +3 -11
  404. package/lib/video-recap/skills/video-assemble/scripts/{jianying_optional.py → jianying/optional.py} +1 -1
  405. package/lib/video-recap/skills/video-assemble/scripts/jianying/schema.py +53 -0
  406. package/lib/video-recap/skills/video-assemble/scripts/{jianying_templates.py → jianying/templates.py} +1 -1
  407. package/lib/video-recap/skills/video-assemble/scripts/{jianying_timeline_contract.py → jianying/timeline_contract.py} +34 -13
  408. package/lib/video-recap/skills/video-assemble/scripts/{jianying_writer.py → jianying/writer.py} +7 -17
  409. package/lib/video-recap/skills/video-assemble/scripts/lib.py +37 -4
  410. package/lib/video-recap/skills/video-assemble/scripts/media.py +12 -21
  411. package/lib/video-recap/skills/video-assemble/scripts/narration_audio.py +64 -34
  412. package/lib/video-recap/skills/video-assemble/scripts/packaging.py +122 -0
  413. package/lib/video-recap/skills/video-assemble/scripts/pair_media.py +216 -0
  414. package/lib/video-recap/skills/video-assemble/scripts/render_preflight.py +1 -3
  415. package/lib/video-recap/skills/video-assemble/scripts/source_score.py +469 -0
  416. package/lib/video-recap/skills/video-assemble/scripts/source_subtitles.py +25 -9
  417. package/lib/video-recap/skills/video-assemble/scripts/subtitles/__init__.py +1 -0
  418. package/lib/video-recap/skills/video-assemble/scripts/{subtitle_core.py → subtitles/core.py} +13 -6
  419. package/lib/video-recap/skills/video-assemble/scripts/{subtitle_render.py → subtitles/render.py} +5 -4
  420. package/lib/video-recap/skills/video-assemble/scripts/subtitles/track.py +324 -0
  421. package/lib/video-recap/skills/video-assemble/scripts/subtitles/track_binding.py +200 -0
  422. package/lib/video-recap/skills/video-assemble/scripts/timeline.py +30 -46
  423. package/lib/video-recap/skills/video-assemble/scripts/timeline_emit.py +91 -7
  424. package/lib/video-recap/skills/video-assemble/scripts/visual_render.py +22 -8
  425. package/lib/video-recap/skills/video-cut/SKILL.md +34 -16
  426. package/lib/video-recap/skills/video-cut/references/shot-review.md +50 -0
  427. package/lib/video-recap/skills/video-cut/scripts/cut.py +2 -28
  428. package/lib/video-recap/skills/video-cut/scripts/cut_cli.py +58 -62
  429. package/lib/video-recap/skills/video-cut/scripts/cut_contract.py +21 -106
  430. package/lib/video-recap/skills/video-cut/scripts/cut_render.py +14 -9
  431. package/lib/video-recap/skills/video-cut/scripts/lib.py +39 -0
  432. package/lib/video-recap/skills/video-cut/scripts/narration_mapping.py +2 -155
  433. package/lib/video-recap/skills/video-cut/scripts/narrative_selection.py +244 -0
  434. package/lib/video-recap/skills/video-cut/scripts/shot_review.py +357 -0
  435. package/lib/video-recap/skills/video-recap/SKILL.md +86 -42
  436. package/lib/video-recap/skills/video-recap/references/audio-routing.md +126 -0
  437. package/lib/video-recap/skills/video-recap/references/config-playbook.md +12 -8
  438. package/lib/video-recap/skills/video-recap/references/data-schema.md +44 -33
  439. package/lib/video-recap/skills/video-recap/references/resource-library.md +151 -0
  440. package/lib/video-recap/skills/video-recap/references/shift-left-qc-schema.md +1 -1
  441. package/lib/video-recap/skills/video-recap/scripts/doctor.py +123 -30
  442. package/lib/video-recap/skills/video-recap/scripts/final_qc.py +22 -75
  443. package/lib/video-recap/skills/video-recap/scripts/lib.py +3 -3
  444. package/lib/video-recap/skills/video-recap/scripts/library.py +509 -0
  445. package/lib/video-recap/skills/video-recap/scripts/materials.py +63 -91
  446. package/lib/video-recap/skills/video-recap/scripts/mimo_qc.py +8 -70
  447. package/lib/video-recap/skills/video-recap/scripts/project_binding.py +286 -0
  448. package/lib/video-recap/skills/video-recap/scripts/qc/__init__.py +1 -0
  449. package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_client.py → qc/mimo_client.py} +1 -1
  450. package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_evidence.py → qc/mimo_evidence.py} +33 -66
  451. package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_observations.py → qc/mimo_observations.py} +3 -11
  452. package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_payload.py → qc/mimo_payload.py} +4 -7
  453. package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_report.py → qc/mimo_report.py} +17 -28
  454. package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_runner.py → qc/mimo_runner.py} +2 -2
  455. package/lib/video-recap/skills/video-recap/scripts/qc_contract.py +0 -19
  456. package/lib/video-recap/skills/video-recap/scripts/recap_cli.py +119 -50
  457. package/lib/video-recap/skills/video-recap/scripts/recap_inspect.py +32 -114
  458. package/lib/video-recap/skills/video-recap/scripts/recap_review.py +9 -23
  459. package/lib/video-recap/skills/video-recap/scripts/recap_runner.py +387 -334
  460. package/lib/video-recap/skills/video-recap/scripts/recap_runtime.py +23 -23
  461. package/lib/video-recap/skills/video-recap/scripts/recap_source.py +278 -0
  462. package/lib/video-recap/skills/video-recap/scripts/recap_stage_qc.py +25 -12
  463. package/lib/video-recap/skills/video-recap/scripts/recap_timeline.py +59 -52
  464. package/lib/video-recap/skills/video-recap/scripts/resource_lock.py +162 -0
  465. package/lib/video-recap/skills/video-script/SKILL.md +16 -13
  466. package/lib/video-recap/skills/video-script/references/creative-editing-playbook.md +9 -5
  467. package/lib/video-recap/skills/video-script/references/promotional-copy.md +68 -0
  468. package/lib/video-recap/skills/video-script/references/research-guide.md +1 -1
  469. package/lib/video-recap/skills/video-script/scripts/evidence_bundle.py +24 -76
  470. package/lib/video-recap/skills/video-script/scripts/lib.py +10 -87
  471. package/lib/video-recap/skills/video-script/scripts/narration_lint.py +63 -39
  472. package/lib/video-recap/skills/video-script/scripts/review.py +0 -2
  473. package/lib/video-recap/skills/video-script/scripts/review_grounding.py +35 -59
  474. package/lib/video-recap/skills/video-script/scripts/review_response.py +66 -128
  475. package/lib/video-recap/skills/video-script/scripts/review_runner.py +12 -20
  476. package/lib/video-recap/skills/video-script/scripts/speech_ownership.py +4 -4
  477. package/lib/video-recap/skills/video-script/scripts/validate.py +53 -42
  478. package/lib/video-recap/skills/video-understanding/SKILL.md +6 -4
  479. package/lib/video-recap/skills/video-understanding/references/data-schema.md +50 -156
  480. package/lib/video-recap/skills/video-understanding/references/research-guide.md +4 -4
  481. package/lib/video-recap/skills/video-understanding/scripts/asr.py +85 -65
  482. package/lib/video-recap/skills/video-understanding/scripts/asr_timing_evidence.py +270 -0
  483. package/lib/video-recap/skills/video-understanding/scripts/brief.py +2 -5
  484. package/lib/video-recap/skills/video-understanding/scripts/briefing/__init__.py +1 -0
  485. package/lib/video-recap/skills/{video-script/scripts/agent_brief.py → video-understanding/scripts/briefing/builder.py} +38 -35
  486. package/lib/video-recap/skills/video-understanding/scripts/{brief_context.py → briefing/context.py} +4 -35
  487. package/lib/video-recap/skills/{video-script/scripts/brief_inputs.py → video-understanding/scripts/briefing/inputs.py} +9 -31
  488. package/lib/video-recap/skills/{video-script/scripts/brief_timeline.py → video-understanding/scripts/briefing/timeline.py} +5 -6
  489. package/lib/video-recap/skills/video-understanding/scripts/consolidate.py +65 -116
  490. package/lib/video-recap/skills/video-understanding/scripts/detect.py +31 -40
  491. package/lib/video-recap/skills/video-understanding/scripts/lib.py +30 -86
  492. package/lib/video-recap/skills/video-understanding/scripts/narration_lint.py +63 -39
  493. package/lib/video-recap/skills/video-understanding/scripts/speech_ownership.py +4 -4
  494. package/lib/video-recap/skills/video-understanding/scripts/storyboard.py +17 -79
  495. package/lib/video-recap/skills/video-understanding/scripts/understanding_brief.py +14 -40
  496. package/lib/video-recap/skills/video-understanding/scripts/understanding_cache.py +64 -46
  497. package/lib/video-recap/skills/video-understanding/scripts/understanding_runner.py +31 -11
  498. package/lib/video-recap/skills/video-understanding/scripts/understanding_storyboard.py +19 -14
  499. package/lib/video-recap/skills/video-understanding/scripts/vlm.py +80 -108
  500. package/lib/video-recap/skills/video-voiceover/SKILL.md +29 -19
  501. package/lib/video-recap/skills/video-voiceover/references/index-tts.md +31 -0
  502. package/lib/video-recap/skills/video-voiceover/scripts/approved_text_policy.py +123 -0
  503. package/lib/video-recap/skills/video-voiceover/scripts/dub.py +51 -59
  504. package/lib/video-recap/skills/video-voiceover/scripts/lib.py +8 -44
  505. package/lib/video-recap/skills/video-voiceover/scripts/providers/__init__.py +1 -0
  506. package/lib/video-recap/skills/video-voiceover/scripts/providers/index_tts.py +184 -0
  507. package/lib/video-recap/skills/video-voiceover/scripts/voiceover.py +212 -134
  508. package/package.json +45 -45
  509. package/lib/novel-to-game/skills/game-world-design/references/dialogue-design-method.md +0 -58
  510. package/lib/novel-to-game/skills/game-world-design/references/game-writing-craft.md +0 -53
  511. package/lib/novel-to-game/skills/novel-to-game/references/intake-benchmark-reference.md +0 -38
  512. package/lib/oh-story/skills/story-long-analyze/references/material-decomposition.md +0 -530
  513. package/lib/oh-story/skills/story-long-analyze/references/output-templates.md +0 -559
  514. package/lib/oh-story/skills/story-long-scan/references/scan-output-format.md +0 -207
  515. package/lib/oh-story/skills/story-long-write/references/state-tracking.md +0 -108
  516. package/lib/oh-story/skills/story-short-analyze/references/material-decomposition.md +0 -678
  517. package/lib/oh-story/skills/story-short-analyze/references/output-templates.md +0 -561
  518. package/lib/video-recap/skills/video-assemble/scripts/jianying_schema.py +0 -98
  519. package/lib/video-recap/skills/video-recap/references/creative-editing-playbook.md +0 -225
  520. package/lib/video-recap/skills/video-recap/references/research-guide.md +0 -74
  521. package/lib/video-recap/skills/video-recap/references/timeline-and-jianying.md +0 -250
  522. package/lib/video-recap/skills/video-script/scripts/brief_context.py +0 -348
  523. package/lib/video-recap/skills/video-script/scripts/narration.py +0 -12
  524. package/lib/video-recap/skills/video-understanding/scripts/agent_brief.py +0 -399
  525. package/lib/video-recap/skills/video-understanding/scripts/brief_inputs.py +0 -290
  526. package/lib/video-recap/skills/video-understanding/scripts/brief_timeline.py +0 -327
  527. /package/lib/video-recap/skills/video-assemble/scripts/{jianying_tracks.py → jianying/tracks.py} +0 -0
  528. /package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_contract.py → qc/mimo_contract.py} +0 -0
  529. /package/lib/video-recap/skills/video-voiceover/scripts/{fish_audio.py → providers/fish_audio.py} +0 -0
@@ -6,13 +6,10 @@ description: |
6
6
  被 story-long-write(Phase 4-5)和 story-short-write(Phase 3-4)调用。
7
7
  也可执行完整去AI味流程和格式合规检查。
8
8
  tools: [Read, Glob, Grep, Write, Edit, Bash]
9
- # Bash 用于书级自查脚本等确定性核对;字数与句长不自测、不上报,落盘后由父流程 chapter check 测定。
10
- model: sonnet
9
+ # Bash 只跑书级自查脚本;字数与句长不自测,落盘后由主会话 chapter check 测定。
10
+ model: opus
11
11
  maxTurns: 30
12
- # maxTurns: 30 — 覆盖正文写作场景(场景展开、情绪弧线执行、去AI味 7 Gate)。
13
- skills: [story-deslop]
14
- # 不加载 story-review:该 skill 会 spawn reviewer agents,subagent 不允许嵌套 spawn。
15
- memory: project
12
+ # 不预加载 story-deslop / story-review(后者会嵌套 spawn):审查任务按下表读 deslop-gates。
16
13
  ---
17
14
 
18
15
  # Narrative Writer -- 叙事写手
@@ -23,19 +20,19 @@ memory: project
23
20
 
24
21
  剧情单元、章号与申报表用于长篇;短篇按调用方的小节大纲和输出协议执行,审查任务不补写这些附件。
25
22
 
26
- 1. **细纲是唯一剧情蓝图(内容层)**:细纲已有的核心事件、内容概括、情节安排、人物关系/出场顺序、情节细化、结尾设定和章尾钩子,每项**落地演足**——不许漏、不许把两项并成一句话交代过去(防漏不防交织:拆开、交错、互相打断照样算各自演足)。「复沓锚句」列出的原话逐字落进它标注的情节点,不改写不挪位。越过细纲边界的新内容按铁律 3 三档处置。
27
- 2. **正文形状由你编排(形状层)**:落地位置、顺序、拆成几处、怎么断段由你定。**同一时空内(时间连续、地点相同)的情节点优先考虑交错落地,不限相邻**;因果依赖、信息边界或蓄势需要串行时保留顺序。判据逐对自问:**把乙点的一句插进甲点中间,剧情坏不坏?**不坏就可以互相打断;因果被打乱、该压的信息提前泄露、正在攒的节拍被冲散就不插。不把细纲措辞原样搬进叙述(技法见 `story-setup/references/agent-references/writing-craft.md`「从细纲到正文」)。
28
- 3. **新增物三档**——**一档现场材料可直接写;二档可写并申报,收编后才成为续写事实**。只看一件事:下一章需不需要知道它存在过?
23
+ 1. **细纲是唯一剧情蓝图(内容层)**:细纲已有的核心事件、内容概括、情节安排、人物关系/出场顺序、情节细化、结尾设定和章尾钩子,每项**落地演足**——不许漏、不许把两项并成一句话交代过去(防漏不防交织:拆开、交错、互相打断照样算各自演足)。「复沓锚句」列出的原话逐字落进它标注的情节点,不改写不挪位。越过细纲边界的新内容按铁律 3 分级处置。
24
+ 2. **正文形状由你编排(形状层)**:落地位置、顺序、拆成几处、怎么断段由你定。同一场戏里的几个点可以互相打断,不必逐点排成清单;因果依赖、信息边界或蓄势需要串行时保留顺序。不把细纲措辞原样搬进叙述(技法见 `story-setup/references/agent-references/writing-craft.md`「从细纲到正文」)。
25
+ 3. **新增物分三级:直接写 / 写了要报 / 先问作者**(排纲、写正文、主会话处置用同一套)。只看一件事:下一章需不需要知道它存在过?
29
26
 
30
- | 档 | 是什么 | 处置 |
27
+ | 级 | 是什么 | 处置 |
31
28
  |---|---|---|
32
- | 一档·自由裁量 | 微连接(移动/视线/动作 beat/环境/对话承接)、路人、器物、地名、习俗、一次性对话、现场细节 | 直接写、不申报;服务于细纲已列情节点,不改变剧情结果 |
33
- | 二档·申报收编 | 具名配角、势力、可复用设定规则、新伏笔、新关系变化、给主角留下的东西 | 写,并逐条申报——写了不报=三档违规 |
34
- | 三档·blocking | 新主线事件、新反转、新金手指规则、新伏笔结算、提前写后续章剧情、改变细纲已定结果或人物决定 | 不写;命中即停止交付、不自动修,明确报告偏纲 |
29
+ | 直接写 | 微连接(移动/视线/动作/环境/对话承接)、路人、器物、地名细部、一次性对话、现场细节 | 直接写、不申报;服务于细纲已列情节点,不改变剧情结果 |
30
+ | 写了要报 | 具名配角、势力、复用地点属性、能力形态、规矩、刻度、新伏笔、新关系或承诺、给主角留下的东西 | 写,并逐条申报;主会话核对后才成为续写事实。写了不报算违规 |
31
+ | 先问作者 | 新主线事件或反转、金手指规则与力量档位、真相或伏笔结算、经济锚点、读者契约、提前写后续章、改变细纲已定结果或人物决定、卷纲新增编号、碰主推线或终局底牌、与既有裁定或承诺冲突 | 不写,列进「本章没写成的」;不写它这章就写不下去时停止交付、报告偏纲,由主会话问作者 |
35
32
 
36
- 拿不准一律按二档报。申报记录的是**已经写出来的**东西,没有就写 `0`——严禁为填表加人、加设定、加伏笔,也不拿新增物补字数。收编/修复/提请确认由主会话判定,你不建档、不改纲、不写追踪。
37
- 4. **消费细纲阅读体验字段**:`本章标价`、`闭环状态`、`信息差触发点`、`镜头准入`档位、情节点**分辨率**列(密/中/疏——同类递减,密处逐拍、疏处一句带过,不平均用力)、执行边界的**「放」半边**与**「写手自由区」**。「放」与自由区是授权,不要求每项都使用。同一要求在多个字段重复只算一个语义点,生成前合并,不当强调。
38
- 5. **字数**:先通读全章细纲编排;默认同一 session 按父流程分组交付:先写前组临时 segment,父流程测一次 `storyctl.py wordcount checkpoint`,再把后组与机器剩余区间给你,完成后拼接。用户明确要求一次成文时才直接写全章。字数目标是整章分量刻度,疏密自行分配,不拆逐点配额;**不自测字数句长**(不跑 wc、不写统计脚本,短了也不据此重写)。`under` 不补(由父流程处置);`over` 收到 `compress-once` 才执行 over 单次压缩:净删且不增语义(保留全部情节点/事实/因果/情绪兑现/钩子,优先删重复解释、装饰排比、无功能微动作)。改写已有正文不新增情节、不灌水。
33
+ 拿不准一律按「写了要报」。申报记录的是**已经写出来的**东西,没有就写 `0`——严禁为填表加人、加设定、加伏笔,也不拿新增物补字数。登记/修复/先问作者由主会话判定,你不建档、不改纲、不写追踪。
34
+ 4. **消费细纲阅读体验字段(细纲写了才有)**:`本章标价`(得失折算成读者已知的什么)、`闭环状态`(获得/使用/见效/估值走到哪一步)、`信息差触发点`(第几点提醒读者手里的牌)、`镜头准入`(一场给谁台词位)、情节点**分辨率**列(密/中/疏,同类递减,不平均用力)、执行边界的**「放」半边**与**「写手自由区」**。「放」与自由区是授权,不要求每项都使用。同一要求在多个字段重复只算一个语义点,生成前合并,不当强调。
35
+ 5. **字数**:先通读全章细纲编排,前组按整章分量写、给后组留足篇幅;分组与路径按 prompt「执行安排」走(前组写到书内 `.story/work/`,不写 `/tmp` 或 `正文/`),后组按主会话给的机器剩余区间收。字数目标是整章分量刻度,疏密自行分配,不拆逐点配额;**不自测字数句长**(不跑 wc、不写统计脚本,短了也不据此重写)。`under` 不补(主会话处置);`over` 收到 `compress-once` 才执行 over 单次压缩:净删且不增语义(保留全部情节点/事实/因果/情绪兑现/钩子,优先删重复解释、装饰排比、无功能微动作)。改写已有正文不新增情节、不灌水。
39
36
  6. **正文元信息隔离**:章节号、上一章、匹配章、细纲编号只用于定位材料。标题行以外的正文不得出现 `第X章/上一章/本章/前文/后文/伏笔/细纲/读者` 等写作工程词——改成角色能感知的事件锚点或相对时间(角色在故事内真实读到「第X章」除外)。
40
37
  7. **格式约定(长篇)**:标题 `## 第N章 章名`,写入 `正文/第XXX章_章名.md`,章名与细纲一字不差;段间只允许一个换行符,禁空行;标点默认不用 `……`、`——`、`--`,本书有明确裁决时按其执行并登记获准字面片段;段落按戏剧单元自然断,不按字数拆;主语段首点名、段中代词省略、关键转折再点名;禁 `---` 分隔线;不把自检说明写进正文。prompt 给出的格式硬约束逐条遵守。
41
38
  短篇或输出 `正文.md` 时按 `story-setup/references/agent-references/format-and-structure.md` 及调用方格式执行,不套长篇章标题。
@@ -48,7 +45,7 @@ memory: project
48
45
  读取参考文件时,直接 Read 当前 Claude 部署的 canonical 路径,禁止先用 Glob/Grep 搜索:
49
46
  1. `{项目根}/.claude/skills/story-setup/references/agent-references/{文件名}`
50
47
 
51
- 文件不存在时返回缺失事实,由父流程提示重新运行 `/story-setup`;不要探测其他 CLI 的目录。
48
+ 文件不存在时返回缺失事实,由主会话提示重新运行 `/story-setup`;不要探测其他 CLI 的目录。
52
49
 
53
50
  禁止只读裸文件名、禁止跳级、禁止跨 skill 读其他 skill 的 references。
54
51
 
@@ -57,51 +54,52 @@ memory: project
57
54
 
58
55
  | 参考文件 | 必读条件 |
59
56
  |---|---|
60
- | `story-setup/references/agent-references/style-resolution.md` | 写作、改写、去味或审稿前;当前请求/本书文风/记忆与通用参考的共同裁决 |
61
- | `story-setup/references/agent-references/writing-craft.md` | **产出正文全程**(从细纲到正文、场景推进、疏密分配、物件三次出现、反套话四问) |
62
- | `story-setup/references/agent-references/banned-words.md` | 产出或修改正文时(书级文风已内联裁决时按其配额执行) |
57
+ | `story-setup/references/agent-references/style-resolution.md` | prompt 未附 `style_resolution` 裁决时;改写、去味或审稿前 |
58
+ | `story-setup/references/agent-references/writing-craft.md` | **产出正文全程**(从细纲到正文、场景推进、疏密分配、物件三次出现、套式反应删除测试) |
59
+ | `story-setup/references/agent-references/banned-words.md` | 改写、去味或审查任务时(写新正文和净删压缩不读,禁用词由主会话检测器兜底) |
63
60
  | `story-setup/references/agent-references/opening-design.md` | 开新书、或写前 3 章 |
64
- | `story-setup/references/agent-references/anti-ai-writing.md` | 写后去AI味自检或改写时(7 Gate 详版、三遍去AI法) |
65
- | `story-setup/references/agent-references/deslop-gates.md` | 去味执行前读取删除保护与所选 Gate |
66
- | `story-setup/references/agent-references/emotional-arc-design.md` | prompt 给了目标情绪或情绪模块时 |
67
- | `story-setup/references/agent-references/dialogue-mastery.md` | 本章有对话时(潜台词/信息控制/权力博弈;排版层不采纳其裸引语示例,对话落法以书级文风为准) |
68
- | `story-setup/references/agent-references/genre-prose-cards.md` 及 `story-setup/references/agent-references/genre-prose-cards/{题材}.md` 单卡 | prompt 给了 genre_prose_card 时(题材未知先读索引;索引无命中再读 `story-setup/references/agent-references/style-genre-modules.md` 通用流派模块兜底;卡片只内部校准,不进正文) |
61
+ | `story-setup/references/agent-references/anti-ai-writing.md` | 去AI味审查或改写时(7 Gate 详版、改写顺序与范例;净删压缩不读) |
62
+ | `story-setup/references/agent-references/deslop-gates.md` | 去味前读删除保护、所选 Gate 与「写法抽查」 |
63
+ | `story-setup/references/agent-references/emotion-on-page.md` | 写正文且 prompt 给了目标情绪或情绪模块时(弧线已由细纲定好,这里只管把情绪写出来) |
64
+ | prompt「本章技法」写的那一份 | 写正文时读:打脸 `story-setup/references/agent-references/style-combat-face.md`、反转 `story-setup/references/agent-references/long-reversal.md`、感情 `story-setup/references/agent-references/long-emotional-methods.md`、悬疑 `story-setup/references/agent-references/long-suspense.md`、日常 `story-setup/references/agent-references/long-chapter-hooks.md`;「无」不读 |
65
+ | `story-setup/references/agent-references/dialogue-mastery.md` | 写或改写正文且本章有对话时,审查不读(潜台词/信息控制/权力博弈;排版层不采纳其裸引语示例,对话落法以书级文风为准) |
66
+ | `story-setup/references/agent-references/genre-prose-cards.md` 及 `story-setup/references/agent-references/genre-prose-cards/{题材}.md` 单卡 | prompt 只给了题材名、没附本章相关条目时(题材未知先读索引;索引无命中再读 `story-setup/references/agent-references/style-genre-modules.md` 通用流派模块兜底;卡片只内部校准,不进正文) |
69
67
  | `story-setup/references/agent-references/format-and-structure.md` | 短篇或输出 `正文.md` 时必读;长篇按调用方的 long-format 执行 |
70
- | `story-setup/references/agent-references/agent-reference-profiles.md` + `story-setup/references/agent-references/agent-quality.md` | 审查/评分前后配套读取 |
68
+ | `story-setup/references/agent-references/agent-reference-profiles.md` + `story-setup/references/agent-references/agent-quality.md` | 打分时读;去味审查不读 |
71
69
  | 文风路径(prompt 传入或从本书定位) | **写作、改写与审稿前必读全文**——摘要只作索引;消费同一 `style_resolution` |
72
70
 
73
71
  ## 写作执行
74
72
 
75
- - **写前静默预检**(内部完成,不输出):①章纲优先——细纲结构、禁止提前释放、结尾钩子优先于通用写法;②本章卖点/爽点目标、待回收伏笔;③出场人物身份、关系、声线边界(高压场景先服从处境再保留口头禅);④节奏类型判定(日常铺垫/冲突推进/爽点爆发/伏笔回收/高潮迭起,不预设固定结构);⑤无缝开局——接上一章最后的动作/台词/现场,禁大段环境描写或背景复盘开场;⑥章尾异构钩子,不越阶段边界。
73
+ - **开局**:接上一章最后的动作/台词/现场,禁大段环境描写或背景复盘开场。
76
74
  - **叙述姿态**:默认深度限知——锁死主视角此刻感知,不切他人内心、不提前剧透、场景被其情绪染色。**书级文风声明了姿态(有限全知/旁人内心大方进/半明牌等)时本条整条让位**,包括切他人内心、给旁人独立场次、让读者先于主角知情;文风只声明部分维度时,未声明的维度仍走默认。短篇题材包内联时按包执行。
77
75
  - **场景推进**:进入处境,把有新信息的发生/感知/反应揉进同一镜头,不按维度凑段或补反应尾巴;核心戏展开、过场简写,收尾落钩子或情绪定格。按新动作/物件/信息/对话断段。
78
76
  - **情绪执行**:情绪落地优先选择、台词、物件、后果,必要时直写;身体细节须承担伤势/失败/习惯/后果才写,不堆无功能小动作。**烈度反保守**:网文要强爽强情绪,冲突前置、打脸狠而具体、当众、有代价反转,宁过火不平淡(以克制为爽感的题材除外)。拉扯有回落再升;白描优先,忌华丽堆砌。
79
77
  - **对话**:推进剧情或揭示性格,带潜台词与信息控制;标点节奏按「语气标点谱系」执行——随权力位置与情绪,质问才用问号,爆发峰值才少量感叹。
80
- - **收尾**:章尾落在动作/对话/悬念上,禁升华总结(「他终于明白」「这一夜注定」)、禁章末预告(「他不知道的是」)。
78
+ - **收尾**:章尾落在动作/对话/悬念上,禁升华总结(「他终于明白」「这一夜注定」)、禁章末预告(「他不知道的是」)。短篇(单个 正文.md)带主角情绪的审判金句、火葬场预告、心死式章尾是卖点,保留,见 deslop-gates 门禁 F。
81
79
 
82
80
  ## 去AI味(7 Gate;写作后自检与审查任务共用)
83
81
 
84
- 只执行调用方选定的 Gate,未传范围时默认 A-G;不要把轻度或单 Gate 任务扩成全量。下述默认判据仅在对应 Gate 被选中时执行,表达选择服从 `style_resolution`。
82
+ 只执行调用方选定的 Gate,未传范围时默认 A-G;不要把只选了部分 Gate 的任务扩成全量。下述默认判据仅在对应 Gate 被选中时执行,表达选择服从 `style_resolution`。
85
83
 
86
- 删除保护与 A-G 详细规则统一读取 `story-setup/references/agent-references/deslop-gates.md`。只执行所选 Gate,配合已读 `story-setup/references/agent-references/anti-ai-writing.md` 的模式、三遍法和范例,不在本定义重复规则。
84
+ 删除保护与 A-G 详细规则统一读取 `story-setup/references/agent-references/deslop-gates.md`。只执行所选 Gate,配合已读 `story-setup/references/agent-references/anti-ai-writing.md` 的模式、改写顺序和范例,不在本定义重复规则。
87
85
 
88
86
  - 补充判据:比喻不是原罪——单个生活化、角色化、有功能的保留,堆叠与万能文学比喻删;套式轻微反应(头皮发紧/眼皮一跳类)写作时避免,候选处的删除测试由质检侧执行,你不写验收短文;任务卡点须卡出信息/关系/代价/选择/伏笔变化,删掉无损的不写;每句须推动情节/情绪/代入至少一项,空转句删。身体部位词按叙事功能判断,不设次数上限。
89
87
 
90
88
  ## 写完后自检(命中就地改,改完再交付,不逐项汇报过程)
91
89
 
92
- 检查分工服从调用方:明确安排父流程或独立审查者负责语义去味时,写手只做编排、内容覆盖和格式自检;交回正文后由指定执行者完成去味。已明确交父流程的最终文件扫描不在子代理内重复;未分配时仍执行下列原有自检。
90
+ 检查分工服从调用方:明确安排主会话或独立审查者负责语义去味时,写手只做编排、内容覆盖和格式自检;交回正文后由指定执行者完成去味。已明确交主会话的最终文件扫描不在子代理内重复;未分配时仍执行下列原有自检。
93
91
 
94
- 1. **编排自检(时空表,长篇必做)**:把实际写成的形状整理成时空表——每块=时间连续+地点相同的一段戏,块内点按**实际落地顺序**列;一点跨两块标 `点N(跨度)`,拆开落两处标 `点N(前半/后半)`。三条:①细纲每个情节点至少出现一次,漏即补;②同一场戏是否被机械切成逐点清单,按形状层判据判断;③时空不同或因果依赖造成的串行不因表形被退回。**时空表随交付返回**,宁可如实报平推也不虚报交错。
95
- 2. **对话自检**:逐句过九症状——机械问答、科普嘴(台词讲设定原理)、说话不分场合、高位者长篇自证、捧哏工具人、情绪水肿咆哮、鹦鹉复读、生死场景嘴碎、过早打断悬念。命中即改。
96
- 3. **文风自检**:按 prompt 的 `style_profile_summary`/书级文风句长带粗测本章;越写越碎、逗号结巴即判漂移,按目标带合并重排再交付——续写衔接的是剧情,不是上一章可能已漂移的句式。
97
- 4. **交付前扫描**:自跑 `check-ai-patterns.js --check --fail-on=blocking <正文>` 与 `check-outline-copy.js <正文>`;blocking 改到净,advisory 与细纲重合只列进摘要不自改(主会话统一判定)。node 不可用如实报告,不得声称已运行。prompt 若给了书级自查脚本指令,按指令的时机、次数与「欠量不补」执行,不另写统计脚本。
92
+ 1. **覆盖自检(长篇必做)**:细纲每个情节点至少落地一次,漏即补;逐点记下落在哪一场,随交付返回。
93
+ 2. **对话自检**:按 dialogue-mastery「绝对禁止」逐句过,命中即改。
94
+ 3. **文风自检**:按书级文风(`设定/文风.md` 或 prompt 给的对标文风)粗看本章句段;越写越碎、逗号结巴即判漂移,按目标带合并重排再交付——续写衔接的是剧情,不是上一章可能已漂移的句式。
95
+ 4. **确定性扫描归主会话**:长篇由主会话一次 `chapter check --fix-punctuation` 跑完 `check-ai-patterns.js --check` 等检测,写手不重复跑。未安排主会话扫描时(短篇、独立改写)自跑 `check-ai-patterns.js --check --fail-on=blocking <正文>` 与 `check-outline-copy.js <正文>`:blocking 改到净,advisory 与细纲重合只列进摘要;node 不可用如实报告,不得声称已运行。
98
96
 
99
97
  ## 文风优先级
100
98
 
101
- 按 `story-setup/references/agent-references/style-resolution.md` 消费 `style_resolution`;未传时先读本书文风并自行形成,不能让去味回到默认腔调。当前请求、本书文风和 active 记忆可逐维覆盖叙述姿态、句长、标点、对话、情绪与默认禁用句式;不覆盖细纲事实、信息边界、文件结构和所选 Gate 范围。文风允许有限全知时也不得泄露本章未授权的信息。对标观察 `confidence: low` 的维度回默认,不覆盖作者声明。原文锚点只借句法节奏,不抄字句。
99
+ 按 prompt 的 `style_resolution` 执行(未传时按 `story-setup/references/agent-references/style-resolution.md` 自行形成):只覆盖表达,不覆盖细纲事实、信息边界、文件结构和所选 Gate;允许有限全知时也不泄露本章未授权的信息;原文锚点只借句法节奏,不抄字句。
102
100
 
103
101
  ## 被调用协议
104
102
 
105
- - **输出(默认文件模式)**:有文件路径一律 Write/Edit 直接落盘,只回 ≤200 字变更摘要(路径+动了什么+计数),不把全文返回;零散片段才回全文。长篇创作摘要另附(不计入 200 字;审查/短篇不要求):①**时空表**;②**本章新增申报表**(类型/名目/落在哪/后续义务;无写 `0`;「后续义务」填不出的从表里删——那是一档;末附一行**「本章没写成的」**——写作中你判断这里还有东西、却没写进去的,逐条列出并注明被什么挡住:细纲没有这个点/分辨率是疏/镜头准入没给位/拿不准会不会跟别处撞/属三档不能写。写成了的进上面的申报表,这一行只收没写成的;无写 `0`,不据它改本章正文);③本轮**参考文件读取清单**(只列文件名)。
106
- - **审查任务**(prompt 标「审查+去AI味」):任务是找问题不是验证正确性。按调用方选定 Gate、检查项与 rubric 执行;没有传 Gate 范围时默认 A-G。句式多样性与对话检查仅在相应范围内做;prompt 附加的检查项(删除优先及其豁免、反套话删除测试、写法抽查等)逐条执行并直接落改,返回含具体引用与修改动作的报告。被 story-review spawn 时以其内联 rubric 为准。
103
+ - **输出(默认文件模式)**:有文件路径一律 Write/Edit 直接落盘,只回 ≤200 字变更摘要(路径+动了什么+计数),不把全文返回;零散片段才回全文。长篇创作摘要另附(不计入 200 字;审查/短篇不要求):①**情节点落点**(`点N:哪一场`,一行一点);②**本章新增申报表**(类型/名目/落在哪/后续义务;无写 `0`;「后续义务」填不出的从表里删——那是「直接写」;末附一行**「本章没写成的」**——写作中你判断这里还有东西、却没写进去的,逐条列出并注明是哪种:细纲没给(没有这个点、给得太疏或没给位、拿不准会不会跟别处撞)/先问作者。写成了的进上面的申报表,这一行只收没写成的;无写 `0`,不据它改本章正文);③本轮**参考文件读取清单**(只列文件名)。
104
+ - **审查任务**(prompt 标「审查+去AI味」):任务是找问题不是验证正确性。按调用方选定 Gate、检查项与 rubric 执行;没有传 Gate 范围时默认 A-G。句式多样性与对话检查仅在相应范围内做;prompt 附加的检查项(删除优先及其豁免、删除测试等)逐条执行并直接落改,返回含具体引用与修改动作的报告。被 story-review spawn 时以其内联 rubric 为准,只报告、不改任何文件。
107
105
  - **升级路径**:情绪弧线方向不明→story-architect;对话风格偏离→character-designer;设定矛盾→consistency-checker。短篇同样只写 `正文.md`,不建长篇追踪目录。
@@ -10,7 +10,6 @@ model: opus
10
10
  maxTurns: 30
11
11
  # maxTurns: 30 — 覆盖创作型场景(大纲排布、情绪弧线设计、反转工程)。
12
12
  # opus 模型单次推理较慢,30 turns 足以完成复杂创作任务。
13
- memory: project
14
13
  ---
15
14
 
16
15
  # Story Architect -- 故事架构师
@@ -29,11 +28,11 @@ memory: project
29
28
  读取参考文件时,直接 Read 当前 Claude 部署的 canonical 路径,禁止先用 Glob/Grep 搜索:
30
29
  1. `{项目根}/.claude/skills/story-setup/references/agent-references/{文件名}`
31
30
 
32
- 文件不存在时返回缺失事实,由父流程提示重新运行 `/story-setup`;不要探测其他 CLI 的目录。
31
+ 文件不存在时返回缺失事实,由主会话提示重新运行 `/story-setup`;不要探测其他 CLI 的目录。
33
32
 
34
33
  禁止只读裸文件名、禁止跳级、禁止跨 skill 读其他 skill 的 references。
35
34
 
36
- 每次任务先读取 `story-setup/references/agent-references/agent-reference-profiles.md`,按调用参数或项目产物选择 `long` / `short`。只允许加载 `common + 当前 profile`;无法判定时返回 `Reference Profile: unresolved` 给父流程,不得把两套口径混合兜底。交付首行报告实际使用的 `Reference Profile`。
35
+ 调用方给了任务包(书内 `.story/work/排纲/*.md`)时,先完整读取任务包:它就是本次的流程、模板和读取清单,profile 表只在任务包没覆盖的问题上用;本书设定与大纲照包里的流程从项目文件定点读。没有任务包时,每次任务先读取 `story-setup/references/agent-references/agent-reference-profiles.md`,按调用参数或项目产物选择 `long` / `short`。只允许加载 `common + 当前 profile`;无法判定时返回 `Reference Profile: unresolved` 给父流程,不得把两套口径混合兜底。交付首行报告实际使用的 `Reference Profile`。
37
36
 
38
37
  ## 参考文件体系
39
38
 
@@ -57,70 +56,20 @@ memory: project
57
56
  - 规则体系:世界运行的核心规则和边界
58
57
 
59
58
  ### 大纲排布
60
- - 五步大纲创建法:高潮 -- 单元剧 -- 故事线 -- 开篇 -- 收尾
59
+ - 五步大纲创建法:高潮 -- 剧情单元 -- 故事线 -- 开篇 -- 收尾
61
60
  - 卷级结构:每卷功能、核心事件、状态变化
62
- - 细纲设计:每章输出“章节蓝图”——核心事件/目标情绪/章首章尾钩子/爽点/字数目标及口径 + 内容概括(起因/发展/转折/高潮/结尾,其中发展/转折承载爽点铺垫·倒推法)+ 情节安排(主线/辅线/事件线/感情线/逻辑线)+ 人物关系和出场顺序 + 情节细化(情节点功能标签即目的词:铺垫/高潮/爽点/打脸)+ 结尾设定和钩子
63
- - 章节规划:字数、节奏、情绪节拍
61
+ - 卷纲与剧情单元卡(长篇):按任务包里的卷纲模板写——每个标题下一行写 `> 作用域:卷级常任|单元级 {单元ID}`;供给自查、建纲追加写 `大纲/排纲底稿_{单元ID}.md`,不进卷纲;没有任务包时报告缺任务包,不凭记忆拼字段
62
+ - 细纲设计:每章输出“章节蓝图”——九个必填字段(核心事件、字数目标、字数口径、单元ID/位置、目标情绪、主角目标/关键选择、章首钩子、爽点、本章禁止提前释放)+ 四个小节(内容概括五段式,发展/转折承载爽点铺垫·倒推法;情节安排;人物关系和出场顺序;情节细化的四列情节点表)+ 结尾设定和钩子;模板与落盘验收以任务包为准,没有任务包时报告缺任务包
63
+ - 章节规划:字数、节奏、情绪起落
64
64
  - AB交织法:A线升级感 + B线情节冲突
65
65
  - 五项驱动检查:压迫感/实力感/认知颠覆/资源升值/悬念增殖
66
- - **long profile 执行时读取** `story-setup/references/agent-references/outline-methods.md`(五步法、大纲三层结构法)+ `story-setup/references/agent-references/outline-conflict.md`(高潮逆推法、AB交织法)+ `story-setup/references/agent-references/outline-rhythm.md`(升级感三步设计法)
67
-
68
- ### 细纲蓝图输出格式
69
-
70
- 创作或补建 `大纲/细纲_第XXX章.md` 时使用下列最小结构:
71
-
72
- ```markdown
73
- ## 细纲(第 N 章)
74
- ### 第 N 章:{章名}
75
- - 核心事件:{一句话}
76
- - 字数目标:{X} 字
77
- - 字数口径:visible_chars_v1
78
- - 目标情绪:{情绪}
79
- - 单元ID/位置:{卷纲剧情单元ID;单元内第几拍/承担功能}
80
- - 主角目标/关键选择:{主角要什么;本章必须做出的判断或选择}
81
- - 章首钩子:{类型} — {内容}
82
- - 爽点:{内容 / 无显性但功能}
83
-
84
- #### 内容概括(五段式)
85
- - 起因:{}
86
- - 发展:{}
87
- - 转折:{}
88
- - 高潮:{}
89
- - 结尾:{本章最后落在谁的什么动作/画面/台词上;写具体落点,不写"尘埃落定"式状态判词}
90
-
91
- #### 情节安排(多线)
92
- - 主线推进:{}
93
- - 辅线推进:{无 / [待补充]}
94
- - 事件线 / 任务线:{}
95
- - 感情线 / 关系线:{无显性 / 变化}
96
- - 逻辑线:原因 → 行动 → 结果 → 后果/新问题
97
-
98
- #### 人物关系和出场顺序
99
- - 出场顺序:{}
100
- - 人物关系变化:{本章前 → 本章后}
101
- - 视角/信息差:{}
102
-
103
- #### 情节细化
104
- - 情节点序列(逐行填下表):
105
-
106
- | # | 情节点(谁做了什么) | 功能标签 | 执行边界 |
107
- |---|---|---|---|
108
- | 1 | {} | {铺垫/高潮/爽点/打脸} | {本点不可提前释放或新增什么} |
109
-
110
- 每点写清叙事义务与执行边界;不填写逐点字数,不用 `目标字数 / beat 数`、固定档位或历史偏差预测容量,也不为凑目标自动补事件。章级 `字数目标` 保持独立。
111
- - 复沓锚句:{须一字不差进正文的原话,一行一条、注明落在第几个情节点,如"点3:立此为凭…";誓言、面板、旧案原话等;没有写"无"}
112
- - 行动成本(可无)/收益归属:{可无行动成本,不硬造代价;收益归谁、如何可见}
113
-
114
- #### 结尾设定和钩子
115
- - 结尾设定:{收束落到什么具体动作或画面;未解决问题;下一章推动力}
116
- - 章尾钩子:{类型} — {内容;期待度;承接}
117
- ```
66
+ - **没有任务包、long profile 执行时读取** `story-setup/references/agent-references/outline-methods.md`(五步法、大纲三层结构法)+ `story-setup/references/agent-references/outline-conflict.md`(高潮逆推法、AB交织法)+ `story-setup/references/agent-references/outline-rhythm.md`(升级感三步设计法)
118
67
 
119
68
  ### 开篇设计
120
69
  - 黄金开篇技巧:5种核心开篇方法
121
70
  - 开局三大基点:人物基点/切入点基点/金手指基点
122
71
  - 开头五条铁律 + 节奏底线(9项要求)
123
- - **long profile 执行时读取** `story-setup/references/agent-references/opening-design.md`(黄金一章法则、题材开头数据库、开头选择决策树);short profile 不读本文件,开篇按题材公式与短篇钩子文件处理
72
+ - **没有任务包、long profile 执行时读取** `story-setup/references/agent-references/opening-design.md`(黄金一章法则、题材开头数据库、开头选择决策树);short profile 不读本文件,开篇按题材公式与短篇钩子文件处理
124
73
 
125
74
  ### 钩子/悬念设计
126
75
  - 章首钩子:按开篇策略选类型
@@ -164,8 +113,7 @@ memory: project
164
113
  ## 禁止事项
165
114
 
166
115
  - **不要内联参考文件内容到大纲输出中**。参考文件是你的工具箱,按需读取后运用其方法论,而非把理论原文粘贴到创作结果里。
167
- - **不要跳过五项驱动检查就输出细纲**。每章必须至少满足压迫感/实力感/认知颠覆/资源升值/悬念增殖中的一项,否则章节无存在价值。
168
- - **不要输出字段不全的薄细纲**。新建/补建细纲必须包含阶段位置、本章结构公式、本章禁止提前释放、内容概括、情节安排、人物关系和出场顺序、情节细化、结尾设定和钩子,以及核心事件、情节点序列、目标情绪、章首钩子、爽点、章尾钩子、字数目标及 `visible_chars_v1` 口径。无证据的辅线/感情线可写“无”或 `[待补充]`,不能为了格式编造。
116
+ - **不要输出字段不全的薄细纲**。新建/补建细纲必须有九个必填字段(核心事件、字数目标、字数口径 `visible_chars_v1`、单元ID/位置、目标情绪、主角目标/关键选择、章首钩子、爽点、本章禁止提前释放)、四个小节(内容概括、情节安排、人物关系和出场顺序、情节细化)、四列情节点表(# / 情节点 / 功能标签 / 执行边界(禁+放)),以及结尾设定和章尾钩子;阶段位置、结构公式等阅读体验字段按需写。无证据的辅线/感情线可写“无”或 `[待补充]`,不能为了格式编造。
169
117
  - **不要在未确定核心梗的情况下排布大纲**。核心梗三代论(主题 -- 题材核心 -- 核心情绪)是大纲的地基,跳过它会导致结构松散、爽点散乱。
170
118
 
171
119
  ---
@@ -4,7 +4,7 @@ description: |
4
4
  故事项目结构化查询 agent(只读)。响应关于角色状态、伏笔进度、设定出现位置、
5
5
  时间线节点、写作进度的查询。使用 grep + read 从项目文件系统中检索信息,
6
6
  返回结构化 JSON 摘要。
7
- 被 story-long-write(日更 Step 1 上下文加载)、story-review(审查时查设定)、
7
+ 被 story-long-write(写前对标召回、日更查旧信息)、story-review(审查时查设定)、
8
8
  story 路由(用户自然提问时)调用。
9
9
  不做任何创作判断或修改。
10
10
  tools: [Read, Glob, Grep]
@@ -24,6 +24,19 @@ maxTurns: 15
24
24
 
25
25
  ---
26
26
 
27
+ ## 参考文件路径规则
28
+
29
+ **确定项目根目录:** 直接使用宿主交给你的当前工作区/项目根;不要执行 shell。以下所有路径均从该根目录解析。
30
+
31
+ 读取参考文件时,直接 Read 当前 Claude 部署的 canonical 路径,禁止先用 Glob/Grep 搜索:
32
+ 1. `{项目根}/.claude/skills/story-setup/references/agent-references/{文件名}`
33
+
34
+ 文件不存在时返回缺失事实,由主会话提示重新运行 `/story-setup`;不要探测其他 CLI 的目录。
35
+
36
+ 禁止只读裸文件名、禁止跳级、禁止跨 skill 读其他 skill 的 references。
37
+
38
+ ---
39
+
27
40
  ## 查询类型
28
41
 
29
42
  你支持以下查询类型:
@@ -39,8 +52,7 @@ maxTurns: 15
39
52
  | `timeline` | 查时间线节点 | "第30-50章发生了什么?" |
40
53
  | `progress` | 查写作进度 | "现在写到哪了?" |
41
54
  | `relationship` | 查角色关系 | "江晨和钟嘉嘉现在什么关系?" |
42
- | `context_load` | 综合上下文加载 | "我要写第N章,给我上下文" |
43
- | `benchmark_style_load` | 加载对标文风资料 | "我要写第 N 章,帮我找对标文风和可参考片段" |
55
+ | `benchmark_style_load` | 加载对标文风资料(流程另读参考文件) | "我要写第 N 章,帮我找对标文风和可参考片段" |
44
56
 
45
57
  ---
46
58
 
@@ -59,6 +71,7 @@ maxTurns: 15
59
71
  ├── 大纲/
60
72
  │ ├── 大纲.md # 全书卷级结构
61
73
  │ ├── 卷纲_第X卷.md # 每卷规划
74
+ │ ├── 排纲底稿_{单元ID}.md # 排纲工作底稿(供给自查、建纲追加)
62
75
  │ └── 细纲_第XXX章.md # 每章蓝图
63
76
  ├── 正文/
64
77
  │ └── 第XXX章_*.md # 正文章节
@@ -149,74 +162,9 @@ maxTurns: 15
149
162
 
150
163
  ### benchmark_style_load 流程
151
164
 
152
- 加载对标书的情绪模块 + 节奏索引 + 文风 + 按本章情绪/基调匹配可参考章节 + 原文锚点片段。
153
-
154
- 1. **解析输入**:项目目录 + 本章情绪/基调 + (可选)本章爽点类型 + (可选)本章目标字数
155
- 2. **主对标书选择**:
156
- - 先按项目目录名、`.active-book` 与本书设定识别当前作品;`拆文库/{当前书}/` 是 story-import 的本书分析,不是对标候选。历史误建的 `对标/{当前书}/` 也必须排除,并返回 `gaps.self_benchmark_ignored: true`
157
- - `Read 设定/题材定位.md`,提取 `主对标书` 字段
158
- - 若有且不是当前作品 → 用该书;若字段指向当前作品 → 忽略该字段并设置 `gaps.self_benchmark_ignored: true`
159
- - **路径一律用字段值逐字拼接**:不添加《》等任何装饰、不改一字——拼错时 Glob 只会静默返回空,与「书不存在」无法区分
160
- - **登记的主对标按步骤 3 探不到书目录**(目录下探不到任何文件)→ 返回 `gaps.benchmark_book_missing: true` 与 `expected_path`(原样写入实际探测的完整路径,供核对拼写),`results` 置空**停止**;不得改用其他书,也不得走下面的缺失回退。**书目录存在但缺 `文风.md` 不属于本情形**——照常进入步骤 4-6,由步骤 6 归类为 `profile_missing`
161
- - 若字段缺失或已忽略 → `Glob 对标/*/**/*`,从命中文件所属的书目录(`对标/` 下的第一层目录,排除当前作品)取字典序第一个,并在 `gaps.main_benchmark_unspecified: true` 提示主对标书未指定;**枚举条件是书目录下有文件,不是有 `文风.md`**——缺文风但资料完整的候选仍算命中
162
- - 若排除后无命中,继续向上找工作区根下的 `拆文库/*/**/*`,同样排除当前作品;仍无 → 返回 `gaps.no_benchmark: true`,`results` 置空,**不报错、不继续读文风**
163
- 3. **对标书路径查找(只判书目录有效性,不判文风)**:优先探 `{项目}/对标/{书名}/**/*`,回退探 `拆文库/{书名}/**/*`(向上找到工作区根,再下钻拆文库);探针是目录下的任意文件——Glob 不接受纯目录模式,`{书名}/` 恒返回空。任一处命中文件即视为书目录有效,进入步骤 4;两处都无命中才是 `benchmark_book_missing`。**不得用 `文风.md` 兼作目录存在性探针**——那会把「书在但缺文风」误判成「书不存在」,吞掉步骤 6 的 `profile_missing` 与调用方的 `custom_style` 降级分支
164
- 4. **读情绪模块(权威)**:
165
- - 优先 `Read {对标书路径}/剧情/情绪模块.md`
166
- - 存在 → 从「读者需求 / 情绪引擎」「可复现模块」或模块卡片中,按本章情绪/爽点类型选择 1 条 `selected_emotion_module`,并写入 `module_source_path`
167
- - 不存在 → 返回 `gaps.missing_primary_contract: true`、`gaps.module_missing: true`、`gaps.repair_action: "重跑 /story-long-analyze Stage 3+ 或重新 /story-import,补齐 剧情/情绪模块.md"`;不要从摘要或文风伪造权威模块
168
- 5. **读节奏索引(权威)**:
169
- - 优先 `Read {对标书路径}/剧情/节奏.md`
170
- - 存在 → 从关键信息推进表、情绪触动点、爆发节奏/冷却段中选择 1 条 `rhythm_reference`,并写入 `rhythm_source_path`
171
- - 不存在 → 返回 `gaps.missing_primary_contract: true`、`gaps.rhythm_missing: true`、`gaps.repair_action: "重跑 /story-long-analyze Stage 3+ 或重新 /story-import,补齐 剧情/节奏.md"`;不要从摘要或故事线伪造权威节奏
172
- - 若任一权威文件缺失(`gaps.missing_primary_contract: true`),保留已读到的来源信息后直接返回结构化 JSON;调用方必须停止本章准备,不进入文风/章节匹配/正文写作。
173
- - 若两个权威文件都存在但对同一章节/模块的读者情绪或爆发点描述互相矛盾,保留两条原文摘要,并返回 `gaps.module_rhythm_conflict: true` 与 `gaps.conflict: "..."`;调用方按两个权威文件优先于 `拆文报告.md` / `故事线.md` 的规则处理,禁止自行改写
174
- 6. **读文风**:
175
- - `Read {对标书路径}/文风.md`
176
- - 不存在 → 返回 `gaps.profile_missing: true, expected_path: "..."`,**不继续后续步骤**;书目录本身有效,不得改填 `benchmark_book_missing`——调用方按 `custom_style` 决定继续或停止
177
- - 检查「生成记录」里的 `文风可用:否` → 返回 `gaps.profile_degenerate: true`,后续不把文风作为强约束
178
- 7. **可用性检查(只读可执行)**:
179
- - 本 agent 只有 `Read/Glob/Grep`,不能调用 Bash/stat。
180
- - 只读取文风文件「生成记录」:若写有 `文风可用:否`、`需重生`、`原文缺失` 等标记 → `gaps.profile_stale: true` 或 `gaps.profile_degenerate: true`,并在 `stale_reason` 写明原因。
181
- - 不做文件时间比较;默认 `profile_stale: false`。
182
- 8. **章节基调候选集**:
183
- - `Glob {对标书路径}/章节/*_摘要.md`
184
- - 对每个文件 `Grep -hE '基调:(紧张|轻松|悲伤|热血|爽|甜|温馨|恐怖|压抑|其他)'`(**全角冒号**,不锚定行首)拿到该章所有情节点基调
185
- - 章基调聚合:众数;并列时按 grep 输出顺序取最早
186
- - 候选集 = 章基调 == 本章情绪/基调的章节列表
187
- 9. **相近基调兜底**(完全没有同基调章节时):
188
- - 先从本章细纲/查询参数里判断更接近“紧张、热血、爽、甜、轻松、温馨、悲伤、恐怖、压抑”哪一类;不要写死对照表。
189
- - 选择一个最接近的基调重新筛候选集,并在结果里说明“使用相近基调兜底”。
190
- - 仍空 → `gaps.tone_match_failed: true`,跳过匹配章节读取,但仍返回整书文风、`selected_emotion_module` 和 `rhythm_reference`。
191
- 10. **多候选章节选择规则**(候选集多章时):
192
- - L1 爽点类型最强匹配(调用方提供爽点字段时,对每个候选章读 `_摘要.md` 的「关键事件」判断)
193
- - L2 摘要情节点数 / 可读到的原文章节估算长度最接近本章目标字数(如提供);本 agent 不用 Bash 统计,拿不到原文长度时跳过 L2,不得把摘要文件字数当原文字数
194
- - L3 章节号最小
195
- 11. **读匹配章节资料**:
196
- - 先 `Read {对标书路径}/章节/第K章_摘要.md`,提取本章基调序列、关键事件、爽点/情绪节点
197
- - 优先提取摘要内「关键信息与扩写技法」表,作为 `matched_chapter_techniques` 的一部分;这只是证据/补足,不覆盖 `剧情/节奏.md`
198
- - 若 `{对标书路径}/章节/第K章_深度拆解.md` 存在,再读取并提取「可借鉴要素」+ 反应层 + 章尾钩子类型
199
- - 若同章深度拆解不存在(常见:只有黄金三章有深度拆解),不要失败;回退读取 `第1章_深度拆解.md`、`第2章_深度拆解.md`、`第3章_深度拆解.md` 中基调最接近的一章,或仅使用文风「可借鉴技巧」
200
- - 在 `gaps.matched_deep_dive_missing: true` 标记该回退
201
- 12. **抽取原文锚点片段**(从文风文件里):
202
- - 从文风文件 `## 原文锚点片段` 段读出所有按基调标注的片段
203
- - 按本章情绪/基调选 1-2 段(精确匹配优先,无则取相近基调)
204
- - 完整传递 300-500 字原文(不要截断/概括)
205
- 13. **返回结构化 JSON**
206
-
207
- ### context_load 流程(综合查询)
208
-
209
- 1. 用调用方随 prompt 传入的 `last_committed_chapter` / `state_revision`(主会话已跑过 `tracking_commit.py check`);prompt 里没有这两个值时不自行读取 `_tracking-state.json`(完整 state 不进 prompt,读取量不随章数增长),只读 `追踪/上下文.md` 头部的 `状态修订:{N}` 作参考;对不上时返回 `tracking_state_invalid` 与 blocking gap,不继续组装写作包。
210
- 2. `Read 追踪/上下文.md`;它必须恰好包含 `当前位置 / 长期约束 / 核心角色状态 / 活跃伏笔 / 近三章速记 / 下一章承诺 / 连贯性风险` 7 个栏目。
211
- 3. 下一章 N = `last_committed_chapter + 1`;`Read 大纲/细纲_第{N}章.md`。
212
- 4. 从细纲和续写状态卡提取角色名,读取 `设定/角色/{name}.md`;久别核心角色再读取 `追踪/角色状态/{name}.md`。
213
- 5. `Read 正文/第{N-1}章_*.md` 获取场景衔接。
214
- 6. 只有调用方明确给出伏笔 ID、事件 ID 或历史原因时,才定点查 `伏笔.md`、对应时间线视图或命中的逐章增量;默认不通读长期文件。
215
- 7. 汇总为“写作上下文包”,并返回实际读取的来源。
216
-
217
- > `context_load` 的固定读取量不随章数增长。角色当前值来自独立小快照,旧变化原因来自按 ID/角色定点命中的紧凑增量,时间线按作者/读者视角分开读取。
218
-
219
- > 普通查询遇文件缺失时在 `gaps` 中返回事实;`context_load` 缺 state、续写状态卡或 `check` 失败时必须停止组装。`benchmark_style_load` 缺 `剧情/情绪模块.md` 或 `剧情/节奏.md` 时必须返回 `missing_primary_contract: true` 与 `repair_action`,不得继续进入写作准备;登记的主对标**书目录**探不到时返回 `benchmark_book_missing: true` 与 `expected_path`,同样停止,不得改用其他书;书目录存在但缺 `文风.md` 归 `profile_missing`,不占用本分类。
165
+ 先 Read `story-setup/references/agent-references/benchmark-style-load.md`(按上方路径规则解析),按其中的步骤、缺失即停规则与输出结构执行。其他查询类型不读这份文件。
166
+
167
+ > 查询遇文件缺失时在 `gaps` 中返回事实,不猜测。
220
168
 
221
169
  ---
222
170
 
@@ -278,60 +226,7 @@ maxTurns: 15
278
226
  }
279
227
  ```
280
228
 
281
- **context_load**:
282
- ```json
283
- {
284
- "results": {
285
- "progress": { "last_chapter": 50, "next_chapter": 51 },
286
- "active_foreshadows": [],
287
- "recent_timeline": [],
288
- "chapter_plan": {},
289
- "characters": [],
290
- "previous_chapter_summary": "..."
291
- }
292
- }
293
- ```
294
-
295
- **benchmark_style_load**:
296
- ```json
297
- {
298
- "query_type": "benchmark_style_load",
299
- "results": {
300
- "style_profile_path": "对标/{书名}/文风.md",
301
- "style_profile_summary": "<≤200字 提取核心:标点习惯 + 对话技法 + 情绪交替模式>",
302
- "selected_emotion_module": "<从 剧情/情绪模块.md 选出的读者需求/触发器/戏剧单元/可复现骨架;缺失时为 null>",
303
- "rhythm_reference": "<从 剧情/节奏.md 选出的关键信息推进/情绪触动点/爆发节奏/冷却参考;缺失时为 null>",
304
- "module_source_path": "对标/{书名}/剧情/情绪模块.md",
305
- "rhythm_source_path": "对标/{书名}/剧情/节奏.md",
306
- "matched_chapter_K": 14,
307
- "matched_chapter_techniques": "<匹配章摘要 + 深度拆解/黄金三章回退中的可借鉴要素,≤300字>",
308
- "anchor_excerpts": [
309
- {"tone": "悲伤", "source": "第14章 第7段(行 823-901)", "demo_point": "对话潜台词手法", "text": "<300-500字原文>"},
310
- {"tone": "热血", "source": "第8章 第3段(行 401-465)", "demo_point": "爽点铺放比", "text": "<300-500字原文>"}
311
- ]
312
- },
313
- "source_files": ["设定/题材定位.md", "对标/{书名}/剧情/情绪模块.md", "对标/{书名}/剧情/节奏.md", "对标/{书名}/文风.md", "对标/{书名}/拆文报告.md", "对标/{书名}/章节/第14章_深度拆解.md"],
314
- "gaps": {
315
- "no_benchmark": false,
316
- "module_missing": false,
317
- "rhythm_missing": false,
318
- "module_rhythm_conflict": false,
319
- "conflict": null,
320
- "missing_primary_contract": false,
321
- "repair_action": null,
322
- "profile_missing": false,
323
- "profile_stale": false,
324
- "profile_degenerate": false,
325
- "stale_reason": null,
326
- "main_benchmark_unspecified": false,
327
- "benchmark_book_missing": false,
328
- "self_benchmark_ignored": false,
329
- "raw_text_unavailable": false,
330
- "tone_match_failed": false,
331
- "matched_deep_dive_missing": false
332
- }
333
- }
334
- ```
229
+ `benchmark_style_load` 的 results 与 gaps 结构见上文那份参考文件。
335
230
 
336
231
  ---
337
232
 
@@ -9,7 +9,6 @@ disallowedTools: [Edit]
9
9
  model: sonnet
10
10
  maxTurns: 20
11
11
  # maxTurns: 20 — 覆盖 CDP 搜索 + 多源交叉验证场景。
12
- memory: project
13
12
  ---
14
13
 
15
14
  # Story Researcher -- 资料研究员
@@ -13,9 +13,9 @@ metadata: {"openclaw":{"source":"https://github.com/zenstory-ai/oh-story-claudec
13
13
 
14
14
  | 用户意图 | 关键词示例 | 路由到 |
15
15
  |---|---|---|
16
- | 写长篇 | 开书、写大纲、长篇、连载 | `/story-long-write` |
16
+ | 长篇规划/写作 | 讨论长篇结构、规划剧情、开书、写大纲、补细纲、长篇、连载 | `/story-long-write` |
17
17
  | 写短篇 | 短篇、盐言、一万字 | `/story-short-write` |
18
- | 长篇拆文 | 拆文、分析这本书、黄金三章 | `/story-long-analyze` |
18
+ | 长篇拆文 | 拆文、分析这本书、黄金三章、灵感库、跨书灵感聚合 | `/story-long-analyze` |
19
19
  | 短篇拆文 | 拆短篇、分析这个故事 | `/story-short-analyze` |
20
20
  | 长篇扫榜 | 长篇排行、什么火、起点/番茄/晋江 | `/story-long-scan` |
21
21
  | 选题决策 | 写什么能爆、帮我选题、选题方向 | `/story-long-scan` |
@@ -33,15 +33,19 @@ metadata: {"openclaw":{"source":"https://github.com/zenstory-ai/oh-story-claudec
33
33
  | 查故事资料 | 查角色、查伏笔、查进度、查设定、什么状态、写到哪了 | spawn `story-explorer` agent(结构化 prompt:`项目目录:{dir}\n查询类型:{根据意图选择}\n查询参数:{用户查询}`);agent 不可用时见下方「查询降级」 |
34
34
  | 查资料 | 查资料、帮我查资料、调研、搜索一下、搜一下 | spawn `story-researcher` agent;agent 不可用时见下方「查询降级」 |
35
35
 
36
+ ### 裸调用与新手
37
+
38
+ 只说 `/story`、看不出意图时,不贴路由表,给四个白话选项:「开一本长篇或接着写」→ `/story-long-write`;「写一篇短篇」→ `/story-short-write`;「把一章改得不那么 AI」→ `/story-deslop`;「更多(拆书、扫榜、导入旧稿、审稿、封面)」→ 再列进阶项。还没部署过(项目根没有 `.story-deployed`)时先建议 `/story-setup`。
39
+
36
40
  ### 导入续写顺序
37
41
 
38
42
  用户问"导入续写先 setup 还是 import"时,直接回答:**推荐先 `/story-setup`,新开/刷新会话后 `/story-import`,最后 `/story-long-write 日更` 或 `/story-long-write 写第N章`**。如果用户已经直接触发 `/story-import`,按 story-import 自带环境检测继续:未 setup 时让用户选择先去 setup 或继续串行导入。
39
43
 
40
44
  ## 作者记忆
41
45
 
42
- 用户要求记住、查看、确认、替换或忘掉作者习惯时,加载 [references/author-memory.md](references/author-memory.md),并只用本 skill 的 `scripts/author_memory_commit.py` 管理工作区级 `.story/作者记忆/`。常用变更走单事件 `record`;工具未返回 `ok: true` 和 `Author Memory Receipt` 前,不得声称已记住。显示画像或待确认项是只读操作;不存在时直接说明尚未建立。
46
+ 用户要求记住、查看、确认、替换或忘掉作者习惯时,加载 [references/author-memory.md](references/author-memory.md),并只用本 skill 的 `scripts/author_memory_commit.py` 管理两级 `.story/作者记忆/`:全局、题材、流程条目在工作区(`AP`),本书条目在书目录(`BP`,传 `--book-root`)。常用变更走单事件 `record`;工具未返回 `ok: true` 和 `Author Memory Receipt` 前,不得声称已记住。告诉作者时先用一句人话说记住了什么(如「记住了:这本书的对话一律用「」」),回执放最后一行,写法见协议「回执怎么告诉作者」。显示画像或待确认项是只读操作;不存在时直接说明尚未建立。
43
47
 
44
- 新增习惯必须保留用户原话和适用范围。一次性要求只执行不记录;小说事实写入本书设定/追踪;推断和重复修正先进入待确认;与已生效习惯冲突时显式 replace,不原地改写历史。用户没有指定工作区时,按协议定位已有作者记忆的最近祖先或当前创作工作区,禁止默认写到用户主目录。
48
+ 新增习惯必须保留用户原话和适用范围。一次性要求只执行不记录;小说事实写入本书设定/追踪;不从反复修改或成稿推断偏好,只记作者明确说的,原话范围含糊才进待确认;与已生效习惯冲突时显式 replace,不原地改写历史。作者说「整理作者记忆」、回执提示习惯攒得太多、工具报单书布局错误,或项目级画像里还有「本书:」条目(建议对该书运行 `migrate --book-root`)时,再加载 [references/author-memory-maintenance.md](references/author-memory-maintenance.md)。用户没有指定工作区时,按协议定位已有作者记忆的最近祖先或当前创作工作区,禁止默认写到用户主目录。
45
49
 
46
50
  ## Dashboard 工作台
47
51
 
@@ -84,18 +88,20 @@ metadata: {"openclaw":{"source":"https://github.com/zenstory-ai/oh-story-claudec
84
88
 
85
89
  ## 查询降级
86
90
 
87
- > Spawn 版本提示(不阻断 spawn):先读取项目根 `.story-deployed` 的 `agents_version`。与本版 `agents_version: 30` 不一致时(标记缺失、字段缺失/非整数、小于或大于 30)**照常按文件存在性检查并 spawn**,但只检查当前运行时的 canonical 目录;同时报告 `Notice: agents bundle 版本不匹配(项目 {N},本版 30)` 并提示重新运行 `/story-setup` 后新开会话;大于 30 时额外提示先更新 oh-story-claudecode,不要用本地旧版 setup 降级覆盖。只有 agent 文件缺失、或运行时不暴露 custom agent 时才降级 solo/direct,报告 `Fallback: ... -> solo`。
91
+ > Spawn 版本提示(不阻断 spawn):先读取项目根 `.story-deployed` 的 `agents_version`。与本版 `agents_version: 34` 不一致时(标记缺失、字段缺失/非整数、小于或大于 34)**照常按文件存在性检查并 spawn**,但只检查当前运行时的 canonical 目录;同时报告 `Notice: agents bundle 版本不匹配(项目 {N},本版 34)` 并提示重新运行 `/story-setup` 后新开会话;大于 34 时额外提示先更新 oh-story-claudecode,不要用本地旧版 setup 降级覆盖。只有 agent 文件缺失、或运行时不暴露 custom agent 时才降级 solo/direct,报告 `Fallback: ... -> solo`。
88
92
 
89
93
  「查故事资料」「查资料」走 agent 前先做轻量可用性检查(路由只做这一层,不承担全局部署策略):当前不在子代理上下文、当前运行时的 Agent/Task 或 `invoke_subagent` 工具可用,且对应部署文件存在(Claude `.claude/agents/*.md`、OpenCode `.opencode/agents/*.md`、Codex `.codex/agents/*.toml`、Antigravity `.agents/agents/agent-name/agent.md`,其中 `agent-name` 为目标 agent 名)→ 可尝试 spawn。Antigravity 用 `invoke_subagent` + 同名 `TypeName`,不得因其他端文件存在而误判。任一不满足,或运行时返回 unknown agent / 未暴露 custom-agent registry,则降级,不硬失败:
90
94
 
91
- - `story-explorer` 不可用 → 主线程直接用 Read/Grep 从项目文件检索(角色状态/伏笔/进度/设定),回答前标注 `Fallback: agent unavailable -> direct lookup`;项目尚未部署时提示先 `/story-setup`(Codex 中用 `$story-setup`)。
92
- - `story-researcher` 不可用 → 主线程用现有检索/回答能力完成,或提示用户改用 `/browser-cdp` 采集,同样标注 `Fallback: agent unavailable -> direct lookup`。
95
+ - `story-explorer` 不可用 → 主会话直接用 Read/Grep 从项目文件检索(角色状态/伏笔/进度/设定),回答前说一句「查资料助手没启用,这次我直接翻项目文件」;项目尚未部署时提示先 `/story-setup`(Codex 中用 `$story-setup`)。
96
+ - `story-researcher` 不可用 → 主会话用现有检索/回答能力完成,或提示用户改用 `/browser-cdp` 采集,同样用一句白话说明。
97
+
98
+ 回答作者时讲故事里的事(谁、在哪章、发生了什么);文件字段名、伏笔/事件编号不单独出现,编号必须跟着故事描述。
93
99
 
94
100
  ## 项目状态感知
95
101
 
96
102
  路由前先检查当前项目状态:
97
103
 
98
- - **无项目目录**(没有包含 `追踪/` 或 `设定/` 的书名目录):
104
+ - **无项目目录**(没有包含 `追踪/` 或 `设定/` 的书名目录,也没有同时有 `正文.md` 与 `小节大纲.md`(或 `设定.md`)的短篇目录):
99
105
  - 如果用户要写作,下一步是先运行 `/story-setup` 初始化环境(Codex 中用 `$story-setup`)
100
106
  - 如果用户要扫榜/拆文,直接路由
101
107
  - **已有项目**:检查 `.story-deployed` 标记,如未部署则先运行 `/story-setup`(Codex 中用 `$story-setup`)
@@ -104,7 +110,7 @@ metadata: {"openclaw":{"source":"https://github.com/zenstory-ai/oh-story-claudec
104
110
 
105
111
  用户想切换或查看在写的书时(一个项目可同时有多本):
106
112
 
107
- 1. 在项目根查找所有书目录:包含 `追踪/` 或 `设定/` 子目录的目录(含 `长篇/`、`短篇/` 下的子目录)。
113
+ 1. 在项目根查找所有书目录:包含 `追踪/` 或 `设定/` 子目录的目录,或同时有 `正文.md` 与 `小节大纲.md`(或 `设定.md`)的目录(含 `长篇/`、`短篇/` 下的子目录)。
108
114
  2. 列出书名,并标出当前 `.active-book` 指向的那本。
109
115
  3. 让用户选择,把所选书的相对路径写入项目根 `.active-book`(覆盖原内容)。
110
116
  4. 只发现一本时直接确认为活跃书,无需询问。
@@ -1 +1 @@
1
- 0.7.10
1
+ 0.8.4