claude-novel-writer 0.1.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 (620) hide show
  1. package/CHANGELOG.md +70 -0
  2. package/LICENSE +21 -0
  3. package/QUICKSTART.md +183 -0
  4. package/README.md +257 -0
  5. package/dist/ai/beat-generator.d.ts +79 -0
  6. package/dist/ai/beat-generator.d.ts.map +1 -0
  7. package/dist/ai/beat-generator.js +281 -0
  8. package/dist/ai/beat-generator.js.map +1 -0
  9. package/dist/ai/claude-client.d.ts +55 -0
  10. package/dist/ai/claude-client.d.ts.map +1 -0
  11. package/dist/ai/claude-client.js +78 -0
  12. package/dist/ai/claude-client.js.map +1 -0
  13. package/dist/ai/generation-manager.d.ts +216 -0
  14. package/dist/ai/generation-manager.d.ts.map +1 -0
  15. package/dist/ai/generation-manager.js +874 -0
  16. package/dist/ai/generation-manager.js.map +1 -0
  17. package/dist/analysis/copy-editor.d.ts +96 -0
  18. package/dist/analysis/copy-editor.d.ts.map +1 -0
  19. package/dist/analysis/copy-editor.js +335 -0
  20. package/dist/analysis/copy-editor.js.map +1 -0
  21. package/dist/analysis/developmental-analyzer.d.ts +83 -0
  22. package/dist/analysis/developmental-analyzer.d.ts.map +1 -0
  23. package/dist/analysis/developmental-analyzer.js +144 -0
  24. package/dist/analysis/developmental-analyzer.js.map +1 -0
  25. package/dist/analysis/draft-scanner.d.ts +49 -0
  26. package/dist/analysis/draft-scanner.d.ts.map +1 -0
  27. package/dist/analysis/draft-scanner.js +145 -0
  28. package/dist/analysis/draft-scanner.js.map +1 -0
  29. package/dist/analysis/pacing-analyzer.d.ts +55 -0
  30. package/dist/analysis/pacing-analyzer.d.ts.map +1 -0
  31. package/dist/analysis/pacing-analyzer.js +237 -0
  32. package/dist/analysis/pacing-analyzer.js.map +1 -0
  33. package/dist/analysis/prose-analyzer.d.ts +118 -0
  34. package/dist/analysis/prose-analyzer.d.ts.map +1 -0
  35. package/dist/analysis/prose-analyzer.js +600 -0
  36. package/dist/analysis/prose-analyzer.js.map +1 -0
  37. package/dist/analysis/read-aloud.d.ts +119 -0
  38. package/dist/analysis/read-aloud.d.ts.map +1 -0
  39. package/dist/analysis/read-aloud.js +248 -0
  40. package/dist/analysis/read-aloud.js.map +1 -0
  41. package/dist/bin.d.ts +12 -0
  42. package/dist/bin.d.ts.map +1 -0
  43. package/dist/bin.js +29 -0
  44. package/dist/bin.js.map +1 -0
  45. package/dist/builders/chapter-builder.d.ts +77 -0
  46. package/dist/builders/chapter-builder.d.ts.map +1 -0
  47. package/dist/builders/chapter-builder.js +375 -0
  48. package/dist/builders/chapter-builder.js.map +1 -0
  49. package/dist/builders/character-builder.d.ts +57 -0
  50. package/dist/builders/character-builder.d.ts.map +1 -0
  51. package/dist/builders/character-builder.js +370 -0
  52. package/dist/builders/character-builder.js.map +1 -0
  53. package/dist/builders/idea-builder.d.ts +70 -0
  54. package/dist/builders/idea-builder.d.ts.map +1 -0
  55. package/dist/builders/idea-builder.js +144 -0
  56. package/dist/builders/idea-builder.js.map +1 -0
  57. package/dist/builders/location-builder.d.ts +48 -0
  58. package/dist/builders/location-builder.d.ts.map +1 -0
  59. package/dist/builders/location-builder.js +215 -0
  60. package/dist/builders/location-builder.js.map +1 -0
  61. package/dist/builders/manuscript-assembler.d.ts +119 -0
  62. package/dist/builders/manuscript-assembler.d.ts.map +1 -0
  63. package/dist/builders/manuscript-assembler.js +347 -0
  64. package/dist/builders/manuscript-assembler.js.map +1 -0
  65. package/dist/builders/plot-builder.d.ts +35 -0
  66. package/dist/builders/plot-builder.d.ts.map +1 -0
  67. package/dist/builders/plot-builder.js +138 -0
  68. package/dist/builders/plot-builder.js.map +1 -0
  69. package/dist/builders/plot-thread-builder.d.ts +76 -0
  70. package/dist/builders/plot-thread-builder.d.ts.map +1 -0
  71. package/dist/builders/plot-thread-builder.js +234 -0
  72. package/dist/builders/plot-thread-builder.js.map +1 -0
  73. package/dist/builders/scene-builder.d.ts +109 -0
  74. package/dist/builders/scene-builder.d.ts.map +1 -0
  75. package/dist/builders/scene-builder.js +388 -0
  76. package/dist/builders/scene-builder.js.map +1 -0
  77. package/dist/builders/timeline-builder.d.ts +94 -0
  78. package/dist/builders/timeline-builder.d.ts.map +1 -0
  79. package/dist/builders/timeline-builder.js +261 -0
  80. package/dist/builders/timeline-builder.js.map +1 -0
  81. package/dist/builders/world-rules-builder.d.ts +90 -0
  82. package/dist/builders/world-rules-builder.d.ts.map +1 -0
  83. package/dist/builders/world-rules-builder.js +257 -0
  84. package/dist/builders/world-rules-builder.js.map +1 -0
  85. package/dist/cli/commands/analyze.d.ts +8 -0
  86. package/dist/cli/commands/analyze.d.ts.map +1 -0
  87. package/dist/cli/commands/analyze.js +191 -0
  88. package/dist/cli/commands/analyze.js.map +1 -0
  89. package/dist/cli/commands/beta.d.ts +8 -0
  90. package/dist/cli/commands/beta.d.ts.map +1 -0
  91. package/dist/cli/commands/beta.js +112 -0
  92. package/dist/cli/commands/beta.js.map +1 -0
  93. package/dist/cli/commands/canon.d.ts +6 -0
  94. package/dist/cli/commands/canon.d.ts.map +1 -0
  95. package/dist/cli/commands/canon.js +93 -0
  96. package/dist/cli/commands/canon.js.map +1 -0
  97. package/dist/cli/commands/chapter.d.ts +6 -0
  98. package/dist/cli/commands/chapter.d.ts.map +1 -0
  99. package/dist/cli/commands/chapter.js +104 -0
  100. package/dist/cli/commands/chapter.js.map +1 -0
  101. package/dist/cli/commands/character.d.ts +7 -0
  102. package/dist/cli/commands/character.d.ts.map +1 -0
  103. package/dist/cli/commands/character.js +147 -0
  104. package/dist/cli/commands/character.js.map +1 -0
  105. package/dist/cli/commands/check.d.ts +7 -0
  106. package/dist/cli/commands/check.d.ts.map +1 -0
  107. package/dist/cli/commands/check.js +105 -0
  108. package/dist/cli/commands/check.js.map +1 -0
  109. package/dist/cli/commands/context.d.ts +6 -0
  110. package/dist/cli/commands/context.d.ts.map +1 -0
  111. package/dist/cli/commands/context.js +73 -0
  112. package/dist/cli/commands/context.js.map +1 -0
  113. package/dist/cli/commands/create.d.ts +7 -0
  114. package/dist/cli/commands/create.d.ts.map +1 -0
  115. package/dist/cli/commands/create.js +295 -0
  116. package/dist/cli/commands/create.js.map +1 -0
  117. package/dist/cli/commands/draft.d.ts +6 -0
  118. package/dist/cli/commands/draft.d.ts.map +1 -0
  119. package/dist/cli/commands/draft.js +43 -0
  120. package/dist/cli/commands/draft.js.map +1 -0
  121. package/dist/cli/commands/export.d.ts +6 -0
  122. package/dist/cli/commands/export.d.ts.map +1 -0
  123. package/dist/cli/commands/export.js +117 -0
  124. package/dist/cli/commands/export.js.map +1 -0
  125. package/dist/cli/commands/foreshadow.d.ts +9 -0
  126. package/dist/cli/commands/foreshadow.d.ts.map +1 -0
  127. package/dist/cli/commands/foreshadow.js +78 -0
  128. package/dist/cli/commands/foreshadow.js.map +1 -0
  129. package/dist/cli/commands/generate.d.ts +6 -0
  130. package/dist/cli/commands/generate.d.ts.map +1 -0
  131. package/dist/cli/commands/generate.js +264 -0
  132. package/dist/cli/commands/generate.js.map +1 -0
  133. package/dist/cli/commands/graph.d.ts +6 -0
  134. package/dist/cli/commands/graph.d.ts.map +1 -0
  135. package/dist/cli/commands/graph.js +68 -0
  136. package/dist/cli/commands/graph.js.map +1 -0
  137. package/dist/cli/commands/help.d.ts +6 -0
  138. package/dist/cli/commands/help.d.ts.map +1 -0
  139. package/dist/cli/commands/help.js +16 -0
  140. package/dist/cli/commands/help.js.map +1 -0
  141. package/dist/cli/commands/idea.d.ts +6 -0
  142. package/dist/cli/commands/idea.d.ts.map +1 -0
  143. package/dist/cli/commands/idea.js +126 -0
  144. package/dist/cli/commands/idea.js.map +1 -0
  145. package/dist/cli/commands/init.d.ts +7 -0
  146. package/dist/cli/commands/init.d.ts.map +1 -0
  147. package/dist/cli/commands/init.js +78 -0
  148. package/dist/cli/commands/init.js.map +1 -0
  149. package/dist/cli/commands/knowledge.d.ts +6 -0
  150. package/dist/cli/commands/knowledge.d.ts.map +1 -0
  151. package/dist/cli/commands/knowledge.js +68 -0
  152. package/dist/cli/commands/knowledge.js.map +1 -0
  153. package/dist/cli/commands/list.d.ts +7 -0
  154. package/dist/cli/commands/list.d.ts.map +1 -0
  155. package/dist/cli/commands/list.js +181 -0
  156. package/dist/cli/commands/list.js.map +1 -0
  157. package/dist/cli/commands/location.d.ts +7 -0
  158. package/dist/cli/commands/location.d.ts.map +1 -0
  159. package/dist/cli/commands/location.js +97 -0
  160. package/dist/cli/commands/location.js.map +1 -0
  161. package/dist/cli/commands/plot.d.ts +6 -0
  162. package/dist/cli/commands/plot.d.ts.map +1 -0
  163. package/dist/cli/commands/plot.js +132 -0
  164. package/dist/cli/commands/plot.js.map +1 -0
  165. package/dist/cli/commands/promise.d.ts +6 -0
  166. package/dist/cli/commands/promise.d.ts.map +1 -0
  167. package/dist/cli/commands/promise.js +100 -0
  168. package/dist/cli/commands/promise.js.map +1 -0
  169. package/dist/cli/commands/query.d.ts +8 -0
  170. package/dist/cli/commands/query.d.ts.map +1 -0
  171. package/dist/cli/commands/query.js +108 -0
  172. package/dist/cli/commands/query.js.map +1 -0
  173. package/dist/cli/commands/research.d.ts +8 -0
  174. package/dist/cli/commands/research.d.ts.map +1 -0
  175. package/dist/cli/commands/research.js +105 -0
  176. package/dist/cli/commands/research.js.map +1 -0
  177. package/dist/cli/commands/revision.d.ts +7 -0
  178. package/dist/cli/commands/revision.d.ts.map +1 -0
  179. package/dist/cli/commands/revision.js +74 -0
  180. package/dist/cli/commands/revision.js.map +1 -0
  181. package/dist/cli/commands/scene.d.ts +7 -0
  182. package/dist/cli/commands/scene.d.ts.map +1 -0
  183. package/dist/cli/commands/scene.js +160 -0
  184. package/dist/cli/commands/scene.js.map +1 -0
  185. package/dist/cli/commands/series.d.ts +8 -0
  186. package/dist/cli/commands/series.d.ts.map +1 -0
  187. package/dist/cli/commands/series.js +130 -0
  188. package/dist/cli/commands/series.js.map +1 -0
  189. package/dist/cli/commands/session.d.ts +8 -0
  190. package/dist/cli/commands/session.d.ts.map +1 -0
  191. package/dist/cli/commands/session.js +129 -0
  192. package/dist/cli/commands/session.js.map +1 -0
  193. package/dist/cli/commands/sync.d.ts +7 -0
  194. package/dist/cli/commands/sync.d.ts.map +1 -0
  195. package/dist/cli/commands/sync.js +87 -0
  196. package/dist/cli/commands/sync.js.map +1 -0
  197. package/dist/cli/commands/timeline.d.ts +7 -0
  198. package/dist/cli/commands/timeline.d.ts.map +1 -0
  199. package/dist/cli/commands/timeline.js +219 -0
  200. package/dist/cli/commands/timeline.js.map +1 -0
  201. package/dist/cli/commands/world-rule.d.ts +6 -0
  202. package/dist/cli/commands/world-rule.d.ts.map +1 -0
  203. package/dist/cli/commands/world-rule.js +160 -0
  204. package/dist/cli/commands/world-rule.js.map +1 -0
  205. package/dist/cli/handlers/analyze-handler.d.ts +8 -0
  206. package/dist/cli/handlers/analyze-handler.d.ts.map +1 -0
  207. package/dist/cli/handlers/analyze-handler.js +754 -0
  208. package/dist/cli/handlers/analyze-handler.js.map +1 -0
  209. package/dist/cli/handlers/beta-handler.d.ts +13 -0
  210. package/dist/cli/handlers/beta-handler.d.ts.map +1 -0
  211. package/dist/cli/handlers/beta-handler.js +236 -0
  212. package/dist/cli/handlers/beta-handler.js.map +1 -0
  213. package/dist/cli/handlers/canon-handler.d.ts +16 -0
  214. package/dist/cli/handlers/canon-handler.d.ts.map +1 -0
  215. package/dist/cli/handlers/canon-handler.js +214 -0
  216. package/dist/cli/handlers/canon-handler.js.map +1 -0
  217. package/dist/cli/handlers/chapter-handler.d.ts +7 -0
  218. package/dist/cli/handlers/chapter-handler.d.ts.map +1 -0
  219. package/dist/cli/handlers/chapter-handler.js +280 -0
  220. package/dist/cli/handlers/chapter-handler.js.map +1 -0
  221. package/dist/cli/handlers/character-handler.d.ts +8 -0
  222. package/dist/cli/handlers/character-handler.d.ts.map +1 -0
  223. package/dist/cli/handlers/character-handler.js +604 -0
  224. package/dist/cli/handlers/character-handler.js.map +1 -0
  225. package/dist/cli/handlers/check-handler.d.ts +7 -0
  226. package/dist/cli/handlers/check-handler.d.ts.map +1 -0
  227. package/dist/cli/handlers/check-handler.js +416 -0
  228. package/dist/cli/handlers/check-handler.js.map +1 -0
  229. package/dist/cli/handlers/context-handler.d.ts +16 -0
  230. package/dist/cli/handlers/context-handler.d.ts.map +1 -0
  231. package/dist/cli/handlers/context-handler.js +122 -0
  232. package/dist/cli/handlers/context-handler.js.map +1 -0
  233. package/dist/cli/handlers/craft-handler.d.ts +22 -0
  234. package/dist/cli/handlers/craft-handler.d.ts.map +1 -0
  235. package/dist/cli/handlers/craft-handler.js +44 -0
  236. package/dist/cli/handlers/craft-handler.js.map +1 -0
  237. package/dist/cli/handlers/create-handler.d.ts +22 -0
  238. package/dist/cli/handlers/create-handler.d.ts.map +1 -0
  239. package/dist/cli/handlers/create-handler.js +386 -0
  240. package/dist/cli/handlers/create-handler.js.map +1 -0
  241. package/dist/cli/handlers/draft-handler.d.ts +17 -0
  242. package/dist/cli/handlers/draft-handler.d.ts.map +1 -0
  243. package/dist/cli/handlers/draft-handler.js +91 -0
  244. package/dist/cli/handlers/draft-handler.js.map +1 -0
  245. package/dist/cli/handlers/export-handler.d.ts +7 -0
  246. package/dist/cli/handlers/export-handler.d.ts.map +1 -0
  247. package/dist/cli/handlers/export-handler.js +179 -0
  248. package/dist/cli/handlers/export-handler.js.map +1 -0
  249. package/dist/cli/handlers/foreshadow-handler.d.ts +8 -0
  250. package/dist/cli/handlers/foreshadow-handler.d.ts.map +1 -0
  251. package/dist/cli/handlers/foreshadow-handler.js +132 -0
  252. package/dist/cli/handlers/foreshadow-handler.js.map +1 -0
  253. package/dist/cli/handlers/generate-handler.d.ts +7 -0
  254. package/dist/cli/handlers/generate-handler.d.ts.map +1 -0
  255. package/dist/cli/handlers/generate-handler.js +500 -0
  256. package/dist/cli/handlers/generate-handler.js.map +1 -0
  257. package/dist/cli/handlers/graph-handler.d.ts +16 -0
  258. package/dist/cli/handlers/graph-handler.d.ts.map +1 -0
  259. package/dist/cli/handlers/graph-handler.js +149 -0
  260. package/dist/cli/handlers/graph-handler.js.map +1 -0
  261. package/dist/cli/handlers/help-handler.d.ts +14 -0
  262. package/dist/cli/handlers/help-handler.d.ts.map +1 -0
  263. package/dist/cli/handlers/help-handler.js +59 -0
  264. package/dist/cli/handlers/help-handler.js.map +1 -0
  265. package/dist/cli/handlers/idea-handler.d.ts +16 -0
  266. package/dist/cli/handlers/idea-handler.d.ts.map +1 -0
  267. package/dist/cli/handlers/idea-handler.js +256 -0
  268. package/dist/cli/handlers/idea-handler.js.map +1 -0
  269. package/dist/cli/handlers/init-handler.d.ts +6 -0
  270. package/dist/cli/handlers/init-handler.d.ts.map +1 -0
  271. package/dist/cli/handlers/init-handler.js +228 -0
  272. package/dist/cli/handlers/init-handler.js.map +1 -0
  273. package/dist/cli/handlers/knowledge-handler.d.ts +16 -0
  274. package/dist/cli/handlers/knowledge-handler.d.ts.map +1 -0
  275. package/dist/cli/handlers/knowledge-handler.js +142 -0
  276. package/dist/cli/handlers/knowledge-handler.js.map +1 -0
  277. package/dist/cli/handlers/list-handler.d.ts +26 -0
  278. package/dist/cli/handlers/list-handler.d.ts.map +1 -0
  279. package/dist/cli/handlers/list-handler.js +381 -0
  280. package/dist/cli/handlers/list-handler.js.map +1 -0
  281. package/dist/cli/handlers/location-handler.d.ts +7 -0
  282. package/dist/cli/handlers/location-handler.d.ts.map +1 -0
  283. package/dist/cli/handlers/location-handler.js +392 -0
  284. package/dist/cli/handlers/location-handler.js.map +1 -0
  285. package/dist/cli/handlers/plot-handler.d.ts +8 -0
  286. package/dist/cli/handlers/plot-handler.d.ts.map +1 -0
  287. package/dist/cli/handlers/plot-handler.js +528 -0
  288. package/dist/cli/handlers/plot-handler.js.map +1 -0
  289. package/dist/cli/handlers/promise-handler.d.ts +16 -0
  290. package/dist/cli/handlers/promise-handler.d.ts.map +1 -0
  291. package/dist/cli/handlers/promise-handler.js +206 -0
  292. package/dist/cli/handlers/promise-handler.js.map +1 -0
  293. package/dist/cli/handlers/query-handler.d.ts +13 -0
  294. package/dist/cli/handlers/query-handler.d.ts.map +1 -0
  295. package/dist/cli/handlers/query-handler.js +245 -0
  296. package/dist/cli/handlers/query-handler.js.map +1 -0
  297. package/dist/cli/handlers/research-handler.d.ts +13 -0
  298. package/dist/cli/handlers/research-handler.d.ts.map +1 -0
  299. package/dist/cli/handlers/research-handler.js +216 -0
  300. package/dist/cli/handlers/research-handler.js.map +1 -0
  301. package/dist/cli/handlers/revision-handler.d.ts +14 -0
  302. package/dist/cli/handlers/revision-handler.d.ts.map +1 -0
  303. package/dist/cli/handlers/revision-handler.js +188 -0
  304. package/dist/cli/handlers/revision-handler.js.map +1 -0
  305. package/dist/cli/handlers/scene-handler.d.ts +7 -0
  306. package/dist/cli/handlers/scene-handler.d.ts.map +1 -0
  307. package/dist/cli/handlers/scene-handler.js +565 -0
  308. package/dist/cli/handlers/scene-handler.js.map +1 -0
  309. package/dist/cli/handlers/series-handler.d.ts +13 -0
  310. package/dist/cli/handlers/series-handler.d.ts.map +1 -0
  311. package/dist/cli/handlers/series-handler.js +322 -0
  312. package/dist/cli/handlers/series-handler.js.map +1 -0
  313. package/dist/cli/handlers/session-handler.d.ts +7 -0
  314. package/dist/cli/handlers/session-handler.d.ts.map +1 -0
  315. package/dist/cli/handlers/session-handler.js +400 -0
  316. package/dist/cli/handlers/session-handler.js.map +1 -0
  317. package/dist/cli/handlers/sync-handler.d.ts +41 -0
  318. package/dist/cli/handlers/sync-handler.d.ts.map +1 -0
  319. package/dist/cli/handlers/sync-handler.js +573 -0
  320. package/dist/cli/handlers/sync-handler.js.map +1 -0
  321. package/dist/cli/handlers/timeline-handler.d.ts +7 -0
  322. package/dist/cli/handlers/timeline-handler.d.ts.map +1 -0
  323. package/dist/cli/handlers/timeline-handler.js +364 -0
  324. package/dist/cli/handlers/timeline-handler.js.map +1 -0
  325. package/dist/cli/handlers/world-rule-handler.d.ts +8 -0
  326. package/dist/cli/handlers/world-rule-handler.d.ts.map +1 -0
  327. package/dist/cli/handlers/world-rule-handler.js +521 -0
  328. package/dist/cli/handlers/world-rule-handler.js.map +1 -0
  329. package/dist/cli/index.d.ts +55 -0
  330. package/dist/cli/index.d.ts.map +1 -0
  331. package/dist/cli/index.js +253 -0
  332. package/dist/cli/index.js.map +1 -0
  333. package/dist/cli/output.d.ts +72 -0
  334. package/dist/cli/output.d.ts.map +1 -0
  335. package/dist/cli/output.js +134 -0
  336. package/dist/cli/output.js.map +1 -0
  337. package/dist/cli/parser.d.ts +57 -0
  338. package/dist/cli/parser.d.ts.map +1 -0
  339. package/dist/cli/parser.js +333 -0
  340. package/dist/cli/parser.js.map +1 -0
  341. package/dist/cli/registry.d.ts +40 -0
  342. package/dist/cli/registry.d.ts.map +1 -0
  343. package/dist/cli/registry.js +196 -0
  344. package/dist/cli/registry.js.map +1 -0
  345. package/dist/cli/types.d.ts +71 -0
  346. package/dist/cli/types.d.ts.map +1 -0
  347. package/dist/cli/types.js +5 -0
  348. package/dist/cli/types.js.map +1 -0
  349. package/dist/commands/index.d.ts +6 -0
  350. package/dist/commands/index.d.ts.map +1 -0
  351. package/dist/commands/index.js +11 -0
  352. package/dist/commands/index.js.map +1 -0
  353. package/dist/commands/novel.d.ts +13 -0
  354. package/dist/commands/novel.d.ts.map +1 -0
  355. package/dist/commands/novel.js +17 -0
  356. package/dist/commands/novel.js.map +1 -0
  357. package/dist/consistency/checker.d.ts +80 -0
  358. package/dist/consistency/checker.d.ts.map +1 -0
  359. package/dist/consistency/checker.js +493 -0
  360. package/dist/consistency/checker.js.map +1 -0
  361. package/dist/context/contracts/continuity-check.contract.d.ts +3 -0
  362. package/dist/context/contracts/continuity-check.contract.d.ts.map +1 -0
  363. package/dist/context/contracts/continuity-check.contract.js +22 -0
  364. package/dist/context/contracts/continuity-check.contract.js.map +1 -0
  365. package/dist/context/contracts/developmental-edit.contract.d.ts +3 -0
  366. package/dist/context/contracts/developmental-edit.contract.d.ts.map +1 -0
  367. package/dist/context/contracts/developmental-edit.contract.js +22 -0
  368. package/dist/context/contracts/developmental-edit.contract.js.map +1 -0
  369. package/dist/context/contracts/scene-continuation.contract.d.ts +3 -0
  370. package/dist/context/contracts/scene-continuation.contract.d.ts.map +1 -0
  371. package/dist/context/contracts/scene-continuation.contract.js +22 -0
  372. package/dist/context/contracts/scene-continuation.contract.js.map +1 -0
  373. package/dist/context/fetchers/canon-fetcher.d.ts +21 -0
  374. package/dist/context/fetchers/canon-fetcher.d.ts.map +1 -0
  375. package/dist/context/fetchers/canon-fetcher.js +64 -0
  376. package/dist/context/fetchers/canon-fetcher.js.map +1 -0
  377. package/dist/context/fetchers/character-fetcher.d.ts +18 -0
  378. package/dist/context/fetchers/character-fetcher.d.ts.map +1 -0
  379. package/dist/context/fetchers/character-fetcher.js +62 -0
  380. package/dist/context/fetchers/character-fetcher.js.map +1 -0
  381. package/dist/context/fetchers/fetcher.d.ts +13 -0
  382. package/dist/context/fetchers/fetcher.d.ts.map +1 -0
  383. package/dist/context/fetchers/fetcher.js +2 -0
  384. package/dist/context/fetchers/fetcher.js.map +1 -0
  385. package/dist/context/fetchers/promise-fetcher.d.ts +19 -0
  386. package/dist/context/fetchers/promise-fetcher.d.ts.map +1 -0
  387. package/dist/context/fetchers/promise-fetcher.js +59 -0
  388. package/dist/context/fetchers/promise-fetcher.js.map +1 -0
  389. package/dist/context/fetchers/scene-fetcher.d.ts +19 -0
  390. package/dist/context/fetchers/scene-fetcher.d.ts.map +1 -0
  391. package/dist/context/fetchers/scene-fetcher.js +75 -0
  392. package/dist/context/fetchers/scene-fetcher.js.map +1 -0
  393. package/dist/context/fingerprint.d.ts +13 -0
  394. package/dist/context/fingerprint.d.ts.map +1 -0
  395. package/dist/context/fingerprint.js +21 -0
  396. package/dist/context/fingerprint.js.map +1 -0
  397. package/dist/context/ordering.d.ts +10 -0
  398. package/dist/context/ordering.d.ts.map +1 -0
  399. package/dist/context/ordering.js +42 -0
  400. package/dist/context/ordering.js.map +1 -0
  401. package/dist/context/scene-context.d.ts +83 -0
  402. package/dist/context/scene-context.d.ts.map +1 -0
  403. package/dist/context/scene-context.js +323 -0
  404. package/dist/context/scene-context.js.map +1 -0
  405. package/dist/context/scoring.d.ts +14 -0
  406. package/dist/context/scoring.d.ts.map +1 -0
  407. package/dist/context/scoring.js +30 -0
  408. package/dist/context/scoring.js.map +1 -0
  409. package/dist/context/token-budget.d.ts +27 -0
  410. package/dist/context/token-budget.d.ts.map +1 -0
  411. package/dist/context/token-budget.js +83 -0
  412. package/dist/context/token-budget.js.map +1 -0
  413. package/dist/core/database.d.ts +108 -0
  414. package/dist/core/database.d.ts.map +1 -0
  415. package/dist/core/database.js +282 -0
  416. package/dist/core/database.js.map +1 -0
  417. package/dist/data/features.d.ts +14 -0
  418. package/dist/data/features.d.ts.map +1 -0
  419. package/dist/data/features.js +2 -0
  420. package/dist/data/features.js.map +1 -0
  421. package/dist/db/migrations.d.ts +21 -0
  422. package/dist/db/migrations.d.ts.map +1 -0
  423. package/dist/db/migrations.js +397 -0
  424. package/dist/db/migrations.js.map +1 -0
  425. package/dist/db/repositories/canon-repository.d.ts +18 -0
  426. package/dist/db/repositories/canon-repository.d.ts.map +1 -0
  427. package/dist/db/repositories/canon-repository.js +158 -0
  428. package/dist/db/repositories/canon-repository.js.map +1 -0
  429. package/dist/db/repositories/graph-repository.d.ts +19 -0
  430. package/dist/db/repositories/graph-repository.d.ts.map +1 -0
  431. package/dist/db/repositories/graph-repository.js +128 -0
  432. package/dist/db/repositories/graph-repository.js.map +1 -0
  433. package/dist/db/repositories/knowledge-repository.d.ts +20 -0
  434. package/dist/db/repositories/knowledge-repository.d.ts.map +1 -0
  435. package/dist/db/repositories/knowledge-repository.js +177 -0
  436. package/dist/db/repositories/knowledge-repository.js.map +1 -0
  437. package/dist/db/repositories/promise-repository.d.ts +15 -0
  438. package/dist/db/repositories/promise-repository.d.ts.map +1 -0
  439. package/dist/db/repositories/promise-repository.js +140 -0
  440. package/dist/db/repositories/promise-repository.js.map +1 -0
  441. package/dist/db/repositories/research-repository.d.ts +40 -0
  442. package/dist/db/repositories/research-repository.d.ts.map +1 -0
  443. package/dist/db/repositories/research-repository.js +132 -0
  444. package/dist/db/repositories/research-repository.js.map +1 -0
  445. package/dist/db/repositories/sync-state-repository.d.ts +39 -0
  446. package/dist/db/repositories/sync-state-repository.d.ts.map +1 -0
  447. package/dist/db/repositories/sync-state-repository.js +71 -0
  448. package/dist/db/repositories/sync-state-repository.js.map +1 -0
  449. package/dist/index.d.ts +319 -0
  450. package/dist/index.d.ts.map +1 -0
  451. package/dist/index.js +482 -0
  452. package/dist/index.js.map +1 -0
  453. package/dist/revision/snapshot-manager.d.ts +81 -0
  454. package/dist/revision/snapshot-manager.d.ts.map +1 -0
  455. package/dist/revision/snapshot-manager.js +267 -0
  456. package/dist/revision/snapshot-manager.js.map +1 -0
  457. package/dist/services/beta-reader-service.d.ts +64 -0
  458. package/dist/services/beta-reader-service.d.ts.map +1 -0
  459. package/dist/services/beta-reader-service.js +233 -0
  460. package/dist/services/beta-reader-service.js.map +1 -0
  461. package/dist/services/canon-service.d.ts +40 -0
  462. package/dist/services/canon-service.d.ts.map +1 -0
  463. package/dist/services/canon-service.js +126 -0
  464. package/dist/services/canon-service.js.map +1 -0
  465. package/dist/services/character-arc-service.d.ts +60 -0
  466. package/dist/services/character-arc-service.d.ts.map +1 -0
  467. package/dist/services/character-arc-service.js +161 -0
  468. package/dist/services/character-arc-service.js.map +1 -0
  469. package/dist/services/context-contract-service.d.ts +14 -0
  470. package/dist/services/context-contract-service.d.ts.map +1 -0
  471. package/dist/services/context-contract-service.js +57 -0
  472. package/dist/services/context-contract-service.js.map +1 -0
  473. package/dist/services/context-policy-engine.d.ts +27 -0
  474. package/dist/services/context-policy-engine.d.ts.map +1 -0
  475. package/dist/services/context-policy-engine.js +105 -0
  476. package/dist/services/context-policy-engine.js.map +1 -0
  477. package/dist/services/foreshadowing-service.d.ts +60 -0
  478. package/dist/services/foreshadowing-service.d.ts.map +1 -0
  479. package/dist/services/foreshadowing-service.js +136 -0
  480. package/dist/services/foreshadowing-service.js.map +1 -0
  481. package/dist/services/knowledge-service.d.ts +23 -0
  482. package/dist/services/knowledge-service.d.ts.map +1 -0
  483. package/dist/services/knowledge-service.js +97 -0
  484. package/dist/services/knowledge-service.js.map +1 -0
  485. package/dist/services/narrative-graph-service.d.ts +30 -0
  486. package/dist/services/narrative-graph-service.d.ts.map +1 -0
  487. package/dist/services/narrative-graph-service.js +125 -0
  488. package/dist/services/narrative-graph-service.js.map +1 -0
  489. package/dist/services/promise-service.d.ts +23 -0
  490. package/dist/services/promise-service.d.ts.map +1 -0
  491. package/dist/services/promise-service.js +140 -0
  492. package/dist/services/promise-service.js.map +1 -0
  493. package/dist/services/query-tracker-service.d.ts +96 -0
  494. package/dist/services/query-tracker-service.d.ts.map +1 -0
  495. package/dist/services/query-tracker-service.js +278 -0
  496. package/dist/services/query-tracker-service.js.map +1 -0
  497. package/dist/services/research-service.d.ts +63 -0
  498. package/dist/services/research-service.d.ts.map +1 -0
  499. package/dist/services/research-service.js +149 -0
  500. package/dist/services/research-service.js.map +1 -0
  501. package/dist/services/series-manager.d.ts +129 -0
  502. package/dist/services/series-manager.d.ts.map +1 -0
  503. package/dist/services/series-manager.js +250 -0
  504. package/dist/services/series-manager.js.map +1 -0
  505. package/dist/session/progress-dashboard.d.ts +78 -0
  506. package/dist/session/progress-dashboard.d.ts.map +1 -0
  507. package/dist/session/progress-dashboard.js +315 -0
  508. package/dist/session/progress-dashboard.js.map +1 -0
  509. package/dist/session/session-manager.d.ts +142 -0
  510. package/dist/session/session-manager.d.ts.map +1 -0
  511. package/dist/session/session-manager.js +509 -0
  512. package/dist/session/session-manager.js.map +1 -0
  513. package/dist/sync/chapter-sync.d.ts +60 -0
  514. package/dist/sync/chapter-sync.d.ts.map +1 -0
  515. package/dist/sync/chapter-sync.js +279 -0
  516. package/dist/sync/chapter-sync.js.map +1 -0
  517. package/dist/sync/character-sync.d.ts +67 -0
  518. package/dist/sync/character-sync.d.ts.map +1 -0
  519. package/dist/sync/character-sync.js +405 -0
  520. package/dist/sync/character-sync.js.map +1 -0
  521. package/dist/sync/idea-sync.d.ts +34 -0
  522. package/dist/sync/idea-sync.d.ts.map +1 -0
  523. package/dist/sync/idea-sync.js +101 -0
  524. package/dist/sync/idea-sync.js.map +1 -0
  525. package/dist/sync/location-sync.d.ts +44 -0
  526. package/dist/sync/location-sync.d.ts.map +1 -0
  527. package/dist/sync/location-sync.js +188 -0
  528. package/dist/sync/location-sync.js.map +1 -0
  529. package/dist/sync/plot-sync.d.ts +27 -0
  530. package/dist/sync/plot-sync.d.ts.map +1 -0
  531. package/dist/sync/plot-sync.js +171 -0
  532. package/dist/sync/plot-sync.js.map +1 -0
  533. package/dist/sync/plot-thread-sync.d.ts +90 -0
  534. package/dist/sync/plot-thread-sync.d.ts.map +1 -0
  535. package/dist/sync/plot-thread-sync.js +384 -0
  536. package/dist/sync/plot-thread-sync.js.map +1 -0
  537. package/dist/sync/scene-sync.d.ts +93 -0
  538. package/dist/sync/scene-sync.d.ts.map +1 -0
  539. package/dist/sync/scene-sync.js +353 -0
  540. package/dist/sync/scene-sync.js.map +1 -0
  541. package/dist/sync/timeline-sync.d.ts +48 -0
  542. package/dist/sync/timeline-sync.d.ts.map +1 -0
  543. package/dist/sync/timeline-sync.js +232 -0
  544. package/dist/sync/timeline-sync.js.map +1 -0
  545. package/dist/sync/world-rules-sync.d.ts +78 -0
  546. package/dist/sync/world-rules-sync.d.ts.map +1 -0
  547. package/dist/sync/world-rules-sync.js +318 -0
  548. package/dist/sync/world-rules-sync.js.map +1 -0
  549. package/dist/types/canon.d.ts +43 -0
  550. package/dist/types/canon.d.ts.map +1 -0
  551. package/dist/types/canon.js +2 -0
  552. package/dist/types/canon.js.map +1 -0
  553. package/dist/types/common.d.ts +11 -0
  554. package/dist/types/common.d.ts.map +1 -0
  555. package/dist/types/common.js +2 -0
  556. package/dist/types/common.js.map +1 -0
  557. package/dist/types/context.d.ts +69 -0
  558. package/dist/types/context.d.ts.map +1 -0
  559. package/dist/types/context.js +2 -0
  560. package/dist/types/context.js.map +1 -0
  561. package/dist/types/errors.d.ts +24 -0
  562. package/dist/types/errors.d.ts.map +1 -0
  563. package/dist/types/errors.js +37 -0
  564. package/dist/types/errors.js.map +1 -0
  565. package/dist/types/graph.d.ts +25 -0
  566. package/dist/types/graph.d.ts.map +1 -0
  567. package/dist/types/graph.js +2 -0
  568. package/dist/types/graph.js.map +1 -0
  569. package/dist/types/index.d.ts +9 -0
  570. package/dist/types/index.d.ts.map +1 -0
  571. package/dist/types/index.js +9 -0
  572. package/dist/types/index.js.map +1 -0
  573. package/dist/types/knowledge.d.ts +20 -0
  574. package/dist/types/knowledge.d.ts.map +1 -0
  575. package/dist/types/knowledge.js +2 -0
  576. package/dist/types/knowledge.js.map +1 -0
  577. package/dist/types/novel.d.ts +477 -0
  578. package/dist/types/novel.d.ts.map +1 -0
  579. package/dist/types/novel.js +22 -0
  580. package/dist/types/novel.js.map +1 -0
  581. package/dist/types/promise.d.ts +42 -0
  582. package/dist/types/promise.d.ts.map +1 -0
  583. package/dist/types/promise.js +2 -0
  584. package/dist/types/promise.js.map +1 -0
  585. package/dist/types/story-location.d.ts +7 -0
  586. package/dist/types/story-location.d.ts.map +1 -0
  587. package/dist/types/story-location.js +2 -0
  588. package/dist/types/story-location.js.map +1 -0
  589. package/dist/utils/hash.d.ts +2 -0
  590. package/dist/utils/hash.d.ts.map +1 -0
  591. package/dist/utils/hash.js +5 -0
  592. package/dist/utils/hash.js.map +1 -0
  593. package/dist/utils/ids.d.ts +3 -0
  594. package/dist/utils/ids.d.ts.map +1 -0
  595. package/dist/utils/ids.js +8 -0
  596. package/dist/utils/ids.js.map +1 -0
  597. package/dist/utils/stable-json.d.ts +2 -0
  598. package/dist/utils/stable-json.d.ts.map +1 -0
  599. package/dist/utils/stable-json.js +12 -0
  600. package/dist/utils/stable-json.js.map +1 -0
  601. package/dist/utils/token-count.d.ts +2 -0
  602. package/dist/utils/token-count.d.ts.map +1 -0
  603. package/dist/utils/token-count.js +4 -0
  604. package/dist/utils/token-count.js.map +1 -0
  605. package/examples/character-template.yml +92 -0
  606. package/examples/interactive-builder-example.ts +134 -0
  607. package/examples/location-template.yml +39 -0
  608. package/examples/usage-example.ts +182 -0
  609. package/mcp-server/README.md +470 -0
  610. package/mcp-server/launch.js +69 -0
  611. package/mcp-server/novel-tools/README.md +242 -0
  612. package/mcp-server/novel-tools/dist/handlers.d.ts +42 -0
  613. package/mcp-server/novel-tools/dist/handlers.js +820 -0
  614. package/mcp-server/novel-tools/dist/index.d.ts +6 -0
  615. package/mcp-server/novel-tools/dist/index.js +124 -0
  616. package/mcp-server/novel-tools/dist/tools.d.ts +852 -0
  617. package/mcp-server/novel-tools/dist/tools.js +898 -0
  618. package/mcp-server/novel-tools/package.json +22 -0
  619. package/package.json +212 -0
  620. package/schema.sql +567 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,70 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [Unreleased]
9
+
10
+ ## [0.1.0] - 2026-06-09
11
+
12
+ ### Added
13
+
14
+ **Core infrastructure**
15
+ - MCP SQLite server integration — all DB access via `MCPClient` interface
16
+ - 19-table schema with full migration system (`runMigrations`, `getMigrationTables`)
17
+ - `NovelWriterExtension` facade with lazy-loaded subsystems
18
+ - `CommandRegistry` with Levenshtein "did you mean" suggestions
19
+ - `CommandParser` with quoted-string tokenisation and short-flag support
20
+
21
+ **Content creation & sync**
22
+ - `CharacterSync`, `ChapterSync`, `SceneSync`, `LocationSync`, `PlotSync`
23
+ - `PlotThreadSync`, `WorldRulesSync`, `TimelineSync` — YAML/Markdown → DB upsert
24
+ - Interactive builders for characters, chapters, scenes, locations, plots, world rules
25
+ - `ManuscriptAssembler` with pandoc export (Markdown, DOCX, EPUB, PDF)
26
+
27
+ **Analysis layer**
28
+ - `ProseAnalyzer` — economy score, show/tell ratio, sensory balance, character voice analysis
29
+ - `PacingAnalyzer` — tension arc, POV balance, chapter lengths, ASCII chart
30
+ - `ConsistencyChecker` — attribute contradictions, timeline violations, unresolved promises
31
+ - `DraftScanner` — [TK], [TODO], [FIXME], [CHECK] marker detection with code-fence skip
32
+ - `CopyEditor` — POV slip, tense shift, name variant detection
33
+ - `DevelopmentalAnalyzer` — scene purpose audit, subplot balance, plot hole detection
34
+ - `ReadAloudPreparer` — rhythm analysis, rhyme detection, markup stripping
35
+
36
+ **Intelligence layer**
37
+ - `KnowledgeService` — narrative knowledge objects with tag and relevance queries
38
+ - `CanonService` — canon items, conflict detection and resolution
39
+ - `NarrativePromiseService` — promise/payoff tracking with fulfillment status
40
+ - `ContextPolicyEngine` — deterministic context fingerprinting (SHA-256)
41
+ - `NarrativeGraphService` — scene-level narrative graph with edge traversal
42
+
43
+ **Extended features**
44
+ - `ResearchService` — research notes with tag filtering and `[VERIFY:]` marker scanning
45
+ - `CharacterArcService` — arc milestone tracking with static-run detection
46
+ - `BetaReaderService` — reader management with feedback aggregation
47
+ - `ForeshadowingService` — foreshadowing note tracking with chapter payoff linking
48
+ - `SeriesManager` — multi-book series with shared bible and cross-book thread tracking
49
+ - `QueryTrackerService` — AI query log with tag-based retrieval
50
+ - `SnapshotManager` — LCS-based revision snapshots
51
+ - `SyncStateRepository` — conflict detection for external file edits
52
+
53
+ **AI generation**
54
+ - Scene continuation with 3 alternatives and configurable count
55
+ - Character profile, location description, dialogue enhancement
56
+ - Plot thread development suggestions
57
+ - Synopsis, query letter, pitch, and comp title generation
58
+ - POV-anchored generation with character voice loading
59
+ - Hemingway one-true-sentence mode (`generateNextSentence`)
60
+ - Name generation, premise workshopping, character sketch generation
61
+ - Opening-line workshop (`workshopOpeningLines`)
62
+
63
+ **CLI commands**
64
+ - `init`, `create`, `list`, `sync`, `chapter`, `scene`, `character`, `location`
65
+ - `plot`, `world-rule`, `timeline`, `session`, `progress`, `check`, `export`
66
+ - `generate`, `idea`, `knowledge`, `canon`, `promise`, `context`, `graph`
67
+ - `revision`, `draft`, `analyze`, `research`, `beta`, `query`, `series`, `help`
68
+
69
+ [Unreleased]: https://github.com/mrskwiw/claude-novel-writer/compare/v0.1.0...HEAD
70
+ [0.1.0]: https://github.com/mrskwiw/claude-novel-writer/releases/tag/v0.1.0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 claude-novel-writer contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/QUICKSTART.md ADDED
@@ -0,0 +1,183 @@
1
+ # Quick Start — claude-novel-writer
2
+
3
+ ## 1. Install the plugin
4
+
5
+ ```bash
6
+ claude plugin install claude-novel-writer
7
+ ```
8
+
9
+ Restart Claude Code after installing.
10
+
11
+ ---
12
+
13
+ ## 2. Start a new novel
14
+
15
+ Create an empty folder for your novel and open it in Claude Code:
16
+
17
+ ```bash
18
+ mkdir my-novel && cd my-novel
19
+ claude .
20
+ ```
21
+
22
+ Then just say what you want. The plugin recognizes natural language:
23
+
24
+ > *"I want to write a novel"*
25
+
26
+ or
27
+
28
+ > *"Set this up as my novel project — it's a fantasy called The Hollow Meridian"*
29
+
30
+ Claude will ask for your title, author name, and genre (or pick them up from what you said), then run the initializer. You'll have a working project structure and a `CLAUDE.md` in under a minute.
31
+
32
+ If you prefer explicit control:
33
+
34
+ ```
35
+ /novel init --title "The Hollow Meridian" --author "Your Name" --genre fantasy
36
+ ```
37
+
38
+ ---
39
+
40
+ ## 3. What you get
41
+
42
+ ```
43
+ my-novel/
44
+ ├── CLAUDE.md ← tells Claude about this project on every session
45
+ ├── .novel/data.db ← SQLite database (do not edit directly)
46
+ ├── characters/ ← YAML character profiles
47
+ ├── chapters/ ← Markdown chapter files
48
+ ├── locations/ ← YAML location files
49
+ ├── plots/ ← YAML plot thread files
50
+ ├── research/ ← Research notes
51
+ ├── revisions/ ← Draft snapshots
52
+ └── export/ ← Assembled manuscripts
53
+ ```
54
+
55
+ The `CLAUDE.md` is the key piece: every time you open this folder in Claude Code, Claude reads it and knows this is a novel project. You don't need to re-explain the context.
56
+
57
+ ---
58
+
59
+ ## 4. Add your first character
60
+
61
+ ```
62
+ /novel create character --name "Ada Voss" --role protagonist --summary "A disgraced archivist who discovers her predecessor hid something in the stacks"
63
+ ```
64
+
65
+ Or just say: *"Add a protagonist named Ada Voss — she's a disgraced archivist"*
66
+
67
+ ---
68
+
69
+ ## 5. Write your first chapter
70
+
71
+ ```
72
+ /novel create chapter --number 1 --title "The Last Catalogue"
73
+ ```
74
+
75
+ This creates `chapters/chapter-01-the-last-catalogue.md` with YAML frontmatter. Open it and start writing.
76
+
77
+ ---
78
+
79
+ ## 6. Get feedback as you draft
80
+
81
+ You don't need to know which command to run — just ask:
82
+
83
+ > *"Check my manuscript for inconsistencies"*
84
+ > *"How's the pacing in chapter 3?"*
85
+ > *"Am I showing or telling too much?"*
86
+ > *"What plot threads are still unresolved?"*
87
+
88
+ Claude will run the right analysis and explain the results.
89
+
90
+ For direct control:
91
+
92
+ ```
93
+ /novel check
94
+ /novel analyze prose
95
+ /novel analyze pacing
96
+ ```
97
+
98
+ ---
99
+
100
+ ## 7. Mark things to verify later
101
+
102
+ While drafting, tag facts you haven't confirmed:
103
+
104
+ ```markdown
105
+ The carriage fare was [VERIFY: typical cost of a hansom cab, London 1880s].
106
+ ```
107
+
108
+ When you're ready to research:
109
+
110
+ ```
111
+ /novel research verify
112
+ ```
113
+
114
+ Claude lists every marker across all your chapters with line numbers.
115
+
116
+ ---
117
+
118
+ ## 8. Save a snapshot before major revisions
119
+
120
+ Before restructuring or rewriting anything significant:
121
+
122
+ ```
123
+ /novel revision snapshot --label "before-act-2-rewrite"
124
+ ```
125
+
126
+ You can diff against it later:
127
+
128
+ ```
129
+ /novel revision diff --label "before-act-2-rewrite"
130
+ ```
131
+
132
+ ---
133
+
134
+ ## 9. Export your manuscript
135
+
136
+ ```
137
+ /novel export markdown # single .md file
138
+ /novel export docx # Word document (requires pandoc)
139
+ /novel export epub # EPUB (requires pandoc)
140
+ ```
141
+
142
+ Output lands in `export/`.
143
+
144
+ ---
145
+
146
+ ## 10. Generate when you're stuck
147
+
148
+ AI generation requires `ANTHROPIC_API_KEY` to be set in your environment.
149
+
150
+ ```
151
+ /novel generate scene --scene-id 1 # 3 alternative continuations
152
+ /novel generate next-sentence # one true next sentence (Hemingway mode)
153
+ /novel generate synopsis # full synopsis
154
+ /novel generate pitch # one-paragraph pitch
155
+ /novel generate query # query letter draft
156
+ ```
157
+
158
+ Or just say: *"I'm stuck on this scene, help me figure out what happens next"*
159
+
160
+ ---
161
+
162
+ ## All commands
163
+
164
+ ```
165
+ /novel help
166
+ ```
167
+
168
+ ---
169
+
170
+ ## Everyday workflow
171
+
172
+ The plugin is designed so you mostly don't need to think about commands. Open your novel folder, write, and ask Claude questions in plain language. The right tools run automatically.
173
+
174
+ When you want to be explicit:
175
+
176
+ | What you want | Command |
177
+ |---|---|
178
+ | See all characters | `/novel list characters` |
179
+ | Check for problems | `/novel check` |
180
+ | Analyze prose | `/novel analyze prose` |
181
+ | Find incomplete sections | `/novel draft scan` |
182
+ | Sync edited YAML files | `/novel sync` |
183
+ | Export the manuscript | `/novel export markdown` |
package/README.md ADDED
@@ -0,0 +1,257 @@
1
+ # claude-novel-writer
2
+
3
+ [![CI](https://github.com/mrskwiw/claude-novel-writer/actions/workflows/ci.yml/badge.svg)](https://github.com/mrskwiw/claude-novel-writer/actions/workflows/ci.yml)
4
+ [![npm](https://img.shields.io/npm/v/claude-novel-writer)](https://www.npmjs.com/package/claude-novel-writer)
5
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
6
+
7
+ A [Claude Code](https://claude.ai/code) plugin for AI-assisted novel writing. Manages story structure, tracks consistency, assembles scene context for generation, and analyzes prose — all from within your Claude Code session.
8
+
9
+ ## Installation
10
+
11
+ ```bash
12
+ npm install -g claude-novel-writer
13
+ ```
14
+
15
+ Claude Code detects the extension automatically after installation. Restart Claude Code, then:
16
+
17
+ ```
18
+ /novel help
19
+ ```
20
+
21
+ ## How it works
22
+
23
+ Once installed, the plugin loads four skills into Claude's context. Claude reads the skill descriptions and **invokes them automatically** based on what you say — you don't need to remember command names.
24
+
25
+ - Say *"I want to write a novel"* in a blank folder → Claude initializes the project
26
+ - Say *"check my manuscript for inconsistencies"* → Claude runs consistency checks
27
+ - Say *"how's my pacing?"* → Claude runs the pacing analyzer
28
+ - Say *"I'm stuck, help me continue this scene"* → Claude loads scene context and generates
29
+
30
+ When you want direct control, use the `/novel` slash command or the `novel-writer` CLI.
31
+
32
+ ## Requirements
33
+
34
+ - [Claude Code](https://claude.ai/code) ≥ 2.0
35
+ - Node.js ≥ 18
36
+ - pandoc (optional — for DOCX/EPUB/PDF export)
37
+ - `ANTHROPIC_API_KEY` (required for AI generation commands only)
38
+
39
+ ## Installation
40
+
41
+ ```bash
42
+ claude plugin install claude-novel-writer
43
+ ```
44
+
45
+ Restart Claude Code after installing.
46
+
47
+ ### Local install (development / testing)
48
+
49
+ ```bash
50
+ git clone https://github.com/mrskwiw/claude-novel-writer.git
51
+ cd claude-novel-writer/project
52
+ npm install && npm run build
53
+ claude --plugin-dir .
54
+ ```
55
+
56
+ ## Starting a new novel
57
+
58
+ Open an empty folder in Claude Code and just say what you want:
59
+
60
+ > *"I want to write a novel called The Hollow Meridian"*
61
+
62
+ Claude will ask for your title, author name, and genre, then run the initializer. You'll end up with:
63
+
64
+ ```
65
+ your-novel/
66
+ ├── CLAUDE.md ← tells Claude about this project on every session
67
+ ├── .novel/
68
+ │ └── data.db ← SQLite database (managed automatically)
69
+ ├── characters/ ← YAML character profiles
70
+ ├── chapters/ ← Markdown chapter files (YAML frontmatter)
71
+ ├── locations/ ← YAML location files
72
+ ├── plots/ ← YAML plot thread files
73
+ ├── research/ ← Research notes and [VERIFY:] tracking
74
+ ├── revisions/ ← Point-in-time snapshot archives
75
+ └── export/ ← Assembled and formatted manuscripts
76
+ ```
77
+
78
+ The `CLAUDE.md` written here is the key: every future session in this folder, Claude reads it and knows what project this is, what structure it uses, and when to suggest each command.
79
+
80
+ Or skip the conversation and initialize directly:
81
+
82
+ ```
83
+ /novel init --title "The Hollow Meridian" --author "Your Name" --genre "literary fiction"
84
+ ```
85
+
86
+ ## Proactive assistance
87
+
88
+ After initialization, Claude uses the loaded skills to assist without being prompted:
89
+
90
+ | When you say... | Claude does |
91
+ |---|---|
92
+ | "check for inconsistencies / contradictions" | runs `novel-writer check` |
93
+ | "how's my pacing / tension arc" | runs `novel-writer analyze pacing` |
94
+ | "give me feedback on my prose" | runs `novel-writer analyze prose` |
95
+ | "what still needs work" | runs `novel-writer draft scan` (finds `[TK]` markers) |
96
+ | "continue this scene / I'm stuck" | runs `novel-writer generate scene` |
97
+ | "write a synopsis / pitch / query letter" | runs the appropriate generator |
98
+ | "I'm about to do big revisions" | suggests saving a snapshot first |
99
+ | "any unresolved plot threads?" | runs `novel-writer check plot-threads` |
100
+
101
+ ## Command reference
102
+
103
+ All commands are available as `/novel <command>` (slash command) or `novel-writer <command>` (CLI).
104
+
105
+ ### Project
106
+
107
+ | Command | Description |
108
+ |---|---|
109
+ | `init` | Initialize project structure and database |
110
+ | `sync` | Sync all YAML/Markdown files to the database |
111
+ | `progress` | Writing session stats and word count |
112
+ | `session` | Start / end a timed writing session |
113
+
114
+ ### Content creation
115
+
116
+ | Command | Description |
117
+ |---|---|
118
+ | `create character --name "Ada" --role protagonist` | Create a character profile |
119
+ | `create chapter --number 1 --title "The Arrival"` | Start a new chapter |
120
+ | `create scene --chapter 1` | Add a scene to a chapter |
121
+ | `create location --name "The Observatory"` | Add a location |
122
+ | `create plot --name "The Missing Letter"` | Add a plot thread |
123
+ | `create world-rule --name "No electricity"` | Add a world rule |
124
+ | `create timeline` | Add a timeline event |
125
+
126
+ ### Viewing
127
+
128
+ | Command | Description |
129
+ |---|---|
130
+ | `list characters` | All characters |
131
+ | `list chapters` | Chapters with word counts |
132
+ | `list scenes` | Scenes (add `--chapter N` to filter) |
133
+ | `list locations` | Locations |
134
+ | `list plot` | Plot threads |
135
+ | `list world-rules` | World rules |
136
+ | `list timeline` | Timeline events |
137
+
138
+ ### Consistency & analysis
139
+
140
+ | Command | Description |
141
+ |---|---|
142
+ | `check` | All consistency checks |
143
+ | `check characters` | Character attribute contradictions |
144
+ | `check timeline` | Timeline violation detection |
145
+ | `check world-rules` | World rule violations (AI-assisted) |
146
+ | `check plot-threads` | Unresolved plot threads |
147
+ | `analyze prose` | Economy score, show/tell ratio, sensory balance, character voices |
148
+ | `analyze pacing` | Tension arc, POV balance, chapter length distribution |
149
+ | `analyze copy` | POV slips, tense shifts, name variant detection |
150
+ | `analyze developmental` | Scene purpose audit, subplot balance, plot holes |
151
+ | `draft scan` | Find `[TK]`, `[TODO]`, `[CHECK]`, `[FIXME]` markers |
152
+ | `draft readaloud` | Rhythm analysis, accidental rhyme detection |
153
+
154
+ ### AI generation
155
+
156
+ Requires `ANTHROPIC_API_KEY`.
157
+
158
+ | Command | Description |
159
+ |---|---|
160
+ | `generate scene --scene-id N` | Scene continuation (3 alternatives, loads full context) |
161
+ | `generate next-sentence --scene-id N` | Hemingway one-true-sentence mode |
162
+ | `generate synopsis` | Full synopsis |
163
+ | `generate pitch` | One-paragraph pitch |
164
+ | `generate query` | Query letter draft |
165
+ | `generate comps` | Comparable titles |
166
+ | `generate character --id N` | Full character profile |
167
+ | `generate name` | Character or place name suggestions |
168
+
169
+ ### Research
170
+
171
+ | Command | Description |
172
+ |---|---|
173
+ | `research add --title "..." --url "..."` | Add a research note |
174
+ | `research list` | List notes (add `--tag history` to filter) |
175
+ | `research verify` | Scan manuscript for `[VERIFY: claim]` markers |
176
+ | `research mark-verified --id N` | Mark a note as verified |
177
+
178
+ ### Revision & export
179
+
180
+ | Command | Description |
181
+ |---|---|
182
+ | `revision snapshot --label "draft-1"` | Save a named point-in-time snapshot |
183
+ | `revision list` | List saved snapshots |
184
+ | `revision diff --label "draft-1"` | Diff manuscript against a snapshot |
185
+ | `export markdown` | Assemble manuscript as a single Markdown file |
186
+ | `export docx` | Word document (requires pandoc) |
187
+ | `export epub` | EPUB (requires pandoc) |
188
+ | `export pdf` | PDF (requires pandoc) |
189
+
190
+ ### Series & beta readers
191
+
192
+ | Command | Description |
193
+ |---|---|
194
+ | `series create --name "The Trilogy"` | Create a multi-book series |
195
+ | `series add-book` | Link current project to a series |
196
+ | `series bible` | View / edit shared series bible |
197
+ | `series threads` | Cross-book plot thread overview |
198
+ | `beta add --name "..." --email "..."` | Add a beta reader |
199
+ | `beta feedback add` | Log feedback |
200
+ | `beta summary` | Aggregated feedback overview |
201
+
202
+ ### Intelligence layer
203
+
204
+ Tracks deeper narrative structure across the manuscript.
205
+
206
+ | Command | Description |
207
+ |---|---|
208
+ | `knowledge add` | Add a knowledge object (world fact, character detail) |
209
+ | `canon add` | Add a canon item; detect conflicts with existing canon |
210
+ | `promise add` | Record a narrative promise; track payoff |
211
+ | `context load --scene N` | Assemble full scene context for AI generation |
212
+ | `graph` | Show the narrative graph |
213
+
214
+ ## Marking facts for verification
215
+
216
+ While drafting, tag anything you need to fact-check inline:
217
+
218
+ ```markdown
219
+ She wore a [VERIFY: typical Victorian mourning dress, 1880s] of heavy crepe.
220
+ ```
221
+
222
+ Scan all markers across your manuscript:
223
+
224
+ ```
225
+ /novel research verify
226
+ ```
227
+
228
+ ## Architecture
229
+
230
+ The plugin stores all project data in a local SQLite database at `.novel/data.db`. The `novel-writer` CLI accesses it directly via `better-sqlite3`. When running inside Claude Code as a plugin, the same database is also accessible to Claude via an MCP SQLite server — allowing Claude to query story data directly during generation.
231
+
232
+ ## Development
233
+
234
+ ```bash
235
+ git clone https://github.com/mrskwiw/claude-novel-writer.git
236
+ cd claude-novel-writer/project
237
+ npm install
238
+ npm run build
239
+ npm test
240
+ ```
241
+
242
+ Tests live in `../tests/` (workspace convention — never inside `project/`).
243
+
244
+ ```bash
245
+ npm test # all tests
246
+ npx vitest run ../tests/unit/services/research-service.test.ts # single file
247
+ npm run test:coverage # coverage report
248
+ npx vitest run ../tests/smoke/install-smoke.test.ts # install smoke test
249
+ ```
250
+
251
+ ## Contributing
252
+
253
+ Issues and pull requests welcome at [github.com/mrskwiw/claude-novel-writer](https://github.com/mrskwiw/claude-novel-writer).
254
+
255
+ ## License
256
+
257
+ MIT — see [LICENSE](LICENSE).
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Scene Beat Generator
3
+ *
4
+ * Assembles scene context from the database and calls Claude to generate
5
+ * free-form narrative beats for a scene — the micro-structure of what happens
6
+ * beat by beat within a single scene.
7
+ *
8
+ * Philosophy: beats are planning scaffolding, not prose. They help the author
9
+ * see the shape of the scene before writing it. "Suggest, don't dictate."
10
+ */
11
+ import type { MCPClient } from '../core/database.js';
12
+ import type { SceneBeat } from '../types/novel.js';
13
+ import type { SceneMetadata } from '../builders/scene-builder.js';
14
+ export interface BeatContext {
15
+ projectTitle: string;
16
+ projectGenre?: string;
17
+ chapterNumber: number;
18
+ chapterTitle?: string;
19
+ chapterSummary?: string;
20
+ scene: SceneMetadata;
21
+ povCharacter?: {
22
+ name: string;
23
+ role?: string;
24
+ summary?: string;
25
+ personality?: string;
26
+ arc?: string;
27
+ };
28
+ activePlotThreads: Array<{
29
+ name: string;
30
+ description: string;
31
+ priority: number;
32
+ }>;
33
+ hardWorldRules: Array<{
34
+ name: string;
35
+ description: string;
36
+ }>;
37
+ previousSceneLastBeat?: string;
38
+ }
39
+ export interface BeatGeneratorOptions {
40
+ count?: number;
41
+ }
42
+ export declare class BeatGenerator {
43
+ private mcpClient;
44
+ private projectId;
45
+ private claude;
46
+ constructor(mcpClient: MCPClient, projectId: number);
47
+ /**
48
+ * Build the beat-generation prompt without calling the API.
49
+ * Useful for surfacing context to the active Claude Code session.
50
+ */
51
+ buildBeatPrompt(sceneMetadata: SceneMetadata, chapterNumber: number, count?: number): Promise<string>;
52
+ /**
53
+ * Generate beats for a scene from its metadata and DB context.
54
+ * Does not require the scene to have prose — works from planning data alone.
55
+ *
56
+ * Returns an empty array when running in passthrough mode (no standalone API
57
+ * key). The caller should display the assembled prompt so the active Claude
58
+ * Code session can generate beats and write them back.
59
+ */
60
+ generateBeats(sceneMetadata: SceneMetadata, chapterNumber: number, options?: BeatGeneratorOptions): Promise<SceneBeat[]>;
61
+ private assembleContext;
62
+ private loadProject;
63
+ private loadChapter;
64
+ private loadCharacter;
65
+ private loadActivePlotThreads;
66
+ private loadHardWorldRules;
67
+ /**
68
+ * Load the last beat from the previous scene in the same chapter (for continuity).
69
+ * Returns undefined if this is scene 1 or no beats exist.
70
+ */
71
+ private loadPreviousSceneLastBeat;
72
+ private buildPrompt;
73
+ /**
74
+ * Parse Claude's numbered list response into SceneBeat[].
75
+ * Tolerates minor formatting variation (periods, parentheses, extra whitespace).
76
+ */
77
+ parseBeats(raw: string): SceneBeat[];
78
+ }
79
+ //# sourceMappingURL=beat-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"beat-generator.d.ts","sourceRoot":"","sources":["../../src/ai/beat-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAElE,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,aAAa,CAAC;IACrB,YAAY,CAAC,EAAE;QACb,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,CAAC;IACF,iBAAiB,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClF,cAAc,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC7D,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,aAAa;IAItB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,SAAS;IAJnB,OAAO,CAAC,MAAM,CAAgB;gBAGpB,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,MAAM;IAO3B;;;OAGG;IACG,eAAe,CACnB,aAAa,EAAE,aAAa,EAC5B,aAAa,EAAE,MAAM,EACrB,KAAK,SAAI,GACR,OAAO,CAAC,MAAM,CAAC;IAKlB;;;;;;;OAOG;IACG,aAAa,CACjB,aAAa,EAAE,aAAa,EAC5B,aAAa,EAAE,MAAM,EACrB,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,SAAS,EAAE,CAAC;YA8BT,eAAe;YA+Bf,WAAW;YAYX,WAAW;YAcX,aAAa;YA6Bb,qBAAqB;YAoBrB,kBAAkB;IAkBhC;;;OAGG;YACW,yBAAyB;IA8BvC,OAAO,CAAC,WAAW;IA8EnB;;;OAGG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE;CAsBrC"}