dsh-chapter-whale 0.0.0-stage → 0.4.3

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 (1174) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +216 -2
  3. package/RELEASE_STATUS.md +61 -0
  4. package/THIRD_PARTY_NOTICES.md +16 -0
  5. package/assets/chapter-whale-overview.png +0 -0
  6. package/assets/screenshots/01-automation.png +0 -0
  7. package/assets/screenshots/02-dashboard.png +0 -0
  8. package/assets/screenshots/03-free-channels.png +0 -0
  9. package/assets/screenshots/04-chapters.png +0 -0
  10. package/assets/screenshots/05-memory.png +0 -0
  11. package/assets/screenshots/06-creative-brief.png +0 -0
  12. package/assets/screenshots/07-model-settings.png +0 -0
  13. package/backend/fanqie_auto_publish/README.md +133 -0
  14. package/backend/fanqie_auto_publish/login.py +42 -0
  15. package/backend/fanqie_auto_publish/publication_safety.py +306 -0
  16. package/backend/fanqie_auto_publish/publish.py +1100 -0
  17. package/backend/fanqie_auto_publish/requirements.txt +2 -0
  18. package/backend/integration/README.md +72 -0
  19. package/backend/integration/__init__.py +2 -0
  20. package/backend/integration/bridge.py +1158 -0
  21. package/backend/integration/chapter_versions.py +706 -0
  22. package/backend/integration/character_state.py +435 -0
  23. package/backend/integration/context_budget.py +131 -0
  24. package/backend/integration/continuity.py +246 -0
  25. package/backend/integration/costs.py +652 -0
  26. package/backend/integration/credential_codec.py +40 -0
  27. package/backend/integration/daily_word_goal.py +92 -0
  28. package/backend/integration/editorial_recovery.py +71 -0
  29. package/backend/integration/editorial_release.py +158 -0
  30. package/backend/integration/failure_info.py +108 -0
  31. package/backend/integration/fallback_budget.py +88 -0
  32. package/backend/integration/free_channels.py +175 -0
  33. package/backend/integration/free_pool.py +179 -0
  34. package/backend/integration/length_policy.py +36 -0
  35. package/backend/integration/local_completion.py +511 -0
  36. package/backend/integration/memory_extraction.py +160 -0
  37. package/backend/integration/memory_library.py +798 -0
  38. package/backend/integration/model_roles.py +307 -0
  39. package/backend/integration/ofm_runtime.py +191 -0
  40. package/backend/integration/ofm_service.mjs +24 -0
  41. package/backend/integration/owned_service.py +44 -0
  42. package/backend/integration/planning_failover.py +102 -0
  43. package/backend/integration/planning_output.py +88 -0
  44. package/backend/integration/provider_circuit.py +33 -0
  45. package/backend/integration/provider_client.py +190 -0
  46. package/backend/integration/providers.py +221 -0
  47. package/backend/integration/quality_gate.py +249 -0
  48. package/backend/integration/quality_score.py +245 -0
  49. package/backend/integration/reasoning.py +26 -0
  50. package/backend/integration/recovery.py +237 -0
  51. package/backend/integration/resource_policy.py +81 -0
  52. package/backend/integration/retrieval_config.py +44 -0
  53. package/backend/integration/retrieval_health.py +46 -0
  54. package/backend/integration/retry_budget.py +76 -0
  55. package/backend/integration/revision_plan.py +414 -0
  56. package/backend/integration/revision_workflow.py +134 -0
  57. package/backend/integration/scene_writer.py +97 -0
  58. package/backend/integration/scenes.py +153 -0
  59. package/backend/integration/scheduler.py +917 -0
  60. package/backend/integration/secret_store.py +208 -0
  61. package/backend/integration/serial_delivery.py +363 -0
  62. package/backend/integration/serial_service.py +255 -0
  63. package/backend/integration/studio.py +383 -0
  64. package/backend/integration/style_profile.py +290 -0
  65. package/backend/integration/style_stats.py +138 -0
  66. package/backend/integration/ten_chapter_delivery.py +621 -0
  67. package/backend/integration/text_checks.py +56 -0
  68. package/backend/integration/version_history.py +231 -0
  69. package/backend/integration/watchdog.py +73 -0
  70. package/backend/integration/workflow.py +112 -0
  71. package/backend/integration/writer_runner.py +997 -0
  72. package/backend/manager/__init__.py +1 -0
  73. package/backend/manager/ai_tools.py +216 -0
  74. package/backend/manager/app.py +1338 -0
  75. package/backend/manager/audit_inventory.py +52 -0
  76. package/backend/manager/device_access.py +211 -0
  77. package/backend/manager/free_model_api.py +64 -0
  78. package/backend/manager/job_progress.py +18 -0
  79. package/backend/manager/provider_api.py +141 -0
  80. package/backend/manager/role_checks.py +126 -0
  81. package/backend/manager/runtime_health.py +48 -0
  82. package/backend/manager/static/app.js +402 -0
  83. package/backend/manager/static/costs.js +90 -0
  84. package/backend/manager/static/editorial.css +510 -0
  85. package/backend/manager/static/free-models.css +28 -0
  86. package/backend/manager/static/free-models.js +86 -0
  87. package/backend/manager/static/index.html +140 -0
  88. package/backend/manager/static/memory.js +58 -0
  89. package/backend/manager/static/ofm-channel-card.css +1 -0
  90. package/backend/manager/static/ofm-channel-card.js +17169 -0
  91. package/backend/manager/static/pair.html +27 -0
  92. package/backend/manager/static/pair.js +17 -0
  93. package/backend/manager/static/providers.css +86 -0
  94. package/backend/manager/static/providers.js +181 -0
  95. package/backend/manager/static/studio.css +243 -0
  96. package/backend/manager/static/style.css +28 -0
  97. package/backend/manager/worker.py +182 -0
  98. package/backend/vendor/ofm-source-lock.json +105 -0
  99. package/backend/vendor/our-free-model-source/LICENSE +21 -0
  100. package/backend/vendor/our-free-model-source/package.json +79 -0
  101. package/backend/vendor/our-free-model-source/packages/standalone/channels/business.mjs +69193 -0
  102. package/backend/vendor/our-free-model-source/packages/standalone/channels/contracts.mjs +37 -0
  103. package/backend/vendor/our-free-model-source/packages/standalone/channels/credentials.mjs +59 -0
  104. package/backend/vendor/our-free-model-source/packages/standalone/channels/images.mjs +44 -0
  105. package/backend/vendor/our-free-model-source/packages/standalone/channels/runtime.mjs +139 -0
  106. package/backend/vendor/our-free-model-source/packages/standalone/channels/worker.mjs +154 -0
  107. package/backend/vendor/our-free-model-source/packages/standalone/cli.mjs +56 -0
  108. package/backend/vendor/our-free-model-source/packages/standalone/eac.mjs +122 -0
  109. package/backend/vendor/our-free-model-source/packages/standalone/login-terminal.mjs +64 -0
  110. package/backend/vendor/our-free-model-source/packages/standalone/management.mjs +330 -0
  111. package/backend/vendor/our-free-model-source/packages/standalone/open-external.mjs +19 -0
  112. package/backend/vendor/our-free-model-source/packages/standalone/package.json +36 -0
  113. package/backend/vendor/our-free-model-source/packages/standalone/service.mjs +348 -0
  114. package/backend/vendor/our-free-model-source/packages/standalone/vite.config.mjs +22 -0
  115. package/backend/vendor/our-free-model-source/packages/standalone/web/_ofm-provider-list-D9WP3xjp.js +1 -0
  116. package/backend/vendor/our-free-model-source/packages/standalone/web/app.css +1 -0
  117. package/backend/vendor/our-free-model-source/packages/standalone/web/app.js +13 -0
  118. package/backend/vendor/our-free-model-source/packages/standalone/web/assets.json +12 -0
  119. package/backend/vendor/our-free-model-source/packages/standalone/web/channels-DtR2ayCL.js +414 -0
  120. package/backend/vendor/our-free-model-source/packages/standalone/web/channels-kEN3gKhj.js +1029 -0
  121. package/backend/vendor/our-free-model-source/packages/standalone/web/index.html +12 -0
  122. package/backend/vendor/our-free-model-source/packages/standalone/web/models-ishsHIe7.js +1 -0
  123. package/backend/vendor/our-free-model-source/packages/standalone/web/search-RZVy3Eoo.js +1 -0
  124. package/backend/vendor/our-free-model-source/packages/standalone/web/settings-DYjyfDI2.js +1 -0
  125. package/backend/vendor/our-free-model-source/packages/standalone/web/splash.html +324 -0
  126. package/backend/vendor/our-free-model-source/packages/standalone/web/usage-BOibUWax.js +1 -0
  127. package/backend/vendor/our-free-model-source/packages/standalone/web/visibility-data-9WWAmLOB.js +1 -0
  128. package/backend/vendor/our-free-model-source/packages/standalone/web/x-CzfajR1e.js +1 -0
  129. package/backend/vendor/our-free-model-source/src/adapter.js +829 -0
  130. package/backend/vendor/our-free-model-source/src/aggregate.js +727 -0
  131. package/backend/vendor/our-free-model-source/src/anthropic.js +834 -0
  132. package/backend/vendor/our-free-model-source/src/catalog.js +605 -0
  133. package/backend/vendor/our-free-model-source/src/chan-relay.js +193 -0
  134. package/backend/vendor/our-free-model-source/src/channel.js +40 -0
  135. package/backend/vendor/our-free-model-source/src/combos.js +179 -0
  136. package/backend/vendor/our-free-model-source/src/core/completion.js +191 -0
  137. package/backend/vendor/our-free-model-source/src/core/runtime.js +391 -0
  138. package/backend/vendor/our-free-model-source/src/core/stats.js +98 -0
  139. package/backend/vendor/our-free-model-source/src/deferred-response.js +44 -0
  140. package/backend/vendor/our-free-model-source/src/eac-login.js +115 -0
  141. package/backend/vendor/our-free-model-source/src/eac-user.js +83 -0
  142. package/backend/vendor/our-free-model-source/src/eac.js +276 -0
  143. package/backend/vendor/our-free-model-source/src/effort.js +280 -0
  144. package/backend/vendor/our-free-model-source/src/egress.js +842 -0
  145. package/backend/vendor/our-free-model-source/src/failure.js +39 -0
  146. package/backend/vendor/our-free-model-source/src/feed.js +310 -0
  147. package/backend/vendor/our-free-model-source/src/forward.js +1328 -0
  148. package/backend/vendor/our-free-model-source/src/http.js +581 -0
  149. package/backend/vendor/our-free-model-source/src/image-pricing.js +12 -0
  150. package/backend/vendor/our-free-model-source/src/kilo.js +168 -0
  151. package/backend/vendor/our-free-model-source/src/local-optimize.js +446 -0
  152. package/backend/vendor/our-free-model-source/src/messages.js +429 -0
  153. package/backend/vendor/our-free-model-source/src/open-external.js +35 -0
  154. package/backend/vendor/our-free-model-source/src/picks.js +197 -0
  155. package/backend/vendor/our-free-model-source/src/probe.js +236 -0
  156. package/backend/vendor/our-free-model-source/src/providers/index.js +215 -0
  157. package/backend/vendor/our-free-model-source/src/providers/registry.json +4927 -0
  158. package/backend/vendor/our-free-model-source/src/push.js +92 -0
  159. package/backend/vendor/our-free-model-source/src/recovery.js +131 -0
  160. package/backend/vendor/our-free-model-source/src/reload.js +307 -0
  161. package/backend/vendor/our-free-model-source/src/route/classify.js +542 -0
  162. package/backend/vendor/our-free-model-source/src/sponsor.js +209 -0
  163. package/backend/vendor/our-free-model-source/src/store.js +555 -0
  164. package/backend/vendor/our-free-model-source/src/stream.js +540 -0
  165. package/backend/vendor/our-free-model-source/src/token-saver/index.js +151 -0
  166. package/backend/vendor/our-free-model-source/src/token-saver/inject.js +434 -0
  167. package/backend/vendor/our-free-model-source/src/token-saver/prompts.js +239 -0
  168. package/backend/vendor/our-free-model-source/src/token-saver/rtk/applyFilter.js +39 -0
  169. package/backend/vendor/our-free-model-source/src/token-saver/rtk/autodetect.js +171 -0
  170. package/backend/vendor/our-free-model-source/src/token-saver/rtk/constants.js +142 -0
  171. package/backend/vendor/our-free-model-source/src/token-saver/rtk/filters/buildOutput.js +142 -0
  172. package/backend/vendor/our-free-model-source/src/token-saver/rtk/filters/dedupLog.js +58 -0
  173. package/backend/vendor/our-free-model-source/src/token-saver/rtk/filters/find.js +64 -0
  174. package/backend/vendor/our-free-model-source/src/token-saver/rtk/filters/gitDiff.js +123 -0
  175. package/backend/vendor/our-free-model-source/src/token-saver/rtk/filters/gitLog.js +114 -0
  176. package/backend/vendor/our-free-model-source/src/token-saver/rtk/filters/gitStatus.js +128 -0
  177. package/backend/vendor/our-free-model-source/src/token-saver/rtk/filters/grep.js +52 -0
  178. package/backend/vendor/our-free-model-source/src/token-saver/rtk/filters/ls.js +103 -0
  179. package/backend/vendor/our-free-model-source/src/token-saver/rtk/filters/readNumbered.js +37 -0
  180. package/backend/vendor/our-free-model-source/src/token-saver/rtk/filters/searchList.js +64 -0
  181. package/backend/vendor/our-free-model-source/src/token-saver/rtk/filters/smartTruncate.js +27 -0
  182. package/backend/vendor/our-free-model-source/src/token-saver/rtk/filters/tree.js +42 -0
  183. package/backend/vendor/our-free-model-source/src/token-saver/rtk/hitLine.js +83 -0
  184. package/backend/vendor/our-free-model-source/src/token-saver/rtk/index.js +384 -0
  185. package/backend/vendor/our-free-model-source/src/token-saver/rtk/registry.js +57 -0
  186. package/backend/vendor/our-free-model-source/src/trust.js +184 -0
  187. package/backend/vendor/our-free-model-source/src/updater.js +1034 -0
  188. package/backend/vendor/our-free-model-source/src/upstream.js +591 -0
  189. package/backend/vendor/our-free-model-source/src/vault-anchor.js +2 -0
  190. package/backend/vendor/our-free-model-source/src/vault-data.js +3 -0
  191. package/backend/vendor/our-free-model-source/src/vault.js +213 -0
  192. package/backend/vendor/our-free-model-source/vendor/channel-pack/LICENSE +21 -0
  193. package/backend/vendor/our-free-model-source/vendor/channel-pack/qoder-auth-wasm.wasm +0 -0
  194. package/backend/vendor/our-free-model-source/vendor/dsh-std/LICENSE +21 -0
  195. package/backend/webnovel-writer/.claude/agents/anti-ai-detector.md +182 -0
  196. package/backend/webnovel-writer/.claude/agents/consistency-checker.md +179 -0
  197. package/backend/webnovel-writer/.claude/agents/context-agent.md +350 -0
  198. package/backend/webnovel-writer/.claude/agents/continuity-checker.md +254 -0
  199. package/backend/webnovel-writer/.claude/agents/data-agent.md +436 -0
  200. package/backend/webnovel-writer/.claude/agents/dialogue-reality-enforcer.md +357 -0
  201. package/backend/webnovel-writer/.claude/agents/high-point-checker.md +145 -0
  202. package/backend/webnovel-writer/.claude/agents/ooc-checker.md +217 -0
  203. package/backend/webnovel-writer/.claude/agents/pacing-checker.md +216 -0
  204. package/backend/webnovel-writer/.claude/genres/dark/dark-plot-patterns.md +105 -0
  205. package/backend/webnovel-writer/.claude/genres/dark/power-struggle.md +108 -0
  206. package/backend/webnovel-writer/.claude/genres/dark/survival-cost.md +98 -0
  207. package/backend/webnovel-writer/.claude/genres/dog-blood-romance/character-archetypes.md +582 -0
  208. package/backend/webnovel-writer/.claude/genres/dog-blood-romance/emotional-tension.md +578 -0
  209. package/backend/webnovel-writer/.claude/genres/dog-blood-romance/plot-templates.md +213 -0
  210. package/backend/webnovel-writer/.claude/genres/dog-blood-romance/romance-pacing.md +574 -0
  211. package/backend/webnovel-writer/.claude/genres/dog-blood-romance/romance-tropes.md +528 -0
  212. package/backend/webnovel-writer/.claude/genres/dog-blood-romance/sweet-moments.md +620 -0
  213. package/backend/webnovel-writer/.claude/genres/dog-blood-romance/torture-points.md +612 -0
  214. package/backend/webnovel-writer/.claude/genres/period-drama/ancient-dialogue.md +288 -0
  215. package/backend/webnovel-writer/.claude/genres/period-drama/character-design.md +268 -0
  216. package/backend/webnovel-writer/.claude/genres/period-drama/historical-setting.md +278 -0
  217. package/backend/webnovel-writer/.claude/genres/period-drama/palace-intrigue.md +268 -0
  218. package/backend/webnovel-writer/.claude/genres/period-drama/plot-patterns.md +276 -0
  219. package/backend/webnovel-writer/.claude/genres/realistic/character-depth.md +234 -0
  220. package/backend/webnovel-writer/.claude/genres/realistic/dialogue-authenticity.md +284 -0
  221. package/backend/webnovel-writer/.claude/genres/realistic/plot-logic.md +273 -0
  222. package/backend/webnovel-writer/.claude/genres/realistic/reality-anchoring.md +229 -0
  223. package/backend/webnovel-writer/.claude/genres/realistic/social-issues.md +232 -0
  224. package/backend/webnovel-writer/.claude/genres/rules-mystery/clue-design.md +524 -0
  225. package/backend/webnovel-writer/.claude/genres/rules-mystery/core-elements.md +431 -0
  226. package/backend/webnovel-writer/.claude/genres/rules-mystery/detective-design.md +560 -0
  227. package/backend/webnovel-writer/.claude/genres/rules-mystery/revelation-design.md +472 -0
  228. package/backend/webnovel-writer/.claude/genres/rules-mystery/structure-pacing.md +520 -0
  229. package/backend/webnovel-writer/.claude/genres/rules-mystery/suspect-management.md +497 -0
  230. package/backend/webnovel-writer/.claude/genres/rules-mystery/trick-design.md +507 -0
  231. package/backend/webnovel-writer/.claude/genres/xuanhuan/cultivation-levels.md +476 -0
  232. package/backend/webnovel-writer/.claude/genres/xuanhuan/power-systems.md +373 -0
  233. package/backend/webnovel-writer/.claude/genres/xuanhuan/xuanhuan-cool-points.md +672 -0
  234. package/backend/webnovel-writer/.claude/genres/xuanhuan/xuanhuan-plot-patterns.md +547 -0
  235. package/backend/webnovel-writer/.claude/genres/zhihu-short/character-quick-build.md +190 -0
  236. package/backend/webnovel-writer/.claude/genres/zhihu-short/emotional-peaks.md +236 -0
  237. package/backend/webnovel-writer/.claude/genres/zhihu-short/ending-patterns.md +217 -0
  238. package/backend/webnovel-writer/.claude/genres/zhihu-short/genre-templates.md +224 -0
  239. package/backend/webnovel-writer/.claude/genres/zhihu-short/hook-techniques.md +151 -0
  240. package/backend/webnovel-writer/.claude/genres/zhihu-short/pacing-rhythm.md +190 -0
  241. package/backend/webnovel-writer/.claude/genres/zhihu-short/plot-compression.md +207 -0
  242. package/backend/webnovel-writer/.claude/references/entity-management-spec.md +296 -0
  243. package/backend/webnovel-writer/.claude/scripts/__init__.py +19 -0
  244. package/backend/webnovel-writer/.claude/scripts/archive_manager.py +592 -0
  245. package/backend/webnovel-writer/.claude/scripts/backup_manager.py +485 -0
  246. package/backend/webnovel-writer/.claude/scripts/chapter_paths.py +84 -0
  247. package/backend/webnovel-writer/.claude/scripts/context_pack_builder.py +514 -0
  248. package/backend/webnovel-writer/.claude/scripts/data_modules/__init__.py +50 -0
  249. package/backend/webnovel-writer/.claude/scripts/data_modules/api_client.py +628 -0
  250. package/backend/webnovel-writer/.claude/scripts/data_modules/config.py +268 -0
  251. package/backend/webnovel-writer/.claude/scripts/data_modules/entity_linker.py +255 -0
  252. package/backend/webnovel-writer/.claude/scripts/data_modules/index_manager.py +1209 -0
  253. package/backend/webnovel-writer/.claude/scripts/data_modules/migrate_state_to_sqlite.py +361 -0
  254. package/backend/webnovel-writer/.claude/scripts/data_modules/rag_adapter.py +651 -0
  255. package/backend/webnovel-writer/.claude/scripts/data_modules/sql_state_manager.py +545 -0
  256. package/backend/webnovel-writer/.claude/scripts/data_modules/state_manager.py +1257 -0
  257. package/backend/webnovel-writer/.claude/scripts/data_modules/style_sampler.py +500 -0
  258. package/backend/webnovel-writer/.claude/scripts/data_modules/tests/__init__.py +1 -0
  259. package/backend/webnovel-writer/.claude/scripts/extract_chapter_context.py +227 -0
  260. package/backend/webnovel-writer/.claude/scripts/golden_three_checker.py +570 -0
  261. package/backend/webnovel-writer/.claude/scripts/init_project.py +585 -0
  262. package/backend/webnovel-writer/.claude/scripts/project_locator.py +94 -0
  263. package/backend/webnovel-writer/.claude/scripts/requirements.txt +9 -0
  264. package/backend/webnovel-writer/.claude/scripts/security_utils.py +589 -0
  265. package/backend/webnovel-writer/.claude/scripts/status_reporter.py +985 -0
  266. package/backend/webnovel-writer/.claude/scripts/token_budget_report.md +120 -0
  267. package/backend/webnovel-writer/.claude/scripts/update_state.py +691 -0
  268. package/backend/webnovel-writer/.claude/scripts/workflow_manager.py +504 -0
  269. package/backend/webnovel-writer/.claude/skills/webnovel-init/SKILL.md +178 -0
  270. package/backend/webnovel-writer/.claude/skills/webnovel-init/references/creativity/creative-combination.md +511 -0
  271. package/backend/webnovel-writer/.claude/skills/webnovel-init/references/creativity/inspiration-collection.md +298 -0
  272. package/backend/webnovel-writer/.claude/skills/webnovel-init/references/creativity/market-positioning.md +421 -0
  273. package/backend/webnovel-writer/.claude/skills/webnovel-init/references/creativity/selling-points.md +684 -0
  274. package/backend/webnovel-writer/.claude/skills/webnovel-init/references/genre-tropes.md +183 -0
  275. package/backend/webnovel-writer/.claude/skills/webnovel-init/references/system-data-flow.md +43 -0
  276. package/backend/webnovel-writer/.claude/skills/webnovel-init/references/worldbuilding/character-design.md +111 -0
  277. package/backend/webnovel-writer/.claude/skills/webnovel-init/references/worldbuilding/faction-systems.md +179 -0
  278. package/backend/webnovel-writer/.claude/skills/webnovel-init/references/worldbuilding/power-systems.md +160 -0
  279. package/backend/webnovel-writer/.claude/skills/webnovel-init/references/worldbuilding/setting-consistency.md +215 -0
  280. package/backend/webnovel-writer/.claude/skills/webnovel-init/references/worldbuilding/world-rules.md +86 -0
  281. package/backend/webnovel-writer/.claude/skills/webnovel-plan/SKILL.md +155 -0
  282. package/backend/webnovel-writer/.claude/skills/webnovel-plan/references/cool-points-guide.md +312 -0
  283. package/backend/webnovel-writer/.claude/skills/webnovel-plan/references/outlining/chapter-planning.md +295 -0
  284. package/backend/webnovel-writer/.claude/skills/webnovel-plan/references/outlining/conflict-design.md +277 -0
  285. package/backend/webnovel-writer/.claude/skills/webnovel-plan/references/outlining/outline-structure.md +210 -0
  286. package/backend/webnovel-writer/.claude/skills/webnovel-plan/references/outlining/plot-frameworks.md +240 -0
  287. package/backend/webnovel-writer/.claude/skills/webnovel-plan/references/strand-weave-pattern.md +106 -0
  288. package/backend/webnovel-writer/.claude/skills/webnovel-query/SKILL.md +151 -0
  289. package/backend/webnovel-writer/.claude/skills/webnovel-query/references/advanced/foreshadowing.md +120 -0
  290. package/backend/webnovel-writer/.claude/skills/webnovel-query/references/system-data-flow.md +336 -0
  291. package/backend/webnovel-writer/.claude/skills/webnovel-query/references/tag-specification.md +155 -0
  292. package/backend/webnovel-writer/.claude/skills/webnovel-resume/SKILL.md +165 -0
  293. package/backend/webnovel-writer/.claude/skills/webnovel-resume/references/system-data-flow.md +43 -0
  294. package/backend/webnovel-writer/.claude/skills/webnovel-resume/references/workflow-resume.md +139 -0
  295. package/backend/webnovel-writer/.claude/skills/webnovel-review/SKILL.md +139 -0
  296. package/backend/webnovel-writer/.claude/skills/webnovel-review/references/common-mistakes.md +96 -0
  297. package/backend/webnovel-writer/.claude/skills/webnovel-review/references/cool-points-guide.md +312 -0
  298. package/backend/webnovel-writer/.claude/skills/webnovel-review/references/core-constraints.md +75 -0
  299. package/backend/webnovel-writer/.claude/skills/webnovel-review/references/pacing-control.md +129 -0
  300. package/backend/webnovel-writer/.claude/skills/webnovel-review/references/strand-weave-pattern.md +106 -0
  301. package/backend/webnovel-writer/.claude/skills/webnovel-write/SKILL.md +524 -0
  302. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//344/272/211/351/234/270/346/265/201/chapter-hard-constraints.md +19 -0
  303. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//344/272/211/351/234/270/346/265/201/combat-scenes.md +18 -0
  304. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//344/272/211/351/234/270/346/265/201/continuity-summary.md +33 -0
  305. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//344/272/211/351/234/270/346/265/201/desire-description.md +314 -0
  306. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//344/272/211/351/234/270/346/265/201/dialogue-writing.md +13 -0
  307. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//344/272/211/351/234/270/346/265/201/emotion-psychology.md +13 -0
  308. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//344/272/211/351/234/270/346/265/201/examples.md +55 -0
  309. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//344/272/211/351/234/270/346/265/201/extract-state.md +126 -0
  310. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//344/272/211/351/234/270/346/265/201/genre-writer.md +179 -0
  311. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//344/272/211/351/234/270/346/265/201/opening-three.md +18 -0
  312. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//344/272/211/351/234/270/346/265/201/outline-master.md +59 -0
  313. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//344/272/211/351/234/270/346/265/201/outline-polish.md +39 -0
  314. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//344/272/211/351/234/270/346/265/201/outline-rewrite.md +70 -0
  315. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//344/272/211/351/234/270/346/265/201/outline-volume.md +89 -0
  316. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//344/272/211/351/234/270/346/265/201/polish-guide.md +349 -0
  317. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//344/272/211/351/234/270/346/265/201/polish.md +47 -0
  318. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//344/272/211/351/234/270/346/265/201/review.md +31 -0
  319. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//344/272/211/351/234/270/346/265/201/scene-description.md +14 -0
  320. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//344/272/211/351/234/270/346/265/201/substyle-writer.md +91 -0
  321. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//344/272/211/351/234/270/346/265/201/typesetting.md +60 -0
  322. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//344/272/211/351/234/270/346/265/201/writer-base.md +76 -0
  323. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//344/272/211/351/234/270/346/265/201/writing-user-prompt.md +92 -0
  324. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//346/234/235/345/240/202/346/235/203/350/260/213/346/265/201/chapter-hard-constraints.md +19 -0
  325. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//346/234/235/345/240/202/346/235/203/350/260/213/346/265/201/combat-scenes.md +18 -0
  326. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//346/234/235/345/240/202/346/235/203/350/260/213/346/265/201/continuity-summary.md +33 -0
  327. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//346/234/235/345/240/202/346/235/203/350/260/213/346/265/201/desire-description.md +314 -0
  328. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//346/234/235/345/240/202/346/235/203/350/260/213/346/265/201/dialogue-writing.md +13 -0
  329. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//346/234/235/345/240/202/346/235/203/350/260/213/346/265/201/emotion-psychology.md +13 -0
  330. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//346/234/235/345/240/202/346/235/203/350/260/213/346/265/201/examples.md +57 -0
  331. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//346/234/235/345/240/202/346/235/203/350/260/213/346/265/201/extract-state.md +126 -0
  332. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//346/234/235/345/240/202/346/235/203/350/260/213/346/265/201/genre-writer.md +179 -0
  333. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//346/234/235/345/240/202/346/235/203/350/260/213/346/265/201/opening-three.md +18 -0
  334. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//346/234/235/345/240/202/346/235/203/350/260/213/346/265/201/outline-master.md +59 -0
  335. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//346/234/235/345/240/202/346/235/203/350/260/213/346/265/201/outline-polish.md +39 -0
  336. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//346/234/235/345/240/202/346/235/203/350/260/213/346/265/201/outline-rewrite.md +70 -0
  337. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//346/234/235/345/240/202/346/235/203/350/260/213/346/265/201/outline-volume.md +89 -0
  338. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//346/234/235/345/240/202/346/235/203/350/260/213/346/265/201/polish-guide.md +349 -0
  339. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//346/234/235/345/240/202/346/235/203/350/260/213/346/265/201/polish.md +47 -0
  340. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//346/234/235/345/240/202/346/235/203/350/260/213/346/265/201/review.md +31 -0
  341. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//346/234/235/345/240/202/346/235/203/350/260/213/346/265/201/scene-description.md +14 -0
  342. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//346/234/235/345/240/202/346/235/203/350/260/213/346/265/201/substyle-writer.md +101 -0
  343. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//346/234/235/345/240/202/346/235/203/350/260/213/346/265/201/typesetting.md +60 -0
  344. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//346/234/235/345/240/202/346/235/203/350/260/213/346/265/201/writer-base.md +76 -0
  345. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//346/234/235/345/240/202/346/235/203/350/260/213/346/265/201/writing-user-prompt.md +92 -0
  346. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//347/247/215/347/224/260/346/265/201/chapter-hard-constraints.md +19 -0
  347. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//347/247/215/347/224/260/346/265/201/combat-scenes.md +18 -0
  348. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//347/247/215/347/224/260/346/265/201/continuity-summary.md +33 -0
  349. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//347/247/215/347/224/260/346/265/201/desire-description.md +314 -0
  350. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//347/247/215/347/224/260/346/265/201/dialogue-writing.md +13 -0
  351. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//347/247/215/347/224/260/346/265/201/emotion-psychology.md +13 -0
  352. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//347/247/215/347/224/260/346/265/201/examples.md +61 -0
  353. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//347/247/215/347/224/260/346/265/201/extract-state.md +126 -0
  354. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//347/247/215/347/224/260/346/265/201/genre-writer.md +179 -0
  355. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//347/247/215/347/224/260/346/265/201/opening-three.md +18 -0
  356. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//347/247/215/347/224/260/346/265/201/outline-master.md +59 -0
  357. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//347/247/215/347/224/260/346/265/201/outline-polish.md +39 -0
  358. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//347/247/215/347/224/260/346/265/201/outline-rewrite.md +70 -0
  359. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//347/247/215/347/224/260/346/265/201/outline-volume.md +89 -0
  360. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//347/247/215/347/224/260/346/265/201/polish-guide.md +349 -0
  361. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//347/247/215/347/224/260/346/265/201/polish.md +47 -0
  362. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//347/247/215/347/224/260/346/265/201/review.md +31 -0
  363. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//347/247/215/347/224/260/346/265/201/scene-description.md +14 -0
  364. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//347/247/215/347/224/260/346/265/201/substyle-writer.md +87 -0
  365. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//347/247/215/347/224/260/346/265/201/typesetting.md +60 -0
  366. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//347/247/215/347/224/260/346/265/201/writer-base.md +76 -0
  367. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//347/247/215/347/224/260/346/265/201/writing-user-prompt.md +92 -0
  368. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//344/270/247/345/260/270/346/261/202/347/224/237/346/265/201/chapter-hard-constraints.md +19 -0
  369. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//344/270/247/345/260/270/346/261/202/347/224/237/346/265/201/combat-scenes.md +18 -0
  370. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//344/270/247/345/260/270/346/261/202/347/224/237/346/265/201/continuity-summary.md +33 -0
  371. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//344/270/247/345/260/270/346/261/202/347/224/237/346/265/201/desire-description.md +314 -0
  372. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//344/270/247/345/260/270/346/261/202/347/224/237/346/265/201/dialogue-writing.md +13 -0
  373. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//344/270/247/345/260/270/346/261/202/347/224/237/346/265/201/emotion-psychology.md +13 -0
  374. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//344/270/247/345/260/270/346/261/202/347/224/237/346/265/201/examples.md +57 -0
  375. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//344/270/247/345/260/270/346/261/202/347/224/237/346/265/201/extract-state.md +126 -0
  376. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//344/270/247/345/260/270/346/261/202/347/224/237/346/265/201/genre-writer.md +191 -0
  377. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//344/270/247/345/260/270/346/261/202/347/224/237/346/265/201/opening-three.md +18 -0
  378. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//344/270/247/345/260/270/346/261/202/347/224/237/346/265/201/outline-master.md +59 -0
  379. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//344/270/247/345/260/270/346/261/202/347/224/237/346/265/201/outline-polish.md +39 -0
  380. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//344/270/247/345/260/270/346/261/202/347/224/237/346/265/201/outline-rewrite.md +70 -0
  381. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//344/270/247/345/260/270/346/261/202/347/224/237/346/265/201/outline-volume.md +89 -0
  382. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//344/270/247/345/260/270/346/261/202/347/224/237/346/265/201/polish-guide.md +349 -0
  383. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//344/270/247/345/260/270/346/261/202/347/224/237/346/265/201/polish.md +47 -0
  384. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//344/270/247/345/260/270/346/261/202/347/224/237/346/265/201/review.md +31 -0
  385. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//344/270/247/345/260/270/346/261/202/347/224/237/346/265/201/scene-description.md +14 -0
  386. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//344/270/247/345/260/270/346/261/202/347/224/237/346/265/201/substyle-writer.md +110 -0
  387. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//344/270/247/345/260/270/346/261/202/347/224/237/346/265/201/typesetting.md +60 -0
  388. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//344/270/247/345/260/270/346/261/202/347/224/237/346/265/201/writer-base.md +76 -0
  389. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//344/270/247/345/260/270/346/261/202/347/224/237/346/265/201/writing-user-prompt.md +92 -0
  390. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/233/244/350/264/247/346/265/201/chapter-hard-constraints.md +19 -0
  391. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/233/244/350/264/247/346/265/201/combat-scenes.md +18 -0
  392. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/233/244/350/264/247/346/265/201/continuity-summary.md +33 -0
  393. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/233/244/350/264/247/346/265/201/desire-description.md +314 -0
  394. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/233/244/350/264/247/346/265/201/dialogue-writing.md +13 -0
  395. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/233/244/350/264/247/346/265/201/emotion-psychology.md +13 -0
  396. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/233/244/350/264/247/346/265/201/examples.md +51 -0
  397. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/233/244/350/264/247/346/265/201/extract-state.md +126 -0
  398. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/233/244/350/264/247/346/265/201/genre-writer.md +191 -0
  399. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/233/244/350/264/247/346/265/201/opening-three.md +18 -0
  400. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/233/244/350/264/247/346/265/201/outline-master.md +59 -0
  401. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/233/244/350/264/247/346/265/201/outline-polish.md +39 -0
  402. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/233/244/350/264/247/346/265/201/outline-rewrite.md +70 -0
  403. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/233/244/350/264/247/346/265/201/outline-volume.md +89 -0
  404. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/233/244/350/264/247/346/265/201/polish-guide.md +349 -0
  405. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/233/244/350/264/247/346/265/201/polish.md +47 -0
  406. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/233/244/350/264/247/346/265/201/review.md +31 -0
  407. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/233/244/350/264/247/346/265/201/scene-description.md +14 -0
  408. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/233/244/350/264/247/346/265/201/substyle-writer.md +98 -0
  409. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/233/244/350/264/247/346/265/201/typesetting.md +60 -0
  410. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/233/244/350/264/247/346/265/201/writer-base.md +76 -0
  411. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/233/244/350/264/247/346/265/201/writing-user-prompt.md +92 -0
  412. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/244/251/347/201/276/346/261/202/347/224/237/346/265/201/chapter-hard-constraints.md +19 -0
  413. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/244/251/347/201/276/346/261/202/347/224/237/346/265/201/combat-scenes.md +18 -0
  414. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/244/251/347/201/276/346/261/202/347/224/237/346/265/201/continuity-summary.md +33 -0
  415. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/244/251/347/201/276/346/261/202/347/224/237/346/265/201/desire-description.md +314 -0
  416. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/244/251/347/201/276/346/261/202/347/224/237/346/265/201/dialogue-writing.md +13 -0
  417. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/244/251/347/201/276/346/261/202/347/224/237/346/265/201/emotion-psychology.md +13 -0
  418. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/244/251/347/201/276/346/261/202/347/224/237/346/265/201/examples.md +59 -0
  419. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/244/251/347/201/276/346/261/202/347/224/237/346/265/201/extract-state.md +126 -0
  420. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/244/251/347/201/276/346/261/202/347/224/237/346/265/201/genre-writer.md +191 -0
  421. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/244/251/347/201/276/346/261/202/347/224/237/346/265/201/opening-three.md +18 -0
  422. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/244/251/347/201/276/346/261/202/347/224/237/346/265/201/outline-master.md +59 -0
  423. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/244/251/347/201/276/346/261/202/347/224/237/346/265/201/outline-polish.md +39 -0
  424. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/244/251/347/201/276/346/261/202/347/224/237/346/265/201/outline-rewrite.md +70 -0
  425. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/244/251/347/201/276/346/261/202/347/224/237/346/265/201/outline-volume.md +89 -0
  426. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/244/251/347/201/276/346/261/202/347/224/237/346/265/201/polish-guide.md +349 -0
  427. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/244/251/347/201/276/346/261/202/347/224/237/346/265/201/polish.md +47 -0
  428. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/244/251/347/201/276/346/261/202/347/224/237/346/265/201/review.md +31 -0
  429. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/244/251/347/201/276/346/261/202/347/224/237/346/265/201/scene-description.md +14 -0
  430. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/244/251/347/201/276/346/261/202/347/224/237/346/265/201/substyle-writer.md +105 -0
  431. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/244/251/347/201/276/346/261/202/347/224/237/346/265/201/typesetting.md +60 -0
  432. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/244/251/347/201/276/346/261/202/347/224/237/346/265/201/writer-base.md +76 -0
  433. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/244/251/347/201/276/346/261/202/347/224/237/346/265/201/writing-user-prompt.md +92 -0
  434. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/234/253/350/267/257/346/261/202/347/224/237/chapter-hard-constraints.md +19 -0
  435. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/234/253/350/267/257/346/261/202/347/224/237/combat-scenes.md +18 -0
  436. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/234/253/350/267/257/346/261/202/347/224/237/continuity-summary.md +33 -0
  437. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/234/253/350/267/257/346/261/202/347/224/237/desire-description.md +315 -0
  438. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/234/253/350/267/257/346/261/202/347/224/237/dialogue-writing.md +13 -0
  439. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/234/253/350/267/257/346/261/202/347/224/237/emotion-psychology.md +13 -0
  440. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/234/253/350/267/257/346/261/202/347/224/237/examples.md +55 -0
  441. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/234/253/350/267/257/346/261/202/347/224/237/extract-state.md +126 -0
  442. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/234/253/350/267/257/346/261/202/347/224/237/genre-writer.md +120 -0
  443. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/234/253/350/267/257/346/261/202/347/224/237/opening-three.md +18 -0
  444. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/234/253/350/267/257/346/261/202/347/224/237/outline-master.md +59 -0
  445. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/234/253/350/267/257/346/261/202/347/224/237/outline-polish.md +39 -0
  446. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/234/253/350/267/257/346/261/202/347/224/237/outline-rewrite.md +70 -0
  447. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/234/253/350/267/257/346/261/202/347/224/237/outline-volume.md +89 -0
  448. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/234/253/350/267/257/346/261/202/347/224/237/polish-guide.md +350 -0
  449. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/234/253/350/267/257/346/261/202/347/224/237/polish.md +47 -0
  450. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/234/253/350/267/257/346/261/202/347/224/237/review.md +31 -0
  451. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/234/253/350/267/257/346/261/202/347/224/237/scene-description.md +14 -0
  452. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/234/253/350/267/257/346/261/202/347/224/237/substyle-writer.md +160 -0
  453. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/234/253/350/267/257/346/261/202/347/224/237/typesetting.md +60 -0
  454. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/234/253/350/267/257/346/261/202/347/224/237/writer-base.md +76 -0
  455. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/234/253/350/267/257/346/261/202/347/224/237/writing-user-prompt.md +92 -0
  456. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/235/203/350/260/213/345/200/276/350/275/247/chapter-hard-constraints.md +19 -0
  457. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/235/203/350/260/213/345/200/276/350/275/247/combat-scenes.md +18 -0
  458. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/235/203/350/260/213/345/200/276/350/275/247/continuity-summary.md +33 -0
  459. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/235/203/350/260/213/345/200/276/350/275/247/desire-description.md +315 -0
  460. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/235/203/350/260/213/345/200/276/350/275/247/dialogue-writing.md +13 -0
  461. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/235/203/350/260/213/345/200/276/350/275/247/emotion-psychology.md +13 -0
  462. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/235/203/350/260/213/345/200/276/350/275/247/examples.md +55 -0
  463. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/235/203/350/260/213/345/200/276/350/275/247/extract-state.md +126 -0
  464. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/235/203/350/260/213/345/200/276/350/275/247/genre-writer.md +120 -0
  465. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/235/203/350/260/213/345/200/276/350/275/247/opening-three.md +18 -0
  466. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/235/203/350/260/213/345/200/276/350/275/247/outline-master.md +59 -0
  467. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/235/203/350/260/213/345/200/276/350/275/247/outline-polish.md +39 -0
  468. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/235/203/350/260/213/345/200/276/350/275/247/outline-rewrite.md +70 -0
  469. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/235/203/350/260/213/345/200/276/350/275/247/outline-volume.md +89 -0
  470. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/235/203/350/260/213/345/200/276/350/275/247/polish-guide.md +350 -0
  471. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/235/203/350/260/213/345/200/276/350/275/247/polish.md +47 -0
  472. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/235/203/350/260/213/345/200/276/350/275/247/review.md +31 -0
  473. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/235/203/350/260/213/345/200/276/350/275/247/scene-description.md +14 -0
  474. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/235/203/350/260/213/345/200/276/350/275/247/substyle-writer.md +163 -0
  475. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/235/203/350/260/213/345/200/276/350/275/247/typesetting.md +60 -0
  476. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/235/203/350/260/213/345/200/276/350/275/247/writer-base.md +76 -0
  477. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/235/203/350/260/213/345/200/276/350/275/247/writing-user-prompt.md +92 -0
  478. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//351/273/221/346/232/227/344/277/256/344/273/231/chapter-hard-constraints.md +19 -0
  479. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//351/273/221/346/232/227/344/277/256/344/273/231/combat-scenes.md +18 -0
  480. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//351/273/221/346/232/227/344/277/256/344/273/231/continuity-summary.md +33 -0
  481. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//351/273/221/346/232/227/344/277/256/344/273/231/desire-description.md +315 -0
  482. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//351/273/221/346/232/227/344/277/256/344/273/231/dialogue-writing.md +13 -0
  483. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//351/273/221/346/232/227/344/277/256/344/273/231/emotion-psychology.md +13 -0
  484. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//351/273/221/346/232/227/344/277/256/344/273/231/examples.md +51 -0
  485. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//351/273/221/346/232/227/344/277/256/344/273/231/extract-state.md +126 -0
  486. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//351/273/221/346/232/227/344/277/256/344/273/231/genre-writer.md +120 -0
  487. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//351/273/221/346/232/227/344/277/256/344/273/231/opening-three.md +18 -0
  488. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//351/273/221/346/232/227/344/277/256/344/273/231/outline-master.md +59 -0
  489. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//351/273/221/346/232/227/344/277/256/344/273/231/outline-polish.md +39 -0
  490. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//351/273/221/346/232/227/344/277/256/344/273/231/outline-rewrite.md +70 -0
  491. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//351/273/221/346/232/227/344/277/256/344/273/231/outline-volume.md +89 -0
  492. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//351/273/221/346/232/227/344/277/256/344/273/231/polish-guide.md +350 -0
  493. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//351/273/221/346/232/227/344/277/256/344/273/231/polish.md +47 -0
  494. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//351/273/221/346/232/227/344/277/256/344/273/231/review.md +31 -0
  495. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//351/273/221/346/232/227/344/277/256/344/273/231/scene-description.md +14 -0
  496. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//351/273/221/346/232/227/344/277/256/344/273/231/substyle-writer.md +144 -0
  497. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//351/273/221/346/232/227/344/277/256/344/273/231/typesetting.md +60 -0
  498. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//351/273/221/346/232/227/344/277/256/344/273/231/writer-base.md +76 -0
  499. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//351/273/221/346/232/227/344/277/256/344/273/231/writing-user-prompt.md +92 -0
  500. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/261/252/351/227/250/344/277/256/347/275/227/345/234/272/chapter-hard-constraints.md +19 -0
  501. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/261/252/351/227/250/344/277/256/347/275/227/345/234/272/combat-scenes.md +18 -0
  502. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/261/252/351/227/250/344/277/256/347/275/227/345/234/272/continuity-summary.md +33 -0
  503. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/261/252/351/227/250/344/277/256/347/275/227/345/234/272/desire-description.md +314 -0
  504. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/261/252/351/227/250/344/277/256/347/275/227/345/234/272/dialogue-writing.md +13 -0
  505. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/261/252/351/227/250/344/277/256/347/275/227/345/234/272/emotion-psychology.md +13 -0
  506. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/261/252/351/227/250/344/277/256/347/275/227/345/234/272/examples.md +61 -0
  507. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/261/252/351/227/250/344/277/256/347/275/227/345/234/272/extract-state.md +126 -0
  508. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/261/252/351/227/250/344/277/256/347/275/227/345/234/272/genre-writer.md +174 -0
  509. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/261/252/351/227/250/344/277/256/347/275/227/345/234/272/opening-three.md +18 -0
  510. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/261/252/351/227/250/344/277/256/347/275/227/345/234/272/outline-master.md +59 -0
  511. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/261/252/351/227/250/344/277/256/347/275/227/345/234/272/outline-polish.md +39 -0
  512. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/261/252/351/227/250/344/277/256/347/275/227/345/234/272/outline-rewrite.md +70 -0
  513. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/261/252/351/227/250/344/277/256/347/275/227/345/234/272/outline-volume.md +89 -0
  514. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/261/252/351/227/250/344/277/256/347/275/227/345/234/272/polish-guide.md +349 -0
  515. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/261/252/351/227/250/344/277/256/347/275/227/345/234/272/polish.md +47 -0
  516. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/261/252/351/227/250/344/277/256/347/275/227/345/234/272/review.md +31 -0
  517. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/261/252/351/227/250/344/277/256/347/275/227/345/234/272/scene-description.md +14 -0
  518. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/261/252/351/227/250/344/277/256/347/275/227/345/234/272/substyle-writer.md +109 -0
  519. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/261/252/351/227/250/344/277/256/347/275/227/345/234/272/typesetting.md +60 -0
  520. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/261/252/351/227/250/344/277/256/347/275/227/345/234/272/writer-base.md +76 -0
  521. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/261/252/351/227/250/344/277/256/347/275/227/345/234/272/writing-user-prompt.md +92 -0
  522. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/277/275/345/246/273/347/201/253/350/221/254/345/234/272/chapter-hard-constraints.md +19 -0
  523. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/277/275/345/246/273/347/201/253/350/221/254/345/234/272/combat-scenes.md +18 -0
  524. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/277/275/345/246/273/347/201/253/350/221/254/345/234/272/continuity-summary.md +33 -0
  525. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/277/275/345/246/273/347/201/253/350/221/254/345/234/272/desire-description.md +314 -0
  526. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/277/275/345/246/273/347/201/253/350/221/254/345/234/272/dialogue-writing.md +13 -0
  527. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/277/275/345/246/273/347/201/253/350/221/254/345/234/272/emotion-psychology.md +13 -0
  528. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/277/275/345/246/273/347/201/253/350/221/254/345/234/272/examples.md +65 -0
  529. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/277/275/345/246/273/347/201/253/350/221/254/345/234/272/extract-state.md +126 -0
  530. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/277/275/345/246/273/347/201/253/350/221/254/345/234/272/genre-writer.md +174 -0
  531. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/277/275/345/246/273/347/201/253/350/221/254/345/234/272/opening-three.md +18 -0
  532. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/277/275/345/246/273/347/201/253/350/221/254/345/234/272/outline-master.md +59 -0
  533. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/277/275/345/246/273/347/201/253/350/221/254/345/234/272/outline-polish.md +39 -0
  534. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/277/275/345/246/273/347/201/253/350/221/254/345/234/272/outline-rewrite.md +70 -0
  535. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/277/275/345/246/273/347/201/253/350/221/254/345/234/272/outline-volume.md +89 -0
  536. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/277/275/345/246/273/347/201/253/350/221/254/345/234/272/polish-guide.md +349 -0
  537. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/277/275/345/246/273/347/201/253/350/221/254/345/234/272/polish.md +47 -0
  538. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/277/275/345/246/273/347/201/253/350/221/254/345/234/272/review.md +31 -0
  539. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/277/275/345/246/273/347/201/253/350/221/254/345/234/272/scene-description.md +14 -0
  540. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/277/275/345/246/273/347/201/253/350/221/254/345/234/272/substyle-writer.md +110 -0
  541. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/277/275/345/246/273/347/201/253/350/221/254/345/234/272/typesetting.md +60 -0
  542. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/277/275/345/246/273/347/201/253/350/221/254/345/234/272/writer-base.md +76 -0
  543. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/277/275/345/246/273/347/201/253/350/221/254/345/234/272/writing-user-prompt.md +92 -0
  544. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//351/253/230/347/224/234/346/213/211/346/211/257/chapter-hard-constraints.md +19 -0
  545. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//351/253/230/347/224/234/346/213/211/346/211/257/combat-scenes.md +18 -0
  546. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//351/253/230/347/224/234/346/213/211/346/211/257/continuity-summary.md +33 -0
  547. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//351/253/230/347/224/234/346/213/211/346/211/257/desire-description.md +314 -0
  548. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//351/253/230/347/224/234/346/213/211/346/211/257/dialogue-writing.md +13 -0
  549. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//351/253/230/347/224/234/346/213/211/346/211/257/emotion-psychology.md +13 -0
  550. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//351/253/230/347/224/234/346/213/211/346/211/257/examples.md +83 -0
  551. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//351/253/230/347/224/234/346/213/211/346/211/257/extract-state.md +126 -0
  552. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//351/253/230/347/224/234/346/213/211/346/211/257/genre-writer.md +174 -0
  553. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//351/253/230/347/224/234/346/213/211/346/211/257/opening-three.md +18 -0
  554. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//351/253/230/347/224/234/346/213/211/346/211/257/outline-master.md +59 -0
  555. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//351/253/230/347/224/234/346/213/211/346/211/257/outline-polish.md +39 -0
  556. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//351/253/230/347/224/234/346/213/211/346/211/257/outline-rewrite.md +70 -0
  557. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//351/253/230/347/224/234/346/213/211/346/211/257/outline-volume.md +89 -0
  558. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//351/253/230/347/224/234/346/213/211/346/211/257/polish-guide.md +349 -0
  559. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//351/253/230/347/224/234/346/213/211/346/211/257/polish.md +47 -0
  560. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//351/253/230/347/224/234/346/213/211/346/211/257/review.md +31 -0
  561. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//351/253/230/347/224/234/346/213/211/346/211/257/scene-description.md +14 -0
  562. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//351/253/230/347/224/234/346/213/211/346/211/257/substyle-writer.md +119 -0
  563. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//351/253/230/347/224/234/346/213/211/346/211/257/typesetting.md +60 -0
  564. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//351/253/230/347/224/234/346/213/211/346/211/257/writer-base.md +76 -0
  565. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//351/253/230/347/224/234/346/213/211/346/211/257/writing-user-prompt.md +92 -0
  566. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//344/271/241/351/207/216/347/246/201/345/277/214/346/265/201/chapter-hard-constraints.md +19 -0
  567. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//344/271/241/351/207/216/347/246/201/345/277/214/346/265/201/combat-scenes.md +18 -0
  568. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//344/271/241/351/207/216/347/246/201/345/277/214/346/265/201/continuity-summary.md +33 -0
  569. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//344/271/241/351/207/216/347/246/201/345/277/214/346/265/201/desire-description.md +315 -0
  570. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//344/271/241/351/207/216/347/246/201/345/277/214/346/265/201/dialogue-writing.md +13 -0
  571. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//344/271/241/351/207/216/347/246/201/345/277/214/346/265/201/emotion-psychology.md +13 -0
  572. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//344/271/241/351/207/216/347/246/201/345/277/214/346/265/201/examples.md +53 -0
  573. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//344/271/241/351/207/216/347/246/201/345/277/214/346/265/201/extract-state.md +126 -0
  574. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//344/271/241/351/207/216/347/246/201/345/277/214/346/265/201/genre-writer.md +176 -0
  575. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//344/271/241/351/207/216/347/246/201/345/277/214/346/265/201/opening-three.md +18 -0
  576. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//344/271/241/351/207/216/347/246/201/345/277/214/346/265/201/outline-master.md +59 -0
  577. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//344/271/241/351/207/216/347/246/201/345/277/214/346/265/201/outline-polish.md +39 -0
  578. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//344/271/241/351/207/216/347/246/201/345/277/214/346/265/201/outline-rewrite.md +70 -0
  579. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//344/271/241/351/207/216/347/246/201/345/277/214/346/265/201/outline-volume.md +89 -0
  580. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//344/271/241/351/207/216/347/246/201/345/277/214/346/265/201/polish-guide.md +350 -0
  581. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//344/271/241/351/207/216/347/246/201/345/277/214/346/265/201/polish.md +47 -0
  582. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//344/271/241/351/207/216/347/246/201/345/277/214/346/265/201/review.md +31 -0
  583. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//344/271/241/351/207/216/347/246/201/345/277/214/346/265/201/scene-description.md +14 -0
  584. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//344/271/241/351/207/216/347/246/201/345/277/214/346/265/201/substyle-writer.md +82 -0
  585. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//344/271/241/351/207/216/347/246/201/345/277/214/346/265/201/typesetting.md +60 -0
  586. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//344/271/241/351/207/216/347/246/201/345/277/214/346/265/201/writer-base.md +76 -0
  587. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//344/271/241/351/207/216/347/246/201/345/277/214/346/265/201/writing-user-prompt.md +92 -0
  588. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//347/231/275/344/272/213/346/211/213/350/211/272/346/265/201/chapter-hard-constraints.md +19 -0
  589. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//347/231/275/344/272/213/346/211/213/350/211/272/346/265/201/combat-scenes.md +18 -0
  590. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//347/231/275/344/272/213/346/211/213/350/211/272/346/265/201/continuity-summary.md +33 -0
  591. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//347/231/275/344/272/213/346/211/213/350/211/272/346/265/201/desire-description.md +315 -0
  592. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//347/231/275/344/272/213/346/211/213/350/211/272/346/265/201/dialogue-writing.md +13 -0
  593. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//347/231/275/344/272/213/346/211/213/350/211/272/346/265/201/emotion-psychology.md +13 -0
  594. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//347/231/275/344/272/213/346/211/213/350/211/272/346/265/201/examples.md +59 -0
  595. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//347/231/275/344/272/213/346/211/213/350/211/272/346/265/201/extract-state.md +126 -0
  596. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//347/231/275/344/272/213/346/211/213/350/211/272/346/265/201/genre-writer.md +176 -0
  597. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//347/231/275/344/272/213/346/211/213/350/211/272/346/265/201/opening-three.md +18 -0
  598. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//347/231/275/344/272/213/346/211/213/350/211/272/346/265/201/outline-master.md +59 -0
  599. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//347/231/275/344/272/213/346/211/213/350/211/272/346/265/201/outline-polish.md +39 -0
  600. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//347/231/275/344/272/213/346/211/213/350/211/272/346/265/201/outline-rewrite.md +70 -0
  601. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//347/231/275/344/272/213/346/211/213/350/211/272/346/265/201/outline-volume.md +89 -0
  602. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//347/231/275/344/272/213/346/211/213/350/211/272/346/265/201/polish-guide.md +350 -0
  603. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//347/231/275/344/272/213/346/211/213/350/211/272/346/265/201/polish.md +47 -0
  604. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//347/231/275/344/272/213/346/211/213/350/211/272/346/265/201/review.md +31 -0
  605. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//347/231/275/344/272/213/346/211/213/350/211/272/346/265/201/scene-description.md +14 -0
  606. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//347/231/275/344/272/213/346/211/213/350/211/272/346/265/201/substyle-writer.md +94 -0
  607. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//347/231/275/344/272/213/346/211/213/350/211/272/346/265/201/typesetting.md +60 -0
  608. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//347/231/275/344/272/213/346/211/213/350/211/272/346/265/201/writer-base.md +76 -0
  609. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//347/231/275/344/272/213/346/211/213/350/211/272/346/265/201/writing-user-prompt.md +92 -0
  610. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//351/251/261/351/202/252/344/270/226/345/256/266/346/265/201/chapter-hard-constraints.md +19 -0
  611. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//351/251/261/351/202/252/344/270/226/345/256/266/346/265/201/combat-scenes.md +18 -0
  612. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//351/251/261/351/202/252/344/270/226/345/256/266/346/265/201/continuity-summary.md +33 -0
  613. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//351/251/261/351/202/252/344/270/226/345/256/266/346/265/201/desire-description.md +315 -0
  614. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//351/251/261/351/202/252/344/270/226/345/256/266/346/265/201/dialogue-writing.md +13 -0
  615. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//351/251/261/351/202/252/344/270/226/345/256/266/346/265/201/emotion-psychology.md +13 -0
  616. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//351/251/261/351/202/252/344/270/226/345/256/266/346/265/201/examples.md +57 -0
  617. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//351/251/261/351/202/252/344/270/226/345/256/266/346/265/201/extract-state.md +126 -0
  618. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//351/251/261/351/202/252/344/270/226/345/256/266/346/265/201/genre-writer.md +176 -0
  619. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//351/251/261/351/202/252/344/270/226/345/256/266/346/265/201/opening-three.md +18 -0
  620. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//351/251/261/351/202/252/344/270/226/345/256/266/346/265/201/outline-master.md +59 -0
  621. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//351/251/261/351/202/252/344/270/226/345/256/266/346/265/201/outline-polish.md +39 -0
  622. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//351/251/261/351/202/252/344/270/226/345/256/266/346/265/201/outline-rewrite.md +70 -0
  623. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//351/251/261/351/202/252/344/270/226/345/256/266/346/265/201/outline-volume.md +89 -0
  624. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//351/251/261/351/202/252/344/270/226/345/256/266/346/265/201/polish-guide.md +350 -0
  625. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//351/251/261/351/202/252/344/270/226/345/256/266/346/265/201/polish.md +47 -0
  626. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//351/251/261/351/202/252/344/270/226/345/256/266/346/265/201/review.md +31 -0
  627. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//351/251/261/351/202/252/344/270/226/345/256/266/346/265/201/scene-description.md +14 -0
  628. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//351/251/261/351/202/252/344/270/226/345/256/266/346/265/201/substyle-writer.md +95 -0
  629. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//351/251/261/351/202/252/344/270/226/345/256/266/346/265/201/typesetting.md +60 -0
  630. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//351/251/261/351/202/252/344/270/226/345/256/266/346/265/201/writer-base.md +76 -0
  631. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//351/251/261/351/202/252/344/270/226/345/256/266/346/265/201/writing-user-prompt.md +92 -0
  632. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//345/205/213/347/263/273/347/224/237/345/255/230/346/265/201/chapter-hard-constraints.md +19 -0
  633. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//345/205/213/347/263/273/347/224/237/345/255/230/346/265/201/combat-scenes.md +18 -0
  634. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//345/205/213/347/263/273/347/224/237/345/255/230/346/265/201/continuity-summary.md +33 -0
  635. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//345/205/213/347/263/273/347/224/237/345/255/230/346/265/201/desire-description.md +315 -0
  636. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//345/205/213/347/263/273/347/224/237/345/255/230/346/265/201/dialogue-writing.md +13 -0
  637. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//345/205/213/347/263/273/347/224/237/345/255/230/346/265/201/emotion-psychology.md +13 -0
  638. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//345/205/213/347/263/273/347/224/237/345/255/230/346/265/201/examples.md +51 -0
  639. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//345/205/213/347/263/273/347/224/237/345/255/230/346/265/201/extract-state.md +126 -0
  640. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//345/205/213/347/263/273/347/224/237/345/255/230/346/265/201/genre-writer.md +179 -0
  641. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//345/205/213/347/263/273/347/224/237/345/255/230/346/265/201/opening-three.md +18 -0
  642. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//345/205/213/347/263/273/347/224/237/345/255/230/346/265/201/outline-master.md +59 -0
  643. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//345/205/213/347/263/273/347/224/237/345/255/230/346/265/201/outline-polish.md +39 -0
  644. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//345/205/213/347/263/273/347/224/237/345/255/230/346/265/201/outline-rewrite.md +70 -0
  645. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//345/205/213/347/263/273/347/224/237/345/255/230/346/265/201/outline-volume.md +89 -0
  646. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//345/205/213/347/263/273/347/224/237/345/255/230/346/265/201/polish-guide.md +350 -0
  647. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//345/205/213/347/263/273/347/224/237/345/255/230/346/265/201/polish.md +47 -0
  648. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//345/205/213/347/263/273/347/224/237/345/255/230/346/265/201/review.md +31 -0
  649. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//345/205/213/347/263/273/347/224/237/345/255/230/346/265/201/scene-description.md +14 -0
  650. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//345/205/213/347/263/273/347/224/237/345/255/230/346/265/201/substyle-writer.md +94 -0
  651. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//345/205/213/347/263/273/347/224/237/345/255/230/346/265/201/typesetting.md +60 -0
  652. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//345/205/213/347/263/273/347/224/237/345/255/230/346/265/201/writer-base.md +76 -0
  653. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//345/205/213/347/263/273/347/224/237/345/255/230/346/265/201/writing-user-prompt.md +92 -0
  654. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//347/245/236/347/247/230/345/255/246/350/260/203/346/237/245/346/265/201/chapter-hard-constraints.md +19 -0
  655. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//347/245/236/347/247/230/345/255/246/350/260/203/346/237/245/346/265/201/combat-scenes.md +18 -0
  656. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//347/245/236/347/247/230/345/255/246/350/260/203/346/237/245/346/265/201/continuity-summary.md +33 -0
  657. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//347/245/236/347/247/230/345/255/246/350/260/203/346/237/245/346/265/201/desire-description.md +315 -0
  658. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//347/245/236/347/247/230/345/255/246/350/260/203/346/237/245/346/265/201/dialogue-writing.md +13 -0
  659. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//347/245/236/347/247/230/345/255/246/350/260/203/346/237/245/346/265/201/emotion-psychology.md +13 -0
  660. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//347/245/236/347/247/230/345/255/246/350/260/203/346/237/245/346/265/201/examples.md +53 -0
  661. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//347/245/236/347/247/230/345/255/246/350/260/203/346/237/245/346/265/201/extract-state.md +126 -0
  662. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//347/245/236/347/247/230/345/255/246/350/260/203/346/237/245/346/265/201/genre-writer.md +179 -0
  663. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//347/245/236/347/247/230/345/255/246/350/260/203/346/237/245/346/265/201/opening-three.md +18 -0
  664. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//347/245/236/347/247/230/345/255/246/350/260/203/346/237/245/346/265/201/outline-master.md +59 -0
  665. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//347/245/236/347/247/230/345/255/246/350/260/203/346/237/245/346/265/201/outline-polish.md +39 -0
  666. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//347/245/236/347/247/230/345/255/246/350/260/203/346/237/245/346/265/201/outline-rewrite.md +70 -0
  667. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//347/245/236/347/247/230/345/255/246/350/260/203/346/237/245/346/265/201/outline-volume.md +89 -0
  668. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//347/245/236/347/247/230/345/255/246/350/260/203/346/237/245/346/265/201/polish-guide.md +350 -0
  669. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//347/245/236/347/247/230/345/255/246/350/260/203/346/237/245/346/265/201/polish.md +47 -0
  670. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//347/245/236/347/247/230/345/255/246/350/260/203/346/237/245/346/265/201/review.md +31 -0
  671. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//347/245/236/347/247/230/345/255/246/350/260/203/346/237/245/346/265/201/scene-description.md +14 -0
  672. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//347/245/236/347/247/230/345/255/246/350/260/203/346/237/245/346/265/201/substyle-writer.md +90 -0
  673. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//347/245/236/347/247/230/345/255/246/350/260/203/346/237/245/346/265/201/typesetting.md +60 -0
  674. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//347/245/236/347/247/230/345/255/246/350/260/203/346/237/245/346/265/201/writer-base.md +76 -0
  675. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//347/245/236/347/247/230/345/255/246/350/260/203/346/237/245/346/265/201/writing-user-prompt.md +92 -0
  676. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//351/200/224/345/276/204/346/231/213/345/215/207/346/265/201/chapter-hard-constraints.md +19 -0
  677. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//351/200/224/345/276/204/346/231/213/345/215/207/346/265/201/combat-scenes.md +18 -0
  678. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//351/200/224/345/276/204/346/231/213/345/215/207/346/265/201/continuity-summary.md +33 -0
  679. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//351/200/224/345/276/204/346/231/213/345/215/207/346/265/201/desire-description.md +315 -0
  680. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//351/200/224/345/276/204/346/231/213/345/215/207/346/265/201/dialogue-writing.md +13 -0
  681. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//351/200/224/345/276/204/346/231/213/345/215/207/346/265/201/emotion-psychology.md +13 -0
  682. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//351/200/224/345/276/204/346/231/213/345/215/207/346/265/201/examples.md +53 -0
  683. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//351/200/224/345/276/204/346/231/213/345/215/207/346/265/201/extract-state.md +126 -0
  684. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//351/200/224/345/276/204/346/231/213/345/215/207/346/265/201/genre-writer.md +179 -0
  685. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//351/200/224/345/276/204/346/231/213/345/215/207/346/265/201/opening-three.md +18 -0
  686. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//351/200/224/345/276/204/346/231/213/345/215/207/346/265/201/outline-master.md +59 -0
  687. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//351/200/224/345/276/204/346/231/213/345/215/207/346/265/201/outline-polish.md +39 -0
  688. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//351/200/224/345/276/204/346/231/213/345/215/207/346/265/201/outline-rewrite.md +70 -0
  689. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//351/200/224/345/276/204/346/231/213/345/215/207/346/265/201/outline-volume.md +89 -0
  690. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//351/200/224/345/276/204/346/231/213/345/215/207/346/265/201/polish-guide.md +350 -0
  691. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//351/200/224/345/276/204/346/231/213/345/215/207/346/265/201/polish.md +47 -0
  692. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//351/200/224/345/276/204/346/231/213/345/215/207/346/265/201/review.md +31 -0
  693. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//351/200/224/345/276/204/346/231/213/345/215/207/346/265/201/scene-description.md +14 -0
  694. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//351/200/224/345/276/204/346/231/213/345/215/207/346/265/201/substyle-writer.md +86 -0
  695. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//351/200/224/345/276/204/346/231/213/345/215/207/346/265/201/typesetting.md +60 -0
  696. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//351/200/224/345/276/204/346/231/213/345/215/207/346/265/201/writer-base.md +76 -0
  697. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//351/200/224/345/276/204/346/231/213/345/215/207/346/265/201/writing-user-prompt.md +92 -0
  698. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/205/346/226/227/351/200/206/350/242/255/chapter-hard-constraints.md +19 -0
  699. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/205/346/226/227/351/200/206/350/242/255/combat-scenes.md +18 -0
  700. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/205/346/226/227/351/200/206/350/242/255/continuity-summary.md +33 -0
  701. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/205/346/226/227/351/200/206/350/242/255/desire-description.md +314 -0
  702. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/205/346/226/227/351/200/206/350/242/255/dialogue-writing.md +13 -0
  703. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/205/346/226/227/351/200/206/350/242/255/emotion-psychology.md +13 -0
  704. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/205/346/226/227/351/200/206/350/242/255/examples.md +61 -0
  705. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/205/346/226/227/351/200/206/350/242/255/extract-state.md +126 -0
  706. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/205/346/226/227/351/200/206/350/242/255/genre-writer.md +171 -0
  707. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/205/346/226/227/351/200/206/350/242/255/opening-three.md +18 -0
  708. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/205/346/226/227/351/200/206/350/242/255/outline-master.md +59 -0
  709. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/205/346/226/227/351/200/206/350/242/255/outline-polish.md +39 -0
  710. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/205/346/226/227/351/200/206/350/242/255/outline-rewrite.md +70 -0
  711. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/205/346/226/227/351/200/206/350/242/255/outline-volume.md +89 -0
  712. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/205/346/226/227/351/200/206/350/242/255/polish-guide.md +349 -0
  713. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/205/346/226/227/351/200/206/350/242/255/polish.md +47 -0
  714. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/205/346/226/227/351/200/206/350/242/255/review.md +31 -0
  715. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/205/346/226/227/351/200/206/350/242/255/scene-description.md +14 -0
  716. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/205/346/226/227/351/200/206/350/242/255/substyle-writer.md +80 -0
  717. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/205/346/226/227/351/200/206/350/242/255/typesetting.md +60 -0
  718. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/205/346/226/227/351/200/206/350/242/255/writer-base.md +76 -0
  719. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/205/346/226/227/351/200/206/350/242/255/writing-user-prompt.md +92 -0
  720. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/253/346/226/227/346/235/203/350/260/213/chapter-hard-constraints.md +19 -0
  721. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/253/346/226/227/346/235/203/350/260/213/combat-scenes.md +18 -0
  722. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/253/346/226/227/346/235/203/350/260/213/continuity-summary.md +33 -0
  723. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/253/346/226/227/346/235/203/350/260/213/desire-description.md +314 -0
  724. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/253/346/226/227/346/235/203/350/260/213/dialogue-writing.md +13 -0
  725. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/253/346/226/227/346/235/203/350/260/213/emotion-psychology.md +13 -0
  726. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/253/346/226/227/346/235/203/350/260/213/examples.md +63 -0
  727. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/253/346/226/227/346/235/203/350/260/213/extract-state.md +126 -0
  728. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/253/346/226/227/346/235/203/350/260/213/genre-writer.md +171 -0
  729. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/253/346/226/227/346/235/203/350/260/213/opening-three.md +18 -0
  730. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/253/346/226/227/346/235/203/350/260/213/outline-master.md +59 -0
  731. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/253/346/226/227/346/235/203/350/260/213/outline-polish.md +39 -0
  732. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/253/346/226/227/346/235/203/350/260/213/outline-rewrite.md +70 -0
  733. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/253/346/226/227/346/235/203/350/260/213/outline-volume.md +89 -0
  734. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/253/346/226/227/346/235/203/350/260/213/polish-guide.md +349 -0
  735. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/253/346/226/227/346/235/203/350/260/213/polish.md +47 -0
  736. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/253/346/226/227/346/235/203/350/260/213/review.md +31 -0
  737. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/253/346/226/227/346/235/203/350/260/213/scene-description.md +14 -0
  738. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/253/346/226/227/346/235/203/350/260/213/substyle-writer.md +110 -0
  739. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/253/346/226/227/346/235/203/350/260/213/typesetting.md +60 -0
  740. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/253/346/226/227/346/235/203/350/260/213/writer-base.md +76 -0
  741. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/253/346/226/227/346/235/203/350/260/213/writing-user-prompt.md +92 -0
  742. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//346/234/235/345/240/202/350/201/224/345/247/273/chapter-hard-constraints.md +19 -0
  743. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//346/234/235/345/240/202/350/201/224/345/247/273/combat-scenes.md +18 -0
  744. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//346/234/235/345/240/202/350/201/224/345/247/273/continuity-summary.md +33 -0
  745. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//346/234/235/345/240/202/350/201/224/345/247/273/desire-description.md +314 -0
  746. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//346/234/235/345/240/202/350/201/224/345/247/273/dialogue-writing.md +13 -0
  747. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//346/234/235/345/240/202/350/201/224/345/247/273/emotion-psychology.md +13 -0
  748. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//346/234/235/345/240/202/350/201/224/345/247/273/examples.md +67 -0
  749. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//346/234/235/345/240/202/350/201/224/345/247/273/extract-state.md +126 -0
  750. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//346/234/235/345/240/202/350/201/224/345/247/273/genre-writer.md +171 -0
  751. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//346/234/235/345/240/202/350/201/224/345/247/273/opening-three.md +18 -0
  752. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//346/234/235/345/240/202/350/201/224/345/247/273/outline-master.md +59 -0
  753. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//346/234/235/345/240/202/350/201/224/345/247/273/outline-polish.md +39 -0
  754. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//346/234/235/345/240/202/350/201/224/345/247/273/outline-rewrite.md +70 -0
  755. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//346/234/235/345/240/202/350/201/224/345/247/273/outline-volume.md +89 -0
  756. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//346/234/235/345/240/202/350/201/224/345/247/273/polish-guide.md +349 -0
  757. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//346/234/235/345/240/202/350/201/224/345/247/273/polish.md +47 -0
  758. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//346/234/235/345/240/202/350/201/224/345/247/273/review.md +31 -0
  759. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//346/234/235/345/240/202/350/201/224/345/247/273/scene-description.md +14 -0
  760. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//346/234/235/345/240/202/350/201/224/345/247/273/substyle-writer.md +83 -0
  761. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//346/234/235/345/240/202/350/201/224/345/247/273/typesetting.md +60 -0
  762. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//346/234/235/345/240/202/350/201/224/345/247/273/writer-base.md +76 -0
  763. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//346/234/235/345/240/202/350/201/224/345/247/273/writing-user-prompt.md +92 -0
  764. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//350/201/214/345/234/272/351/200/206/350/242/255/chapter-hard-constraints.md +19 -0
  765. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//350/201/214/345/234/272/351/200/206/350/242/255/combat-scenes.md +18 -0
  766. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//350/201/214/345/234/272/351/200/206/350/242/255/continuity-summary.md +33 -0
  767. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//350/201/214/345/234/272/351/200/206/350/242/255/desire-description.md +314 -0
  768. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//350/201/214/345/234/272/351/200/206/350/242/255/dialogue-writing.md +13 -0
  769. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//350/201/214/345/234/272/351/200/206/350/242/255/emotion-psychology.md +13 -0
  770. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//350/201/214/345/234/272/351/200/206/350/242/255/examples.md +63 -0
  771. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//350/201/214/345/234/272/351/200/206/350/242/255/extract-state.md +126 -0
  772. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//350/201/214/345/234/272/351/200/206/350/242/255/genre-writer.md +145 -0
  773. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//350/201/214/345/234/272/351/200/206/350/242/255/opening-three.md +18 -0
  774. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//350/201/214/345/234/272/351/200/206/350/242/255/outline-master.md +59 -0
  775. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//350/201/214/345/234/272/351/200/206/350/242/255/outline-polish.md +39 -0
  776. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//350/201/214/345/234/272/351/200/206/350/242/255/outline-rewrite.md +70 -0
  777. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//350/201/214/345/234/272/351/200/206/350/242/255/outline-volume.md +89 -0
  778. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//350/201/214/345/234/272/351/200/206/350/242/255/polish-guide.md +349 -0
  779. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//350/201/214/345/234/272/351/200/206/350/242/255/polish.md +47 -0
  780. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//350/201/214/345/234/272/351/200/206/350/242/255/review.md +31 -0
  781. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//350/201/214/345/234/272/351/200/206/350/242/255/scene-description.md +14 -0
  782. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//350/201/214/345/234/272/351/200/206/350/242/255/substyle-writer.md +73 -0
  783. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//350/201/214/345/234/272/351/200/206/350/242/255/typesetting.md +60 -0
  784. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//350/201/214/345/234/272/351/200/206/350/242/255/writer-base.md +76 -0
  785. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//350/201/214/345/234/272/351/200/206/350/242/255/writing-user-prompt.md +92 -0
  786. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/345/274/202/350/203/275/chapter-hard-constraints.md +19 -0
  787. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/345/274/202/350/203/275/combat-scenes.md +18 -0
  788. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/345/274/202/350/203/275/continuity-summary.md +33 -0
  789. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/345/274/202/350/203/275/desire-description.md +314 -0
  790. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/345/274/202/350/203/275/dialogue-writing.md +13 -0
  791. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/345/274/202/350/203/275/emotion-psychology.md +13 -0
  792. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/345/274/202/350/203/275/examples.md +65 -0
  793. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/345/274/202/350/203/275/extract-state.md +126 -0
  794. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/345/274/202/350/203/275/genre-writer.md +145 -0
  795. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/345/274/202/350/203/275/opening-three.md +18 -0
  796. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/345/274/202/350/203/275/outline-master.md +59 -0
  797. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/345/274/202/350/203/275/outline-polish.md +39 -0
  798. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/345/274/202/350/203/275/outline-rewrite.md +70 -0
  799. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/345/274/202/350/203/275/outline-volume.md +89 -0
  800. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/345/274/202/350/203/275/polish-guide.md +349 -0
  801. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/345/274/202/350/203/275/polish.md +47 -0
  802. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/345/274/202/350/203/275/review.md +31 -0
  803. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/345/274/202/350/203/275/scene-description.md +14 -0
  804. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/345/274/202/350/203/275/substyle-writer.md +63 -0
  805. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/345/274/202/350/203/275/typesetting.md +60 -0
  806. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/345/274/202/350/203/275/writer-base.md +76 -0
  807. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/345/274/202/350/203/275/writing-user-prompt.md +92 -0
  808. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/346/210/220/351/225/277/chapter-hard-constraints.md +19 -0
  809. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/346/210/220/351/225/277/combat-scenes.md +18 -0
  810. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/346/210/220/351/225/277/continuity-summary.md +33 -0
  811. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/346/210/220/351/225/277/desire-description.md +314 -0
  812. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/346/210/220/351/225/277/dialogue-writing.md +13 -0
  813. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/346/210/220/351/225/277/emotion-psychology.md +13 -0
  814. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/346/210/220/351/225/277/examples.md +61 -0
  815. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/346/210/220/351/225/277/extract-state.md +126 -0
  816. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/346/210/220/351/225/277/genre-writer.md +145 -0
  817. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/346/210/220/351/225/277/opening-three.md +18 -0
  818. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/346/210/220/351/225/277/outline-master.md +59 -0
  819. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/346/210/220/351/225/277/outline-polish.md +39 -0
  820. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/346/210/220/351/225/277/outline-rewrite.md +70 -0
  821. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/346/210/220/351/225/277/outline-volume.md +89 -0
  822. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/346/210/220/351/225/277/polish-guide.md +349 -0
  823. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/346/210/220/351/225/277/polish.md +47 -0
  824. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/346/210/220/351/225/277/review.md +31 -0
  825. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/346/210/220/351/225/277/scene-description.md +14 -0
  826. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/346/210/220/351/225/277/substyle-writer.md +64 -0
  827. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/346/210/220/351/225/277/typesetting.md +60 -0
  828. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/346/210/220/351/225/277/writer-base.md +76 -0
  829. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/346/210/220/351/225/277/writing-user-prompt.md +92 -0
  830. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//345/257/206/345/256/244/350/260/203/346/237/245/346/265/201/chapter-hard-constraints.md +19 -0
  831. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//345/257/206/345/256/244/350/260/203/346/237/245/346/265/201/combat-scenes.md +18 -0
  832. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//345/257/206/345/256/244/350/260/203/346/237/245/346/265/201/continuity-summary.md +33 -0
  833. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//345/257/206/345/256/244/350/260/203/346/237/245/346/265/201/desire-description.md +315 -0
  834. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//345/257/206/345/256/244/350/260/203/346/237/245/346/265/201/dialogue-writing.md +13 -0
  835. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//345/257/206/345/256/244/350/260/203/346/237/245/346/265/201/emotion-psychology.md +13 -0
  836. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//345/257/206/345/256/244/350/260/203/346/237/245/346/265/201/examples.md +49 -0
  837. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//345/257/206/345/256/244/350/260/203/346/237/245/346/265/201/extract-state.md +126 -0
  838. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//345/257/206/345/256/244/350/260/203/346/237/245/346/265/201/genre-writer.md +143 -0
  839. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//345/257/206/345/256/244/350/260/203/346/237/245/346/265/201/opening-three.md +18 -0
  840. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//345/257/206/345/256/244/350/260/203/346/237/245/346/265/201/outline-master.md +59 -0
  841. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//345/257/206/345/256/244/350/260/203/346/237/245/346/265/201/outline-polish.md +39 -0
  842. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//345/257/206/345/256/244/350/260/203/346/237/245/346/265/201/outline-rewrite.md +70 -0
  843. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//345/257/206/345/256/244/350/260/203/346/237/245/346/265/201/outline-volume.md +89 -0
  844. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//345/257/206/345/256/244/350/260/203/346/237/245/346/265/201/polish-guide.md +350 -0
  845. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//345/257/206/345/256/244/350/260/203/346/237/245/346/265/201/polish.md +47 -0
  846. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//345/257/206/345/256/244/350/260/203/346/237/245/346/265/201/review.md +31 -0
  847. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//345/257/206/345/256/244/350/260/203/346/237/245/346/265/201/scene-description.md +14 -0
  848. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//345/257/206/345/256/244/350/260/203/346/237/245/346/265/201/substyle-writer.md +98 -0
  849. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//345/257/206/345/256/244/350/260/203/346/237/245/346/265/201/typesetting.md +60 -0
  850. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//345/257/206/345/256/244/350/260/203/346/237/245/346/265/201/writer-base.md +76 -0
  851. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//345/257/206/345/256/244/350/260/203/346/237/245/346/265/201/writing-user-prompt.md +92 -0
  852. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/247/204/345/210/231/347/224/237/345/255/230/346/265/201/chapter-hard-constraints.md +19 -0
  853. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/247/204/345/210/231/347/224/237/345/255/230/346/265/201/combat-scenes.md +18 -0
  854. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/247/204/345/210/231/347/224/237/345/255/230/346/265/201/continuity-summary.md +33 -0
  855. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/247/204/345/210/231/347/224/237/345/255/230/346/265/201/desire-description.md +315 -0
  856. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/247/204/345/210/231/347/224/237/345/255/230/346/265/201/dialogue-writing.md +13 -0
  857. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/247/204/345/210/231/347/224/237/345/255/230/346/265/201/emotion-psychology.md +13 -0
  858. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/247/204/345/210/231/347/224/237/345/255/230/346/265/201/examples.md +53 -0
  859. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/247/204/345/210/231/347/224/237/345/255/230/346/265/201/extract-state.md +126 -0
  860. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/247/204/345/210/231/347/224/237/345/255/230/346/265/201/genre-writer.md +143 -0
  861. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/247/204/345/210/231/347/224/237/345/255/230/346/265/201/opening-three.md +18 -0
  862. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/247/204/345/210/231/347/224/237/345/255/230/346/265/201/outline-master.md +59 -0
  863. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/247/204/345/210/231/347/224/237/345/255/230/346/265/201/outline-polish.md +39 -0
  864. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/247/204/345/210/231/347/224/237/345/255/230/346/265/201/outline-rewrite.md +70 -0
  865. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/247/204/345/210/231/347/224/237/345/255/230/346/265/201/outline-volume.md +89 -0
  866. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/247/204/345/210/231/347/224/237/345/255/230/346/265/201/polish-guide.md +350 -0
  867. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/247/204/345/210/231/347/224/237/345/255/230/346/265/201/polish.md +47 -0
  868. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/247/204/345/210/231/347/224/237/345/255/230/346/265/201/review.md +31 -0
  869. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/247/204/345/210/231/347/224/237/345/255/230/346/265/201/scene-description.md +14 -0
  870. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/247/204/345/210/231/347/224/237/345/255/230/346/265/201/substyle-writer.md +94 -0
  871. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/247/204/345/210/231/347/224/237/345/255/230/346/265/201/typesetting.md +60 -0
  872. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/247/204/345/210/231/347/224/237/345/255/230/346/265/201/writer-base.md +76 -0
  873. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/247/204/345/210/231/347/224/237/345/255/230/346/265/201/writing-user-prompt.md +92 -0
  874. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/257/241/345/261/200/346/216/250/346/274/224/346/265/201/chapter-hard-constraints.md +19 -0
  875. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/257/241/345/261/200/346/216/250/346/274/224/346/265/201/combat-scenes.md +18 -0
  876. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/257/241/345/261/200/346/216/250/346/274/224/346/265/201/continuity-summary.md +33 -0
  877. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/257/241/345/261/200/346/216/250/346/274/224/346/265/201/desire-description.md +315 -0
  878. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/257/241/345/261/200/346/216/250/346/274/224/346/265/201/dialogue-writing.md +13 -0
  879. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/257/241/345/261/200/346/216/250/346/274/224/346/265/201/emotion-psychology.md +13 -0
  880. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/257/241/345/261/200/346/216/250/346/274/224/346/265/201/examples.md +53 -0
  881. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/257/241/345/261/200/346/216/250/346/274/224/346/265/201/extract-state.md +126 -0
  882. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/257/241/345/261/200/346/216/250/346/274/224/346/265/201/genre-writer.md +143 -0
  883. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/257/241/345/261/200/346/216/250/346/274/224/346/265/201/opening-three.md +18 -0
  884. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/257/241/345/261/200/346/216/250/346/274/224/346/265/201/outline-master.md +59 -0
  885. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/257/241/345/261/200/346/216/250/346/274/224/346/265/201/outline-polish.md +39 -0
  886. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/257/241/345/261/200/346/216/250/346/274/224/346/265/201/outline-rewrite.md +70 -0
  887. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/257/241/345/261/200/346/216/250/346/274/224/346/265/201/outline-volume.md +89 -0
  888. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/257/241/345/261/200/346/216/250/346/274/224/346/265/201/polish-guide.md +350 -0
  889. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/257/241/345/261/200/346/216/250/346/274/224/346/265/201/polish.md +47 -0
  890. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/257/241/345/261/200/346/216/250/346/274/224/346/265/201/review.md +31 -0
  891. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/257/241/345/261/200/346/216/250/346/274/224/346/265/201/scene-description.md +14 -0
  892. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/257/241/345/261/200/346/216/250/346/274/224/346/265/201/substyle-writer.md +94 -0
  893. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/257/241/345/261/200/346/216/250/346/274/224/346/265/201/typesetting.md +60 -0
  894. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/257/241/345/261/200/346/216/250/346/274/224/346/265/201/writer-base.md +76 -0
  895. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/257/241/345/261/200/346/216/250/346/274/224/346/265/201/writing-user-prompt.md +92 -0
  896. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//345/272/237/345/234/237/346/224/271/351/200/240/346/265/201/chapter-hard-constraints.md +19 -0
  897. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//345/272/237/345/234/237/346/224/271/351/200/240/346/265/201/combat-scenes.md +18 -0
  898. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//345/272/237/345/234/237/346/224/271/351/200/240/346/265/201/continuity-summary.md +33 -0
  899. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//345/272/237/345/234/237/346/224/271/351/200/240/346/265/201/desire-description.md +314 -0
  900. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//345/272/237/345/234/237/346/224/271/351/200/240/346/265/201/dialogue-writing.md +13 -0
  901. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//345/272/237/345/234/237/346/224/271/351/200/240/346/265/201/emotion-psychology.md +13 -0
  902. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//345/272/237/345/234/237/346/224/271/351/200/240/346/265/201/examples.md +59 -0
  903. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//345/272/237/345/234/237/346/224/271/351/200/240/346/265/201/extract-state.md +126 -0
  904. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//345/272/237/345/234/237/346/224/271/351/200/240/346/265/201/genre-writer.md +188 -0
  905. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//345/272/237/345/234/237/346/224/271/351/200/240/346/265/201/opening-three.md +18 -0
  906. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//345/272/237/345/234/237/346/224/271/351/200/240/346/265/201/outline-master.md +59 -0
  907. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//345/272/237/345/234/237/346/224/271/351/200/240/346/265/201/outline-polish.md +39 -0
  908. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//345/272/237/345/234/237/346/224/271/351/200/240/346/265/201/outline-rewrite.md +70 -0
  909. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//345/272/237/345/234/237/346/224/271/351/200/240/346/265/201/outline-volume.md +89 -0
  910. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//345/272/237/345/234/237/346/224/271/351/200/240/346/265/201/polish-guide.md +349 -0
  911. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//345/272/237/345/234/237/346/224/271/351/200/240/346/265/201/polish.md +47 -0
  912. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//345/272/237/345/234/237/346/224/271/351/200/240/346/265/201/review.md +31 -0
  913. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//345/272/237/345/234/237/346/224/271/351/200/240/346/265/201/scene-description.md +14 -0
  914. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//345/272/237/345/234/237/346/224/271/351/200/240/346/265/201/substyle-writer.md +96 -0
  915. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//345/272/237/345/234/237/346/224/271/351/200/240/346/265/201/typesetting.md +60 -0
  916. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//345/272/237/345/234/237/346/224/271/351/200/240/346/265/201/writer-base.md +76 -0
  917. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//345/272/237/345/234/237/346/224/271/351/200/240/346/265/201/writing-user-prompt.md +92 -0
  918. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/230/237/351/231/205/346/226/207/346/230/216/346/265/201/chapter-hard-constraints.md +19 -0
  919. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/230/237/351/231/205/346/226/207/346/230/216/346/265/201/combat-scenes.md +18 -0
  920. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/230/237/351/231/205/346/226/207/346/230/216/346/265/201/continuity-summary.md +33 -0
  921. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/230/237/351/231/205/346/226/207/346/230/216/346/265/201/desire-description.md +314 -0
  922. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/230/237/351/231/205/346/226/207/346/230/216/346/265/201/dialogue-writing.md +13 -0
  923. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/230/237/351/231/205/346/226/207/346/230/216/346/265/201/emotion-psychology.md +13 -0
  924. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/230/237/351/231/205/346/226/207/346/230/216/346/265/201/examples.md +61 -0
  925. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/230/237/351/231/205/346/226/207/346/230/216/346/265/201/extract-state.md +126 -0
  926. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/230/237/351/231/205/346/226/207/346/230/216/346/265/201/genre-writer.md +188 -0
  927. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/230/237/351/231/205/346/226/207/346/230/216/346/265/201/opening-three.md +18 -0
  928. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/230/237/351/231/205/346/226/207/346/230/216/346/265/201/outline-master.md +59 -0
  929. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/230/237/351/231/205/346/226/207/346/230/216/346/265/201/outline-polish.md +39 -0
  930. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/230/237/351/231/205/346/226/207/346/230/216/346/265/201/outline-rewrite.md +70 -0
  931. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/230/237/351/231/205/346/226/207/346/230/216/346/265/201/outline-volume.md +89 -0
  932. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/230/237/351/231/205/346/226/207/346/230/216/346/265/201/polish-guide.md +349 -0
  933. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/230/237/351/231/205/346/226/207/346/230/216/346/265/201/polish.md +47 -0
  934. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/230/237/351/231/205/346/226/207/346/230/216/346/265/201/review.md +31 -0
  935. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/230/237/351/231/205/346/226/207/346/230/216/346/265/201/scene-description.md +14 -0
  936. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/230/237/351/231/205/346/226/207/346/230/216/346/265/201/substyle-writer.md +86 -0
  937. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/230/237/351/231/205/346/226/207/346/230/216/346/265/201/typesetting.md +60 -0
  938. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/230/237/351/231/205/346/226/207/346/230/216/346/265/201/writer-base.md +76 -0
  939. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/230/237/351/231/205/346/226/207/346/230/216/346/265/201/writing-user-prompt.md +92 -0
  940. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/234/272/347/224/262/346/210/230/344/272/211/346/265/201/chapter-hard-constraints.md +19 -0
  941. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/234/272/347/224/262/346/210/230/344/272/211/346/265/201/combat-scenes.md +18 -0
  942. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/234/272/347/224/262/346/210/230/344/272/211/346/265/201/continuity-summary.md +33 -0
  943. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/234/272/347/224/262/346/210/230/344/272/211/346/265/201/desire-description.md +314 -0
  944. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/234/272/347/224/262/346/210/230/344/272/211/346/265/201/dialogue-writing.md +13 -0
  945. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/234/272/347/224/262/346/210/230/344/272/211/346/265/201/emotion-psychology.md +13 -0
  946. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/234/272/347/224/262/346/210/230/344/272/211/346/265/201/examples.md +55 -0
  947. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/234/272/347/224/262/346/210/230/344/272/211/346/265/201/extract-state.md +126 -0
  948. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/234/272/347/224/262/346/210/230/344/272/211/346/265/201/genre-writer.md +188 -0
  949. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/234/272/347/224/262/346/210/230/344/272/211/346/265/201/opening-three.md +18 -0
  950. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/234/272/347/224/262/346/210/230/344/272/211/346/265/201/outline-master.md +59 -0
  951. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/234/272/347/224/262/346/210/230/344/272/211/346/265/201/outline-polish.md +39 -0
  952. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/234/272/347/224/262/346/210/230/344/272/211/346/265/201/outline-rewrite.md +70 -0
  953. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/234/272/347/224/262/346/210/230/344/272/211/346/265/201/outline-volume.md +89 -0
  954. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/234/272/347/224/262/346/210/230/344/272/211/346/265/201/polish-guide.md +349 -0
  955. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/234/272/347/224/262/346/210/230/344/272/211/346/265/201/polish.md +47 -0
  956. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/234/272/347/224/262/346/210/230/344/272/211/346/265/201/review.md +31 -0
  957. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/234/272/347/224/262/346/210/230/344/272/211/346/265/201/scene-description.md +14 -0
  958. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/234/272/347/224/262/346/210/230/344/272/211/346/265/201/substyle-writer.md +82 -0
  959. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/234/272/347/224/262/346/210/230/344/272/211/346/265/201/typesetting.md +60 -0
  960. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/234/272/347/224/262/346/210/230/344/272/211/346/265/201/writer-base.md +76 -0
  961. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/234/272/347/224/262/346/210/230/344/272/211/346/265/201/writing-user-prompt.md +92 -0
  962. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/207/241/344/272/272/346/265/201/chapter-hard-constraints.md +19 -0
  963. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/207/241/344/272/272/346/265/201/combat-scenes.md +18 -0
  964. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/207/241/344/272/272/346/265/201/continuity-summary.md +34 -0
  965. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/207/241/344/272/272/346/265/201/desire-description.md +314 -0
  966. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/207/241/344/272/272/346/265/201/dialogue-writing.md +13 -0
  967. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/207/241/344/272/272/346/265/201/emotion-psychology.md +13 -0
  968. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/207/241/344/272/272/346/265/201/examples.md +53 -0
  969. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/207/241/344/272/272/346/265/201/extract-state.md +126 -0
  970. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/207/241/344/272/272/346/265/201/genre-writer.md +197 -0
  971. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/207/241/344/272/272/346/265/201/opening-three.md +18 -0
  972. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/207/241/344/272/272/346/265/201/outline-master.md +60 -0
  973. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/207/241/344/272/272/346/265/201/outline-polish.md +39 -0
  974. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/207/241/344/272/272/346/265/201/outline-rewrite.md +71 -0
  975. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/207/241/344/272/272/346/265/201/outline-volume.md +90 -0
  976. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/207/241/344/272/272/346/265/201/polish-guide.md +349 -0
  977. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/207/241/344/272/272/346/265/201/polish.md +47 -0
  978. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/207/241/344/272/272/346/265/201/review.md +31 -0
  979. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/207/241/344/272/272/346/265/201/scene-description.md +14 -0
  980. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/207/241/344/272/272/346/265/201/substyle-writer.md +92 -0
  981. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/207/241/344/272/272/346/265/201/typesetting.md +60 -0
  982. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/207/241/344/272/272/346/265/201/writer-base.md +76 -0
  983. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/207/241/344/272/272/346/265/201/writing-user-prompt.md +92 -0
  984. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/256/227/351/227/250/346/210/220/351/225/277/346/265/201/chapter-hard-constraints.md +19 -0
  985. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/256/227/351/227/250/346/210/220/351/225/277/346/265/201/combat-scenes.md +18 -0
  986. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/256/227/351/227/250/346/210/220/351/225/277/346/265/201/continuity-summary.md +33 -0
  987. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/256/227/351/227/250/346/210/220/351/225/277/346/265/201/desire-description.md +314 -0
  988. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/256/227/351/227/250/346/210/220/351/225/277/346/265/201/dialogue-writing.md +13 -0
  989. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/256/227/351/227/250/346/210/220/351/225/277/346/265/201/emotion-psychology.md +13 -0
  990. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/256/227/351/227/250/346/210/220/351/225/277/346/265/201/examples.md +57 -0
  991. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/256/227/351/227/250/346/210/220/351/225/277/346/265/201/extract-state.md +126 -0
  992. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/256/227/351/227/250/346/210/220/351/225/277/346/265/201/genre-writer.md +197 -0
  993. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/256/227/351/227/250/346/210/220/351/225/277/346/265/201/opening-three.md +18 -0
  994. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/256/227/351/227/250/346/210/220/351/225/277/346/265/201/outline-master.md +60 -0
  995. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/256/227/351/227/250/346/210/220/351/225/277/346/265/201/outline-polish.md +39 -0
  996. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/256/227/351/227/250/346/210/220/351/225/277/346/265/201/outline-rewrite.md +71 -0
  997. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/256/227/351/227/250/346/210/220/351/225/277/346/265/201/outline-volume.md +90 -0
  998. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/256/227/351/227/250/346/210/220/351/225/277/346/265/201/polish-guide.md +349 -0
  999. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/256/227/351/227/250/346/210/220/351/225/277/346/265/201/polish.md +47 -0
  1000. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/256/227/351/227/250/346/210/220/351/225/277/346/265/201/review.md +31 -0
  1001. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/256/227/351/227/250/346/210/220/351/225/277/346/265/201/scene-description.md +14 -0
  1002. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/256/227/351/227/250/346/210/220/351/225/277/346/265/201/substyle-writer.md +12 -0
  1003. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/256/227/351/227/250/346/210/220/351/225/277/346/265/201/typesetting.md +60 -0
  1004. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/256/227/351/227/250/346/210/220/351/225/277/346/265/201/writer-base.md +76 -0
  1005. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/256/227/351/227/250/346/210/220/351/225/277/346/265/201/writing-user-prompt.md +92 -0
  1006. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//347/203/255/350/241/200/345/215/207/347/272/247/346/265/201/chapter-hard-constraints.md +19 -0
  1007. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//347/203/255/350/241/200/345/215/207/347/272/247/346/265/201/combat-scenes.md +18 -0
  1008. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//347/203/255/350/241/200/345/215/207/347/272/247/346/265/201/continuity-summary.md +33 -0
  1009. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//347/203/255/350/241/200/345/215/207/347/272/247/346/265/201/desire-description.md +314 -0
  1010. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//347/203/255/350/241/200/345/215/207/347/272/247/346/265/201/dialogue-writing.md +13 -0
  1011. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//347/203/255/350/241/200/345/215/207/347/272/247/346/265/201/emotion-psychology.md +13 -0
  1012. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//347/203/255/350/241/200/345/215/207/347/272/247/346/265/201/examples.md +65 -0
  1013. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//347/203/255/350/241/200/345/215/207/347/272/247/346/265/201/extract-state.md +126 -0
  1014. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//347/203/255/350/241/200/345/215/207/347/272/247/346/265/201/genre-writer.md +197 -0
  1015. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//347/203/255/350/241/200/345/215/207/347/272/247/346/265/201/opening-three.md +18 -0
  1016. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//347/203/255/350/241/200/345/215/207/347/272/247/346/265/201/outline-master.md +60 -0
  1017. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//347/203/255/350/241/200/345/215/207/347/272/247/346/265/201/outline-polish.md +39 -0
  1018. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//347/203/255/350/241/200/345/215/207/347/272/247/346/265/201/outline-rewrite.md +71 -0
  1019. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//347/203/255/350/241/200/345/215/207/347/272/247/346/265/201/outline-volume.md +90 -0
  1020. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//347/203/255/350/241/200/345/215/207/347/272/247/346/265/201/polish-guide.md +349 -0
  1021. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//347/203/255/350/241/200/345/215/207/347/272/247/346/265/201/polish.md +47 -0
  1022. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//347/203/255/350/241/200/345/215/207/347/272/247/346/265/201/review.md +31 -0
  1023. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//347/203/255/350/241/200/345/215/207/347/272/247/346/265/201/scene-description.md +14 -0
  1024. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//347/203/255/350/241/200/345/215/207/347/272/247/346/265/201/substyle-writer.md +177 -0
  1025. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//347/203/255/350/241/200/345/215/207/347/272/247/346/265/201/typesetting.md +60 -0
  1026. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//347/203/255/350/241/200/345/215/207/347/272/247/346/265/201/writer-base.md +76 -0
  1027. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//347/203/255/350/241/200/345/215/207/347/272/247/346/265/201/writing-user-prompt.md +92 -0
  1028. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//350/213/237/351/201/223/346/265/201/chapter-hard-constraints.md +19 -0
  1029. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//350/213/237/351/201/223/346/265/201/combat-scenes.md +18 -0
  1030. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//350/213/237/351/201/223/346/265/201/continuity-summary.md +34 -0
  1031. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//350/213/237/351/201/223/346/265/201/desire-description.md +314 -0
  1032. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//350/213/237/351/201/223/346/265/201/dialogue-writing.md +13 -0
  1033. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//350/213/237/351/201/223/346/265/201/emotion-psychology.md +13 -0
  1034. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//350/213/237/351/201/223/346/265/201/examples.md +53 -0
  1035. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//350/213/237/351/201/223/346/265/201/extract-state.md +126 -0
  1036. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//350/213/237/351/201/223/346/265/201/genre-writer.md +197 -0
  1037. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//350/213/237/351/201/223/346/265/201/opening-three.md +18 -0
  1038. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//350/213/237/351/201/223/346/265/201/outline-master.md +60 -0
  1039. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//350/213/237/351/201/223/346/265/201/outline-polish.md +39 -0
  1040. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//350/213/237/351/201/223/346/265/201/outline-rewrite.md +71 -0
  1041. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//350/213/237/351/201/223/346/265/201/outline-volume.md +90 -0
  1042. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//350/213/237/351/201/223/346/265/201/polish-guide.md +349 -0
  1043. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//350/213/237/351/201/223/346/265/201/polish.md +47 -0
  1044. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//350/213/237/351/201/223/346/265/201/review.md +31 -0
  1045. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//350/213/237/351/201/223/346/265/201/scene-description.md +14 -0
  1046. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//350/213/237/351/201/223/346/265/201/substyle-writer.md +103 -0
  1047. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//350/213/237/351/201/223/346/265/201/typesetting.md +60 -0
  1048. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//350/213/237/351/201/223/346/265/201/writer-base.md +76 -0
  1049. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//350/213/237/351/201/223/346/265/201/writing-user-prompt.md +92 -0
  1050. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/202/254/345/277/265/346/217/255/347/247/230/chapter-hard-constraints.md +19 -0
  1051. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/202/254/345/277/265/346/217/255/347/247/230/combat-scenes.md +18 -0
  1052. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/202/254/345/277/265/346/217/255/347/247/230/continuity-summary.md +33 -0
  1053. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/202/254/345/277/265/346/217/255/347/247/230/desire-description.md +314 -0
  1054. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/202/254/345/277/265/346/217/255/347/247/230/dialogue-writing.md +13 -0
  1055. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/202/254/345/277/265/346/217/255/347/247/230/emotion-psychology.md +13 -0
  1056. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/202/254/345/277/265/346/217/255/347/247/230/examples.md +55 -0
  1057. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/202/254/345/277/265/346/217/255/347/247/230/extract-state.md +126 -0
  1058. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/202/254/345/277/265/346/217/255/347/247/230/genre-writer.md +168 -0
  1059. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/202/254/345/277/265/346/217/255/347/247/230/opening-three.md +18 -0
  1060. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/202/254/345/277/265/346/217/255/347/247/230/outline-master.md +60 -0
  1061. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/202/254/345/277/265/346/217/255/347/247/230/outline-polish.md +39 -0
  1062. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/202/254/345/277/265/346/217/255/347/247/230/outline-rewrite.md +71 -0
  1063. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/202/254/345/277/265/346/217/255/347/247/230/outline-volume.md +90 -0
  1064. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/202/254/345/277/265/346/217/255/347/247/230/polish-guide.md +349 -0
  1065. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/202/254/345/277/265/346/217/255/347/247/230/polish.md +47 -0
  1066. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/202/254/345/277/265/346/217/255/347/247/230/review.md +31 -0
  1067. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/202/254/345/277/265/346/217/255/347/247/230/scene-description.md +14 -0
  1068. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/202/254/345/277/265/346/217/255/347/247/230/substyle-writer.md +65 -0
  1069. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/202/254/345/277/265/346/217/255/347/247/230/typesetting.md +60 -0
  1070. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/202/254/345/277/265/346/217/255/347/247/230/writer-base.md +76 -0
  1071. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/202/254/345/277/265/346/217/255/347/247/230/writing-user-prompt.md +92 -0
  1072. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/203/205/346/204/237/345/217/215/346/235/200/chapter-hard-constraints.md +19 -0
  1073. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/203/205/346/204/237/345/217/215/346/235/200/combat-scenes.md +18 -0
  1074. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/203/205/346/204/237/345/217/215/346/235/200/continuity-summary.md +33 -0
  1075. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/203/205/346/204/237/345/217/215/346/235/200/desire-description.md +314 -0
  1076. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/203/205/346/204/237/345/217/215/346/235/200/dialogue-writing.md +13 -0
  1077. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/203/205/346/204/237/345/217/215/346/235/200/emotion-psychology.md +13 -0
  1078. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/203/205/346/204/237/345/217/215/346/235/200/examples.md +53 -0
  1079. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/203/205/346/204/237/345/217/215/346/235/200/extract-state.md +126 -0
  1080. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/203/205/346/204/237/345/217/215/346/235/200/genre-writer.md +168 -0
  1081. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/203/205/346/204/237/345/217/215/346/235/200/opening-three.md +18 -0
  1082. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/203/205/346/204/237/345/217/215/346/235/200/outline-master.md +60 -0
  1083. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/203/205/346/204/237/345/217/215/346/235/200/outline-polish.md +39 -0
  1084. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/203/205/346/204/237/345/217/215/346/235/200/outline-rewrite.md +71 -0
  1085. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/203/205/346/204/237/345/217/215/346/235/200/outline-volume.md +90 -0
  1086. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/203/205/346/204/237/345/217/215/346/235/200/polish-guide.md +349 -0
  1087. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/203/205/346/204/237/345/217/215/346/235/200/polish.md +47 -0
  1088. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/203/205/346/204/237/345/217/215/346/235/200/review.md +31 -0
  1089. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/203/205/346/204/237/345/217/215/346/235/200/scene-description.md +14 -0
  1090. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/203/205/346/204/237/345/217/215/346/235/200/substyle-writer.md +81 -0
  1091. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/203/205/346/204/237/345/217/215/346/235/200/typesetting.md +60 -0
  1092. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/203/205/346/204/237/345/217/215/346/235/200/writer-base.md +76 -0
  1093. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/203/205/346/204/237/345/217/215/346/235/200/writing-user-prompt.md +92 -0
  1094. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//351/253/230/350/203/275/345/217/215/350/275/254/chapter-hard-constraints.md +19 -0
  1095. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//351/253/230/350/203/275/345/217/215/350/275/254/combat-scenes.md +18 -0
  1096. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//351/253/230/350/203/275/345/217/215/350/275/254/continuity-summary.md +33 -0
  1097. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//351/253/230/350/203/275/345/217/215/350/275/254/desire-description.md +314 -0
  1098. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//351/253/230/350/203/275/345/217/215/350/275/254/dialogue-writing.md +13 -0
  1099. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//351/253/230/350/203/275/345/217/215/350/275/254/emotion-psychology.md +13 -0
  1100. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//351/253/230/350/203/275/345/217/215/350/275/254/examples.md +51 -0
  1101. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//351/253/230/350/203/275/345/217/215/350/275/254/extract-state.md +126 -0
  1102. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//351/253/230/350/203/275/345/217/215/350/275/254/genre-writer.md +168 -0
  1103. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//351/253/230/350/203/275/345/217/215/350/275/254/opening-three.md +18 -0
  1104. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//351/253/230/350/203/275/345/217/215/350/275/254/outline-master.md +60 -0
  1105. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//351/253/230/350/203/275/345/217/215/350/275/254/outline-polish.md +39 -0
  1106. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//351/253/230/350/203/275/345/217/215/350/275/254/outline-rewrite.md +71 -0
  1107. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//351/253/230/350/203/275/345/217/215/350/275/254/outline-volume.md +90 -0
  1108. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//351/253/230/350/203/275/345/217/215/350/275/254/polish-guide.md +349 -0
  1109. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//351/253/230/350/203/275/345/217/215/350/275/254/polish.md +47 -0
  1110. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//351/253/230/350/203/275/345/217/215/350/275/254/review.md +31 -0
  1111. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//351/253/230/350/203/275/345/217/215/350/275/254/scene-description.md +14 -0
  1112. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//351/253/230/350/203/275/345/217/215/350/275/254/substyle-writer.md +81 -0
  1113. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//351/253/230/350/203/275/345/217/215/350/275/254/typesetting.md +60 -0
  1114. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//351/253/230/350/203/275/345/217/215/350/275/254/writer-base.md +76 -0
  1115. package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//351/253/230/350/203/275/345/217/215/350/275/254/writing-user-prompt.md +92 -0
  1116. package/backend/webnovel-writer/.claude/skills/webnovel-write/references/core-constraints.md +115 -0
  1117. package/backend/webnovel-writer/.claude/templates/genres//344/277/256/344/273/231.md +103 -0
  1118. package/backend/webnovel-writer/.claude/templates/genres//345/217/244/350/250/200.md +253 -0
  1119. package/backend/webnovel-writer/.claude/templates/genres//345/244/232/345/255/220/345/244/232/347/246/217.md +198 -0
  1120. package/backend/webnovel-writer/.claude/templates/genres//346/233/277/350/272/253/346/226/207.md +194 -0
  1121. package/backend/webnovel-writer/.claude/templates/genres//347/213/227/350/241/200/350/250/200/346/203/205.md +187 -0
  1122. package/backend/webnovel-writer/.claude/templates/genres//347/216/260/345/256/236/351/242/230/346/235/220.md +262 -0
  1123. package/backend/webnovel-writer/.claude/templates/genres//347/237/245/344/271/216/347/237/255/347/257/207.md +239 -0
  1124. package/backend/webnovel-writer/.claude/templates/genres//347/263/273/347/273/237/346/265/201.md +93 -0
  1125. package/backend/webnovel-writer/.claude/templates/genres//350/247/204/345/210/231/346/200/252/350/260/210.md +301 -0
  1126. package/backend/webnovel-writer/.claude/templates/genres//351/203/275/345/270/202/345/274/202/350/203/275.md +95 -0
  1127. package/backend/webnovel-writer/.claude/templates/genres//351/273/221/346/232/227/351/242/230/346/235/220.md +200 -0
  1128. package/backend/webnovel-writer/.claude/templates/golden-finger-templates.md +337 -0
  1129. package/backend/webnovel-writer/LICENSE +674 -0
  1130. package/backend/webnovel-writer/README.md +529 -0
  1131. package/backend/webnovel-writer/backend/dependencies.py +88 -0
  1132. package/backend/webnovel-writer/backend/main.py +72 -0
  1133. package/backend/webnovel-writer/backend/requirements.txt +11 -0
  1134. package/backend/webnovel-writer/backend/routers/__init__.py +2 -0
  1135. package/backend/webnovel-writer/backend/routers/ai.py +505 -0
  1136. package/backend/webnovel-writer/backend/routers/chapters.py +864 -0
  1137. package/backend/webnovel-writer/backend/routers/characters.py +563 -0
  1138. package/backend/webnovel-writer/backend/routers/entities.py +219 -0
  1139. package/backend/webnovel-writer/backend/routers/fanqie.py +197 -0
  1140. package/backend/webnovel-writer/backend/routers/outlines.py +474 -0
  1141. package/backend/webnovel-writer/backend/routers/projects.py +733 -0
  1142. package/backend/webnovel-writer/backend/routers/rag.py +195 -0
  1143. package/backend/webnovel-writer/backend/services/__init__.py +2 -0
  1144. package/backend/webnovel-writer/backend/services/activity_logger.py +60 -0
  1145. package/backend/webnovel-writer/backend/services/ai_service.py +878 -0
  1146. package/backend/webnovel-writer/backend/services/creative_brief.py +110 -0
  1147. package/backend/webnovel-writer/backend/services/fanqie_publisher.py +1205 -0
  1148. package/backend/webnovel-writer/backend/services/genre_catalog.py +1405 -0
  1149. package/backend/webnovel-writer/backend/services/genre_writer_agent.py +170 -0
  1150. package/backend/webnovel-writer/backend/services/project_prompt_store.py +643 -0
  1151. package/backend/webnovel-writer/backend/services/projects_manager.py +407 -0
  1152. package/backend/webnovel-writer/backend/services/prompt_fallbacks.py +773 -0
  1153. package/backend/webnovel-writer/backend/services/reset_derived_data.py +45 -0
  1154. package/backend/webnovel-writer/backend/services/skill_executor.py +7701 -0
  1155. package/backend/webnovel-writer/backend/services/usage_meter.py +21 -0
  1156. package/backend/webnovel-writer/backend/services/writer_tools.py +324 -0
  1157. package/backend/webnovel-writer/backend/utils.py +60 -0
  1158. package/client.js +4942 -0
  1159. package/cordis.patch.yml +18 -0
  1160. package/docs/distribution.md +97 -0
  1161. package/docs/plan/PROGRESS.md +658 -0
  1162. package/docs/plan/STATE.json +374 -0
  1163. package/docs/quickstart.md +203 -0
  1164. package/docs/screenshots.md +57 -0
  1165. package/icon.svg +17 -0
  1166. package/index.js +1076 -0
  1167. package/locale/en.json +6 -0
  1168. package/locale/zh.json +6 -0
  1169. package/managed-runtime.mjs +186 -0
  1170. package/package.json +113 -4
  1171. package/runtime-download.json +6 -0
  1172. package/runtime-manifest.json +3409 -0
  1173. package/screenshots.json +10 -0
  1174. package/scripts/check-release.mjs +41 -0
@@ -0,0 +1,306 @@
1
+ """Local publication evidence, durable writes and process locks (no credentials)."""
2
+ from __future__ import annotations
3
+
4
+ import hashlib
5
+ import json
6
+ import os
7
+ import threading
8
+ import time
9
+ import uuid
10
+ from contextlib import contextmanager
11
+ from datetime import datetime, timezone
12
+ from pathlib import Path
13
+
14
+
15
+ class PublicationBlocked(RuntimeError):
16
+ """A stable reason code, deliberately excluding page/exception contents."""
17
+
18
+
19
+ def utc_now():
20
+ return datetime.now(timezone.utc).isoformat()
21
+
22
+
23
+ def read_json_strict(path):
24
+ try:
25
+ return json.loads(Path(path).read_text(encoding="utf-8"))
26
+ except (OSError, ValueError) as exc:
27
+ raise PublicationBlocked("invalid_json") from exc
28
+
29
+
30
+ def replace_with_retry(source,target):
31
+ """Windows sharing/AV contention only; never delete target to force a write."""
32
+ for attempt in range(6):
33
+ try:return os.replace(source,target)
34
+ except PermissionError as exc:
35
+ if os.name!='nt' or getattr(exc,'winerror',None) not in (5,32,33) or attempt==5:raise
36
+ time.sleep(.05*(2**attempt))
37
+
38
+
39
+ def atomic_json(path, data):
40
+ path = Path(path)
41
+ path.parent.mkdir(parents=True, exist_ok=True)
42
+ temporary = path.with_name(path.name + "." + uuid.uuid4().hex + ".tmp")
43
+ try:
44
+ with temporary.open("x", encoding="utf-8") as stream:
45
+ json.dump(data, stream, ensure_ascii=False, indent=2)
46
+ stream.flush()
47
+ os.fsync(stream.fileno())
48
+ replace_with_retry(temporary, path)
49
+ finally:
50
+ temporary.unlink(missing_ok=True)
51
+
52
+
53
+ _locks = threading.local()
54
+
55
+
56
+ @contextmanager
57
+ def file_lock(path):
58
+ """Nonblocking OS lock; released by the OS after death. Never kill/check PIDs.
59
+
60
+ The inode is permanent: removing lock files permits two owners. Same-thread
61
+ nesting is supported; other threads/processes are refused, not queued.
62
+ """
63
+ path = Path(path).resolve()
64
+ key = os.path.normcase(str(path))
65
+ held = getattr(_locks, "held", None)
66
+ if held is None:
67
+ held = _locks.held = {}
68
+ if key in held:
69
+ held[key] += 1
70
+ try:
71
+ yield path
72
+ finally:
73
+ held[key] -= 1
74
+ return
75
+ path.parent.mkdir(parents=True, exist_ok=True)
76
+ with path.open("a+b") as stream:
77
+ stream.seek(0, os.SEEK_END)
78
+ if stream.tell() == 0:
79
+ stream.write(b"\0")
80
+ stream.flush()
81
+ stream.seek(0)
82
+ try:
83
+ if os.name == "nt":
84
+ import msvcrt
85
+ msvcrt.locking(stream.fileno(), msvcrt.LK_NBLCK, 1)
86
+ else:
87
+ import fcntl
88
+ fcntl.flock(stream.fileno(), fcntl.LOCK_EX | fcntl.LOCK_NB)
89
+ except OSError as exc:
90
+ raise PublicationBlocked("resource_busy") from exc
91
+ held[key] = 1
92
+ try:
93
+ yield path
94
+ finally:
95
+ del held[key]
96
+ stream.seek(0)
97
+ if os.name == "nt":
98
+ msvcrt.locking(stream.fileno(), msvcrt.LK_UNLCK, 1)
99
+ else:
100
+ fcntl.flock(stream.fileno(), fcntl.LOCK_UN)
101
+
102
+
103
+ def queue_lock(root):
104
+ return file_lock(Path(root) / ".publication" / "queue.lock")
105
+
106
+
107
+ def account_lock(state_path):
108
+ return file_lock(Path(state_path).with_name(".publication-account.lock"))
109
+
110
+
111
+ def digest_file(path):
112
+ return hashlib.sha256(Path(path).read_bytes()).hexdigest()
113
+
114
+
115
+ def creative_contract_hash(project):
116
+ """Chat history is advisory; only confirmed requirements bind a review."""
117
+ path = Path(project) / ".webnovel" / "creative_brief.json"
118
+ document = read_json_strict(path) if path.exists() else {"brief":{}}
119
+ brief = document.get("brief") if isinstance(document, dict) else None
120
+ if not isinstance(brief, dict) or any(not isinstance(v, str) for v in brief.values()):
121
+ raise PublicationBlocked("invalid_creative_contract")
122
+ values = {k:v.strip() for k,v in brief.items() if v.strip()}
123
+ learning=document.get("learning",{})
124
+ if not isinstance(learning,dict) or not isinstance(learning.get("guide",""),str):
125
+ raise PublicationBlocked("invalid_creative_contract")
126
+ if learning.get("guide","").strip():values["__learned_guide__"]=learning["guide"].strip()
127
+ style_path=Path(project)/".webnovel"/"style_profile.json"
128
+ if style_path.exists():
129
+ import sys
130
+ root=str(Path(__file__).resolve().parents[1])
131
+ if root not in sys.path:sys.path.insert(0,root)
132
+ from integration import style_profile
133
+ style=style_profile.digest(project=project)
134
+ if style:values["__style_profile__"]=style
135
+ memory_path=Path(project)/".webnovel"/"shared_memory.json"
136
+ if memory_path.exists() or memory_path.is_symlink():
137
+ import sys
138
+ root=str(Path(__file__).resolve().parents[1])
139
+ if root not in sys.path:sys.path.insert(0,root)
140
+ from integration import memory_library
141
+ decisions=memory_library.contract(project)
142
+ if decisions:values["__author_memory__"]=decisions
143
+ if not values:
144
+ return ""
145
+ return hashlib.sha256(json.dumps(values, ensure_ascii=False, sort_keys=True).encode("utf-8")).hexdigest()
146
+
147
+
148
+ def qualification_contract_matches(project, chapter, receipt, current_hash=None):
149
+ """Narrow, evidenced author scope: a future-only change need not revoke51.
150
+
151
+ This never manufactures a review or replaces its old contract. Only an
152
+ exact preserved source/receipt and explicitly approved current contract
153
+ can inherit the earlier qualification; another edit invalidates the scope.
154
+ """
155
+ current_hash=creative_contract_hash(project) if current_hash is None else current_hash
156
+ if not isinstance(receipt,dict):return False
157
+ if receipt.get('creative_contract_hash','')==current_hash:return True
158
+ if type(chapter) is not int or chapter!=51:return False
159
+ try:
160
+ root=Path(project).resolve();folder=root/'.webnovel/qualification_scopes'
161
+ scope_path=folder/'0051.json'
162
+ if folder.is_symlink() or scope_path.is_symlink():return False
163
+ scope=read_json_strict(scope_path)
164
+ if not isinstance(scope,dict) or scope.get('schema')!=1 or scope.get('approved') is not True:return False
165
+ if scope.get('chapter')!=chapter or scope.get('project')!=str(root):return False
166
+ if scope.get('current_contract')!=current_hash or scope.get('original_contract')!=receipt.get('creative_contract_hash'):return False
167
+ origin_path=Path(scope['origin_record'])
168
+ if origin_path.is_symlink() or origin_path.resolve()!=folder/'0051-origin.json':return False
169
+ if digest_file(origin_path)!=scope.get('origin_record_sha256'):return False
170
+ origin=read_json_strict(origin_path)
171
+ if origin.get('project')!=str(root) or origin.get('chapter')!=chapter:return False
172
+ original=origin.get('qualified_receipt')
173
+ if not isinstance(original,dict) or receipt!=original:return False
174
+ source=Path(receipt['destination'])
175
+ if source.is_symlink() or source.resolve().parent!=root/'正文':return False
176
+ if str(source.resolve())!=origin.get('source'):return False
177
+ sha=digest_file(source)
178
+ if sha!=receipt.get('sha256') or sha!=scope.get('source_sha256') or sha!=origin.get('source_sha256'):return False
179
+ raw=source.read_text(encoding='utf-8-sig')
180
+ return review_eligible(receipt.get('review'),body_digest(raw),root,chapter)
181
+ except (OSError,ValueError,KeyError,TypeError,PublicationBlocked):return False
182
+
183
+
184
+ def normalized_body(text):
185
+ return "\n".join(line.rstrip() for line in text.replace("\r\n", "\n").replace("\r", "\n").split("\n")).strip()
186
+
187
+
188
+ def body_digest(text):
189
+ return hashlib.sha256(normalized_body(text).encode("utf-8")).hexdigest()
190
+
191
+
192
+ def _quality_pass_ok(review,body_sha256=None,project=None,chapter=None):
193
+ """质量通过分支再交由唯一门禁复查;旧的无分项回执保持兼容。"""
194
+ try:
195
+ import sys
196
+ root=str(Path(__file__).resolve().parents[1])
197
+ if root not in sys.path:sys.path.insert(0,root)
198
+ from integration import quality_gate
199
+ return quality_gate.pass_ok(review,body_sha256,project,chapter)
200
+ except Exception:
201
+ return False
202
+
203
+
204
+ def review_eligible(review,body_sha256,project=None,chapter=None):
205
+ if not isinstance(review,dict):return False
206
+ if review.get("success") is True and review.get("review_decision")=="pass" and review.get("needs_revision",False) is False:
207
+ return _quality_pass_ok(review,body_sha256,project,chapter)
208
+ if review.get('review_decision')=='waived_by_author_rule':
209
+ from integration.editorial_release import valid
210
+ auth=review.get('author_rule_authorization',{})
211
+ if not isinstance(auth,dict):return False
212
+ if project is not None and str(Path(auth.get('project','')).resolve()).casefold()!=str(Path(project).resolve()).casefold():return False
213
+ if chapter is not None and (type(auth.get('chapter')) is not int or auth['chapter']!=chapter):return False
214
+ return valid(review,body_sha256)
215
+ if review.get("review_decision")!="waived_by_E":return False
216
+ import sys
217
+ root=str(Path(__file__).resolve().parents[1])
218
+ if root not in sys.path:sys.path.insert(0,root)
219
+ from integration import model_roles
220
+ config=model_roles.load_config();authorization=review.get("executor_authorization",{})
221
+ return (model_roles.enabled(config) and config.get("review_policy")=="e_decides" and isinstance(authorization,dict)
222
+ and authorization.get("approved") is True and authorization.get("role")=="E" and authorization.get("policy")=="e_decides"
223
+ and authorization.get("body_sha256")==body_sha256)
224
+
225
+
226
+ def journal_path(source):
227
+ return Path(source).with_name(Path(source).name + ".publish.json")
228
+
229
+
230
+ def requires_reconciliation(record):
231
+ """A local pre-submit marker cannot overrule observed remote side effects."""
232
+ return isinstance(record, dict) and (
233
+ record.get('state') in {'submitting', 'unconfirmed', 'platform_confirmed'}
234
+ or bool(record.get('submitted_at'))
235
+ or record.get('reason') in {
236
+ 'existing_chapter_requires_reconciliation', 'existing_chapter_not_draft', 'publish_settings_timeout',
237
+ 'submission_transition_timeout', 'publish_subprocess_timeout',
238
+ })
239
+
240
+
241
+ def valid_receipt(path, book=None, chapter_id=None, account=None):
242
+ """An old TXT alone is never publication evidence."""
243
+ path = Path(path)
244
+ evidence = journal_path(path)
245
+ if not evidence.exists():
246
+ return None
247
+ record = read_json_strict(evidence)
248
+ if not isinstance(record, dict):
249
+ return None
250
+ checks = (
251
+ record.get("schema") == 1,
252
+ record.get("state") == "platform_confirmed",
253
+ record.get("platform_status") == "已发布",
254
+ record.get("verification") == "chapter_list_and_body",
255
+ isinstance(record.get("verified_at"), str) and bool(record["verified_at"]),
256
+ isinstance(record.get("account"), str) and bool(record["account"]),
257
+ isinstance(record.get("book_url"), str) and record["book_url"].startswith("https://fanqienovel.com/"),
258
+ record.get("file_sha256") == digest_file(path),
259
+ book is None or record.get("book") == book,
260
+ chapter_id is None or record.get("chapter_id") == chapter_id,
261
+ account is None or record.get("account") == account,
262
+ )
263
+ return record if all(checks) else None
264
+
265
+
266
+ def archive_confirmed(source, destination, receipt):
267
+ source, destination = Path(source), Path(destination)
268
+ if receipt.get("state") != "platform_confirmed" or receipt.get("file_sha256") != digest_file(source):
269
+ raise PublicationBlocked("archive_evidence_mismatch")
270
+ if valid_receipt(source, receipt["book"], receipt["chapter_id"], receipt["account"]) != receipt:
271
+ raise PublicationBlocked("archive_receipt_missing")
272
+ destination.parent.mkdir(parents=True, exist_ok=True)
273
+ if destination.exists() or journal_path(destination).exists():
274
+ raise PublicationBlocked("archive_collision")
275
+ # Receipt first, then non-overwriting link/unlink on this same-volume queue.
276
+ # A crash at any step leaves evidence; it never permits a new submit.
277
+ atomic_json(journal_path(destination), receipt)
278
+ os.link(source, destination)
279
+ if digest_file(source) != receipt["file_sha256"]:
280
+ raise PublicationBlocked("queue_changed")
281
+ source.unlink()
282
+
283
+
284
+ def validate_origin_plan(plan, files, book, account):
285
+ """Recheck the reviewed source and queue bytes under the publisher lock."""
286
+ if not isinstance(plan, dict) or plan.get("schema") != 1 or plan.get("book") != book or plan.get("account") != account:
287
+ raise PublicationBlocked("origin_plan_identity_mismatch")
288
+ project = Path(plan.get("project", "")).resolve()
289
+ receipts = read_json_strict(project / ".webnovel" / "writer_receipts.json")
290
+ contract_hash = creative_contract_hash(project)
291
+ entries = plan.get("chapters", [])
292
+ if not isinstance(receipts, dict) or len(entries) != len(files):
293
+ raise PublicationBlocked("origin_plan_chapters_mismatch")
294
+ for entry, queued in zip(entries, files):
295
+ source = Path(entry.get("source", "")).resolve()
296
+ if source.parent != (project / "正文").resolve() or source.is_symlink():
297
+ raise PublicationBlocked("origin_source_path_mismatch")
298
+ from integration.length_policy import require
299
+ require(project, source.read_text(encoding="utf-8-sig"), entry.get("chapter_id"))
300
+ receipt = receipts.get(str(entry.get("chapter_id")), {})
301
+ review = receipt.get("review", {}) if isinstance(receipt, dict) else {}
302
+ if (entry.get("filename") != Path(queued).name or entry.get("file_sha256") != digest_file(queued) or
303
+ entry.get("source_sha256") != digest_file(source) or receipt.get("destination") != str(source) or
304
+ receipt.get("sha256") != digest_file(source) or not qualification_contract_matches(project,entry.get('chapter_id'),receipt,contract_hash) or
305
+ not review_eligible(review,body_digest(source.read_text(encoding="utf-8-sig")),project,entry.get('chapter_id'))):
306
+ raise PublicationBlocked("origin_review_or_content_mismatch")