@oh-story/dsh 0.1.17 → 0.1.19

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 (136) hide show
  1. package/README.md +14 -14
  2. package/lib/client.js +147 -96
  3. package/lib/client.js.map +3 -3
  4. package/lib/drama/manifest.json +77 -247
  5. package/lib/drama/skills/short-drama/SKILL.md +9 -1
  6. package/lib/drama/skills/short-drama/references/creator-documents.md +51 -23
  7. package/lib/drama/skills/short-drama/references/reference-roles.md +1 -1
  8. package/lib/drama/skills/short-drama/scripts/creator_markdown_check.py +442 -129
  9. package/lib/drama/skills/short-drama/scripts/project_tool.py +54 -1
  10. package/lib/drama/skills/short-drama-assets/SKILL.md +2 -6
  11. package/lib/drama/skills/short-drama-assets/references/continuity-lock.md +9 -3
  12. package/lib/drama/skills/short-drama-assets/references/era-anchors.md +3 -3
  13. package/lib/drama/skills/short-drama-assets/references/location-and-view.md +4 -0
  14. package/lib/drama/skills/short-drama-develop/references/adaptation-craft.md +2 -2
  15. package/lib/drama/skills/short-drama-develop/references/episode-design.md +19 -4
  16. package/lib/drama/skills/short-drama-develop/references/genre-cards//347/263/273/347/273/237/346/265/201.md +1 -1
  17. package/lib/drama/skills/short-drama-edit/SKILL.md +1 -1
  18. package/lib/drama/skills/short-drama-edit/scripts/edit_tool.py +28 -6
  19. package/lib/drama/skills/short-drama-edit/scripts/selftest.py +1 -1
  20. package/lib/drama/skills/short-drama-image-prompts/SKILL.md +1 -5
  21. package/lib/drama/skills/short-drama-novel-analyze/references/aggregation-and-entities.md +2 -2
  22. package/lib/drama/skills/short-drama-produce/SKILL.md +2 -0
  23. package/lib/drama/skills/short-drama-review/SKILL.md +0 -4
  24. package/lib/drama/skills/short-drama-review/references/production-quality-gates.md +1 -1
  25. package/lib/drama/skills/short-drama-storyboard/SKILL.md +9 -9
  26. package/lib/drama/skills/short-drama-storyboard/references/blocking-playbooks.md +43 -13
  27. package/lib/drama/skills/short-drama-storyboard/references/keyframe-craft.md +5 -5
  28. package/lib/drama/skills/short-drama-storyboard/references/production-shot-grammar.md +5 -5
  29. package/lib/drama/skills/short-drama-storyboard/references/shot-craft.md +27 -3
  30. package/lib/drama/skills/short-drama-storyboard/references/stage-contract.md +2 -1
  31. package/lib/drama/skills/short-drama-video-prompts/SKILL.md +6 -8
  32. package/lib/drama/skills/short-drama-video-prompts/references/camera-audio-continuity.md +16 -1
  33. package/lib/drama/skills/short-drama-video-prompts/references/delivery-profile.md +23 -6
  34. package/lib/drama/skills/short-drama-video-prompts/references/motion-recipe.md +2 -2
  35. package/lib/drama/skills/short-drama-video-prompts/references/production-prompt-grammar.md +8 -1
  36. package/lib/drama/skills/short-drama-video-prompts/references/seedance-2.0.md +41 -2
  37. package/lib/drama/skills/short-drama-video-prompts/references/seedance-2.5.md +1 -1
  38. package/lib/drama/skills/short-drama-video-prompts/references/target-model-profile.md +5 -1
  39. package/lib/drama/skills/short-drama-write/SKILL.md +7 -3
  40. package/lib/drama/skills/short-drama-write/references/screenplay-format.md +1 -1
  41. package/lib/drama/skills/short-drama-write/scripts/duration_estimate.py +94 -1
  42. package/lib/drama/skills/short-drama-write/scripts/screenplay_index.py +13 -4
  43. package/lib/drama/skills/short-drama-write/scripts/selftest.py +3 -77
  44. package/lib/index.js +18 -14
  45. package/lib/index.js.map +2 -2
  46. package/lib/novel-to-game/README.md +20 -34
  47. package/lib/novel-to-game/README_ZH.md +20 -34
  48. package/lib/novel-to-game/VERSION +1 -1
  49. package/lib/novel-to-game/examples/jin-ping-mei/build/BUILD_BRIEF.md +2 -6
  50. package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/audio.js +33 -39
  51. package/lib/novel-to-game/examples/jin-ping-mei/qa/README.md +2 -2
  52. package/lib/novel-to-game/manifest.json +46 -46
  53. package/lib/novel-to-game/skills/game-art-direction/SKILL.md +1 -1
  54. package/lib/novel-to-game/skills/game-build/references/baked-sprite-workflow.md +2 -3
  55. package/lib/novel-to-game/skills/game-build/references/blender-asset-workflow.md +6 -7
  56. package/lib/novel-to-game/skills/game-build/references/build-brief-contract.md +2 -2
  57. package/lib/novel-to-game/skills/game-build/references/generative-media-pipeline.md +1 -4
  58. package/lib/novel-to-game/skills/game-build/references/playable-model-contract.md +1 -3
  59. package/lib/novel-to-game/skills/game-build/references/tts-production-contract.md +1 -3
  60. package/lib/novel-to-game/skills/game-concept/SKILL.md +1 -1
  61. package/lib/novel-to-game/skills/game-qa/SKILL.md +3 -4
  62. package/lib/novel-to-game/skills/game-qa/references/qa-contract.md +1 -1
  63. package/lib/novel-to-game/skills/game-qa/references/test-design-method.md +3 -2
  64. package/lib/novel-to-game/skills/novel-game-analyze/SKILL.md +13 -14
  65. package/lib/novel-to-game/skills/novel-game-analyze/references/gameability-protocol.md +1 -2
  66. package/lib/novel-to-game/skills/novel-to-game/SKILL.md +4 -4
  67. package/lib/novel-to-game/skills/novel-to-game/references/intake-method.md +2 -3
  68. package/lib/novel-to-game/skills/novel-to-game/references/pipeline-contract.md +0 -8
  69. package/lib/oh-story/manifest.json +49 -49
  70. package/lib/oh-story/skills/story/SKILL.md +2 -2
  71. package/lib/oh-story/skills/story/VERSION +1 -1
  72. package/lib/oh-story/skills/story-deslop/SKILL.md +2 -2
  73. package/lib/oh-story/skills/story-import/SKILL.md +5 -5
  74. package/lib/oh-story/skills/story-import/references/deep-analysis.md +1 -1
  75. package/lib/oh-story/skills/story-import/references/import-report.md +1 -1
  76. package/lib/oh-story/skills/story-import/references/import-tracking.md +1 -1
  77. package/lib/oh-story/skills/story-import/references/outline-reverse.md +1 -1
  78. package/lib/oh-story/skills/story-import/scripts/tracking_commit.py +6 -1
  79. package/lib/oh-story/skills/story-long-analyze/SKILL.md +2 -2
  80. package/lib/oh-story/skills/story-long-write/SKILL.md +2 -2
  81. package/lib/oh-story/skills/story-long-write/references/agent-calls.md +3 -3
  82. package/lib/oh-story/skills/story-long-write/references/tracking-transaction.md +2 -2
  83. package/lib/oh-story/skills/story-long-write/scripts/tracking_commit.py +6 -1
  84. package/lib/oh-story/skills/story-review/SKILL.md +8 -7
  85. package/lib/oh-story/skills/story-review/references/agent-prompts.md +7 -7
  86. package/lib/oh-story/skills/story-review/references/tracking-transaction.md +2 -2
  87. package/lib/oh-story/skills/story-review/scripts/tracking_commit.py +6 -1
  88. package/lib/oh-story/skills/story-setup/SKILL.md +6 -6
  89. package/lib/oh-story/skills/story-short-write/SKILL.md +2 -2
  90. package/lib/oh-story/skills/story-short-write/references/agent-calls.md +3 -3
  91. package/lib/oh-story/skills/story-short-write/references/workflow-design.md +2 -2
  92. package/lib/oh-story/skills/story-short-write/references/workflow-revision.md +1 -1
  93. package/lib/types/client/game-preview-state.d.ts +34 -0
  94. package/lib/types/client/game-preview-state.d.ts.map +1 -0
  95. package/lib/types/client/index.d.ts.map +1 -1
  96. package/lib/types/client/video-studio.d.ts +24 -0
  97. package/lib/types/client/video-studio.d.ts.map +1 -1
  98. package/lib/types/host-python.d.ts +10 -3
  99. package/lib/types/host-python.d.ts.map +1 -1
  100. package/lib/types/workspace-route.d.ts +6 -0
  101. package/lib/types/workspace-route.d.ts.map +1 -1
  102. package/package.json +21 -21
  103. package/lib/drama/skills/short-drama-assets/assets/character-look.example.jsonl +0 -3
  104. package/lib/drama/skills/short-drama-assets/assets/continuity.example.jsonl +0 -4
  105. package/lib/drama/skills/short-drama-assets/assets/decisions.example.jsonl +0 -5
  106. package/lib/drama/skills/short-drama-assets/assets/location-view.example.jsonl +0 -3
  107. package/lib/drama/skills/short-drama-assets/assets/occurrences.example.jsonl +0 -5
  108. package/lib/drama/skills/short-drama-assets/assets/prop-state.example.jsonl +0 -3
  109. package/lib/drama/skills/short-drama-assets/examples/minimal/characters.jsonl +0 -2
  110. package/lib/drama/skills/short-drama-assets/examples/minimal/looks.jsonl +0 -2
  111. package/lib/drama/skills/short-drama-assets/scripts/asset_check.py +0 -267
  112. package/lib/drama/skills/short-drama-assets/scripts/selftest.py +0 -89
  113. package/lib/drama/skills/short-drama-image-prompts/examples/minimal-image-prompt-specs.jsonl +0 -2
  114. package/lib/drama/skills/short-drama-image-prompts/scripts/image_prompt_check.py +0 -443
  115. package/lib/drama/skills/short-drama-image-prompts/scripts/selftest.py +0 -95
  116. package/lib/drama/skills/short-drama-review/assets/finding-template.jsonl +0 -2
  117. package/lib/drama/skills/short-drama-review/assets/supersession-decision.example.json +0 -42
  118. package/lib/drama/skills/short-drama-review/assets/verdict-template.json +0 -32
  119. package/lib/drama/skills/short-drama-review/examples/minimal-findings.jsonl +0 -2
  120. package/lib/drama/skills/short-drama-review/examples/minimal-verdict.json +0 -34
  121. package/lib/drama/skills/short-drama-review/scripts/review_check.py +0 -325
  122. package/lib/drama/skills/short-drama-review/scripts/selftest.py +0 -87
  123. package/lib/drama/skills/short-drama-storyboard/assets/coverage-audition.example.jsonl +0 -2
  124. package/lib/drama/skills/short-drama-storyboard/assets/revision-lineage.fragment.json +0 -12
  125. package/lib/drama/skills/short-drama-storyboard/assets/scene-visual-plan.example.jsonl +0 -2
  126. package/lib/drama/skills/short-drama-storyboard/scripts/selftest.py +0 -191
  127. package/lib/drama/skills/short-drama-storyboard/scripts/storyboard_check.py +0 -824
  128. package/lib/drama/skills/short-drama-video-prompts/assets/coverage-scope.fragment.json +0 -21
  129. package/lib/drama/skills/short-drama-video-prompts/assets/motion-terminal.example.jsonl +0 -2
  130. package/lib/drama/skills/short-drama-video-prompts/assets/performance.fragment.json +0 -38
  131. package/lib/drama/skills/short-drama-video-prompts/examples/minimal-music-specs.jsonl +0 -2
  132. package/lib/drama/skills/short-drama-video-prompts/scripts/container_check.py +0 -329
  133. package/lib/drama/skills/short-drama-video-prompts/scripts/motion_timing_check.py +0 -451
  134. package/lib/drama/skills/short-drama-video-prompts/scripts/music_spec_check.py +0 -327
  135. package/lib/drama/skills/short-drama-video-prompts/scripts/selftest.py +0 -82
  136. package/lib/drama/skills/short-drama-write/scripts/voice_sheet_check.py +0 -416
@@ -2,9 +2,9 @@
2
2
  "schemaVersion": 1,
3
3
  "upstream": {
4
4
  "repository": "https://github.com/zenstory-ai/drama-skills.git",
5
- "commit": "dafe80ee390ec8be5a7ec8dd156a84d511f8e7dd"
5
+ "commit": "fdb7b7c58017e3eae64eca382c2a85ede368dab0"
6
6
  },
7
- "generatedAt": "2026-10-15T09:54:04.691Z",
7
+ "generatedAt": "2026-10-27T08:36:13.020Z",
8
8
  "skills": [
9
9
  "short-drama",
10
10
  "short-drama-assets",
@@ -26,54 +26,14 @@
26
26
  },
27
27
  {
28
28
  "path": "skills/short-drama-assets/SKILL.md",
29
- "sha256": "12f35e91a808bd164294a33288fd8345234cb9726ae5fceafa098df6ca80070c",
30
- "bytes": 5569
29
+ "sha256": "73043f9686554672378a57686bdb507912260442ef168acf3c26130df11c8c93",
30
+ "bytes": 5744
31
31
  },
32
32
  {
33
33
  "path": "skills/short-drama-assets/agents/openai.yaml",
34
34
  "sha256": "ed6ab12d47a84ade6f5952644257d43aaa13197acadb15ca9db7638d4cf5481b",
35
35
  "bytes": 294
36
36
  },
37
- {
38
- "path": "skills/short-drama-assets/assets/character-look.example.jsonl",
39
- "sha256": "23d8e3f6ada7cf556e44b955d45e4a1536d6f83c490c33e498205eaf36c073b9",
40
- "bytes": 2914
41
- },
42
- {
43
- "path": "skills/short-drama-assets/assets/continuity.example.jsonl",
44
- "sha256": "763d3961eb0da4e4e4c420a015dcd4ef8c8914f1b4a53eb8eb4a3a6da20fe56f",
45
- "bytes": 3487
46
- },
47
- {
48
- "path": "skills/short-drama-assets/assets/decisions.example.jsonl",
49
- "sha256": "7041acd603fcd555611b2b3c2da82f56151e9dc26242c9409c96c455ea3fa7e0",
50
- "bytes": 4073
51
- },
52
- {
53
- "path": "skills/short-drama-assets/assets/location-view.example.jsonl",
54
- "sha256": "538d60dc33dcfe6649d45f37d6b67910dfc3455ac5d5193ee4796f3a910681a8",
55
- "bytes": 1960
56
- },
57
- {
58
- "path": "skills/short-drama-assets/assets/occurrences.example.jsonl",
59
- "sha256": "4e7cc65b0b17d66f64b7fcafb755a2bac4c253babf966dcc49d69a40462f525e",
60
- "bytes": 4505
61
- },
62
- {
63
- "path": "skills/short-drama-assets/assets/prop-state.example.jsonl",
64
- "sha256": "f6330a42d04cdbace03661008280ec5ebf6751804db37c99eed45dd5e5250133",
65
- "bytes": 1888
66
- },
67
- {
68
- "path": "skills/short-drama-assets/examples/minimal/characters.jsonl",
69
- "sha256": "5e2404d74ee449471a6e456d7016e515fb0e11032d6738a4b2877a0244d26a65",
70
- "bytes": 652
71
- },
72
- {
73
- "path": "skills/short-drama-assets/examples/minimal/looks.jsonl",
74
- "sha256": "4ae4e1e9721c5e1c5488742667acb5f0288c314f5e8c39e1ee82e31bf7160323",
75
- "bytes": 742
76
- },
77
37
  {
78
38
  "path": "skills/short-drama-assets/references/asset-review-checklist.md",
79
39
  "sha256": "dd52740c6097d09f881bf42c159b9c5c5a2d5c142308ba76c149fca865826998",
@@ -91,13 +51,13 @@
91
51
  },
92
52
  {
93
53
  "path": "skills/short-drama-assets/references/continuity-lock.md",
94
- "sha256": "3327b78f7f528c7820fd1421727c92489a1612172f5c8b224133f25eaeb48b39",
95
- "bytes": 7147
54
+ "sha256": "0f6960b2d6f989c12383f5349d43779f5bd03ec914f53f25412e3b9d0bcd8946",
55
+ "bytes": 7780
96
56
  },
97
57
  {
98
58
  "path": "skills/short-drama-assets/references/era-anchors.md",
99
- "sha256": "3531d7c9c48d308002fceed0efa1332916b7044ec99f5b23d9cb35acc89ecb1a",
100
- "bytes": 2346
59
+ "sha256": "66a3e4c2127725d84b6fedfc0585837c5c764a3285f2db0be762473dfc9e23d4",
60
+ "bytes": 2367
101
61
  },
102
62
  {
103
63
  "path": "skills/short-drama-assets/references/identity-vs-variant.md",
@@ -106,8 +66,8 @@
106
66
  },
107
67
  {
108
68
  "path": "skills/short-drama-assets/references/location-and-view.md",
109
- "sha256": "6f74447fcf6a11c8718b77c4b8378e596c754d1bd2db3e568d840df357409a91",
110
- "bytes": 4054
69
+ "sha256": "d484bbdd3e781da667293411f674ea1bc2a3b31d6c42a86280a8b25dec9f8f47",
70
+ "bytes": 4436
111
71
  },
112
72
  {
113
73
  "path": "skills/short-drama-assets/references/occurrence-extraction.md",
@@ -129,16 +89,6 @@
129
89
  "sha256": "df6edfbc053b33ed8bfb4849bb90512c253961ce23c05b466015b8cc7ce85583",
130
90
  "bytes": 10208
131
91
  },
132
- {
133
- "path": "skills/short-drama-assets/scripts/asset_check.py",
134
- "sha256": "e19bf29a16d407c4b397fe721267ddffe5000f280db43fe89b5436a7db0bc9a7",
135
- "bytes": 10260
136
- },
137
- {
138
- "path": "skills/short-drama-assets/scripts/selftest.py",
139
- "sha256": "95868581c8e8c406c0b9169442e05e3c2b75d50ffaa6f194eab7f09b89050666",
140
- "bytes": 3174
141
- },
142
92
  {
143
93
  "path": "skills/short-drama-develop/SKILL.md",
144
94
  "sha256": "8fda1d827d060a1f26f71ef0ef58b87ea37f68ed2419736c0949d283d2719ee2",
@@ -171,8 +121,8 @@
171
121
  },
172
122
  {
173
123
  "path": "skills/short-drama-develop/references/adaptation-craft.md",
174
- "sha256": "a9174b5291eaa8f4e41fb4727d460ec633482d85f211d274c64dfe6c7ceaeb71",
175
- "bytes": 17891
124
+ "sha256": "27b205f1aba2203e50b25296eafeff770c4126c2b223172676112d13243f42f7",
125
+ "bytes": 17894
176
126
  },
177
127
  {
178
128
  "path": "skills/short-drama-develop/references/creative-reference-intake.md",
@@ -186,8 +136,8 @@
186
136
  },
187
137
  {
188
138
  "path": "skills/short-drama-develop/references/episode-design.md",
189
- "sha256": "a86da6909cb030af591042bfec4b2a6f52b127d0259d40705fedeb6d4f35429a",
190
- "bytes": 29681
139
+ "sha256": "332cc9731810eb33fb7fd59bcdbc06da21f781509a06eff3aa4f4041db426f64",
140
+ "bytes": 31121
191
141
  },
192
142
  {
193
143
  "path": "skills/short-drama-develop/references/genre-and-hook-playbook.md",
@@ -246,8 +196,8 @@
246
196
  },
247
197
  {
248
198
  "path": "skills/short-drama-develop/references/genre-cards/系统流.md",
249
- "sha256": "9bb90930823bd499379542a33292ad6e2fbe433350a2d088a5a563dc9ca0232f",
250
- "bytes": 4483
199
+ "sha256": "557986580ca0035ce4572dcebc5d057e00153e9d6ce6aebda9d7c5179cbdc13c",
200
+ "bytes": 4510
251
201
  },
252
202
  {
253
203
  "path": "skills/short-drama-develop/references/genre-cards/职场喜剧.md",
@@ -321,8 +271,8 @@
321
271
  },
322
272
  {
323
273
  "path": "skills/short-drama-edit/SKILL.md",
324
- "sha256": "dc3a81a98da0a9769f7bb7d0e0dd2345d7d7fe7a2fb476485444aa443d5ef435",
325
- "bytes": 15008
274
+ "sha256": "38946a741e12b2be0ac9715fdd31c0886e80cb5f80b6531c1da3314e4481301f",
275
+ "bytes": 15010
326
276
  },
327
277
  {
328
278
  "path": "skills/short-drama-edit/agents/openai.yaml",
@@ -456,29 +406,24 @@
456
406
  },
457
407
  {
458
408
  "path": "skills/short-drama-edit/scripts/edit_tool.py",
459
- "sha256": "b9b7d5b7f47c5e2cddc3b42fd8a77973b25b7111540a5a80cccd22825ad048ef",
460
- "bytes": 130747
409
+ "sha256": "15a6e11110916197b9fc0252b91deea963a6f6cb40a7419e13c6cacedd68c9a1",
410
+ "bytes": 132013
461
411
  },
462
412
  {
463
413
  "path": "skills/short-drama-edit/scripts/selftest.py",
464
- "sha256": "308760a10f0031cace5a47bdf3f1107a51bdca1e0cce4cee71466ad887ae2825",
414
+ "sha256": "a71e563dfc4b55ce1f7a393bee1aa36aa977245424f44837754656c603280e46",
465
415
  "bytes": 26399
466
416
  },
467
417
  {
468
418
  "path": "skills/short-drama-image-prompts/SKILL.md",
469
- "sha256": "f226e2cd0d4c051a930357320e81a3dcf8fcde5e28f1672517b4fbe5a2013db2",
470
- "bytes": 5060
419
+ "sha256": "b6e4acf14911c40298cd56bbf03e0a25faf633da49187e5813c1eea8e9fc610e",
420
+ "bytes": 5011
471
421
  },
472
422
  {
473
423
  "path": "skills/short-drama-image-prompts/agents/openai.yaml",
474
424
  "sha256": "df7927cdd98d30560d24d53ed8607ab495ce101f282b02bf746048408ba20241",
475
425
  "bytes": 310
476
426
  },
477
- {
478
- "path": "skills/short-drama-image-prompts/examples/minimal-image-prompt-specs.jsonl",
479
- "sha256": "e295df00278c27346a8169fd1ab3a8263940905693d7c562d904ff773cb767fe",
480
- "bytes": 2363
481
- },
482
427
  {
483
428
  "path": "skills/short-drama-image-prompts/references/character-and-look.md",
484
429
  "sha256": "f0ee2b15aef1ecb187748ef833912bbfc00f7181a5e43088cfde9d19fae49607",
@@ -529,16 +474,6 @@
529
474
  "sha256": "7813c87297ef94ec26178cc59bf3a59a93b47fc19be2793a7e80cdc9d3c5ebb9",
530
475
  "bytes": 3712
531
476
  },
532
- {
533
- "path": "skills/short-drama-image-prompts/scripts/image_prompt_check.py",
534
- "sha256": "a6e3217410e366f0626766218e41e5d41501efde87f5f2283c65c7e7adb901f4",
535
- "bytes": 17936
536
- },
537
- {
538
- "path": "skills/short-drama-image-prompts/scripts/selftest.py",
539
- "sha256": "9cc21ea2b835df84289d3d1f6bd363ed20c2cb2f81870a69e75bd53052c01968",
540
- "bytes": 3862
541
- },
542
477
  {
543
478
  "path": "skills/short-drama-novel-analyze/SKILL.md",
544
479
  "sha256": "105d5322f9607fefa98608ff90e5e6031c1d856e4a20b8f9502cde13f43c907c",
@@ -566,7 +501,7 @@
566
501
  },
567
502
  {
568
503
  "path": "skills/short-drama-novel-analyze/references/aggregation-and-entities.md",
569
- "sha256": "a0cc42b8ab0f8f2cddb4eef8ac3acc6143e7c75ce963ad4f0cd65e9cd167c6b5",
504
+ "sha256": "2afd25f0e2f1591ce30d1c5aff06bcb2084e9e5b2b7cdbaec09fc6e8c60b912d",
570
505
  "bytes": 9890
571
506
  },
572
507
  {
@@ -591,8 +526,8 @@
591
526
  },
592
527
  {
593
528
  "path": "skills/short-drama-produce/SKILL.md",
594
- "sha256": "5172f57e616ef2f9d0003efb9dbab662a6dbdac589850fa629b53a129e727f79",
595
- "bytes": 15433
529
+ "sha256": "dfeca69609dcca477f7cc9d488c1554e8da1ea851e2fe0f4e95169924a2b74f2",
530
+ "bytes": 15689
596
531
  },
597
532
  {
598
533
  "path": "skills/short-drama-produce/agents/openai.yaml",
@@ -651,39 +586,14 @@
651
586
  },
652
587
  {
653
588
  "path": "skills/short-drama-review/SKILL.md",
654
- "sha256": "7e134d029de085acad15e0a80707c79d7663c4392d97834873c308786ada9143",
655
- "bytes": 5405
589
+ "sha256": "13b72416eb86a7ec6131a1d1e4db6b06e4797bef5e56e254d91f96fba2ad6765",
590
+ "bytes": 5314
656
591
  },
657
592
  {
658
593
  "path": "skills/short-drama-review/agents/openai.yaml",
659
594
  "sha256": "d828625cee0450daff12a87ff6e71c012ffdcd59fcce21f2938625769671c5eb",
660
595
  "bytes": 319
661
596
  },
662
- {
663
- "path": "skills/short-drama-review/assets/finding-template.jsonl",
664
- "sha256": "c85258204e9781b5731d58fc742588c5fd17427ddc18873f41ee1919f1980b90",
665
- "bytes": 1267
666
- },
667
- {
668
- "path": "skills/short-drama-review/assets/supersession-decision.example.json",
669
- "sha256": "ca0eb7db8605eb960173fba907b4a4a9ac4b92f680869f4499e52f139c5e58ee",
670
- "bytes": 1197
671
- },
672
- {
673
- "path": "skills/short-drama-review/assets/verdict-template.json",
674
- "sha256": "cb3c7657f0b9f46616f65e5612fc8b28b03668e7e0b65871235897388fd714c6",
675
- "bytes": 685
676
- },
677
- {
678
- "path": "skills/short-drama-review/examples/minimal-findings.jsonl",
679
- "sha256": "2bec0be2f7e310a7b7efc9cb424cd792fd406110855ed84876fc5979772d7555",
680
- "bytes": 1121
681
- },
682
- {
683
- "path": "skills/short-drama-review/examples/minimal-verdict.json",
684
- "sha256": "f7039663121ea799892a1e117c21e9e02364791bc11e48f66c2cf7ded78c6bb5",
685
- "bytes": 674
686
- },
687
597
  {
688
598
  "path": "skills/short-drama-review/references/anti-template-repair.md",
689
599
  "sha256": "101e28f28765d9e2c804832fd06c853f2071b6b1a26c210f7be42fca5de395d4",
@@ -691,8 +601,8 @@
691
601
  },
692
602
  {
693
603
  "path": "skills/short-drama-review/references/production-quality-gates.md",
694
- "sha256": "c4855a4250038bf5ddd69d04a91629b364f5733165711cd7ccc5534a3c7cd0fe",
695
- "bytes": 19794
604
+ "sha256": "42653ce7d833128ade8c7e6dd6fbbf4fabdce1298b00bf0f889c30c52564e2b4",
605
+ "bytes": 19790
696
606
  },
697
607
  {
698
608
  "path": "skills/short-drama-review/references/project-calibration.md",
@@ -729,45 +639,20 @@
729
639
  "sha256": "b04225a5e9d3260a4ebe0402bf800d3d2faf2b6ac76ab709534cac9423fe20c2",
730
640
  "bytes": 4229
731
641
  },
732
- {
733
- "path": "skills/short-drama-review/scripts/review_check.py",
734
- "sha256": "01503d966920ff9b931eaa50fb7aebc6500c94e75e2ae0e387a2bac8c7c3c27a",
735
- "bytes": 12684
736
- },
737
- {
738
- "path": "skills/short-drama-review/scripts/selftest.py",
739
- "sha256": "2d818a5be4ff03f2ac9885f4cd4fb4e4eaabe372997f55f42a5f1e3d505bcb49",
740
- "bytes": 3165
741
- },
742
642
  {
743
643
  "path": "skills/short-drama-storyboard/SKILL.md",
744
- "sha256": "a5c4f42444e271f3d0bab3e6ccb05b9d5d8d28bef98bcbf5fe61b885b7d877ed",
745
- "bytes": 19225
644
+ "sha256": "fec0a090c48b8939cdd5302937446faf2ffbbca26bf596e69e2b32dd8153067e",
645
+ "bytes": 20719
746
646
  },
747
647
  {
748
648
  "path": "skills/short-drama-storyboard/agents/openai.yaml",
749
649
  "sha256": "d6a0712925307b730942e6948cb0dda5867051eb2e5fb433b1a094385af6762e",
750
650
  "bytes": 283
751
651
  },
752
- {
753
- "path": "skills/short-drama-storyboard/assets/coverage-audition.example.jsonl",
754
- "sha256": "b4da96db0e2f6ef9d200dd7e3bfef73edee71d82a3258c670c2a86cc5469a08b",
755
- "bytes": 1985
756
- },
757
- {
758
- "path": "skills/short-drama-storyboard/assets/revision-lineage.fragment.json",
759
- "sha256": "375a15a2f52d4e280a84298ae44dd950d95880a611c4edf1f5df63f24f5aa6e2",
760
- "bytes": 277
761
- },
762
- {
763
- "path": "skills/short-drama-storyboard/assets/scene-visual-plan.example.jsonl",
764
- "sha256": "3eb20063ba0bd7ce3540e6d39b1b7aa324f7f7c1699e127c6f66b6ae78ef9d83",
765
- "bytes": 2837
766
- },
767
652
  {
768
653
  "path": "skills/short-drama-storyboard/references/blocking-playbooks.md",
769
- "sha256": "932aac82d8e537b6c42259071934db2d42d4e1f89baffca122ba7a1115649573",
770
- "bytes": 12273
654
+ "sha256": "bcc86f714b2e52ea7fc03e0283b1d43b28aceedeffe84f0eba2b39db519bd1a4",
655
+ "bytes": 15513
771
656
  },
772
657
  {
773
658
  "path": "skills/short-drama-storyboard/references/comic-keyframe-lexicon.md",
@@ -781,8 +666,8 @@
781
666
  },
782
667
  {
783
668
  "path": "skills/short-drama-storyboard/references/keyframe-craft.md",
784
- "sha256": "72c218a7a5374da85b22b7a69e9f949b1f5e12c1245440dbed229c91e614b27e",
785
- "bytes": 9779
669
+ "sha256": "226a190009f74b6be123723505193d1db1fb6ad06f43fadbf961be8ac2062a20",
670
+ "bytes": 9758
786
671
  },
787
672
  {
788
673
  "path": "skills/short-drama-storyboard/references/lighting-craft.md",
@@ -791,8 +676,8 @@
791
676
  },
792
677
  {
793
678
  "path": "skills/short-drama-storyboard/references/production-shot-grammar.md",
794
- "sha256": "401256a44246174b9a17c413e1b94f9ead974a7d2ecf658ea398b6f8e4ebf1e2",
795
- "bytes": 21704
679
+ "sha256": "cb41de6840f577e259ad6691f3f06814424b6bf69925c076468dd7156b7a8181",
680
+ "bytes": 21678
796
681
  },
797
682
  {
798
683
  "path": "skills/short-drama-storyboard/references/review-and-fixtures.md",
@@ -811,8 +696,8 @@
811
696
  },
812
697
  {
813
698
  "path": "skills/short-drama-storyboard/references/shot-craft.md",
814
- "sha256": "756336c997397c50308dc08d4947fe45268ffaf9705f3a1c1d6c823b4f32666e",
815
- "bytes": 22640
699
+ "sha256": "9b8b3f5d3f1ed306a4510a9964ee0f57e5341ce3a40f0509815368117e49a507",
700
+ "bytes": 25253
816
701
  },
817
702
  {
818
703
  "path": "skills/short-drama-storyboard/references/shot-revision-identity.md",
@@ -821,58 +706,28 @@
821
706
  },
822
707
  {
823
708
  "path": "skills/short-drama-storyboard/references/stage-contract.md",
824
- "sha256": "24025b389cc1c3bbad2c71198dd2aab569dd5674768301bcbb2276a21688710f",
825
- "bytes": 12575
826
- },
827
- {
828
- "path": "skills/short-drama-storyboard/scripts/selftest.py",
829
- "sha256": "b2ef8452a72f46200538afdfd55bd52e655b51a5cfddfaed548b264239067fb1",
830
- "bytes": 6933
831
- },
832
- {
833
- "path": "skills/short-drama-storyboard/scripts/storyboard_check.py",
834
- "sha256": "0f9956fd53782b6da43ab0d63bfda1f3b7be3ceb4a776d32f3272088f7be912d",
835
- "bytes": 31133
709
+ "sha256": "429585afce63c3edc1b073256ffa9915af4f489e8d53d59a8bb0f66aba1f5531",
710
+ "bytes": 13597
836
711
  },
837
712
  {
838
713
  "path": "skills/short-drama-video-prompts/SKILL.md",
839
- "sha256": "39a44ae23095035bc64bfbbde45c28988724e24106802c2af1ff5dd9ba0107a9",
840
- "bytes": 17269
714
+ "sha256": "647a5ee2965c50158a6e4f4176a84fec426c1420b5866cf7114a2676e6747865",
715
+ "bytes": 17566
841
716
  },
842
717
  {
843
718
  "path": "skills/short-drama-video-prompts/agents/openai.yaml",
844
719
  "sha256": "57de201034bf3adb3a9db079e7ce0119b0b86e8ba370e90f59fdb52ae83c08a9",
845
720
  "bytes": 298
846
721
  },
847
- {
848
- "path": "skills/short-drama-video-prompts/assets/coverage-scope.fragment.json",
849
- "sha256": "22345078b2a07acdd4188fc6d7674340296dccd96a793aa9cd1da228d205f4af",
850
- "bytes": 685
851
- },
852
- {
853
- "path": "skills/short-drama-video-prompts/assets/motion-terminal.example.jsonl",
854
- "sha256": "c0b15d8ca3393eda2ebcf3d0d7aa5d88e76ac45e99e66b63c08b453dbbe66c36",
855
- "bytes": 925
856
- },
857
- {
858
- "path": "skills/short-drama-video-prompts/assets/performance.fragment.json",
859
- "sha256": "0ba3edcfeefa304275c0d0a8d9f028f340353404952e8759592a3def509960d9",
860
- "bytes": 1236
861
- },
862
- {
863
- "path": "skills/short-drama-video-prompts/examples/minimal-music-specs.jsonl",
864
- "sha256": "add90d6b5994f6fdb092fa348c7a14e90b69600dd30c1a2834fb4a45b960256b",
865
- "bytes": 806
866
- },
867
722
  {
868
723
  "path": "skills/short-drama-video-prompts/references/camera-audio-continuity.md",
869
- "sha256": "eb0ad7f8c2bf598a489898694a19546031d3f1f72d4708f90dc04190910646fd",
870
- "bytes": 15699
724
+ "sha256": "586c0be817e2e72b56a926b437b5bacc25956606dd1cfa96bad9b02793daf464",
725
+ "bytes": 17052
871
726
  },
872
727
  {
873
728
  "path": "skills/short-drama-video-prompts/references/delivery-profile.md",
874
- "sha256": "be82d298e8dfd133df033ae2cff27f403ec8e46ed0f281f418dfdc250d5579bb",
875
- "bytes": 20296
729
+ "sha256": "31e12aa3612b930cf98a7cea681a6ddbd37882f94c8c32665d9b5d6ae51efeda",
730
+ "bytes": 21326
876
731
  },
877
732
  {
878
733
  "path": "skills/short-drama-video-prompts/references/generability.md",
@@ -886,8 +741,8 @@
886
741
  },
887
742
  {
888
743
  "path": "skills/short-drama-video-prompts/references/motion-recipe.md",
889
- "sha256": "7822a471b1b8aa98d206c4455b5d57f88dc2642f65a5fecf0e269b6df051e9c4",
890
- "bytes": 21276
744
+ "sha256": "c59f7ffbd9d9cb8142be94c70a8f472be3148fe060a7320ea42d69ca185639fc",
745
+ "bytes": 21270
891
746
  },
892
747
  {
893
748
  "path": "skills/short-drama-video-prompts/references/performance-action-timing.md",
@@ -896,8 +751,8 @@
896
751
  },
897
752
  {
898
753
  "path": "skills/short-drama-video-prompts/references/production-prompt-grammar.md",
899
- "sha256": "02e5962b6bc8ff48203a98c866c75b1342133e3db99b656e1cf0013693f30d00",
900
- "bytes": 21741
754
+ "sha256": "f46bef927fa5ef77a3f9f454ffd1d6a9b1522107533a8023140e15d4f25b03bb",
755
+ "bytes": 22549
901
756
  },
902
757
  {
903
758
  "path": "skills/short-drama-video-prompts/references/review-and-fixtures.md",
@@ -906,13 +761,13 @@
906
761
  },
907
762
  {
908
763
  "path": "skills/short-drama-video-prompts/references/seedance-2.0.md",
909
- "sha256": "7acefd1d1c71e56256b88670f2b008c1d8fd505767fe433e05b1dad3abe214c5",
910
- "bytes": 3442
764
+ "sha256": "4a36778e1c32d7b6290dafb9138941f3e3c9d75fea2d4407f083ae859feb9dc3",
765
+ "bytes": 6771
911
766
  },
912
767
  {
913
768
  "path": "skills/short-drama-video-prompts/references/seedance-2.5.md",
914
- "sha256": "3839bfc4b01e686531ea96e27ee4ad8131a5ef53d6530119e1a932f8900658a3",
915
- "bytes": 9886
769
+ "sha256": "f5e8a52c1c57f00a7af4a2d54bb241d531ca8b74084c0e2158c7cdc56b6caba3",
770
+ "bytes": 9889
916
771
  },
917
772
  {
918
773
  "path": "skills/short-drama-video-prompts/references/stage-contract.md",
@@ -921,38 +776,18 @@
921
776
  },
922
777
  {
923
778
  "path": "skills/short-drama-video-prompts/references/target-model-profile.md",
924
- "sha256": "61afad5172bdf58487d0c7a0b27e578f57fd89ca89f6d0e65197389e114330f5",
925
- "bytes": 10176
779
+ "sha256": "f2b57e017b201a52bb21c2171d313c5563e987dd8f6549d1d6d493246cf0d958",
780
+ "bytes": 10543
926
781
  },
927
782
  {
928
783
  "path": "skills/short-drama-video-prompts/references/wan-3.0.md",
929
784
  "sha256": "514395b47ff7dfd48f4d06a2a2a801dd6d7e32e85377ecfed36a1bd3f1a40fa2",
930
785
  "bytes": 7211
931
786
  },
932
- {
933
- "path": "skills/short-drama-video-prompts/scripts/container_check.py",
934
- "sha256": "74650a2e5c9fa982f82df17a4b5796f2f80280a1d4a6af69cf67fcafcb351837",
935
- "bytes": 12662
936
- },
937
- {
938
- "path": "skills/short-drama-video-prompts/scripts/motion_timing_check.py",
939
- "sha256": "5d6526fc0dbca62b48686caffc3ef5e3d595afc46a4abe21bb0562672c4b93a5",
940
- "bytes": 18240
941
- },
942
- {
943
- "path": "skills/short-drama-video-prompts/scripts/music_spec_check.py",
944
- "sha256": "abcbd5d3fc55b281b5b05989b81919a0a8477bb85d4c580d47cc7de22b95c493",
945
- "bytes": 12502
946
- },
947
- {
948
- "path": "skills/short-drama-video-prompts/scripts/selftest.py",
949
- "sha256": "8ba38a8a49c90e0e21b53515bdc34fc5b787a9931530d52c1fe97f8d6880a828",
950
- "bytes": 2862
951
- },
952
787
  {
953
788
  "path": "skills/short-drama-write/SKILL.md",
954
- "sha256": "9f966387375cd6e8a37b4332ab3126e31c09899b5eafaf535736dd32070a3311",
955
- "bytes": 10515
789
+ "sha256": "87085fd7791d3c53b20523139616e3f9032227385c30eb2aa48f367cb006e790",
790
+ "bytes": 11094
956
791
  },
957
792
  {
958
793
  "path": "skills/short-drama-write/agents/openai.yaml",
@@ -986,8 +821,8 @@
986
821
  },
987
822
  {
988
823
  "path": "skills/short-drama-write/references/screenplay-format.md",
989
- "sha256": "2fd8d1abfcc1ad880265181c3256ba9b5b893a3ac81d771379677a66baacbd90",
990
- "bytes": 10825
824
+ "sha256": "0c49c996116e6083e94ee1a3fdaf169e0dc2e8d2ad1a8181e482e0c4b6e81ed0",
825
+ "bytes": 10898
991
826
  },
992
827
  {
993
828
  "path": "skills/short-drama-write/references/script-craft.md",
@@ -1006,28 +841,23 @@
1006
841
  },
1007
842
  {
1008
843
  "path": "skills/short-drama-write/scripts/duration_estimate.py",
1009
- "sha256": "c648745b58c8a2c286e61e6cc1034376a522fc97114d434379b92d36c142e70e",
1010
- "bytes": 14249
844
+ "sha256": "87002aa2eeb00e80e87b1ae8f12e55b5053a4640087065752452df949ab4d4e0",
845
+ "bytes": 18389
1011
846
  },
1012
847
  {
1013
848
  "path": "skills/short-drama-write/scripts/screenplay_index.py",
1014
- "sha256": "11ce6307b615e91ea9ff277212875c3adf5aafb58289bed5ff54f0f2d877dec9",
1015
- "bytes": 43578
849
+ "sha256": "5d346f3e7097dec654b27c00d555d10f7f293ce6442db3ac456e811c8a72e4cb",
850
+ "bytes": 44166
1016
851
  },
1017
852
  {
1018
853
  "path": "skills/short-drama-write/scripts/selftest.py",
1019
- "sha256": "90a3a6cf475acf335e09dbc71a4aa3ac986257e1eb0c617b91c48fb4bc1f4660",
1020
- "bytes": 8928
1021
- },
1022
- {
1023
- "path": "skills/short-drama-write/scripts/voice_sheet_check.py",
1024
- "sha256": "c3862db34546c6bad280e44c5cb08d680c250b7f62c73cb8bfe33876a9494753",
1025
- "bytes": 15353
854
+ "sha256": "f7f461dc9d23d3ecee8080079f4c5b362136a3b4760aeb0e0ad1f7248877ecce",
855
+ "bytes": 6061
1026
856
  },
1027
857
  {
1028
858
  "path": "skills/short-drama/SKILL.md",
1029
- "sha256": "68dcb3b0fce210ff15acbeecd6e5e8958ebf4d7faf8570be5272656b00827673",
1030
- "bytes": 11510
859
+ "sha256": "4d98f20ec15e6e0c90f8456869d680b361ef904ca29eba7e6b996cf4a712c8e8",
860
+ "bytes": 12500
1031
861
  },
1032
862
  {
1033
863
  "path": "skills/short-drama/agents/openai.yaml",
@@ -1066,8 +896,8 @@
1066
896
  },
1067
897
  {
1068
898
  "path": "skills/short-drama/references/creator-documents.md",
1069
- "sha256": "28f63829e3f85a7ab877699df6cfbdc3c80384c873418903c7e8d1b0ee169053",
1070
- "bytes": 17036
899
+ "sha256": "331c2f34ceaffe0668413107134d0a407637d0eaf51d75034f95896467cdbccc",
900
+ "bytes": 18550
1071
901
  },
1072
902
  {
1073
903
  "path": "skills/short-drama/references/creator-workflow.md",
@@ -1126,7 +956,7 @@
1126
956
  },
1127
957
  {
1128
958
  "path": "skills/short-drama/references/reference-roles.md",
1129
- "sha256": "7765b21925f7acbca1e5e59f8fee13a5fc4ddf7a846cf56491c859cee177629d",
959
+ "sha256": "45e84608e7619eaf66cfe44d4ddbf7c9c1988d4a3303963b3690958ec3eb49d2",
1130
960
  "bytes": 4485
1131
961
  },
1132
962
  {
@@ -1136,13 +966,13 @@
1136
966
  },
1137
967
  {
1138
968
  "path": "skills/short-drama/scripts/creator_markdown_check.py",
1139
- "sha256": "c09f9f510f0c8f18be8cae1bd00efcb35cc132c6a04606b53d686fee7fa4c632",
1140
- "bytes": 76402
969
+ "sha256": "adba7a59375769d3e7f6c1d6c96ccfffb084f96051ef6c295abf8615582ffb64",
970
+ "bytes": 90994
1141
971
  },
1142
972
  {
1143
973
  "path": "skills/short-drama/scripts/project_tool.py",
1144
- "sha256": "aae381f2ddf80e5a53ce968d55307e71e7b3174ed802bcec7530b083d814dc9b",
1145
- "bytes": 101685
974
+ "sha256": "b0b6bc6be7cd9b862068445b8ed5a7562b1c571ae91ec8ea49a70b8ba7d0c0a4",
975
+ "bytes": 104396
1146
976
  },
1147
977
  {
1148
978
  "path": "skills/short-drama/scripts/selftest.py",
@@ -48,7 +48,7 @@ license: MIT
48
48
  4. 范围完成后一次回报完成内容、关键决定、真实未决项和可选下一步。
49
49
  5. 不自动开始用户没点名的审查、归档或生产。
50
50
  6. 请求横跨视觉设定、图片提示词、分镜或视频提示词时,结束前核对当前已有文档的视觉依赖;
51
- 图片提示词和分镜并行完成时,也要同步两支的引用。五份文档齐备后再运行完整跨文档检查,不为检查补造文件。
51
+ 图片提示词和分镜并行完成时,也要同步两支的引用。每写完一份文档就带 `--partial` 运行跨文档检查,只核对已有文档;五份齐备后再运行完整检查。不为检查补造文件。
52
52
  7. 视频提示词请求遇到「输入参考图:无」或仍带「待补参考图」时,先路由分镜 owner 检查项目已有图片并刷新绑定。有匹配图就同请求续跑;有必要图缺失就列表停下。
53
53
  停下时把三条路一起给出:把已有图片放进项目绑成 `REF-...`;由创作者在自己的工具里出图、本轮先用
54
54
  `PLAN-...` 写出逐镜挂图计划并照常产出视频提示词;或者明确改走文生视频。用本套件生产参考图需要项目外的
@@ -94,6 +94,14 @@ python3 {技能目录}/scripts/project_tool.py set-authority <project> \
94
94
  各字段取值由命中的模型方言给出:`$short-drama-video-prompts` 的 MiniMax H3 / Seedance / Wan 3.0 方言文件都写了
95
95
  推荐档案。写完用 `status` 复核 `video_model_profile` 是否已经出现。
96
96
 
97
+ 语速 `format.pacing` 和集数 `format.episode_count` 走同样的决策写入:`--field /format/pacing`,
98
+ `accepted_value` 写 `{"spoken_characters_per_second": <每秒可发声字数>, "seconds_per_action_paragraph": <每段动作秒数>}`,
99
+ 两项都要给;画面文字多、要按读字时间计时的项目,可再加 `"on_screen_text_characters_per_second"`。
100
+ `--field /format/episode_count`,`accepted_value` 写正整数。没有语速时写作阶段算不出秒数。
101
+ `status` 的 `profile_notes` 会列出各自有效、合在一起却做不到的设定,例如平均镜长低于目标模型原生最短时长,
102
+ 或设了单集目标时长却没有语速;看到就交创作者决定,不要等到分镜才发现。创作者选择用多镜容器解决镜长冲突时,
103
+ 在生产档案 `choices` 里加 `"multi_shot_containers": true`(同一条决策写入),这条提示随之消失。
104
+
97
105
  项目定位与安全写入见 [运行预检](references/runtime-preflight.md)。用户明确要求 Dashboard 时运行:
98
106
 
99
107
  ```bash