novelws 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (320) hide show
  1. package/CHANGELOG.md +161 -0
  2. package/LICENSE +22 -0
  3. package/README.md +372 -0
  4. package/dist/cli.d.ts +3 -0
  5. package/dist/cli.d.ts.map +1 -0
  6. package/dist/cli.js +50 -0
  7. package/dist/cli.js.map +1 -0
  8. package/dist/commands/check.d.ts +6 -0
  9. package/dist/commands/check.d.ts.map +1 -0
  10. package/dist/commands/check.js +32 -0
  11. package/dist/commands/check.js.map +1 -0
  12. package/dist/commands/init.d.ts +6 -0
  13. package/dist/commands/init.d.ts.map +1 -0
  14. package/dist/commands/init.js +160 -0
  15. package/dist/commands/init.js.map +1 -0
  16. package/dist/commands/plugin.d.ts +6 -0
  17. package/dist/commands/plugin.d.ts.map +1 -0
  18. package/dist/commands/plugin.js +135 -0
  19. package/dist/commands/plugin.js.map +1 -0
  20. package/dist/commands/upgrade.d.ts +6 -0
  21. package/dist/commands/upgrade.d.ts.map +1 -0
  22. package/dist/commands/upgrade.js +92 -0
  23. package/dist/commands/upgrade.js.map +1 -0
  24. package/dist/core/config.d.ts +72 -0
  25. package/dist/core/config.d.ts.map +1 -0
  26. package/dist/core/config.js +136 -0
  27. package/dist/core/config.js.map +1 -0
  28. package/dist/core/errors.d.ts +59 -0
  29. package/dist/core/errors.d.ts.map +1 -0
  30. package/dist/core/errors.js +125 -0
  31. package/dist/core/errors.js.map +1 -0
  32. package/dist/core/platform.d.ts +27 -0
  33. package/dist/core/platform.d.ts.map +1 -0
  34. package/dist/core/platform.js +75 -0
  35. package/dist/core/platform.js.map +1 -0
  36. package/dist/core/template.d.ts +35 -0
  37. package/dist/core/template.d.ts.map +1 -0
  38. package/dist/core/template.js +94 -0
  39. package/dist/core/template.js.map +1 -0
  40. package/dist/plugins/identifier.d.ts +13 -0
  41. package/dist/plugins/identifier.d.ts.map +1 -0
  42. package/dist/plugins/identifier.js +72 -0
  43. package/dist/plugins/identifier.js.map +1 -0
  44. package/dist/plugins/installers/base.d.ts +27 -0
  45. package/dist/plugins/installers/base.d.ts.map +1 -0
  46. package/dist/plugins/installers/base.js +30 -0
  47. package/dist/plugins/installers/base.js.map +1 -0
  48. package/dist/plugins/installers/github.d.ts +22 -0
  49. package/dist/plugins/installers/github.d.ts.map +1 -0
  50. package/dist/plugins/installers/github.js +133 -0
  51. package/dist/plugins/installers/github.js.map +1 -0
  52. package/dist/plugins/installers/local.d.ts +16 -0
  53. package/dist/plugins/installers/local.d.ts.map +1 -0
  54. package/dist/plugins/installers/local.js +69 -0
  55. package/dist/plugins/installers/local.js.map +1 -0
  56. package/dist/plugins/installers/npm.d.ts +20 -0
  57. package/dist/plugins/installers/npm.d.ts.map +1 -0
  58. package/dist/plugins/installers/npm.js +99 -0
  59. package/dist/plugins/installers/npm.js.map +1 -0
  60. package/dist/plugins/manager.d.ts +77 -0
  61. package/dist/plugins/manager.d.ts.map +1 -0
  62. package/dist/plugins/manager.js +349 -0
  63. package/dist/plugins/manager.js.map +1 -0
  64. package/dist/plugins/registry.d.ts +48 -0
  65. package/dist/plugins/registry.d.ts.map +1 -0
  66. package/dist/plugins/registry.js +111 -0
  67. package/dist/plugins/registry.js.map +1 -0
  68. package/dist/plugins/types.d.ts +66 -0
  69. package/dist/plugins/types.d.ts.map +1 -0
  70. package/dist/plugins/types.js +2 -0
  71. package/dist/plugins/types.js.map +1 -0
  72. package/dist/plugins/validator.d.ts +19 -0
  73. package/dist/plugins/validator.d.ts.map +1 -0
  74. package/dist/plugins/validator.js +164 -0
  75. package/dist/plugins/validator.js.map +1 -0
  76. package/dist/utils/logger.d.ts +13 -0
  77. package/dist/utils/logger.d.ts.map +1 -0
  78. package/dist/utils/logger.js +48 -0
  79. package/dist/utils/logger.js.map +1 -0
  80. package/dist/utils/project.d.ts +24 -0
  81. package/dist/utils/project.d.ts.map +1 -0
  82. package/dist/utils/project.js +61 -0
  83. package/dist/utils/project.js.map +1 -0
  84. package/dist/version.d.ts +3 -0
  85. package/dist/version.d.ts.map +1 -0
  86. package/dist/version.js +21 -0
  87. package/dist/version.js.map +1 -0
  88. package/package.json +76 -0
  89. package/plugins/authentic-voice/README.md +31 -0
  90. package/plugins/authentic-voice/commands/authentic-voice.md +73 -0
  91. package/plugins/authentic-voice/commands/authenticity-audit.md +37 -0
  92. package/plugins/authentic-voice/config.yaml +30 -0
  93. package/plugins/authentic-voice/experts/authentic-editor.md +27 -0
  94. package/plugins/export/README.md +319 -0
  95. package/plugins/export/commands/export.md +460 -0
  96. package/plugins/export/commands/generate-cover.md +256 -0
  97. package/plugins/export/commands/metadata.md +309 -0
  98. package/plugins/export/config.yaml +47 -0
  99. package/plugins/export/experts/publishing-expert.md +171 -0
  100. package/plugins/export/templates/epub/chapter-template.html +13 -0
  101. package/plugins/export/templates/epub/cover-template.html +14 -0
  102. package/plugins/export/templates/epub/stylesheet.css +200 -0
  103. package/plugins/export/templates/pdf/ebook-style.css +137 -0
  104. package/plugins/export/templates/pdf/print-style.css +179 -0
  105. package/plugins/export/templates/platforms/jinjiang-format.md +101 -0
  106. package/plugins/export/templates/platforms/qidian-format.md +108 -0
  107. package/plugins/export/templates/platforms/tomato-format.md +95 -0
  108. package/plugins/translate/README.md +265 -0
  109. package/plugins/translate/commands/glossary.md +731 -0
  110. package/plugins/translate/commands/translate-preview.md +543 -0
  111. package/plugins/translate/commands/translate.md +649 -0
  112. package/plugins/translate/config.yaml +43 -0
  113. package/plugins/translate/experts/literary-translator.md +605 -0
  114. package/templates/commands/analyze.md +1485 -0
  115. package/templates/commands/checklist.md +434 -0
  116. package/templates/commands/clarify.md +257 -0
  117. package/templates/commands/constitution.md +257 -0
  118. package/templates/commands/expert.md +136 -0
  119. package/templates/commands/plan.md +749 -0
  120. package/templates/commands/recap.md +613 -0
  121. package/templates/commands/relations.md +96 -0
  122. package/templates/commands/revise.md +341 -0
  123. package/templates/commands/specify.md +682 -0
  124. package/templates/commands/tasks.md +142 -0
  125. package/templates/commands/timeline.md +73 -0
  126. package/templates/commands/track-init.md +137 -0
  127. package/templates/commands/track.md +463 -0
  128. package/templates/commands/write.md +1264 -0
  129. package/templates/config/keyword-mappings.json +106 -0
  130. package/templates/knowledge/audit-config.json +26 -0
  131. package/templates/knowledge/character-profiles.md +152 -0
  132. package/templates/knowledge/character-voices.md +137 -0
  133. package/templates/knowledge/locations.md +184 -0
  134. package/templates/knowledge/world-setting.md +121 -0
  135. package/templates/knowledge-base/README.md +285 -0
  136. package/templates/knowledge-base/character-archetypes/01-hero.md +233 -0
  137. package/templates/knowledge-base/character-archetypes/02-mentor.md +177 -0
  138. package/templates/knowledge-base/character-archetypes/03-shadow.md +221 -0
  139. package/templates/knowledge-base/character-archetypes/04-ally.md +178 -0
  140. package/templates/knowledge-base/character-archetypes/05-shapeshifter.md +177 -0
  141. package/templates/knowledge-base/character-archetypes/06-trickster.md +181 -0
  142. package/templates/knowledge-base/character-archetypes/07-threshold-guardian.md +177 -0
  143. package/templates/knowledge-base/character-archetypes/08-herald.md +180 -0
  144. package/templates/knowledge-base/character-archetypes/09-father.md +249 -0
  145. package/templates/knowledge-base/character-archetypes/10-mother.md +202 -0
  146. package/templates/knowledge-base/character-archetypes/11-child.md +183 -0
  147. package/templates/knowledge-base/character-archetypes/12-sage.md +202 -0
  148. package/templates/knowledge-base/character-archetypes/README.md +60 -0
  149. package/templates/knowledge-base/character-archetypes/application-guide.md +222 -0
  150. package/templates/knowledge-base/character-archetypes/archetype-combinations.md +242 -0
  151. package/templates/knowledge-base/character-archetypes/config.yaml +28 -0
  152. package/templates/knowledge-base/character-archetypes/examples-analysis.md +223 -0
  153. package/templates/knowledge-base/craft/character-arc.md +1153 -0
  154. package/templates/knowledge-base/craft/dialogue.md +1170 -0
  155. package/templates/knowledge-base/craft/pacing.md +1200 -0
  156. package/templates/knowledge-base/craft/scene-structure.md +1136 -0
  157. package/templates/knowledge-base/craft/show-not-tell.md +1012 -0
  158. package/templates/knowledge-base/emotional-beats/01-first-meeting.md +145 -0
  159. package/templates/knowledge-base/emotional-beats/02-bonding-moment.md +226 -0
  160. package/templates/knowledge-base/emotional-beats/03-declaration.md +284 -0
  161. package/templates/knowledge-base/emotional-beats/04-triumph.md +240 -0
  162. package/templates/knowledge-base/emotional-beats/05-reunion.md +396 -0
  163. package/templates/knowledge-base/emotional-beats/06-forgiveness.md +204 -0
  164. package/templates/knowledge-base/emotional-beats/07-betrayal.md +204 -0
  165. package/templates/knowledge-base/emotional-beats/08-loss.md +214 -0
  166. package/templates/knowledge-base/emotional-beats/09-rejection.md +254 -0
  167. package/templates/knowledge-base/emotional-beats/10-failure.md +244 -0
  168. package/templates/knowledge-base/emotional-beats/11-misunderstanding.md +205 -0
  169. package/templates/knowledge-base/emotional-beats/12-farewell.md +283 -0
  170. package/templates/knowledge-base/emotional-beats/13-revelation.md +242 -0
  171. package/templates/knowledge-base/emotional-beats/14-point-of-no-return.md +215 -0
  172. package/templates/knowledge-base/emotional-beats/15-dark-night.md +244 -0
  173. package/templates/knowledge-base/emotional-beats/16-sacrifice.md +246 -0
  174. package/templates/knowledge-base/emotional-beats/17-awakening.md +246 -0
  175. package/templates/knowledge-base/emotional-beats/18-confrontation.md +217 -0
  176. package/templates/knowledge-base/emotional-beats/19-bittersweet-goodbye.md +368 -0
  177. package/templates/knowledge-base/emotional-beats/20-moral-dilemma.md +248 -0
  178. package/templates/knowledge-base/emotional-beats/21-temptation.md +240 -0
  179. package/templates/knowledge-base/emotional-beats/22-redemption.md +210 -0
  180. package/templates/knowledge-base/emotional-beats/README.md +104 -0
  181. package/templates/knowledge-base/emotional-beats/beat-sequences.md +276 -0
  182. package/templates/knowledge-base/emotional-beats/config.yaml +30 -0
  183. package/templates/knowledge-base/emotional-beats/pacing-guide.md +390 -0
  184. package/templates/knowledge-base/genres/historical.md +1127 -0
  185. package/templates/knowledge-base/genres/mystery.md +1123 -0
  186. package/templates/knowledge-base/genres/revenge.md +846 -0
  187. package/templates/knowledge-base/genres/romance.md +948 -0
  188. package/templates/knowledge-base/genres/sci-fi.md +156 -0
  189. package/templates/knowledge-base/genres/thriller.md +166 -0
  190. package/templates/knowledge-base/genres/wuxia.md +143 -0
  191. package/templates/knowledge-base/references/README.md +96 -0
  192. package/templates/knowledge-base/references/china-1920s/culture.md +423 -0
  193. package/templates/knowledge-base/references/china-1920s/daily-life.md +616 -0
  194. package/templates/knowledge-base/references/china-1920s/overview.md +298 -0
  195. package/templates/knowledge-base/references/china-1920s/society.md +703 -0
  196. package/templates/knowledge-base/references/china-1920s/warlords.md +427 -0
  197. package/templates/knowledge-base/references/cultivation-world/daily-life.md +108 -0
  198. package/templates/knowledge-base/references/cultivation-world/overview.md +64 -0
  199. package/templates/knowledge-base/references/cultivation-world/power-system.md +108 -0
  200. package/templates/knowledge-base/references/cultivation-world/sects.md +104 -0
  201. package/templates/knowledge-base/references/cultivation-world/world-setting.md +108 -0
  202. package/templates/knowledge-base/references/modern-workplace/corporate.md +115 -0
  203. package/templates/knowledge-base/references/modern-workplace/daily-life.md +129 -0
  204. package/templates/knowledge-base/references/modern-workplace/overview.md +73 -0
  205. package/templates/knowledge-base/references/modern-workplace/relationships.md +107 -0
  206. package/templates/knowledge-base/references/modern-workplace/tech-industry.md +131 -0
  207. package/templates/knowledge-base/references/tang-dynasty/culture.md +135 -0
  208. package/templates/knowledge-base/references/tang-dynasty/daily-life.md +139 -0
  209. package/templates/knowledge-base/references/tang-dynasty/overview.md +76 -0
  210. package/templates/knowledge-base/references/tang-dynasty/politics.md +121 -0
  211. package/templates/knowledge-base/references/tang-dynasty/society.md +126 -0
  212. package/templates/knowledge-base/requirements/README.md +240 -0
  213. package/templates/knowledge-base/requirements/anti-ai-v3.md +46 -0
  214. package/templates/knowledge-base/requirements/anti-ai-v4.md +430 -0
  215. package/templates/knowledge-base/requirements/fast-paced.md +552 -0
  216. package/templates/knowledge-base/requirements/no-poison.md +60 -0
  217. package/templates/knowledge-base/requirements/romance-angst.md +102 -0
  218. package/templates/knowledge-base/requirements/romance-sweet.md +63 -0
  219. package/templates/knowledge-base/requirements/serious-literature.md +45 -0
  220. package/templates/knowledge-base/requirements/strong-emotion.md +60 -0
  221. package/templates/knowledge-base/styles/README.md +302 -0
  222. package/templates/knowledge-base/styles/ancient-style.md +579 -0
  223. package/templates/knowledge-base/styles/literary.md +439 -0
  224. package/templates/knowledge-base/styles/minimal.md +472 -0
  225. package/templates/knowledge-base/styles/natural-voice.md +930 -0
  226. package/templates/knowledge-base/styles/web-novel.md +525 -0
  227. package/templates/memory/constitution.md +140 -0
  228. package/templates/memory/personal-voice.md +113 -0
  229. package/templates/scripts/README.md +187 -0
  230. package/templates/scripts/bash/analyze-story.sh +170 -0
  231. package/templates/scripts/bash/check-consistency.sh +463 -0
  232. package/templates/scripts/bash/check-plot.sh +374 -0
  233. package/templates/scripts/bash/check-timeline.sh +346 -0
  234. package/templates/scripts/bash/check-world.sh +395 -0
  235. package/templates/scripts/bash/check-writing-state.sh +854 -0
  236. package/templates/scripts/bash/clarify-story.sh +117 -0
  237. package/templates/scripts/bash/common.sh +151 -0
  238. package/templates/scripts/bash/constitution.sh +114 -0
  239. package/templates/scripts/bash/generate-tasks.sh +65 -0
  240. package/templates/scripts/bash/init-tracking.sh +183 -0
  241. package/templates/scripts/bash/manage-relations.sh +174 -0
  242. package/templates/scripts/bash/plan-story.sh +100 -0
  243. package/templates/scripts/bash/specify-story.sh +93 -0
  244. package/templates/scripts/bash/tasks-story.sh +96 -0
  245. package/templates/scripts/bash/test-word-count.sh +182 -0
  246. package/templates/scripts/bash/tests/bench-preload-cache.sh +100 -0
  247. package/templates/scripts/bash/tests/run-all-benchmarks.sh +16 -0
  248. package/templates/scripts/bash/tests/test-cache-semantics.sh +199 -0
  249. package/templates/scripts/bash/tests/test-cross-platform.sh +35 -0
  250. package/templates/scripts/bash/tests/test-edge-cases-bash.sh +60 -0
  251. package/templates/scripts/bash/tests/test-phase1-bash.sh +28 -0
  252. package/templates/scripts/bash/tests/test-preload-cache.sh +123 -0
  253. package/templates/scripts/bash/tests/test-regex-precompile.sh +89 -0
  254. package/templates/scripts/bash/tests/test-regression-bash.sh +42 -0
  255. package/templates/scripts/bash/tests/test-task6-verification.sh +200 -0
  256. package/templates/scripts/bash/text-audit.sh +144 -0
  257. package/templates/scripts/bash/track-progress.sh +194 -0
  258. package/templates/scripts/powershell/analyze-story.ps1 +171 -0
  259. package/templates/scripts/powershell/check-analyze-stage.ps1 +110 -0
  260. package/templates/scripts/powershell/check-consistency.ps1 +138 -0
  261. package/templates/scripts/powershell/check-plot.ps1 +139 -0
  262. package/templates/scripts/powershell/check-timeline.ps1 +112 -0
  263. package/templates/scripts/powershell/check-writing-state.ps1 +490 -0
  264. package/templates/scripts/powershell/check-writing-state.ps1.backup +135 -0
  265. package/templates/scripts/powershell/clarify-story.ps1 +107 -0
  266. package/templates/scripts/powershell/common.ps1 +36 -0
  267. package/templates/scripts/powershell/constitution.ps1 +142 -0
  268. package/templates/scripts/powershell/generate-tasks.ps1 +75 -0
  269. package/templates/scripts/powershell/init-tracking.ps1 +98 -0
  270. package/templates/scripts/powershell/manage-relations.ps1 +134 -0
  271. package/templates/scripts/powershell/plan-story.ps1 +96 -0
  272. package/templates/scripts/powershell/specify-story.ps1 +82 -0
  273. package/templates/scripts/powershell/tests/bench-ps-cache.ps1 +80 -0
  274. package/templates/scripts/powershell/tests/test-cross-platform.ps1 +27 -0
  275. package/templates/scripts/powershell/tests/test-edge-cases-ps.ps1 +29 -0
  276. package/templates/scripts/powershell/tests/test-phase1-ps.ps1 +28 -0
  277. package/templates/scripts/powershell/tests/test-ps-cache.ps1 +73 -0
  278. package/templates/scripts/powershell/tests/test-regression-ps.ps1 +40 -0
  279. package/templates/scripts/powershell/text-audit.ps1 +100 -0
  280. package/templates/scripts/powershell/track-progress.ps1 +105 -0
  281. package/templates/skills/genre-knowledge/fantasy/SKILL.md +355 -0
  282. package/templates/skills/genre-knowledge/mystery/SKILL.md +337 -0
  283. package/templates/skills/genre-knowledge/romance/SKILL.md +228 -0
  284. package/templates/skills/genre-knowledge/sci-fi/SKILL.md +65 -0
  285. package/templates/skills/genre-knowledge/thriller/SKILL.md +95 -0
  286. package/templates/skills/quality-assurance/consistency-checker/SKILL.md +341 -0
  287. package/templates/skills/quality-assurance/continuity-tracker/SKILL.md +157 -0
  288. package/templates/skills/quality-assurance/forgotten-elements/SKILL.md +147 -0
  289. package/templates/skills/quality-assurance/getting-started/SKILL.md +224 -0
  290. package/templates/skills/quality-assurance/pacing-monitor/SKILL.md +143 -0
  291. package/templates/skills/quality-assurance/pov-validator/SKILL.md +135 -0
  292. package/templates/skills/quality-assurance/pre-write-checklist/SKILL.md +583 -0
  293. package/templates/skills/quality-assurance/requirement-detector/CONFLICT_RESOLUTION.md +119 -0
  294. package/templates/skills/quality-assurance/requirement-detector/EXAMPLES.md +146 -0
  295. package/templates/skills/quality-assurance/requirement-detector/KEYWORDS.md +160 -0
  296. package/templates/skills/quality-assurance/requirement-detector/SKILL.md +149 -0
  297. package/templates/skills/quality-assurance/setting-detector/SKILL.md +611 -0
  298. package/templates/skills/quality-assurance/style-detector/CONFLICT_RESOLUTION.md +126 -0
  299. package/templates/skills/quality-assurance/style-detector/EXAMPLES.md +206 -0
  300. package/templates/skills/quality-assurance/style-detector/KEYWORDS.md +207 -0
  301. package/templates/skills/quality-assurance/style-detector/SKILL.md +126 -0
  302. package/templates/skills/quality-assurance/workflow-guide/SKILL.md +381 -0
  303. package/templates/skills/writing-techniques/character-arc/SKILL.md +267 -0
  304. package/templates/skills/writing-techniques/dialogue-techniques/SKILL.md +366 -0
  305. package/templates/skills/writing-techniques/multi-thread-narrative/SKILL.md +553 -0
  306. package/templates/skills/writing-techniques/multi-thread-narrative/experts/thread-analyst.md +226 -0
  307. package/templates/skills/writing-techniques/pacing-control/SKILL.md +377 -0
  308. package/templates/skills/writing-techniques/reader-expectation/SKILL.md +578 -0
  309. package/templates/skills/writing-techniques/reader-expectation/experts/expectation-analyst.md +209 -0
  310. package/templates/skills/writing-techniques/revision-polish/SKILL.md +496 -0
  311. package/templates/skills/writing-techniques/revision-polish/experts/revision-editor.md +221 -0
  312. package/templates/skills/writing-techniques/scene-structure/SKILL.md +361 -0
  313. package/templates/skills/writing-techniques/style-learning/SKILL.md +436 -0
  314. package/templates/specification-example.md +146 -0
  315. package/templates/tracking/character-state.json +78 -0
  316. package/templates/tracking/plot-tracker.json +62 -0
  317. package/templates/tracking/relationships.json +70 -0
  318. package/templates/tracking/timeline.json +49 -0
  319. package/templates/tracking/tracking-log.md +110 -0
  320. package/templates/tracking/validation-rules.json +128 -0
@@ -0,0 +1,436 @@
1
+ ---
2
+ name: adaptive-style-learning
3
+ description: "Use when user has written 3+ chapters - automatically analyzes writing style and generates personalized style guide to improve AI consistency"
4
+ allowed-tools: Read, Write
5
+ ---
6
+
7
+ # 自适应风格学习 (Adaptive Style Learning)
8
+
9
+ ## 快速参考(Quick Reference)
10
+
11
+ ### 何时使用
12
+ - 用户已写 3+ 章(最少分析样本)
13
+ - 首次生成风格指南
14
+ - 风格发生变化需要更新
15
+ - AI 续写风格不一致时
16
+
17
+ ### 自动激活时机
18
+ - 执行 `/write` 前检测到 personal-voice.md 不存在
19
+ - 用户说"分析我的风格""学习我的写法"
20
+ - 检测到已写章节 ≥ 3 章
21
+
22
+ ## 核心原则 (Core Principles)
23
+
24
+ ### 1. 基于实际写作而非主观描述
25
+
26
+ **传统方式(主观)**:
27
+ ```
28
+ 用户:"我的风格是……简洁有力,富有节奏感"
29
+ AI:"好的,我会模仿"
30
+ → 实际不知道怎么模仿
31
+ ```
32
+
33
+ **风格学习方式(客观)**:
34
+ ```
35
+ 分析用户 10 章内容 →
36
+ 发现:
37
+ - 平均句长 16 字(短句为主)
38
+ - 对话占比 65%(对话驱动)
39
+ - 形容词密度 4%(少修饰)
40
+ - 单句段比例 45%(视觉节奏快)
41
+
42
+ → 生成具体指导:
43
+ "续写时保持短句为主(15-20字/句),对话占 60% 以上,
44
+ 少用形容词,多用单句段"
45
+ ```
46
+
47
+ ### 2. 量化 + 定性相结合
48
+
49
+ **量化指标**:
50
+ - 可测量、可重复
51
+ - 客观、精确
52
+
53
+ **定性描述**:
54
+ - 风格印象
55
+ - 整体感受
56
+ - 独特特征
57
+
58
+ **两者结合**:
59
+ ```markdown
60
+ ## 量化特征
61
+ - 平均句长:16.3 字
62
+ - 对话占比:65.2%
63
+ - 形容词密度:4.1%
64
+
65
+ ## 定性风格
66
+ - 整体:快节奏、口语化、对话驱动
67
+ - 句式:以短句为主,偶尔长句用于环境描写
68
+ - 用词:简洁克制,少修饰,多动词
69
+ ```
70
+
71
+ ### 3. 提供具体的续写指导
72
+
73
+ 不只是"描述风格",而是"如何模仿风格"。
74
+
75
+ ```markdown
76
+ ## 续写指导
77
+
78
+ ### 句子层面
79
+ ✓ 保持 15-20 字/句(平均 16 字)
80
+ ✓ 60% 以上用短句(<15 字)
81
+ ✓ 避免超过 40 字的复杂长句
82
+
83
+ ### 段落层面
84
+ ✓ 平均段长 60-80 字
85
+ ✓ 40% 左右用单句段(制造节奏)
86
+ ✓ 对话独立成段
87
+
88
+ ### 词汇层面
89
+ ✓ 形容词控制在 5% 以内
90
+ ✓ 多用动词,少用形容词副词
91
+ ✓ 避免:"非常""十分""极其"等强调副词
92
+
93
+ ### 对话层面
94
+ ✓ 对话占 60-70%
95
+ ✓ 对话简短、有节奏
96
+ ✓ 少用对话标签("他说""她说")
97
+
98
+ ### 节奏层面
99
+ ✓ 每章 3-4 个小场景
100
+ ✓ 场景转换干脆,少过渡
101
+ ✓ 快进为主,少拖沓
102
+ ```
103
+
104
+ ## 实践应用 (Best Practices)
105
+
106
+ ### 执行流程
107
+
108
+ **Step 1: 检测可用章节**
109
+ ```
110
+ 读取 stories/[current]/content/
111
+ 检查章节数量:
112
+ - < 3 章:样本不足,建议再写几章
113
+ - 3-10 章:可以分析,但结果可能不稳定
114
+ - > 10 章:理想,结果可靠
115
+ ```
116
+
117
+ **Step 2: 读取章节内容**
118
+ ```
119
+ 读取最近 10 章(或全部,如果 < 10 章)
120
+ 跳过:
121
+ - 大纲文件
122
+ - 未完成草稿
123
+ ```
124
+
125
+ **Step 3: 分析风格特征**
126
+ ```
127
+ 按照分析算法提取特征:
128
+ - 句子层面:平均句长、句长分布
129
+ - 词汇层面:形容词密度、高频词
130
+ - 段落层面:平均段长、单句段比例
131
+ - 对话层面:对话占比
132
+ - 节奏层面:场景频率
133
+ ```
134
+
135
+ **Step 4: 生成风格报告**
136
+ ```
137
+ 输出到控制台:
138
+ 📊 风格分析报告
139
+ ├── 句子特征:平均 16.3 字,短句占 62%
140
+ ├── 词汇特征:形容词 4.1%,高频词 "他""说""了"
141
+ ├── 对话占比:65.2%
142
+ └── 风格印象:快节奏、对话驱动、口语化
143
+
144
+ 💡 建议:
145
+ - 保持短句为主
146
+ - 对话占 60% 以上
147
+ - 少用修饰词
148
+ ```
149
+
150
+ **Step 5: 写入 personal-voice.md**
151
+ ```
152
+ 生成完整的风格指南文件
153
+ 保存到:.specify/memory/personal-voice.md
154
+ ```
155
+
156
+ **Step 6: 确认和调整**
157
+ ```
158
+ 询问用户:
159
+ "已生成风格指南,请查看 .specify/memory/personal-voice.md
160
+ 是否需要调整?"
161
+
162
+ 用户可以手动微调:
163
+ - 删除不准确的描述
164
+ - 添加未捕获的特征
165
+ - 强调某些风格要点
166
+ ```
167
+
168
+ ### 与其他命令的集成
169
+
170
+ **在 /write 前自动检查**:
171
+ ```
172
+ pre-write-checklist 检测:
173
+ - personal-voice.md 是否存在?
174
+ - 如果不存在且已写 3+ 章 →
175
+ 建议:"执行风格学习生成风格指南"
176
+ ```
177
+
178
+ **定期更新**:
179
+ ```
180
+ 每写 10 章后提醒:
181
+ "已写 10 章,建议更新风格指南以反映风格变化"
182
+ ```
183
+
184
+ ## 生成的 personal-voice.md 格式
185
+
186
+ ```markdown
187
+ # 个人写作风格指南
188
+
189
+ > 本文件由风格学习 Skill 自动生成,基于已写章节分析
190
+ > 生成日期:2025-02-07
191
+ > 分析章节:第 1-10 章(共 25,000 字)
192
+
193
+ ---
194
+
195
+ ## 📊 量化风格特征
196
+
197
+ ### 句子层面
198
+ - **平均句长**:16.3 字
199
+ - **句长分布**:
200
+ - 短句(<15字):62%
201
+ - 中句(15-30字):32%
202
+ - 长句(>30字):6%
203
+ - **句长标准差**:8.2(中等变化)
204
+
205
+ ### 词汇层面
206
+ - **形容词密度**:4.1%(低)
207
+ - **副词密度**:2.8%(低)
208
+ - **对话标签频率**:30%(较少使用"他说""她说")
209
+ - **高频词 Top 10**:他(1200次)、说(890次)、了(850次)...
210
+
211
+ ### 段落层面
212
+ - **平均段长**:68.5 字
213
+ - **单句段比例**:43%(高,制造节奏感)
214
+ - **段落类型分布**:
215
+ - 对话段:55%
216
+ - 叙述段:30%
217
+ - 描写段:15%
218
+
219
+ ### 叙述层面
220
+ - **对话占比**:65.2%(对话驱动)
221
+ - **内心独白**:8.3%(少)
222
+ - **环境描写**:12.5%(适中)
223
+ - **动作描写**:14.0%(较多)
224
+
225
+ ---
226
+
227
+ ## 🎨 定性风格印象
228
+
229
+ ### 整体风格
230
+ 快节奏、口语化、对话驱动的现代都市风格
231
+
232
+ ### 句式特点
233
+ - **以短句为主**:制造紧凑感和节奏感
234
+ - **长短交替**:偶尔用长句缓冲节奏
235
+ - **多用主动句**:直接、有力
236
+
237
+ ### 用词倾向
238
+ - **简洁克制**:少用形容词副词
239
+ - **口语化**:接地气,少书面语
240
+ - **动词驱动**:多用动作,少用状态
241
+
242
+ ### 对话风格
243
+ - **对话密集**:占 60% 以上
244
+ - **简短有力**:对话多为短句
245
+ - **少标签**:靠节奏和上下文区分说话人
246
+
247
+ ### 段落节奏
248
+ - **短段为主**:60-80 字/段
249
+ - **大量单句段**:制造视觉节奏
250
+ - **白空间多**:页面呼吸感强
251
+
252
+ ---
253
+
254
+ ## ✍️ 续写指导(重点)
255
+
256
+ ### 句子层面指导
257
+
258
+ **目标**:平均句长 15-20 字
259
+
260
+ ✓ **好的示例**(符合你的风格):
261
+ ```
262
+ 他转身离开。
263
+ 她没有追。
264
+ 外面下起了雨,淅淅沥沥的。
265
+ ```
266
+
267
+ ✗ **避免的示例**(不符合你的风格):
268
+ ```
269
+ 他转过身去,毫不犹豫地向门口走去,头也不回一下,
270
+ 仿佛她从来不曾存在过一样。
271
+ (单句 30+ 字,太长)
272
+ ```
273
+
274
+ ### 段落层面指导
275
+
276
+ **目标**:60-80 字/段,40% 单句段
277
+
278
+ ✓ **好的示例**:
279
+ ```
280
+ 他转身离开。
281
+
282
+ 她没有追。
283
+
284
+ 窗外下起了雨,淅淅沥沥的。她盯着那扇门,
285
+ 手里的咖啡早就凉了。
286
+ ```
287
+ (短段 + 单句段 + 节奏)
288
+
289
+ ✗ **避免的示例**:
290
+ ```
291
+ 他转身离开了,她没有追,只是站在原地,
292
+ 看着他的背影消失在门口,窗外下起了雨,
293
+ 淅淅沥沥的,她盯着那扇门,手里的咖啡早就凉了。
294
+ ```
295
+ (一整段,无节奏)
296
+
297
+ ### 对话层面指导
298
+
299
+ **目标**:对话占 60-70%,简短直接
300
+
301
+ ✓ **好的示例**:
302
+ ```
303
+ "你走吧。"
304
+ 他停下。
305
+ "真的?"
306
+ "嗯。"
307
+ "好。"
308
+ 他走了。
309
+ ```
310
+ (对话驱动,简短,少标签)
311
+
312
+ ✗ **避免的示例**:
313
+ ```
314
+ 她对他说:"你走吧,我不想再看到你了。"
315
+ 他停下脚步,转过头来问道:"你真的要这样吗?"
316
+ 她点点头说:"嗯,我是认真的。"
317
+ 他叹了口气说:"好吧,那我走了。"
318
+ ```
319
+ (标签过多,对话太完整)
320
+
321
+ ### 词汇层面指导
322
+
323
+ **目标**:形容词 < 5%,多用动词
324
+
325
+ ✓ **好的用词**:
326
+ - 动词:走、跑、停、看、说、笑
327
+ - 简洁:雨、风、门、手
328
+ - 少修饰:直接描述行为
329
+
330
+ ✗ **避免的用词**:
331
+ - 过度修饰:"非常""十分""极其""特别"
332
+ - 华丽形容词:"绚丽的""华美的""璀璨的"
333
+ - 书面语:"然而""因此""故而"
334
+
335
+ ### 节奏层面指导
336
+
337
+ **目标**:快节奏,每章 3-4 个场景
338
+
339
+ ✓ **节奏控制**:
340
+ - 场景转换干脆:少过渡,直接跳
341
+ - 时间快进:跳过无聊部分
342
+ - 对话推进:用对话而非叙述推进情节
343
+
344
+ ---
345
+
346
+ ## 🔄 风格更新记录
347
+
348
+ | 日期 | 章节范围 | 主要变化 |
349
+ |------|---------|---------|
350
+ | 2025-02-07 | 1-10 章 | 初始分析 |
351
+
352
+ ---
353
+
354
+ ## 📝 手动调整区(可选)
355
+
356
+ 用户可以在此添加自动分析未捕获的风格特征:
357
+
358
+ ```
359
+ [用户手动添加的风格要点]
360
+ - 例如:喜欢用"淡淡的""微微"等柔和词汇
361
+ - 例如:避免使用"突然",用行为暗示突然性
362
+ ```
363
+
364
+ ---
365
+
366
+ **使用建议**:
367
+ 每次执行 /write 前,先快速扫描本文件,刷新风格记忆。
368
+ ```
369
+
370
+ ## 常见陷阱 (Common Pitfalls)
371
+
372
+ ### 1. 样本不足导致不准确
373
+
374
+ **症状**:
375
+ - 只分析 1-2 章
376
+ - 风格特征不稳定
377
+
378
+ **解决**:
379
+ - 最少 3 章
380
+ - 建议 10+ 章
381
+
382
+ ### 2. 过度依赖量化指标
383
+
384
+ **症状**:
385
+ - 只看数字,不看感觉
386
+ - 机械地复制特征
387
+
388
+ **解决**:
389
+ - 量化 + 定性结合
390
+ - 保留灵活性
391
+
392
+ ### 3. 风格指南过时
393
+
394
+ **症状**:
395
+ - 最初 10 章生成的指南
396
+ - 但现在已写到 50 章,风格变化
397
+
398
+ **解决**:
399
+ - 定期更新(每 10 章)
400
+ - 检测风格漂移
401
+
402
+ ## 检查清单 (Checklist)
403
+
404
+ 执行风格学习前:
405
+ - [ ] 已写章节 ≥ 3 章?
406
+ - [ ] 章节内容完整(非草稿)?
407
+ - [ ] personal-voice.md 不存在或需要更新?
408
+
409
+ 执行后验证:
410
+ - [ ] personal-voice.md 已生成?
411
+ - [ ] 量化指标合理?
412
+ - [ ] 续写指导清晰可执行?
413
+ - [ ] 用户确认风格描述准确?
414
+
415
+ ## 进阶功能(可选)
416
+
417
+ ### 风格漂移检测
418
+ ```
419
+ 每写 5 章,重新分析风格:
420
+ - 对比新风格 vs 旧风格
421
+ - 如果差异 > 20% →
422
+ 提醒:"检测到风格变化,建议更新风格指南"
423
+ ```
424
+
425
+ ### 多人协作风格融合
426
+ ```
427
+ 如果多人合著:
428
+ - 分别分析每人风格
429
+ - 提取共同特征
430
+ - 生成统一风格指南
431
+ ```
432
+
433
+ ---
434
+
435
+ **核心价值**:
436
+ 让 AI 真正理解用户风格,而非依赖模糊的"学我的风格"指令。
@@ -0,0 +1,146 @@
1
+ # 故事规格说明示例
2
+
3
+ ## 最小配置(使用默认智能推断)
4
+
5
+ ```yaml
6
+ ---
7
+ title: "我的小说"
8
+ genre: romance
9
+ ---
10
+ ```
11
+
12
+ **说明**:
13
+ - 不配置 `resource-loading` 时,使用默认智能推断
14
+ - 根据 `genre` 自动加载对应的 genre knowledge-base
15
+ - 自动加载所有 craft knowledge-base 和 writing-techniques skills
16
+
17
+ ---
18
+
19
+ ## 标准配置(使用原有机制)
20
+
21
+ ```yaml
22
+ ---
23
+ title: "我的小说"
24
+ genre: romance
25
+ writing-style: natural-voice
26
+ writing-requirements:
27
+ - anti-ai-v4
28
+ - fast-paced
29
+ ---
30
+ ```
31
+
32
+ **说明**:
33
+ - `writing-style` 会自动加载 `knowledge-base/styles/natural-voice.md`
34
+ - `writing-requirements` 会自动加载对应的 requirements 文档
35
+ - 向后兼容现有项目
36
+
37
+ ---
38
+
39
+ ## 完整配置(使用三层机制)
40
+
41
+ ```yaml
42
+ ---
43
+ title: "我的小说"
44
+ genre: romance
45
+ writing-style: natural-voice
46
+ writing-requirements:
47
+ - anti-ai-v4
48
+ - fast-paced
49
+
50
+ # 新增:资源加载配置
51
+ resource-loading:
52
+ # 控制自动推断
53
+ auto-load: true # false 则完全禁用智能推断
54
+
55
+ # 知识库配置
56
+ knowledge-base:
57
+ craft:
58
+ - dialogue # 明确启用
59
+ - scene-structure
60
+ - pacing
61
+ - "!character-arc" # ! 前缀表示禁用
62
+ - "!show-not-tell"
63
+ genres:
64
+ - romance # 自动从 genre 字段推断,也可手动指定
65
+ requirements:
66
+ - anti-ai-v4 # 自动从 writing-requirements 推断
67
+ - fast-paced
68
+
69
+ # Skills 配置
70
+ skills:
71
+ writing-techniques:
72
+ - dialogue-techniques
73
+ - pacing-control
74
+ - "!character-arc" # 禁用某个 skill
75
+ quality-assurance:
76
+ - consistency-checker # 默认会加载,可省略
77
+
78
+ # 关键词触发配置
79
+ keyword-triggers:
80
+ enabled: true # 是否启用运行时关键词触发
81
+ custom-mappings: # 自定义关键词映射
82
+ "情感节奏": knowledge-base/craft/pacing.md
83
+ "甜度": knowledge-base/genres/romance.md
84
+
85
+ # 分析命令专用配置
86
+ analysis:
87
+ knowledge-base:
88
+ craft:
89
+ - dialogue # 只检查对话质量
90
+ - pacing # 只检查节奏
91
+ skills:
92
+ quality-assurance:
93
+ - consistency-checker
94
+ - "!workflow-guide" # 分析时不需要工作流引导
95
+ ---
96
+ ```
97
+
98
+ **说明**:
99
+
100
+ ### resource-loading 配置详解
101
+
102
+ #### auto-load(自动加载开关)
103
+ - `true`(默认):启用默认智能推断
104
+ - `false`:完全禁用智能推断,只加载显式配置的资源
105
+
106
+ #### knowledge-base(知识库配置)
107
+ - **craft**: 写作技巧知识库
108
+ - 可选值:`dialogue`, `scene-structure`, `character-arc`, `pacing`, `show-not-tell`
109
+ - 使用 `!` 前缀禁用(如 `!character-arc`)
110
+ - **genres**: 类型知识库
111
+ - 自动从 `genre` 字段推断
112
+ - 可手动指定其他类型
113
+ - **requirements**: 写作规范
114
+ - 自动从 `writing-requirements` 字段推断
115
+
116
+ #### skills(Skills 配置)
117
+ - **writing-techniques**: 写作技巧 Skills
118
+ - 可选值:`dialogue-techniques`, `scene-structure`, `character-arc`, `pacing-control`
119
+ - **quality-assurance**: 质量保证 Skills
120
+ - 可选值:`consistency-checker`, `workflow-guide`
121
+
122
+ #### keyword-triggers(关键词触发)
123
+ - **enabled**: 是否启用运行时关键词触发
124
+ - **custom-mappings**: 自定义关键词 → 资源映射
125
+
126
+ #### analysis(分析命令专用)
127
+ - 为 `/analyze` 等分析命令指定专用配置
128
+ - 结构与主配置相同,但只在分析命令中生效
129
+
130
+ ---
131
+
132
+ ## 配置优先级
133
+
134
+ **优先级**:配置声明 > 智能推断 > 关键词触发
135
+
136
+ 1. **配置声明最高**:显式配置的资源一定会加载/禁用
137
+ 2. **智能推断次之**:根据 genre、writing-style 等字段推断
138
+ 3. **关键词触发最低**:运行时检测关键词动态加载
139
+
140
+ ---
141
+
142
+ ## 向后兼容性
143
+
144
+ - 不配置 `resource-loading` → 使用默认智能推断 + 原有机制
145
+ - 部分配置 `resource-loading` → 未配置的部分使用默认值
146
+ - 现有项目无需修改,自动享受智能推断
@@ -0,0 +1,78 @@
1
+ {
2
+ "novel": "[小说名称]",
3
+ "lastUpdated": "",
4
+
5
+ "protagonist": {
6
+ "name": "[主角名]",
7
+ "currentStatus": {
8
+ "alive": true,
9
+ "health": "良好",
10
+ "mentalState": "正常",
11
+ "location": "[当前位置]",
12
+ "chapter": 1,
13
+ "age": null,
14
+ "position": "[身份/职位]",
15
+ "possessions": [],
16
+ "skills": [],
17
+ "knowledge": []
18
+ },
19
+ "development": {
20
+ "arc": "[成长弧线描述]",
21
+ "milestones": [],
22
+ "currentPhase": "起点",
23
+ "nextGoal": ""
24
+ },
25
+ "relationships": {
26
+ "summary": "见relationships.json详细信息",
27
+ "key": {}
28
+ }
29
+ },
30
+
31
+ "supportingCharacters": {
32
+ "[配角名]": {
33
+ "role": "[角色功能]",
34
+ "importance": "high|medium|low",
35
+ "status": {
36
+ "alive": true,
37
+ "lastSeen": {
38
+ "chapter": null,
39
+ "location": ""
40
+ },
41
+ "currentLocation": "unknown",
42
+ "occupation": ""
43
+ },
44
+ "arc": {
45
+ "planned": "",
46
+ "current": ""
47
+ },
48
+ "secrets": [],
49
+ "motivations": []
50
+ }
51
+ },
52
+
53
+ "characterGroups": {
54
+ "active": [],
55
+ "inactive": [],
56
+ "deceased": []
57
+ },
58
+
59
+ "appearanceTracking": [
60
+ {
61
+ "chapter": 1,
62
+ "appearances": [
63
+ {
64
+ "character": "[角色名]",
65
+ "role": "主要|次要|背景",
66
+ "significance": ""
67
+ }
68
+ ]
69
+ }
70
+ ],
71
+
72
+ "consistency": {
73
+ "physicalTraits": {},
74
+ "personalityTraits": {},
75
+ "speechPatterns": {},
76
+ "warnings": []
77
+ }
78
+ }
@@ -0,0 +1,62 @@
1
+ {
2
+ "novel": "[小说名称]",
3
+ "lastUpdated": "",
4
+ "currentState": {
5
+ "chapter": 1,
6
+ "volume": 1,
7
+ "mainPlotStage": "开端",
8
+ "location": "[当前地点]",
9
+ "timepoint": "[故事时间]"
10
+ },
11
+
12
+ "plotlines": {
13
+ "main": {
14
+ "name": "[主线名称]",
15
+ "description": "[主线描述]",
16
+ "status": "active",
17
+ "currentNode": "[当前节点]",
18
+ "completedNodes": [],
19
+ "upcomingNodes": [],
20
+ "plannedClimax": {
21
+ "chapter": null,
22
+ "description": ""
23
+ }
24
+ },
25
+ "subplots": []
26
+ },
27
+
28
+ "foreshadowing": [
29
+ {
30
+ "id": "foreshadow-001",
31
+ "content": "[伏笔内容]",
32
+ "planted": {
33
+ "chapter": null,
34
+ "description": ""
35
+ },
36
+ "hints": [],
37
+ "plannedReveal": {
38
+ "chapter": null,
39
+ "description": ""
40
+ },
41
+ "status": "active",
42
+ "importance": "high"
43
+ }
44
+ ],
45
+
46
+ "conflicts": {
47
+ "active": [],
48
+ "resolved": [],
49
+ "upcoming": []
50
+ },
51
+
52
+ "checkpoints": {
53
+ "volumeEnd": [],
54
+ "majorEvents": []
55
+ },
56
+
57
+ "notes": {
58
+ "plotHoles": [],
59
+ "inconsistencies": [],
60
+ "reminders": []
61
+ }
62
+ }