dsh-openwrite 0.2.8

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 (275) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +107 -0
  3. package/THIRD_PARTY_NOTICES.md +33 -0
  4. package/assets/logo-dark.svg +31 -0
  5. package/assets/logo-light.svg +31 -0
  6. package/cordis.patch.yml +11 -0
  7. package/docs/BENCHMARK_TASKS.md +54 -0
  8. package/docs/COST_MEASUREMENT.md +39 -0
  9. package/docs/DEVELOPMENT.md +65 -0
  10. package/docs/DSH_STORE.md +58 -0
  11. package/docs/FRAMEWORK_ADVANTAGES.md +288 -0
  12. package/docs/IMPROVEMENT_PLAN.md +252 -0
  13. package/docs/INSTALL.md +99 -0
  14. package/docs/LEARNING.md +68 -0
  15. package/docs/OPEN_SOURCE_NOVEL_AUDIT.md +191 -0
  16. package/docs/PLUGIN_MAINTENANCE.md +54 -0
  17. package/docs/PLUGIN_MAINTENANCE_RC7.md +157 -0
  18. package/docs/QA_20260908.md +103 -0
  19. package/docs/QA_20260909_BENCHMARK.md +24 -0
  20. package/docs/RELEASE_ACCEPTANCE.md +116 -0
  21. package/docs/REVIEW_DAG_FRAMEWORK.md +82 -0
  22. package/docs/TARGETED_NOVEL_PROJECT_REVIEW.md +167 -0
  23. package/docs/WORKFLOWS.md +74 -0
  24. package/docs/WORKSPACE_CONTEXT_CONTRACT.md +125 -0
  25. package/docs/WORKSPACE_INTEGRATION_GOAL.md +278 -0
  26. package/docs/research/autosave-race-repro.mjs +133 -0
  27. package/docs/research/framework-stats-2026-09-05.json +116 -0
  28. package/dog-tools.mjs +11 -0
  29. package/package.json +132 -0
  30. package/packages/openwrite-bridge/LICENSE +201 -0
  31. package/packages/openwrite-bridge/cordis.patch.yml +10 -0
  32. package/packages/openwrite-bridge/lib/client.d.ts +95 -0
  33. package/packages/openwrite-bridge/lib/client.js +193 -0
  34. package/packages/openwrite-bridge/lib/contracts-generated.d.ts +367 -0
  35. package/packages/openwrite-bridge/lib/contracts-generated.js +1764 -0
  36. package/packages/openwrite-bridge/lib/dog-delivery.d.ts +12 -0
  37. package/packages/openwrite-bridge/lib/dog-delivery.js +362 -0
  38. package/packages/openwrite-bridge/lib/dog-review.d.ts +50 -0
  39. package/packages/openwrite-bridge/lib/dog-review.js +470 -0
  40. package/packages/openwrite-bridge/lib/domain.d.ts +70 -0
  41. package/packages/openwrite-bridge/lib/domain.js +496 -0
  42. package/packages/openwrite-bridge/lib/index.d.ts +17 -0
  43. package/packages/openwrite-bridge/lib/index.js +89 -0
  44. package/packages/openwrite-bridge/lib/managed-runtime.d.ts +95 -0
  45. package/packages/openwrite-bridge/lib/managed-runtime.js +510 -0
  46. package/packages/openwrite-bridge/lib/preset-tools.d.ts +13 -0
  47. package/packages/openwrite-bridge/lib/preset-tools.js +18 -0
  48. package/packages/openwrite-bridge/lib/tool-policy.d.ts +6 -0
  49. package/packages/openwrite-bridge/lib/tool-policy.js +56 -0
  50. package/packages/openwrite-bridge/lib/tools.d.ts +24 -0
  51. package/packages/openwrite-bridge/lib/tools.js +2404 -0
  52. package/packages/openwrite-bridge/package.json +67 -0
  53. package/packages/studio-panel/LICENSE +21 -0
  54. package/packages/studio-panel/README.md +51 -0
  55. package/packages/studio-panel/cordis.patch.yml +5 -0
  56. package/packages/studio-panel/lib/client.js +158087 -0
  57. package/packages/studio-panel/lib/client.js.map +1 -0
  58. package/packages/studio-panel/lib/index.js +50 -0
  59. package/packages/studio-panel/lib/types/client/AssetEditor.d.ts +122 -0
  60. package/packages/studio-panel/lib/types/client/AssetsView.d.ts +43 -0
  61. package/packages/studio-panel/lib/types/client/BenchmarkView.d.ts +9 -0
  62. package/packages/studio-panel/lib/types/client/ContinuousReader.d.ts +13 -0
  63. package/packages/studio-panel/lib/types/client/CreationView.d.ts +6 -0
  64. package/packages/studio-panel/lib/types/client/DagCanvas.d.ts +11 -0
  65. package/packages/studio-panel/lib/types/client/DiscardDraftDialog.d.ts +8 -0
  66. package/packages/studio-panel/lib/types/client/DomainToolCard.d.ts +9 -0
  67. package/packages/studio-panel/lib/types/client/GraphView.d.ts +46 -0
  68. package/packages/studio-panel/lib/types/client/HeaderChrome.d.ts +18 -0
  69. package/packages/studio-panel/lib/types/client/LaunchOpenWrite.d.ts +13 -0
  70. package/packages/studio-panel/lib/types/client/LibraryView.d.ts +6 -0
  71. package/packages/studio-panel/lib/types/client/MarkdownText.d.ts +3 -0
  72. package/packages/studio-panel/lib/types/client/ModelView.d.ts +9 -0
  73. package/packages/studio-panel/lib/types/client/OperationsView.d.ts +6 -0
  74. package/packages/studio-panel/lib/types/client/OutlinePlans.d.ts +37 -0
  75. package/packages/studio-panel/lib/types/client/OutlineView.d.ts +29 -0
  76. package/packages/studio-panel/lib/types/client/ResearchView.d.ts +7 -0
  77. package/packages/studio-panel/lib/types/client/ReviewCard.d.ts +28 -0
  78. package/packages/studio-panel/lib/types/client/SceneWorkbench.d.ts +55 -0
  79. package/packages/studio-panel/lib/types/client/SearchView.d.ts +33 -0
  80. package/packages/studio-panel/lib/types/client/TasksView.d.ts +11 -0
  81. package/packages/studio-panel/lib/types/client/TransferWorkspaces.d.ts +19 -0
  82. package/packages/studio-panel/lib/types/client/TurnMutationSummary.d.ts +62 -0
  83. package/packages/studio-panel/lib/types/client/VditorBody.d.ts +55 -0
  84. package/packages/studio-panel/lib/types/client/WorkbenchStore.d.ts +121 -0
  85. package/packages/studio-panel/lib/types/client/api.d.ts +72 -0
  86. package/packages/studio-panel/lib/types/client/asset-drafts.d.ts +20 -0
  87. package/packages/studio-panel/lib/types/client/benchmark-options.d.ts +43 -0
  88. package/packages/studio-panel/lib/types/client/draft-store.d.ts +26 -0
  89. package/packages/studio-panel/lib/types/client/dto.d.ts +517 -0
  90. package/packages/studio-panel/lib/types/client/index.d.ts +4 -0
  91. package/packages/studio-panel/lib/types/client/locales.d.ts +15 -0
  92. package/packages/studio-panel/lib/types/client/manuscript-annotations.d.ts +59 -0
  93. package/packages/studio-panel/lib/types/client/manuscript-markers.d.ts +61 -0
  94. package/packages/studio-panel/lib/types/client/manuscript-mentions.d.ts +30 -0
  95. package/packages/studio-panel/lib/types/client/manuscript-overlay-dom.d.ts +7 -0
  96. package/packages/studio-panel/lib/types/client/manuscript-overlay.d.ts +42 -0
  97. package/packages/studio-panel/lib/types/client/manuscript-selection.d.ts +59 -0
  98. package/packages/studio-panel/lib/types/client/model-view-memory.d.ts +17 -0
  99. package/packages/studio-panel/lib/types/client/storage.d.ts +8 -0
  100. package/packages/studio-panel/lib/types/client/workbench-epochs.d.ts +16 -0
  101. package/packages/studio-panel/lib/types/client/workspace-context.d.ts +52 -0
  102. package/packages/studio-panel/lib/types/client/writing-scope.d.ts +7 -0
  103. package/packages/studio-panel/lib/types/index.d.ts +5 -0
  104. package/packages/studio-panel/package.json +105 -0
  105. package/packages/studio-panel/vendor/vditor/LICENSE +21 -0
  106. package/packages/studio-panel/vendor/vditor/dist/css/content-theme/dark.css +123 -0
  107. package/packages/studio-panel/vendor/vditor/dist/css/content-theme/light.css +101 -0
  108. package/packages/studio-panel/vendor/vditor/dist/index.css +1823 -0
  109. package/packages/studio-panel/vendor/vditor/dist/index.min.js +1 -0
  110. package/packages/studio-panel/vendor/vditor/dist/js/i18n/zh_CN.js +86 -0
  111. package/packages/studio-panel/vendor/vditor/dist/js/icons/ant.js +174 -0
  112. package/packages/studio-panel/vendor/vditor/dist/js/lute/lute.min.js +72 -0
  113. package/plugin.d.ts +3 -0
  114. package/plugin.mjs +80 -0
  115. package/presets/README.md +32 -0
  116. package/presets/openwrite/agent.cordis.yml +317 -0
  117. package/presets/openwrite/preset.yml +3 -0
  118. package/presets/openwrite/skills/canon/SKILL.md +15 -0
  119. package/presets/openwrite/skills/dialoguequality/SKILL.md +166 -0
  120. package/presets/openwrite/skills/dog-delivery-query/SKILL.md +40 -0
  121. package/presets/openwrite/skills/dog-import-query/SKILL.md +27 -0
  122. package/presets/openwrite/skills/dog-review-query/SKILL.md +40 -0
  123. package/presets/openwrite/skills/export-book/SKILL.md +14 -0
  124. package/presets/openwrite/skills/foreshadow/SKILL.md +14 -0
  125. package/presets/openwrite/skills/foreshadowing-system/SKILL.md +125 -0
  126. package/presets/openwrite/skills/learn/SKILL.md +24 -0
  127. package/presets/openwrite/skills/novel-creator/SKILL.md +88 -0
  128. package/presets/openwrite/skills/novel-creator/templates/beat_templates.yaml +179 -0
  129. package/presets/openwrite/skills/novel-creator/templates/example_usage.yaml +74 -0
  130. package/presets/openwrite/skills/novel-reviewer/SKILL.md +85 -0
  131. package/presets/openwrite/skills/oh-story-deslop/LICENSE +21 -0
  132. package/presets/openwrite/skills/oh-story-deslop/SKILL.md +36 -0
  133. package/presets/openwrite/skills/oh-story-deslop/agents/openai.yaml +4 -0
  134. package/presets/openwrite/skills/oh-story-deslop/references/method.md +22 -0
  135. package/presets/openwrite/skills/oh-story-long-analyze/LICENSE +21 -0
  136. package/presets/openwrite/skills/oh-story-long-analyze/SKILL.md +37 -0
  137. package/presets/openwrite/skills/oh-story-long-analyze/agents/openai.yaml +4 -0
  138. package/presets/openwrite/skills/oh-story-long-analyze/references/method.md +22 -0
  139. package/presets/openwrite/skills/oh-story-long-scan/LICENSE +21 -0
  140. package/presets/openwrite/skills/oh-story-long-scan/SKILL.md +36 -0
  141. package/presets/openwrite/skills/oh-story-long-scan/agents/openai.yaml +4 -0
  142. package/presets/openwrite/skills/oh-story-long-scan/references/method.md +21 -0
  143. package/presets/openwrite/skills/oh-story-long-write/LICENSE +21 -0
  144. package/presets/openwrite/skills/oh-story-long-write/SKILL.md +37 -0
  145. package/presets/openwrite/skills/oh-story-long-write/agents/openai.yaml +4 -0
  146. package/presets/openwrite/skills/oh-story-long-write/references/method.md +33 -0
  147. package/presets/openwrite/skills/oh-story-review/LICENSE +21 -0
  148. package/presets/openwrite/skills/oh-story-review/SKILL.md +36 -0
  149. package/presets/openwrite/skills/oh-story-review/agents/openai.yaml +4 -0
  150. package/presets/openwrite/skills/oh-story-review/references/method.md +25 -0
  151. package/presets/openwrite/skills/progress/SKILL.md +16 -0
  152. package/presets/openwrite/skills/review-chapter/SKILL.md +17 -0
  153. package/presets/openwrite/skills/revise-span/SKILL.md +16 -0
  154. package/presets/openwrite/skills/style-system/SKILL.md +135 -0
  155. package/presets/openwrite/skills/style-system/prompts/analyze_style.md +214 -0
  156. package/presets/openwrite/skills/style-system/prompts/batch_extract_style.md +66 -0
  157. package/presets/openwrite/skills/style-system/prompts/compose_style.md +83 -0
  158. package/presets/openwrite/skills/style-system/prompts/extract_style.md +84 -0
  159. package/presets/openwrite/skills/style-system/prompts/initialize_style.md +52 -0
  160. package/presets/openwrite/skills/style-system/templates/analysis_report.yaml +78 -0
  161. package/presets/openwrite/skills/style-system/templates/composed_style.md +96 -0
  162. package/presets/openwrite/skills/style-system/templates/extraction_report.yaml +80 -0
  163. package/presets/openwrite/skills/style-system/templates/fingerprint.yaml +61 -0
  164. package/presets/openwrite/skills/style-system/tools/README.md +33 -0
  165. package/presets/openwrite/skills/truth-validation/SKILL.md +119 -0
  166. package/presets/openwrite/skills/workflow-manager/SKILL.md +81 -0
  167. package/presets/openwrite/skills/world-query/SKILL.md +45 -0
  168. package/presets/openwrite/skills/write-next/SKILL.md +17 -0
  169. package/release/core-requirements.in +12 -0
  170. package/release/licenses/@deepseek-ai__cosmokit@1.8.3/LICENSE +21 -0
  171. package/release/licenses/@deepseek-ai__schemastery@3.18.2/LICENSE +21 -0
  172. package/release/licenses/@isaacs__fs-minipass@4.0.1/LICENSE +15 -0
  173. package/release/licenses/@standard-schema__spec@1.1.0/LICENSE +21 -0
  174. package/release/licenses/@types__d3-color@3.1.3/LICENSE +21 -0
  175. package/release/licenses/@types__d3-drag@3.0.7/LICENSE +21 -0
  176. package/release/licenses/@types__d3-interpolate@3.0.4/LICENSE +21 -0
  177. package/release/licenses/@types__d3-selection@3.0.11/LICENSE +21 -0
  178. package/release/licenses/@types__d3-transition@3.0.9/LICENSE +21 -0
  179. package/release/licenses/@types__d3-zoom@3.0.8/LICENSE +21 -0
  180. package/release/licenses/@xyflow__react@12.11.6/LICENSE +21 -0
  181. package/release/licenses/@xyflow__system@0.0.82/LICENSE +21 -0
  182. package/release/licenses/ajv-formats@3.0.1/LICENSE +21 -0
  183. package/release/licenses/ajv@8.20.0/LICENSE +22 -0
  184. package/release/licenses/chownr@3.0.0/LICENSE.md +63 -0
  185. package/release/licenses/classcat@5.0.5/LICENSE.md +7 -0
  186. package/release/licenses/commander@7.2.0/LICENSE +22 -0
  187. package/release/licenses/d3-array@3.2.4/LICENSE +13 -0
  188. package/release/licenses/d3-axis@3.0.0/LICENSE +13 -0
  189. package/release/licenses/d3-brush@3.0.0/LICENSE +13 -0
  190. package/release/licenses/d3-chord@3.0.1/LICENSE +13 -0
  191. package/release/licenses/d3-color@3.1.0/LICENSE +13 -0
  192. package/release/licenses/d3-contour@4.0.2/LICENSE +13 -0
  193. package/release/licenses/d3-delaunay@6.0.4/LICENSE +14 -0
  194. package/release/licenses/d3-dispatch@3.0.1/LICENSE +13 -0
  195. package/release/licenses/d3-drag@3.0.0/LICENSE +13 -0
  196. package/release/licenses/d3-dsv@3.0.1/LICENSE +13 -0
  197. package/release/licenses/d3-ease@3.0.1/LICENSE +28 -0
  198. package/release/licenses/d3-fetch@3.0.1/LICENSE +13 -0
  199. package/release/licenses/d3-force@3.0.0/LICENSE +13 -0
  200. package/release/licenses/d3-format@3.1.2/LICENSE +13 -0
  201. package/release/licenses/d3-geo@3.1.1/LICENSE +34 -0
  202. package/release/licenses/d3-hierarchy@3.1.2/LICENSE +13 -0
  203. package/release/licenses/d3-interpolate@3.0.1/LICENSE +13 -0
  204. package/release/licenses/d3-path@3.1.0/LICENSE +13 -0
  205. package/release/licenses/d3-polygon@3.0.1/LICENSE +13 -0
  206. package/release/licenses/d3-quadtree@3.0.1/LICENSE +13 -0
  207. package/release/licenses/d3-random@3.0.1/LICENSE +13 -0
  208. package/release/licenses/d3-scale-chromatic@3.1.0/LICENSE +28 -0
  209. package/release/licenses/d3-scale@4.0.2/LICENSE +13 -0
  210. package/release/licenses/d3-selection@3.0.0/LICENSE +13 -0
  211. package/release/licenses/d3-shape@3.2.0/LICENSE +13 -0
  212. package/release/licenses/d3-time-format@4.1.0/LICENSE +13 -0
  213. package/release/licenses/d3-time@3.1.0/LICENSE +13 -0
  214. package/release/licenses/d3-timer@3.0.1/LICENSE +13 -0
  215. package/release/licenses/d3-transition@3.0.1/LICENSE +13 -0
  216. package/release/licenses/d3-zoom@3.0.0/LICENSE +13 -0
  217. package/release/licenses/d3@7.9.0/LICENSE +13 -0
  218. package/release/licenses/delaunator@5.1.0/LICENSE +15 -0
  219. package/release/licenses/elkjs@0.12.0/LICENSE.md +263 -0
  220. package/release/licenses/fast-deep-equal@3.1.3/LICENSE +21 -0
  221. package/release/licenses/fast-uri@3.1.7/LICENSE +30 -0
  222. package/release/licenses/fflate@0.8.2/LICENSE +21 -0
  223. package/release/licenses/graceful-fs@4.2.11/LICENSE +15 -0
  224. package/release/licenses/iconv-lite@0.6.3/LICENSE +21 -0
  225. package/release/licenses/internmap@2.0.3/LICENSE +13 -0
  226. package/release/licenses/json-schema-traverse@1.0.0/LICENSE +21 -0
  227. package/release/licenses/lucide-react@0.468.0/LICENSE +15 -0
  228. package/release/licenses/minipass@7.1.3/LICENSE.md +55 -0
  229. package/release/licenses/minizlib@3.1.0/LICENSE +26 -0
  230. package/release/licenses/proper-lockfile@4.1.2/LICENSE +21 -0
  231. package/release/licenses/require-from-string@2.0.2/license +21 -0
  232. package/release/licenses/retry@0.12.0/License +21 -0
  233. package/release/licenses/robust-predicates@3.0.3/LICENSE +24 -0
  234. package/release/licenses/rw@1.3.3/LICENSE +26 -0
  235. package/release/licenses/safer-buffer@2.1.2/LICENSE +21 -0
  236. package/release/licenses/signal-exit@3.0.7/LICENSE.txt +16 -0
  237. package/release/licenses/tar@7.5.7/LICENSE.md +55 -0
  238. package/release/licenses/use-sync-external-store@1.6.0/LICENSE +21 -0
  239. package/release/licenses/yallist@5.0.0/LICENSE.md +63 -0
  240. package/release/licenses/zustand@4.5.7/LICENSE +21 -0
  241. package/release/openwrite-5.8.1-py3-none-any.whl +0 -0
  242. package/release/platform-overrides.in +5 -0
  243. package/release/python-constraints.in +96 -0
  244. package/release/requirements.lock +2927 -0
  245. package/release/runtime-manifest.json +98 -0
  246. package/release/sdk-compatibility.json +240 -0
  247. package/release/source.json +859 -0
  248. package/release/wheels/cryptography-50.0.1-cp312-abi3-macosx_13_0_x86_64.whl +0 -0
  249. package/release/wheels/licenses/LICENSE.txt +177 -0
  250. package/release/wheels/provenance.json +15 -0
  251. package/scripts/dog/delivery-stage.js +32 -0
  252. package/scripts/dog/import-chapter.js +20 -0
  253. package/scripts/dog/import-record.js +35 -0
  254. package/scripts/dog/review-dimension.js +41 -0
  255. package/scripts/dog/review-record.js +42 -0
  256. package/scripts/maintenance.mjs +179 -0
  257. package/scripts/prepare.mjs +21 -0
  258. package/vendor/dsh-dog/LICENSE +29 -0
  259. package/vendor/dsh-dog/README.md +114 -0
  260. package/vendor/dsh-dog/UPSTREAM.md +22 -0
  261. package/vendor/dsh-dog/cordis.patch.yml +14 -0
  262. package/vendor/dsh-dog/lib/client.js +2898 -0
  263. package/vendor/dsh-dog/lib/client.js.map +1 -0
  264. package/vendor/dsh-dog/lib/core-BiEBMLz3.d.ts +495 -0
  265. package/vendor/dsh-dog/lib/core-DdfMcrB4.js +2074 -0
  266. package/vendor/dsh-dog/lib/core.d.ts +2 -0
  267. package/vendor/dsh-dog/lib/core.js +2 -0
  268. package/vendor/dsh-dog/lib/index.d.ts +133 -0
  269. package/vendor/dsh-dog/lib/index.js +967 -0
  270. package/vendor/dsh-dog/package.json +97 -0
  271. package/vendor/dsh-dog/schemas/schema-0.2/graph.schema.json +139 -0
  272. package/vendor/dsh-dog/schemas/schema-0.2/report.schema.json +87 -0
  273. package/vendor/dsh-dog/schemas/schema-0.2/run.schema.json +259 -0
  274. package/vendor/dsh-dog/schemas/schema-0.2/runtime-event.schema.json +105 -0
  275. package/vendor/dsh-dog/schemas/schema-0.2/verification.schema.json +40 -0
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025-2026 oh-story-claudecode
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,36 @@
1
+ ---
2
+ name: oh-story-deslop
3
+ description: 诊断并精修网络小说中的机械 AI 读感,包括重复解释、句式过度齐整、对话同声、抽象判断、万能身体反应、空泛氛围和无功能金句。用于去 AI 味、自然化润色或在保留作者声音的前提下压缩文本。
4
+ user-invocable: false
5
+ license: MIT
6
+ metadata:
7
+ openwrite:
8
+ version: 0.7.2-openwrite.1
9
+ agents: [openwrite, reviewer]
10
+ allow_tools: ["*"]
11
+ references: [references/method.md]
12
+ budget:
13
+ max_instruction_chars: 5000
14
+ max_reference_chars: 6000
15
+ max_tool_calls: 20
16
+ ---
17
+
18
+ # Oh Story 去 AI 味
19
+
20
+ 把 AI 味视为读感和叙事功能问题,不把词表命中当作错误。先确认用户要扫描、局部示范还是全文精修;默认先报告问题和样例,不擅自覆盖正文。
21
+
22
+ ## 执行流程
23
+
24
+ 1. 读取作者意图、人物声音、题材气质和当前段落功能,建立必须保留的内容。
25
+ 2. 使用 `references/method.md` 扫描重复解释、句式齐整、对话同声、抽象判断和装饰性表达。
26
+ 3. 按对读感的影响分级,优先修改高频且无功能的模式,不追求把所有句子变得不同。
27
+ 4. 用最小改动恢复动作、选择、潜台词和节奏;结构或事实问题转交 `@oh-story-review`,不在润色中暗改。
28
+ 5. 输出修改统计和少量前后对照;用户明确要求全文精修时才给完整候选稿。
29
+
30
+ ## OpenWrite 边界
31
+
32
+ - 不改变事实、视角、人物动机、信息顺序、结局或已确认人物声音。需要改变时先作为建议提交。
33
+ - 不运行上游检查、标点归一化或禁词脚本;不创建豁免词文件。
34
+ - 正文写入继续遵守 OpenWrite workflow 与确认边界,只使用当前 Agent 已有工具。
35
+
36
+ 本 Skill 改编自 [oh-story-claudecode](https://github.com/worldwonderer/oh-story-claudecode) 的 `story-deslop`,基于提交 `48a4789d1f542eb672addf8ccb5dbdc20e63be46`;MIT 许可见同目录 `LICENSE`。
@@ -0,0 +1,4 @@
1
+ interface:
2
+ display_name: "Oh Story 去 AI 味"
3
+ short_description: "用于诊断机械文本模式并在保留作者声音前提下自然化精修的方法"
4
+ default_prompt: "使用 $oh-story-deslop 在保留作者声音的前提下精修当前文本。"
@@ -0,0 +1,22 @@
1
+ # 去 AI 味方法
2
+
3
+ ## 诊断对象
4
+
5
+ - 已通过行动表达情绪后继续解释同一结论。
6
+ - 段落长度、句式、转折和总结过度整齐。
7
+ - 所有人说话都完整、礼貌、信息密集且没有目的差异。
8
+ - 抽象判断多,具体动作、感官和环境反馈少。
9
+ - 同义改写反复总结,场景状态却没有变化。
10
+ - 万能身体反应、空泛氛围、比喻、破折号、短句或金句被批量使用。
11
+
12
+ 某个词只有在上下文没有功能时才建议替换。人物口癖、题材术语、节奏性重复、刻意叙述距离和有效留白可以保留。
13
+
14
+ ## 最小修订
15
+
16
+ 按以下顺序选择最小手段:删除重复解释;把抽象判断换成能影响互动的动作;让对话带目的、回避和潜台词;打破无意义的句式齐整;补一个有选择后果的细节;删除只承担装饰的比喻或总结句。
17
+
18
+ 不要把自然化等同于口语化,也不要把所有长句拆短、所有短句合并。变化必须服务场景情绪与叙述者声音。
19
+
20
+ ## 输出
21
+
22
+ 先给整体读感、主要模式和修改优先级。逐项给位置、原文、问题功能、建议稿和保留理由。全文模式下补充修改统计与仍需作者确认的句段。若文本本身自然,明确说明无需为追求“去 AI 味”继续改动。
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025-2026 oh-story-claudecode
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,37 @@
1
+ ---
2
+ name: oh-story-long-analyze
3
+ description: 证据化拆解用户合法提供的长篇小说,分析开篇契约、逐章推进、剧情单元、人物关系、世界设定、情绪节奏、伏笔和表达技法。用于拆书、分析黄金开篇、建立对标报告或提炼可迁移模块。
4
+ user-invocable: false
5
+ license: MIT
6
+ metadata:
7
+ openwrite:
8
+ version: 0.7.2-openwrite.1
9
+ agents: [openwrite]
10
+ allow_tools: ["*"]
11
+ references: [references/method.md]
12
+ budget:
13
+ max_instruction_chars: 5000
14
+ max_reference_chars: 7000
15
+ max_tool_calls: 20
16
+ ---
17
+
18
+ # Oh Story 长篇拆解
19
+
20
+ 把拆解视为只读、转化性的文学分析。先确认材料来源、用户有权使用的范围、章节边界和期望深度;材料不完整时标注限制,不用常识补齐原作事实。
21
+
22
+ ## 执行流程
23
+
24
+ 1. 先做作品概览与开篇样本,产出快速预览;除非用户明确要求完整拆解,否则在扩大到全书前停靠确认。
25
+ 2. 使用 `references/method.md` 依次处理章节边界、开篇、逐章摘要、剧情聚合、人物设定、汇总报告和表达技法。
26
+ 3. 每条硬事实标注可定位证据,区分原文事实、分析推断、迁移建议和待验证假设。
27
+ 4. 把具体桥段抽象为功能位、情绪机制和输入输出条件,不生成可替代原作的逐章复述。
28
+ 5. 数据量过大时分批推进并报告已覆盖范围、失败项和下一停靠点,不口头宣称全书完成。
29
+
30
+ ## OpenWrite 边界
31
+
32
+ - 通过现有参考库保存与拆解材料,不创建上游 `拆文库/`、进度文件或自定义 Agent 目录。
33
+ - 参考作品默认不污染当前小说;候选方法进入规划讨论后仍需预览 diff 和明确确认。
34
+ - 不大段复制原文,不复制专名、独特设定、标志性场景或措辞到项目资产。
35
+ - 不执行上游提取脚本、hooks 或并行 Agent 协议;只使用当前 OpenWrite 工具。
36
+
37
+ 本 Skill 改编自 [oh-story-claudecode](https://github.com/worldwonderer/oh-story-claudecode) 的 `story-long-analyze`,基于提交 `48a4789d1f542eb672addf8ccb5dbdc20e63be46`;MIT 许可见同目录 `LICENSE`。
@@ -0,0 +1,4 @@
1
+ interface:
2
+ display_name: "Oh Story 长篇拆解"
3
+ short_description: "用于从开篇、章节和剧情单元证据化拆解长篇小说的方法"
4
+ default_prompt: "使用 $oh-story-long-analyze 对用户提供的长篇作品做证据化拆解。"
@@ -0,0 +1,22 @@
1
+ # 长篇拆解方法
2
+
3
+ ## 阶段
4
+
5
+ 1. 识别章节边界、作品范围和可用文本,记录缺页、重复章与异常标题。
6
+ 2. 分析开篇样本:读者契约、主角代理权、核心异常、首个期待债、首次兑现和继续阅读问题。
7
+ 3. 为各章记录目标、阻力、关键选择、情节点、信息变化、情绪触点、角色状态和章末卡点。
8
+ 4. 聚合剧情单元:铺垫、升级、爆发、结算、余波及下一单元接口;梳理主支线、伏笔和冲突升级路径。
9
+ 5. 合并人物别名与关系演变,提取世界规则和能力边界;所有数值、称谓与先后顺序回查文本。
10
+ 6. 汇总读者需求、情绪引擎、节奏规律、可迁移模块及其失败条件;表达层单独分析视角距离、句长、对话潜台词和描写密度。
11
+
12
+ 开篇预览有价值后再扩大范围。长篇全量拆解可能跨多轮,按实际产物与覆盖数记录进度。
13
+
14
+ ## 证据协议
15
+
16
+ 结论至少指向章节、段落或可定位事件。事实没有直接证据时写“原文未明确”;推断列出支持证据和反证可能。不要用角色摘要或后续报告替代原始文本的事实核对。
17
+
18
+ ## 可迁移模块
19
+
20
+ 把人物抽象为决策者、阻碍者、盟友、见证者、误导源或关系催化剂;把情节抽象为前置条件、关键选择、情绪机制、结果和可替换变量。输出保留三层:原作证据摘要、功能解释、适用于当前项目的候选变体。
21
+
22
+ 多作品对照时分别标注共同机制与适用条件。单本作品只能支撑案例假设,不能直接证明市场规律。
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025-2026 oh-story-claudecode
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,36 @@
1
+ ---
2
+ name: oh-story-long-scan
3
+ description: 研究长篇网文平台与榜单样本,分析读者契约、题材组合、主角机制、开篇兑现、更新阶段、升级空间和作者适配度。用于长篇扫榜、市场趋势观察、选题比较或开书前验证方向。
4
+ user-invocable: false
5
+ license: MIT
6
+ metadata:
7
+ openwrite:
8
+ version: 0.7.2-openwrite.1
9
+ agents: [openwrite]
10
+ allow_tools: ["*"]
11
+ references: [references/method.md]
12
+ budget:
13
+ max_instruction_chars: 5000
14
+ max_reference_chars: 6000
15
+ max_tool_calls: 20
16
+ ---
17
+
18
+ # Oh Story 长篇市场研究
19
+
20
+ 把榜单当作有偏差的市场样本,不把排名本身当作选题答案。先确认平台、榜单口径、目标读者、题材范围、采样日期和作者自身优势。
21
+
22
+ ## 执行流程
23
+
24
+ 1. 收集可复核样本,并为每组数据记录平台、榜单类型、链接、访问日期、可见口径和样本量。
25
+ 2. 使用 `references/method.md` 编码题材组合、情绪承诺、主角起点、核心机制、首个冲突、首次兑现和长期升级空间。
26
+ 3. 先报告样本频次,再解释可能机制;把样本少的新组合标为信号,不直接称为趋势。
27
+ 4. 输出多个选题候选,分别说明市场证据、作者适配、差异化、开篇验证方式、持续写作空间和风险。
28
+ 5. 市场结论只作为规划阶段的讨论输入,不直接改写项目资产。
29
+
30
+ ## 数据边界
31
+
32
+ - 不执行上游 Node、CDP 或平台抓榜脚本,不启动或重启浏览器,不绕过登录或访问限制。
33
+ - 只使用当前会话可访问、Deep Research 返回或用户提供的来源;无法获得实时数据时给研究框架和待查清单,不伪造最新榜单。
34
+ - 区分流量榜、付费榜、新书榜、完结榜和编辑推荐,说明推荐位、作者存量读者、热点事件等偏差。
35
+
36
+ 本 Skill 改编自 [oh-story-claudecode](https://github.com/worldwonderer/oh-story-claudecode) 的 `story-long-scan`,基于提交 `48a4789d1f542eb672addf8ccb5dbdc20e63be46`;MIT 许可见同目录 `LICENSE`。
@@ -0,0 +1,4 @@
1
+ interface:
2
+ display_name: "Oh Story 长篇市场研究"
3
+ short_description: "用于研究长篇平台样本、读者契约、升级空间和选题机会的方法"
4
+ default_prompt: "使用 $oh-story-long-scan 研究带来源和日期的长篇市场样本。"
@@ -0,0 +1,21 @@
1
+ # 长篇市场研究方法
2
+
3
+ ## 样本字段
4
+
5
+ 记录作品、平台、榜单与排名口径、采样日期、连载状态、字数或章节、主副题材、目标情绪、主角起点、独特机制、首个冲突、首次兑现、更新阶段和可见成绩。缺失字段留空,不通过书名或简介猜测硬数据。
6
+
7
+ ## 分析问题
8
+
9
+ - 同一榜单中哪些读者承诺反复出现,兑现速度有何差异?
10
+ - 热门题材依赖什么主角机制和持续升级台阶?
11
+ - 新书与成熟作品的题材组合是否不同?
12
+ - 哪些方向高度同质化,差异主要来自设定、职业经验、关系或叙事视角?
13
+ - 作者能否稳定交付目标篇幅,核心机制能否支撑中长期冲突?
14
+
15
+ 分别观察流量、付费、追读或收藏等可见指标,不能把不同口径直接合并成一个热度分数。
16
+
17
+ ## 选题候选
18
+
19
+ 每个候选包含目标读者、核心情绪、样本证据、作者优势、差异化变量、开篇最小验证、三阶段升级空间、主要风险和需要进一步拆文验证的假设。将“观察到的数据”与“创作判断”分栏。
20
+
21
+ 推荐不只按热度排序。作者适配差、长期空间不足或同质化过高时,即使当前样本频繁也应降级。单次采样只形成假设,跨日期、跨榜单或拆解代表作品后再提高置信度。
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025-2026 oh-story-claudecode
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,37 @@
1
+ ---
2
+ name: oh-story-long-write
3
+ description: 规划和创作长篇网络小说,覆盖选题定位、读者契约、人物与世界设定、卷纲细纲、单章写作、日更续写和结构修订。用于开书、补纲、写指定章节、续写或回炉长篇正文。
4
+ user-invocable: false
5
+ license: MIT
6
+ metadata:
7
+ openwrite:
8
+ version: 0.7.2-openwrite.1
9
+ agents: [openwrite]
10
+ allow_tools: ["*"]
11
+ references: [references/method.md]
12
+ budget:
13
+ max_instruction_chars: 5000
14
+ max_reference_chars: 7000
15
+ max_tool_calls: 20
16
+ ---
17
+
18
+ # Oh Story 长篇写作
19
+
20
+ 先读取当前作品状态和用户本轮目标,再选择开书、补纲、写指定章、续写或修订。裸调用时只诊断所处阶段并给出下一步,不自动生成正文。
21
+
22
+ ## 执行流程
23
+
24
+ 1. 明确本轮交付范围和停靠点。用户没有指定正文数量时最多处理一章;只要求规划时停在候选或大纲交付。
25
+ 2. 先处理读者契约、人物、世界、关系、全书阶段、卷纲和细纲,再根据已确认资产写正文或做局部修订。
26
+ 3. 使用 `references/method.md` 检查情绪承诺、主角代理权、冲突升级、剧情单元和章末钩子。
27
+ 4. 写章前只召回不知道就会写错的资料:当前细纲、最近正文、出场人物状态、相关规则、伏笔和当前关注点。
28
+ 5. 写完检查事实连续性、角色选择、信息变化、情绪结算和章节状态;结构问题优先于句子润色。
29
+
30
+ ## OpenWrite 边界
31
+
32
+ - 把 `src/` 视为确认版真源,把 `data/` 视为正文、运行态和派生数据。不要创建上游的 `设定/`、`对标/`、`拆文库/` 或追踪文件结构。
33
+ - 对大纲、人物、世界、关系等正式资产先提交候选和 diff,只在用户本轮明确确认后写入。
34
+ - 缺少可写细纲、章节编号冲突或需要改变已确认设定时停止正文,回到规划阶段讨论。
35
+ - 只使用当前 Agent 已有工具;不执行上游 hooks、脚本或安装流程。
36
+
37
+ 本 Skill 改编自 [oh-story-claudecode](https://github.com/worldwonderer/oh-story-claudecode) 的 `story-long-write`,基于提交 `48a4789d1f542eb672addf8ccb5dbdc20e63be46`;MIT 许可见同目录 `LICENSE`。
@@ -0,0 +1,4 @@
1
+ interface:
2
+ display_name: "Oh Story 长篇写作"
3
+ short_description: "用于长篇网文选题、设定、大纲、单章写作和连续更新的方法"
4
+ default_prompt: "使用 $oh-story-long-write 规划或撰写当前长篇小说,并遵守 OpenWrite 的确认流程。"
@@ -0,0 +1,33 @@
1
+ # 长篇方法
2
+
3
+ ## 读者契约
4
+
5
+ 用一句话写清:谁在什么困境中,凭什么能力或选择,持续交付哪种情绪回报。列出主角不可替代的决策权、开篇承诺的期待债、终局资源和逐阶段解锁边界。题材标签只定位预期,真正约束写作的是承诺内容、兑现频率和升级方式。
6
+
7
+ ## 分层规划
8
+
9
+ 按全书、阶段或卷、剧情单元、章节、场景逐级缩小:
10
+
11
+ 1. 全书:主线矛盾、终局变化、情绪曲线、不可提前释放的底牌。
12
+ 2. 阶段或卷:阶段目标、主要对手、关系变化、阶段结算、下一阶段钩子。
13
+ 3. 剧情单元:主角目标、阻力升级、关键选择、可见战果和余波。
14
+ 4. 章节:进入状态、信息变化、情绪变化、章末未闭合问题。
15
+ 5. 场景:视角人物的即时目标、阻力、选择及其造成的局面变化。
16
+
17
+ 章数和比例只作估算。按题材节奏、承诺密度和作者更新能力校准,不为凑模板制造无效危机或代价。
18
+
19
+ ## 人物与冲突
20
+
21
+ 核心角色至少明确表层目标、深层需要、行动优势、反复错误、底线及与主线的利益关系。检查关键节点:谁让事件进入当前轨道,谁做出不可替代的选择,谁承担后果,收益与认可结算给谁。配角可以执行关键行动,但不能无声夺走已承诺的主角高光。
22
+
23
+ 冲突升级优先改变选择条件:时间更少、代价更真、信息被改写、盟友立场变化或旧办法失效。单纯提高敌人强度不等于升级。
24
+
25
+ ## 章卡与正文
26
+
27
+ 章卡至少记录目标情绪、读者期待、主角目标、阻力、关键选择、信息变化和章末问题。让信息通过行动、对话和环境阻力出现。情绪爆发包含铺垫、触发、结算和余波;悬念应让读者知道问题是什么,不靠隐去所有关键信息。
28
+
29
+ 写完确认本章改变了人物状态或局面、主角拥有因果权、结算回应承诺、章末钩子源自已发生事件、人物状态与前文连续。
30
+
31
+ ## 续写与修订
32
+
33
+ 续写先核对已确认大纲、最近完成章节与待写章状态。修订按事实与连续性、因果与角色选择、节奏与信息、表达的顺序处理。先修上游问题,再润色句子。
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025-2026 oh-story-claudecode
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,36 @@
1
+ ---
2
+ name: oh-story-review
3
+ description: 对网络小说大纲、章节或短篇成稿做证据化商业审稿,按事实连续性、因果、人物选择、读者契约、节奏、信息、对话和表达分级问题。用于章节验收、整稿诊断、投稿前审查或生成优先修订清单。
4
+ user-invocable: false
5
+ license: MIT
6
+ metadata:
7
+ openwrite:
8
+ version: 0.7.2-openwrite.1
9
+ agents: [reviewer, openwrite]
10
+ allow_tools: ["*"]
11
+ references: [references/method.md]
12
+ budget:
13
+ max_instruction_chars: 5000
14
+ max_reference_chars: 6000
15
+ max_tool_calls: 20
16
+ ---
17
+
18
+ # Oh Story 商业审稿
19
+
20
+ 先确认审查对象、范围、目标读者和用户要“只诊断”还是“诊断后给修改稿”。默认只输出审查报告,不直接改动正文。
21
+
22
+ ## 执行流程
23
+
24
+ 1. 读取当前项目已确认资产、相关正文和审稿范围,先做缺失资料与冲突预检。
25
+ 2. 使用 `references/method.md` 按阻断、严重、一般、润色四级检查,不让文风偏好掩盖事实或结构问题。
26
+ 3. 每条发现给出位置或引文、问题、读者影响、证据和最小修复方向;证据不足时标记“需补充”。
27
+ 4. 汇总最高优先级问题、可保留优点、建议修订顺序和仍需作者裁定的取舍。
28
+ 5. 只有用户明确要求修改时才生成候选稿;涉及正式正文提交时继续走 OpenWrite workflow。
29
+
30
+ ## OpenWrite 边界
31
+
32
+ - 以当前 `src/` 和已提交正文为事实基线,不把审稿偏好写成新设定。
33
+ - 不执行上游多 Agent、脚本或自动改稿协议;使用 OpenWrite 现有 Reviewer 和当前工具权限。
34
+ - 不因检查 AI 味而机械删除词语;表达层问题可转交 `@oh-story-deslop`。
35
+
36
+ 本 Skill 改编自 [oh-story-claudecode](https://github.com/worldwonderer/oh-story-claudecode) 的 `story-review`,基于提交 `48a4789d1f542eb672addf8ccb5dbdc20e63be46`;MIT 许可见同目录 `LICENSE`。
@@ -0,0 +1,4 @@
1
+ interface:
2
+ display_name: "Oh Story 商业审稿"
3
+ short_description: "用于按事实、因果、人物、节奏和表达分级审查网文稿件的方法"
4
+ default_prompt: "使用 $oh-story-review 审查当前稿件并给出有证据的优先修订建议。"
@@ -0,0 +1,25 @@
1
+ # 商业审稿方法
2
+
3
+ ## 问题分级
4
+
5
+ 1. 阻断:违背已确认设定、人物状态或时间线;关键因果缺失;章节任务未完成;文本无法进入后续 workflow。
6
+ 2. 严重:人物为情节突然降智;主角失去已承诺代理权;视角失控;冲突没有结算;关键信息无来源。
7
+ 3. 一般:节奏拖沓;对话同声;解释重复;情绪铺垫不足;钩子与正文脱节。
8
+ 4. 润色:句式、用词、标点和局部可读性,不影响上层结构。
9
+
10
+ 同一根因造成多个局部症状时合并为一条主发现,并列受影响位置,避免用数量夸大问题。
11
+
12
+ ## 检查维度
13
+
14
+ - 事实:称谓、时间、位置、伤势、能力、关系和世界规则能否与真源及前文对齐。
15
+ - 因果:事件是否由角色目标、阻力和选择推动,结果是否改变后续条件。
16
+ - 契约:本章承诺是否兑现或合理延迟,收益和认可是否结算给应得角色。
17
+ - 节奏:铺垫、升级、爆发、余波是否匹配目标情绪,重复段落是否带来变化。
18
+ - 信息:读者应知条件是否充分,悬念是否公平,解释是否过早或过晚。
19
+ - 表达:视角、对话声音、动作可视性和段落节奏是否服务场景。
20
+
21
+ ## 报告格式
22
+
23
+ 先给总体判断与前三项优先问题,再列严重度统计和逐条发现。每条包含 `位置 / 严重度 / 证据 / 影响 / 最小修复`。最后列修订顺序、无需修改的有效部分、证据不足项和作者待决问题。
24
+
25
+ 需要改写示例时只选择能证明方案的少量段落,提供“原文 / 建议稿 / 理由”。除非用户明确要求,不输出全文重写。
@@ -0,0 +1,16 @@
1
+ ---
2
+ name: progress
3
+ description: 看进度。Use when the author asks 看进度, 写到哪, 现在哪一章, or types /progress. Read OpenWrite status; do not invent a local workflow store.
4
+ ---
5
+
6
+ # 看进度
7
+
8
+ 接到已有 `novel_*`。不要另建进度文件或阶段机。
9
+
10
+ 1. `novel_status`:当前作品、阶段、资产缺口、待确认项。
11
+ 2. 需要章级细节时 `novel_chapter_work`。
12
+ 3. 后台工作 `novel_tasks_list`;进行中或待确认的任务 `novel_task_get`。
13
+
14
+ 向作者报告:当前章、正文是否存在、评审是否新鲜、任务 phase、伏笔到期/超期/待埋入计数。不要把内部 JSON 当主界面。
15
+
16
+ 细则见 workflow-manager。
@@ -0,0 +1,17 @@
1
+ ---
2
+ name: review-chapter
3
+ description: 审这一章。Use when the author asks 审这一章, 审查, 检查逻辑, or types /review-chapter. Run six-domain novel_review_chapter; do not rerun review from DoG.
4
+ ---
5
+
6
+ # 审这一章
7
+
8
+ 接到已有 `novel_*`。正式评审是六域累加;37 项只作展开查询。
9
+ 网文项目(`form: web_novel`)另附钩子 / 黄金三章 / 追读力可选准则,不计分。
10
+
11
+ 1. `novel_outline_read` 与 `novel_status` 确认章节。
12
+ 2. `novel_chapter_work` 读取正文 revision、评审新鲜度、本章伏笔义务。
13
+ 3. 尚无正文则提示先写章,不要空审。评审 stale 时先复评。
14
+ 4. `novel_review_chapter` 跑六域评审。
15
+ 5. 向作者报告质量分、覆盖率、门禁、交付状态,以及带正文证据的问题。
16
+
17
+ 作者要改稿时转到 /revise-span。查询已物化评审图用 dog-review-query,不要让 DoG 再调模型。细则见 novel-reviewer。
@@ -0,0 +1,16 @@
1
+ ---
2
+ name: revise-span
3
+ description: 改这段。Use when the author asks 改这段, 扩写, 缩写, 去 AI 味, 按审稿改, or types /revise-span. Stage revision hunks; never PUT the manuscript.
4
+ ---
5
+
6
+ # 改这段
7
+
8
+ 接到已有 `novel_*`。改稿只走修订提案,不直接整章覆盖。
9
+
10
+ 1. 选区扩写/缩写/去 AI 味:`novel_revision_create_selection`。
11
+ 2. 按审稿改:`novel_revision_create_from_review`(带 issue 与期望 revision)。
12
+ 3. 展示 before/after;作者确认后 `novel_revision_apply`(可带 `selected_hunk_ids`)。
13
+ 4. 提案 `source_revision` 与当前正文不一致时拒绝覆盖,改为 `novel_revision_regenerate` 或重新预览。
14
+ 5. 应用后必须 `novel_review_chapter` 复评。
15
+
16
+ 手工/润色类正文预览用 `novel_document_change_plan`。没有当前评审时,按审稿改失败闭合。细则见 novel-reviewer。
@@ -0,0 +1,135 @@
1
+ ---
2
+ name: style-system
3
+ description: Use when user wants to initialize style, extract reusable writing signals from user-supplied text, compose a project style guide, or analyze style drift.
4
+ user-invocable: false
5
+ ---
6
+
7
+ # 风格系统
8
+
9
+ ## 核心原则
10
+
11
+ OpenWrite 不再内置任何参考作品风格库。
12
+ 风格来源只分三层:
13
+
14
+ ```text
15
+ Layer 1: craft/ -> 通用技法与去模板化规则
16
+ Layer 2: data/novels/{id}/data/sources/{sid}/ -> 从用户提供文本提取出的 source pack
17
+ Layer 3: data/novels/{id}/src/** -> 本书确认版设定与约束
18
+ ```
19
+
20
+ 最终写作时,这三层会被合成为:
21
+
22
+ ```text
23
+ data/novels/{id}/data/style/composed.md
24
+ ```
25
+
26
+ ## 目标
27
+
28
+ 风格提取的目的不是“模仿某本书”,而是把用户提供文本里**可复用**的写法信号提出来,同时把**不可迁移**的作品特有信号隔离出去。
29
+
30
+ ## Source Pack
31
+
32
+ 每个提取源建议落到:
33
+
34
+ ```text
35
+ data/novels/{novel_id}/data/sources/{source_id}/
36
+ ├── source.md
37
+ ├── setting_profile.md
38
+ ├── style/
39
+ │ ├── summary.md
40
+ │ ├── voice.md
41
+ │ ├── language.md
42
+ │ ├── rhythm.md
43
+ │ ├── dialogue.md
44
+ │ ├── scene_templates.md
45
+ │ └── consistency.md
46
+ └── extraction/
47
+ ├── progress.json
48
+ ├── chunks/
49
+ └── batch_results/
50
+ ```
51
+
52
+ ## 支持的动作
53
+
54
+ ### 1. 风格初始化
55
+
56
+ 输出:
57
+
58
+ - `data/novels/{id}/data/style/fingerprint.yaml`
59
+
60
+ ### 2. 风格提取
61
+
62
+ 输入必须来自用户自己提供的文本文件。
63
+
64
+ 输出:
65
+
66
+ - `data/novels/{id}/data/sources/{source_id}/style/*.md`
67
+ - `data/novels/{id}/data/sources/{source_id}/setting_profile.md`
68
+ - `data/novels/{id}/data/sources/{source_id}/extraction/*`
69
+
70
+ ### 3. 风格合成
71
+
72
+ 读取:
73
+
74
+ - `craft/*`
75
+ - `data/novels/{id}/data/style/fingerprint.yaml`
76
+ - `data/novels/{id}/data/sources/{source_id}/style/*`
77
+ - `data/novels/{id}/src/**`
78
+
79
+ 输出:
80
+
81
+ - `data/novels/{id}/data/style/composed.md`
82
+
83
+ ### 4. 风格分析
84
+
85
+ 读取目标文本、`composed.md`、`craft/ai_patterns.yaml`,输出偏差和改进建议。
86
+
87
+ ## 提取规则
88
+
89
+ 每个发现都要分成两类:
90
+
91
+ - `reusable`
92
+ 可迁移的写法、节奏、叙述距离、对话密度、结构习惯
93
+
94
+ - `source_bound`
95
+ 不应直接迁移的专名、角色口癖、专属组织、签名梗、作品特定世界规则
96
+
97
+ 合成层只允许吸收 `reusable` 内容。
98
+
99
+ ## 推荐格式
100
+
101
+ 长期维护文档优先使用:
102
+
103
+ - `TOML front matter + Markdown 正文`
104
+
105
+ front matter 放:
106
+
107
+ - `id`
108
+ - `kind`
109
+ - `status`
110
+ - `source_type`
111
+ - `legal`
112
+ - `detail_refs`
113
+
114
+ 正文放:
115
+
116
+ - summary
117
+ - reusable_signals
118
+ - source_bound_signals
119
+ - negative_rules
120
+ - promotion_notes
121
+
122
+ ## 当前命令口径
123
+
124
+ - `openwrite style extract <source_id> --source <file>`
125
+ - `openwrite setting extract <source_id> --source <file>`
126
+ - `openwrite source review <source_id>`
127
+ - `openwrite source promote <source_id> --target all`
128
+ - `openwrite style synthesize`
129
+
130
+ 其中 `source promote --target all` 会把:
131
+ - style 信号晋升到当前 `style_id`
132
+ - setting 提要并入 `foundation.md`
133
+ - rules / timeline / factions 按类型拆进 `src/world/*.md`
134
+
135
+ 不要再使用“内置参考作品”“合成风格参考库”这类说法。