claude-novel-writer 0.1.0 → 0.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 (242) hide show
  1. package/.claude-plugin/marketplace.json +24 -0
  2. package/.claude-plugin/plugin.json +9 -0
  3. package/CHANGELOG.md +180 -1
  4. package/README.md +30 -19
  5. package/agents/README.md +327 -0
  6. package/agents/character-developer.md +182 -0
  7. package/agents/consistency-checker.md +254 -0
  8. package/agents/copy-editor.md +416 -0
  9. package/agents/developmental-editor.md +394 -0
  10. package/agents/line-editor.md +368 -0
  11. package/agents/novel-writing-assistant.md +98 -0
  12. package/agents/plot-analyzer.md +305 -0
  13. package/commands/novel.md +72 -0
  14. package/dist/ai/generation-manager.d.ts +33 -1
  15. package/dist/ai/generation-manager.d.ts.map +1 -1
  16. package/dist/ai/generation-manager.js +163 -12
  17. package/dist/ai/generation-manager.js.map +1 -1
  18. package/dist/analysis/entity-extractor.d.ts +113 -0
  19. package/dist/analysis/entity-extractor.d.ts.map +1 -0
  20. package/dist/analysis/entity-extractor.js +347 -0
  21. package/dist/analysis/entity-extractor.js.map +1 -0
  22. package/dist/analysis/hook-analyzer.d.ts +63 -0
  23. package/dist/analysis/hook-analyzer.d.ts.map +1 -0
  24. package/dist/analysis/hook-analyzer.js +232 -0
  25. package/dist/analysis/hook-analyzer.js.map +1 -0
  26. package/dist/analysis/prose-fixer.d.ts +84 -0
  27. package/dist/analysis/prose-fixer.d.ts.map +1 -0
  28. package/dist/analysis/prose-fixer.js +296 -0
  29. package/dist/analysis/prose-fixer.js.map +1 -0
  30. package/dist/analysis/severity.d.ts +62 -0
  31. package/dist/analysis/severity.d.ts.map +1 -0
  32. package/dist/analysis/severity.js +157 -0
  33. package/dist/analysis/severity.js.map +1 -0
  34. package/dist/analysis/style-target-analyzer.d.ts +45 -0
  35. package/dist/analysis/style-target-analyzer.d.ts.map +1 -0
  36. package/dist/analysis/style-target-analyzer.js +164 -0
  37. package/dist/analysis/style-target-analyzer.js.map +1 -0
  38. package/dist/analysis/style-targets.d.ts +66 -0
  39. package/dist/analysis/style-targets.d.ts.map +1 -0
  40. package/dist/analysis/style-targets.js +88 -0
  41. package/dist/analysis/style-targets.js.map +1 -0
  42. package/dist/analysis/theme-analyzer.d.ts +102 -0
  43. package/dist/analysis/theme-analyzer.d.ts.map +1 -0
  44. package/dist/analysis/theme-analyzer.js +215 -0
  45. package/dist/analysis/theme-analyzer.js.map +1 -0
  46. package/dist/analysis/tts.d.ts +50 -0
  47. package/dist/analysis/tts.d.ts.map +1 -0
  48. package/dist/analysis/tts.js +245 -0
  49. package/dist/analysis/tts.js.map +1 -0
  50. package/dist/analysis/voice-analyzer.d.ts +100 -0
  51. package/dist/analysis/voice-analyzer.d.ts.map +1 -0
  52. package/dist/analysis/voice-analyzer.js +234 -0
  53. package/dist/analysis/voice-analyzer.js.map +1 -0
  54. package/dist/builders/character-builder.d.ts.map +1 -1
  55. package/dist/builders/character-builder.js +15 -6
  56. package/dist/builders/character-builder.js.map +1 -1
  57. package/dist/cli/commands/analyze.d.ts.map +1 -1
  58. package/dist/cli/commands/analyze.js +41 -1
  59. package/dist/cli/commands/analyze.js.map +1 -1
  60. package/dist/cli/commands/beta.d.ts.map +1 -1
  61. package/dist/cli/commands/beta.js +2 -1
  62. package/dist/cli/commands/beta.js.map +1 -1
  63. package/dist/cli/commands/canon.d.ts.map +1 -1
  64. package/dist/cli/commands/canon.js +18 -1
  65. package/dist/cli/commands/canon.js.map +1 -1
  66. package/dist/cli/commands/character.d.ts.map +1 -1
  67. package/dist/cli/commands/character.js +11 -3
  68. package/dist/cli/commands/character.js.map +1 -1
  69. package/dist/cli/commands/check.d.ts.map +1 -1
  70. package/dist/cli/commands/check.js +8 -0
  71. package/dist/cli/commands/check.js.map +1 -1
  72. package/dist/cli/commands/export.d.ts.map +1 -1
  73. package/dist/cli/commands/export.js +10 -1
  74. package/dist/cli/commands/export.js.map +1 -1
  75. package/dist/cli/commands/extract.d.ts +10 -0
  76. package/dist/cli/commands/extract.d.ts.map +1 -0
  77. package/dist/cli/commands/extract.js +28 -0
  78. package/dist/cli/commands/extract.js.map +1 -0
  79. package/dist/cli/commands/foreshadow.d.ts.map +1 -1
  80. package/dist/cli/commands/foreshadow.js +7 -0
  81. package/dist/cli/commands/foreshadow.js.map +1 -1
  82. package/dist/cli/commands/generate.d.ts.map +1 -1
  83. package/dist/cli/commands/generate.js +41 -0
  84. package/dist/cli/commands/generate.js.map +1 -1
  85. package/dist/cli/commands/help.d.ts.map +1 -1
  86. package/dist/cli/commands/help.js +15 -1
  87. package/dist/cli/commands/help.js.map +1 -1
  88. package/dist/cli/commands/init.d.ts.map +1 -1
  89. package/dist/cli/commands/init.js +16 -2
  90. package/dist/cli/commands/init.js.map +1 -1
  91. package/dist/cli/commands/location.d.ts.map +1 -1
  92. package/dist/cli/commands/location.js +8 -0
  93. package/dist/cli/commands/location.js.map +1 -1
  94. package/dist/cli/commands/plot.d.ts.map +1 -1
  95. package/dist/cli/commands/plot.js +8 -0
  96. package/dist/cli/commands/plot.js.map +1 -1
  97. package/dist/cli/commands/readaloud.d.ts +9 -0
  98. package/dist/cli/commands/readaloud.d.ts.map +1 -0
  99. package/dist/cli/commands/readaloud.js +31 -0
  100. package/dist/cli/commands/readaloud.js.map +1 -0
  101. package/dist/cli/commands/report.d.ts +10 -0
  102. package/dist/cli/commands/report.d.ts.map +1 -0
  103. package/dist/cli/commands/report.js +17 -0
  104. package/dist/cli/commands/report.js.map +1 -0
  105. package/dist/cli/commands/revise.d.ts +11 -0
  106. package/dist/cli/commands/revise.d.ts.map +1 -0
  107. package/dist/cli/commands/revise.js +52 -0
  108. package/dist/cli/commands/revise.js.map +1 -0
  109. package/dist/cli/commands/scene.d.ts.map +1 -1
  110. package/dist/cli/commands/scene.js +8 -0
  111. package/dist/cli/commands/scene.js.map +1 -1
  112. package/dist/cli/commands/session.d.ts.map +1 -1
  113. package/dist/cli/commands/session.js +14 -0
  114. package/dist/cli/commands/session.js.map +1 -1
  115. package/dist/cli/commands/structure.d.ts +10 -0
  116. package/dist/cli/commands/structure.d.ts.map +1 -0
  117. package/dist/cli/commands/structure.js +60 -0
  118. package/dist/cli/commands/structure.js.map +1 -0
  119. package/dist/cli/commands/theme.d.ts +10 -0
  120. package/dist/cli/commands/theme.d.ts.map +1 -0
  121. package/dist/cli/commands/theme.js +71 -0
  122. package/dist/cli/commands/theme.js.map +1 -0
  123. package/dist/cli/commands/timeline.d.ts.map +1 -1
  124. package/dist/cli/commands/timeline.js +8 -0
  125. package/dist/cli/commands/timeline.js.map +1 -1
  126. package/dist/cli/commands/world-rule.d.ts.map +1 -1
  127. package/dist/cli/commands/world-rule.js +8 -0
  128. package/dist/cli/commands/world-rule.js.map +1 -1
  129. package/dist/cli/handlers/analyze-handler.d.ts.map +1 -1
  130. package/dist/cli/handlers/analyze-handler.js +298 -6
  131. package/dist/cli/handlers/analyze-handler.js.map +1 -1
  132. package/dist/cli/handlers/canon-handler.js +18 -2
  133. package/dist/cli/handlers/canon-handler.js.map +1 -1
  134. package/dist/cli/handlers/context-handler.js +41 -15
  135. package/dist/cli/handlers/context-handler.js.map +1 -1
  136. package/dist/cli/handlers/create-handler.js +6 -7
  137. package/dist/cli/handlers/create-handler.js.map +1 -1
  138. package/dist/cli/handlers/extract-handler.d.ts +11 -0
  139. package/dist/cli/handlers/extract-handler.d.ts.map +1 -0
  140. package/dist/cli/handlers/extract-handler.js +129 -0
  141. package/dist/cli/handlers/extract-handler.js.map +1 -0
  142. package/dist/cli/handlers/generate-handler.d.ts.map +1 -1
  143. package/dist/cli/handlers/generate-handler.js +135 -1
  144. package/dist/cli/handlers/generate-handler.js.map +1 -1
  145. package/dist/cli/handlers/help-handler.d.ts +3 -2
  146. package/dist/cli/handlers/help-handler.d.ts.map +1 -1
  147. package/dist/cli/handlers/help-handler.js +93 -5
  148. package/dist/cli/handlers/help-handler.js.map +1 -1
  149. package/dist/cli/handlers/init-handler.d.ts +6 -0
  150. package/dist/cli/handlers/init-handler.d.ts.map +1 -1
  151. package/dist/cli/handlers/init-handler.js +256 -79
  152. package/dist/cli/handlers/init-handler.js.map +1 -1
  153. package/dist/cli/handlers/init-scaffold.d.ts +23 -0
  154. package/dist/cli/handlers/init-scaffold.d.ts.map +1 -0
  155. package/dist/cli/handlers/init-scaffold.js +73 -0
  156. package/dist/cli/handlers/init-scaffold.js.map +1 -0
  157. package/dist/cli/handlers/location-handler.js +7 -0
  158. package/dist/cli/handlers/location-handler.js.map +1 -1
  159. package/dist/cli/handlers/readaloud-handler.d.ts +13 -0
  160. package/dist/cli/handlers/readaloud-handler.d.ts.map +1 -0
  161. package/dist/cli/handlers/readaloud-handler.js +133 -0
  162. package/dist/cli/handlers/readaloud-handler.js.map +1 -0
  163. package/dist/cli/handlers/report-handler.d.ts +19 -0
  164. package/dist/cli/handlers/report-handler.d.ts.map +1 -0
  165. package/dist/cli/handlers/report-handler.js +236 -0
  166. package/dist/cli/handlers/report-handler.js.map +1 -0
  167. package/dist/cli/handlers/revise-handler.d.ts +21 -0
  168. package/dist/cli/handlers/revise-handler.d.ts.map +1 -0
  169. package/dist/cli/handlers/revise-handler.js +153 -0
  170. package/dist/cli/handlers/revise-handler.js.map +1 -0
  171. package/dist/cli/handlers/scene-handler.js +6 -6
  172. package/dist/cli/handlers/scene-handler.js.map +1 -1
  173. package/dist/cli/handlers/session-handler.js +6 -2
  174. package/dist/cli/handlers/session-handler.js.map +1 -1
  175. package/dist/cli/handlers/structure-handler.d.ts +12 -0
  176. package/dist/cli/handlers/structure-handler.d.ts.map +1 -0
  177. package/dist/cli/handlers/structure-handler.js +217 -0
  178. package/dist/cli/handlers/structure-handler.js.map +1 -0
  179. package/dist/cli/handlers/theme-handler.d.ts +11 -0
  180. package/dist/cli/handlers/theme-handler.d.ts.map +1 -0
  181. package/dist/cli/handlers/theme-handler.js +172 -0
  182. package/dist/cli/handlers/theme-handler.js.map +1 -0
  183. package/dist/cli/handlers/timeline-handler.js +9 -0
  184. package/dist/cli/handlers/timeline-handler.js.map +1 -1
  185. package/dist/cli/index.d.ts.map +1 -1
  186. package/dist/cli/index.js +18 -9
  187. package/dist/cli/index.js.map +1 -1
  188. package/dist/cli/registry.d.ts.map +1 -1
  189. package/dist/cli/registry.js +17 -0
  190. package/dist/cli/registry.js.map +1 -1
  191. package/dist/consistency/checker.d.ts.map +1 -1
  192. package/dist/consistency/checker.js +17 -1
  193. package/dist/consistency/checker.js.map +1 -1
  194. package/dist/core/database.d.ts +6 -0
  195. package/dist/core/database.d.ts.map +1 -1
  196. package/dist/core/database.js +9 -0
  197. package/dist/core/database.js.map +1 -1
  198. package/dist/data/features.d.ts +7 -1
  199. package/dist/data/features.d.ts.map +1 -1
  200. package/dist/data/features.js +47 -1
  201. package/dist/data/features.js.map +1 -1
  202. package/dist/data/structure-templates.d.ts +115 -0
  203. package/dist/data/structure-templates.d.ts.map +1 -0
  204. package/dist/data/structure-templates.js +175 -0
  205. package/dist/data/structure-templates.js.map +1 -0
  206. package/dist/index.d.ts +18 -0
  207. package/dist/index.d.ts.map +1 -1
  208. package/dist/index.js +43 -0
  209. package/dist/index.js.map +1 -1
  210. package/dist/sync/chapter-sync.d.ts +3 -3
  211. package/dist/sync/chapter-sync.d.ts.map +1 -1
  212. package/dist/sync/chapter-sync.js +6 -27
  213. package/dist/sync/chapter-sync.js.map +1 -1
  214. package/dist/sync/world-rules-sync.d.ts.map +1 -1
  215. package/dist/sync/world-rules-sync.js +14 -2
  216. package/dist/sync/world-rules-sync.js.map +1 -1
  217. package/dist/types/novel.d.ts +9 -0
  218. package/dist/types/novel.d.ts.map +1 -1
  219. package/dist/types/novel.js.map +1 -1
  220. package/mcp-server/launch.js +68 -45
  221. package/mcp-server/novel-tools/dist/index.d.ts +71 -3
  222. package/mcp-server/novel-tools/dist/index.js +150 -104
  223. package/package.json +8 -3
  224. package/skills/novel-analyze.md +79 -0
  225. package/skills/novel-check.md +43 -0
  226. package/skills/novel-context.md +60 -0
  227. package/skills/novel-generate.md +71 -0
  228. package/skills/novel-setup.md +79 -0
  229. package/templates/COMPOSITIONAL_STYLE_GUIDE.md +26 -0
  230. package/templates/README.md +43 -0
  231. package/templates/STRUCTURAL_STYLE_GUIDE.md +26 -0
  232. package/templates/chapter.md +39 -0
  233. package/templates/character.yml +80 -0
  234. package/templates/location.yml +33 -0
  235. package/templates/plot.yml +55 -0
  236. package/templates/style-targets.yml +38 -0
  237. package/templates/timeline.yml +31 -0
  238. package/templates/world-rule.yml +38 -0
  239. package/mcp-server/novel-tools/dist/handlers.d.ts +0 -42
  240. package/mcp-server/novel-tools/dist/handlers.js +0 -820
  241. package/mcp-server/novel-tools/dist/tools.d.ts +0 -852
  242. package/mcp-server/novel-tools/dist/tools.js +0 -898
@@ -0,0 +1,24 @@
1
+ {
2
+ "name": "claude-novel-writer",
3
+ "owner": {
4
+ "name": "mrskwiw"
5
+ },
6
+ "plugins": [
7
+ {
8
+ "name": "claude-novel-writer",
9
+ "source": "./",
10
+ "description": "AI-assisted novel writing for Claude Code — structure, consistency tracking, context assembly, and prose analysis",
11
+ "author": {
12
+ "name": "mrskwiw",
13
+ "email": "mrskwiw@gmail.com"
14
+ },
15
+ "keywords": [
16
+ "novel",
17
+ "writing",
18
+ "fiction",
19
+ "storytelling",
20
+ "manuscript"
21
+ ]
22
+ }
23
+ ]
24
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "name": "claude-novel-writer",
3
+ "version": "0.2.0",
4
+ "description": "AI-assisted novel writing for Claude Code — structure, consistency tracking, context assembly, and prose analysis",
5
+ "author": {
6
+ "name": "claude-novel-writer",
7
+ "email": "mrskwiw@gmail.com"
8
+ }
9
+ }
package/CHANGELOG.md CHANGED
@@ -7,6 +7,183 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.2.0] - 2026-06-28
11
+
12
+ ### Changed (MCP server — passthrough rewrite)
13
+ - The `novel-tools` MCP server was a parallel, hand-written set of ~40 tools
14
+ that had drifted badly behind the CLI and was broken against the current
15
+ schema (it queried a non-existent `projects.project_path` column and a
16
+ `novel.db` file the app never creates). It is replaced by a **single `novel`
17
+ passthrough tool** that runs any CLI command in a project and returns its
18
+ output. The CLI's `CommandRegistry` is now the single source of truth, so the
19
+ MCP surface can never drift again — the tool's description points callers at
20
+ `help` / `help <command>` to discover the live command + argument list.
21
+ (`mcp-server/novel-tools/`: `handlers.ts` + `tools.ts` removed; `index.ts`
22
+ rewritten; `launch.js` refactored for testability.)
23
+
24
+ ### Fixed (correctness bugs surfaced by coverage work)
25
+ - **`session`, `location`, and `timeline` commands were non-functional** on a
26
+ real project: each handler built a `NovelWriterExtension` but never resolved
27
+ the project id, so every DB operation threw "Project ID not set" (timeline was
28
+ entirely broken; session start/end/stats and progress always failed). All
29
+ three now call `loadProjectId()`. (BUGS.md CLI-02)
30
+ - **`/novel foreshadow` was unreachable** — the command and its handler existed
31
+ and were tested, but the command was never registered in the CLI registry.
32
+ Now registered. (BUGS.md CLI-03)
33
+ - **`check characters` / `check timeline` / `check plot-threads` silently
34
+ reported no issues** (and `check list` showed `[undefined]` badges) — the
35
+ handlers read camelCase fields off raw snake_case rows; `getOpenIssues()` now
36
+ maps to the typed `ConsistencyIssue` shape. (BUGS.md CHECK-01/02)
37
+ - **`generate next-sentence` always failed** — it queried `scenes.content` /
38
+ `scenes.project_id`, which don't exist; now reads the scene's chapter summary
39
+ via a valid join. (BUGS.md SQL-04)
40
+ - **`world-rule established` could throw an FK violation** — a chapter *number*
41
+ was written into the `established_chapter_id` (FK → `chapters.id`); both sync
42
+ directions now resolve number↔id. (BUGS.md SQL-05)
43
+ - **Character files with a quote in an attribute** (e.g. `height: 5'9"`) produced
44
+ invalid YAML that broke sync — values are now escaped. (BUGS.md DATA-01)
45
+ - `--tension 0` / `--mood 0` no longer bypass range validation. (BUGS.md VAL-01)
46
+ - `scene-handler` resolves the real project id instead of hardcoding 1. (BUGS.md ROBUST-01)
47
+
48
+ ### Added (v0.2.0 craft features — round 2)
49
+ - **`novel revise <chapter> [--apply <categories>|--all]`** — diff-gated
50
+ mechanical prose fixes (doubled words, redundant intensifiers, adverb dialogue
51
+ tags, straight→curly quotes, multiple/trailing whitespace). Dry-run preview by
52
+ default; applies only the categories you opt into. Distinct from `revision`
53
+ (snapshots).
54
+ - **`novel structure list|apply <template>|status`** — story-structure beat
55
+ templates (three-act, Save the Cat, Hero's Journey) mapped to word-count
56
+ positions; `status` compares the applied plan against drafted word count.
57
+ - **`novel theme add|list|trace`** — register themes + motif words and trace
58
+ motif density across chapters (sparkline, gaps, spikes). Deterministic.
59
+ - **`novel analyze hook [--chapter N]`** — deterministic opening-line
60
+ hook-strength scorer (0–100) across six signals with advisory suggestions.
61
+ - **Advisory severity grading** — `analyze prose|sentences|dialogue` now grade
62
+ flags as info/suggestion/warning relative to `style-targets.yml` (with an
63
+ optional `allow:` list and softened wording); `--strict` restores hard flagging.
64
+ - **`novel help --json`** — machine-readable JSON schema of the whole CLI (or a
65
+ single command), so tooling/agents can introspect commands + flags without
66
+ parsing prose.
67
+
68
+ ### Tests & coverage
69
+ - Removed `tests/e2e/gothic-horror-live.test.ts` (hardcoded to a personal
70
+ absolute path; unrunnable elsewhere).
71
+ - Coverage scope corrected (excludes built `dist/`, `examples/`, config files).
72
+ - Comprehensive in-process handler tests added: **CLI at 96.6% statements**
73
+ (every handler ≥90% except session-handler at 88%), **mcp-server at 93.9%**,
74
+ project total 91.7% — up from a 55.5% project baseline. Suite: 2,445 tests.
75
+ - Six additional latent bugs documented in `BUGS.md` (CHECK-01/02, SQL-04/05,
76
+ DATA-01, VAL-01, ROBUST-01) for follow-up.
77
+
78
+ ### Fixed (Tier-0 correctness)
79
+ - `create chapter` now syncs the new chapter to the database and auto-numbers it
80
+ (was: never synced, hardcoded chapter 1) — chapters are immediately visible to
81
+ analysis/context/consistency.
82
+ - The CLI resolves the real project id from the database instead of hardcoding 1.
83
+ - `context build` is wired to the ContextPolicyEngine (was a stub) — assembles
84
+ and renders real context blocks.
85
+ - Chapter summaries moved out of the deterministic sync layer (which wrote a
86
+ placeholder) into the generation layer: `generate summary --chapter N`
87
+ produces a ≤5-sentence summary via Claude, using the API when
88
+ `ANTHROPIC_API_KEY` is set and otherwise the Claude Code session (passthrough).
89
+
90
+ ### Added (v0.2.0 craft features)
91
+ - **`novel report`** — one-screen manuscript-health dashboard: tension sparkline,
92
+ open plot threads, unresolved/overdue promises, scenes missing a purpose,
93
+ chapters off their style targets, and total `[TK]` markers. Read-only.
94
+ - **`novel readaloud`** — actually speaks a chapter/scene/text via the OS TTS
95
+ engine (Windows SAPI, macOS `say`, Linux espeak/spd-say); `--out` writes audio.
96
+ - **`novel analyze voice`** — manuscript-wide character-voice analysis: flags
97
+ voices that sound too alike and voices that drift across chapters.
98
+ - **`novel extract --chapter N`** — discovery-writer path: scans drafted prose
99
+ for new character/location candidates and proposes ready-to-run create commands.
100
+ - **`novel extract --file <path>`** — runs the same discovery scan over any
101
+ prose file (e.g. a freeform outline), so a planner can bootstrap structured
102
+ `characters/` / `plots/` entities before drafting begins.
103
+ - **`novel generate overview`** — summary of the **intended** book, assembled
104
+ from the planned outline (plot threads + their beats) and the character
105
+ roster (unlike `synopsis`, which summarizes drafted chapters). Works
106
+ pre-draft; `--length brief|standard|full`, `--save` writes
107
+ `export/overview.md`. Uses the API when `ANTHROPIC_API_KEY` is set, otherwise
108
+ the Claude Code session (passthrough). Emits a guidance warning — pointing at
109
+ `extract --file` — when no cast or outline exists yet.
110
+
111
+ ## [0.1.1] - 2026-06-26
112
+
113
+ ### Changed
114
+
115
+ **`init` command — automation-friendly (works in the Claude Code / AI environment)**
116
+ - `init` no longer blocks on interactive `readline` prompts. It now prompts
117
+ **only** when attached to a real interactive TTY; in the Bash tool, CI, or any
118
+ non-TTY context it runs non-interactively and never hangs.
119
+ - When `--title`/`--author` are missing in non-interactive mode, they are
120
+ auto-derived (title from the directory name, author from `git config
121
+ user.name`, falling back to `"Unknown Author"`) and the chosen values are
122
+ reported instead of erroring.
123
+ - Added `--json` flag: emits a single machine-readable JSON result on stdout
124
+ (`status`, `projectId`, `path`, `metadata`, `derived`, `created`,
125
+ `hasExistingContent`, `nextSteps`). Implies non-interactive.
126
+ - dotenv startup banner is now suppressed (`config({ quiet: true })`) so it can
127
+ no longer corrupt `--json` output on stdout.
128
+ - `--skip-prompts` is retained as an explicit non-interactive override; it now
129
+ auto-derives missing fields rather than failing.
130
+
131
+ **Docs**
132
+ - Clarified in the `/novel` command guide that the `novel-db` MCP server is
133
+ optional and for power users only. The CLI accesses the SQLite database
134
+ directly, so the MCP server is not needed for normal use and should not be
135
+ added during `init` or to "fix" CLI errors. (Previously the wording implied
136
+ the MCP server was required, which confused agents during setup.)
137
+
138
+ **CLI help entries**
139
+ - Every command now ships realistic `examples` in its `/novel help <command>`
140
+ entry. Added `examples` to: `character`, `check`, `export`, `foreshadow`,
141
+ `generate`, `location`, `plot`, `scene`, `session`, `progress`, `timeline`,
142
+ `world-rule`.
143
+ - `help <command>` renderer now shows a `Usage:` line, a positional
144
+ **Arguments** section, and flag **required / choices / default** metadata
145
+ (previously only name, alias, type, and description were shown).
146
+ - Sharpened name-echo flag descriptions on `character` (`eye-color`,
147
+ `hair-color`, `height`).
148
+
149
+ ### Added
150
+
151
+ - **Style-target engine (deterministic).** New `style-targets.yml` declares
152
+ quantitative prose targets (sentence length, adjective/adverb density, passive
153
+ %, show/tell, sensory coverage, em-dash/semicolon/ellipsis cadence, fragments,
154
+ single-sentence paragraphs). New `novel-writer analyze style [--chapter N | --all]`
155
+ measures a chapter and grades each metric against the targets (✓ / ⚠ low / ⚠ high).
156
+ Falls back to general-fiction defaults when no file is present.
157
+ - **Starter templates shipped + scaffolded.** New `templates/` directory in the
158
+ plugin holds starter files: `style-targets.yml`, `STRUCTURAL_STYLE_GUIDE.md`,
159
+ `COMPOSITIONAL_STYLE_GUIDE.md`, and schema-accurate entity templates
160
+ (`character.yml`, `location.yml`, `plot.yml`, `world-rule.yml`, `timeline.yml`,
161
+ `chapter.md`, `README.md`). `init` now **copies** these (instead of embedding
162
+ strings): the three functional files to the project root, and the entity
163
+ templates into the project's `templates/` reference dir (kept out of the
164
+ content dirs so `sync` never imports them). The generated CLAUDE.md documents
165
+ how to use them. `init` also records an **editing-mode preference**
166
+ (deterministic | ai) in CLAUDE.md and via `--editing-mode`.
167
+ - **Editor agents now ship with the plugin.** The Copy / Line / Developmental
168
+ Editor (and other novel) agents moved into `agents/` at the plugin root and
169
+ their style-guide paths were corrected to project-root-relative (were pointing
170
+ at the `novel/` sample subdir, so they never resolved in real projects).
171
+ `package.json` `files` now includes `agents`, `commands`, `skills`,
172
+ `.claude-plugin`.
173
+ - `NovelWriterExtension.getProjectId()` accessor.
174
+ - **`analyze copy` now consumes the style guide.** It reads canonical character
175
+ names from `characters/*.yml` (drives the misspelled-name check) and defaults
176
+ the expected narrative tense from `style-targets.yml` when `--tense` is omitted.
177
+
178
+ ### Fixed
179
+
180
+ - **`canon show` / `canon promote` now find their `<id>`.** The handlers read the
181
+ positional id in a dispatch-aware way; previously they looked one slot too far
182
+ and always reported the id as missing under real CLI dispatch.
183
+ - **MCP `novel-db` server now points at the real database.** The config pointed
184
+ at `.novel/novel.db`, but the code uses `.novel/data.db` — corrected so the
185
+ optional MCP server attaches to the actual database.
186
+
10
187
  ## [0.1.0] - 2026-06-09
11
188
 
12
189
  ### Added
@@ -66,5 +243,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
66
243
  - `generate`, `idea`, `knowledge`, `canon`, `promise`, `context`, `graph`
67
244
  - `revision`, `draft`, `analyze`, `research`, `beta`, `query`, `series`, `help`
68
245
 
69
- [Unreleased]: https://github.com/mrskwiw/claude-novel-writer/compare/v0.1.0...HEAD
246
+ [Unreleased]: https://github.com/mrskwiw/claude-novel-writer/compare/v0.2.0...HEAD
247
+ [0.2.0]: https://github.com/mrskwiw/claude-novel-writer/compare/v0.1.1...v0.2.0
248
+ [0.1.1]: https://github.com/mrskwiw/claude-novel-writer/compare/v0.1.0...v0.1.1
70
249
  [0.1.0]: https://github.com/mrskwiw/claude-novel-writer/releases/tag/v0.1.0
package/README.md CHANGED
@@ -8,19 +8,36 @@ A [Claude Code](https://claude.ai/code) plugin for AI-assisted novel writing. Ma
8
8
 
9
9
  ## Installation
10
10
 
11
+ Two alternate methods — both install the same plugin globally, so use whichever you prefer:
12
+
11
13
  ```bash
14
+ # via npm
12
15
  npm install -g claude-novel-writer
13
16
  ```
14
17
 
18
+ ```bash
19
+ # via Claude Code's plugin manager
20
+ claude plugin install claude-novel-writer
21
+ ```
22
+
15
23
  Claude Code detects the extension automatically after installation. Restart Claude Code, then:
16
24
 
17
25
  ```
18
26
  /novel help
19
27
  ```
20
28
 
29
+ ### Local install (development / testing)
30
+
31
+ ```bash
32
+ git clone https://github.com/mrskwiw/claude-novel-writer.git
33
+ cd claude-novel-writer/project
34
+ npm install && npm run build
35
+ claude --plugin-dir .
36
+ ```
37
+
21
38
  ## How it works
22
39
 
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.
40
+ Once installed, the plugin loads five 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
41
 
25
42
  - Say *"I want to write a novel"* in a blank folder → Claude initializes the project
26
43
  - Say *"check my manuscript for inconsistencies"* → Claude runs consistency checks
@@ -36,23 +53,6 @@ When you want direct control, use the `/novel` slash command or the `novel-write
36
53
  - pandoc (optional — for DOCX/EPUB/PDF export)
37
54
  - `ANTHROPIC_API_KEY` (required for AI generation commands only)
38
55
 
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
56
  ## Starting a new novel
57
57
 
58
58
  Open an empty folder in Claude Code and just say what you want:
@@ -148,8 +148,17 @@ All commands are available as `/novel <command>` (slash command) or `novel-write
148
148
  | `analyze pacing` | Tension arc, POV balance, chapter length distribution |
149
149
  | `analyze copy` | POV slips, tense shifts, name variant detection |
150
150
  | `analyze developmental` | Scene purpose audit, subplot balance, plot holes |
151
+ | `analyze style` | Grade prose against this project's `style-targets.yml` (`--chapter N` / `--all`) |
152
+ | `analyze voice` | Manuscript-wide voice analysis: flag too-similar voices and voices that drift |
153
+ | `analyze hook` | Score a chapter's opening-line hook strength (0–100) across six signals (`--chapter N`) |
154
+ | `revise <chapter>` | Diff-gated mechanical prose fixes — dry-run by default; `--apply <categories>` / `--all` |
155
+ | `structure apply\|status` | Beat templates (three-act / Save the Cat / Hero's Journey) vs word-count positions |
156
+ | `theme add\|list\|trace` | Register themes + motifs and trace motif density across chapters |
157
+ | `report` | One-screen manuscript-health dashboard (tension, threads, promises, `[TK]`s) |
158
+ | `readaloud` | Speak a chapter/scene/text aloud via the OS TTS engine (`--out` writes audio) |
159
+ | `extract --chapter N` | Scan drafted prose for new character/location candidates (or `--file outline.md` to bootstrap from a freeform outline) |
151
160
  | `draft scan` | Find `[TK]`, `[TODO]`, `[CHECK]`, `[FIXME]` markers |
152
- | `draft readaloud` | Rhythm analysis, accidental rhyme detection |
161
+ | `draft readaloud` | Rhythm analysis, accidental rhyme detection (text prep, not audio) |
153
162
 
154
163
  ### AI generation
155
164
 
@@ -165,6 +174,8 @@ Requires `ANTHROPIC_API_KEY`.
165
174
  | `generate comps` | Comparable titles |
166
175
  | `generate character --id N` | Full character profile |
167
176
  | `generate name` | Character or place name suggestions |
177
+ | `generate summary --chapter N` | ≤5-sentence chapter summary (API, or via the Claude Code session) |
178
+ | `generate overview` | Summary of the **intended** book from the planned outline + cast (pre-draft; `--length brief\|standard\|full`) |
168
179
 
169
180
  ### Research
170
181
 
@@ -0,0 +1,327 @@
1
+ # Claude Novel Writer - Subagents
2
+
3
+ This directory contains specialized subagents for the Claude Novel Writer project. These agents are designed to assist with specific aspects of novel writing while respecting craft principles and author voice.
4
+
5
+ ## Available Subagents
6
+
7
+ ### Creative Writing Agents
8
+
9
+ #### 1. Novel Writing Assistant
10
+ **File**: `novel-writing-assistant.md`
11
+ **Purpose**: General creative fiction writing assistance
12
+ **Use for**:
13
+ - Generating character profiles and locations
14
+ - Scene continuation suggestions
15
+ - Dialogue enhancement
16
+ - Description expansion
17
+ - Plot brainstorming
18
+ - Writing craft guidance
19
+
20
+ **Example**:
21
+ ```
22
+ @novel-writing-assistant Can you suggest 3 ways to continue this scene?
23
+ [paste scene text]
24
+ ```
25
+
26
+ ---
27
+
28
+ #### 2. Character Developer
29
+ **File**: `character-developer.md`
30
+ **Purpose**: Deep character creation and consistency
31
+ **Use for**:
32
+ - Creating complex character profiles
33
+ - Checking character consistency across chapters
34
+ - Developing character arcs
35
+ - Ensuring distinct character voices
36
+ - Identifying character contradictions
37
+
38
+ **Example**:
39
+ ```
40
+ @character-developer Create a character profile for:
41
+ "A brilliant but isolated astrophysicist who discovers an alien signal"
42
+ ```
43
+
44
+ ---
45
+
46
+ ### Analysis & Review Agents
47
+
48
+ #### 3. Consistency Checker
49
+ **File**: `consistency-checker.md`
50
+ **Purpose**: Detecting contradictions and continuity errors
51
+ **Use for**:
52
+ - Finding character attribute conflicts (eye color, age, etc.)
53
+ - Identifying timeline inconsistencies
54
+ - Catching world rule violations
55
+ - Detecting plot thread issues
56
+ - Distinguishing errors from intentional complexity
57
+
58
+ **Example**:
59
+ ```
60
+ @consistency-checker Review chapters 1-10 for character consistency,
61
+ especially Sarah Chen's physical description and personality traits.
62
+ ```
63
+
64
+ ---
65
+
66
+ #### 4. Plot Analyzer
67
+ **File**: `plot-analyzer.md`
68
+ **Purpose**: Story structure and pacing analysis
69
+ **Use for**:
70
+ - Analyzing story structure (three-act, hero's journey, etc.)
71
+ - Identifying pacing issues
72
+ - Tracking plot threads
73
+ - Checking stakes escalation
74
+ - Suggesting plot improvements
75
+
76
+ **Example**:
77
+ ```
78
+ @plot-analyzer Analyze the pacing and structure of Act 2 (chapters 8-18).
79
+ ```
80
+
81
+ ---
82
+
83
+ ### Editing Agents
84
+
85
+ **Important**: All editing agents consult your project style guides:
86
+ - `COMPOSITIONAL_STYLE_GUIDE.md` - Voice, POV, themes, dialogue style
87
+ - `STRUCTURAL_STYLE_GUIDE.md` - Technical patterns, punctuation, formatting
88
+
89
+ #### 5. Developmental Editor
90
+ **File**: `developmental-editor.md`
91
+ **Purpose**: Big-picture structural editing
92
+ **Use for**:
93
+ - Story structure analysis
94
+ - Character arc evaluation
95
+ - Pacing assessment
96
+ - Theme integration review
97
+ - POV and narrative voice consistency
98
+
99
+ **Consults**: Both style guides for author's vision and narrative commitments
100
+
101
+ **Example**:
102
+ ```
103
+ @developmental-editor Analyze chapters 1-10 for:
104
+ - Story structure alignment with three-act format
105
+ - Character arc progress
106
+ - Pacing appropriateness for Act I
107
+ ```
108
+
109
+ ---
110
+
111
+ #### 6. Line Editor
112
+ **File**: `line-editor.md`
113
+ **Purpose**: Sentence-level prose refinement
114
+ **Use for**:
115
+ - Improving sentence clarity and rhythm
116
+ - Strengthening word choice
117
+ - Reducing wordiness
118
+ - Enhancing dialogue
119
+ - Fixing show-vs-tell balance
120
+
121
+ **Consults**: Both style guides for voice, modifier limits, filter words, etc.
122
+
123
+ **Example**:
124
+ ```
125
+ @line-editor Polish this paragraph while maintaining my voice:
126
+ [paste paragraph]
127
+ ```
128
+
129
+ ---
130
+
131
+ #### 7. Copy Editor
132
+ **File**: `copy-editor.md`
133
+ **Purpose**: Technical correctness and style consistency
134
+ **Use for**:
135
+ - Grammar and spelling errors
136
+ - Punctuation consistency
137
+ - Style guide compliance
138
+ - Typo detection
139
+ - Consistency checks (names, formatting, numbers)
140
+
141
+ **Consults**: Both style guides for punctuation style, formatting rules, technical preferences
142
+
143
+ **Example**:
144
+ ```
145
+ @copy-editor Check chapter 5 for:
146
+ - Style guide compliance
147
+ - Grammar errors
148
+ - Consistency issues
149
+ ```
150
+
151
+ ## How to Use Subagents
152
+
153
+ ### In Claude Code
154
+
155
+ **Option 1: @ Mention**
156
+ ```
157
+ @character-developer [your request]
158
+ ```
159
+
160
+ **Option 2: /agent command**
161
+ ```
162
+ /agent character-developer
163
+ ```
164
+
165
+ Then ask your question in the conversation.
166
+
167
+ ### Best Practices
168
+
169
+ 1. **Be Specific**: Give the agent context
170
+ ```
171
+ Good: @consistency-checker Check Sarah Chen's eye color across all chapters
172
+ Bad: @consistency-checker check my character
173
+ ```
174
+
175
+ 2. **Provide Context**: Share relevant files
176
+ ```
177
+ @character-developer Review characters/sarah-chen.yml and suggest
178
+ improvements to her character arc based on chapters/01-*.md
179
+ ```
180
+
181
+ 3. **Combine Agents**: Use different agents for different tasks
182
+ ```
183
+ # First, develop character
184
+ @character-developer Create profile for villain
185
+
186
+ # Then, check consistency
187
+ @consistency-checker Verify villain appears consistently in chapters 5,10,15
188
+ ```
189
+
190
+ 4. **Edit AI Output**: Always review and edit suggestions to match your voice
191
+
192
+ ## When to Use Which Agent
193
+
194
+ **Starting a new novel?**
195
+ → `@novel-writing-assistant` for general guidance
196
+ → `@character-developer` for creating your cast
197
+
198
+ **Mid-draft?**
199
+ → `@novel-writing-assistant` when stuck on a scene
200
+ → `@plot-analyzer` to check story structure
201
+ → `@consistency-checker` for quick consistency checks
202
+
203
+ **Revising?**
204
+ → `@consistency-checker` for full manuscript review
205
+ → `@character-developer` for character arc review
206
+ → `@plot-analyzer` for pacing and structure analysis
207
+
208
+ **Need creative ideas?**
209
+ → `@novel-writing-assistant` for brainstorming
210
+ → `@plot-analyzer` for plot development suggestions
211
+
212
+ ## Agent Philosophy
213
+
214
+ All agents follow these principles:
215
+
216
+ ✅ **Suggest, don't dictate** - Provide options, not mandates
217
+ ✅ **Respect author voice** - Match existing style and tone
218
+ ✅ **Support discovery writing** - Embrace "pantsing" and exploration
219
+ ✅ **Encourage completion** - Progress over perfection
220
+ ✅ **Based on master novelist wisdom** - Grounded in craft principles
221
+
222
+ ## Customizing Agents
223
+
224
+ These agents are project-level (in `.claude/agents/`), so they're specific to this novel writing project.
225
+
226
+ **To modify an agent:**
227
+ 1. Edit the `.md` file
228
+ 2. Change the system prompt (below the YAML frontmatter)
229
+ 3. Save - changes apply immediately
230
+
231
+ **To create a new agent:**
232
+ 1. Create `agent-name.md` in this directory
233
+ 2. Add YAML frontmatter with `name`, `description`, `tools`, `model`
234
+ 3. Write the system prompt
235
+
236
+ See [Claude Code Agent Documentation](https://docs.claude.com/en/docs/claude-code/sub-agents) for details.
237
+
238
+ ## Tools Available to Agents
239
+
240
+ Each agent has access to specific tools defined in their YAML frontmatter:
241
+
242
+ - **Read** - Read files from the project
243
+ - **Write** - Create new files
244
+ - **Edit** - Modify existing files
245
+ - **Grep** - Search file contents
246
+ - **Glob** - Find files by pattern
247
+
248
+ The tools are restricted to what each agent needs for its specialized purpose.
249
+
250
+ ## Example Workflows
251
+
252
+ ### Character Development Workflow
253
+
254
+ ```bash
255
+ # 1. Create character with AI assistance
256
+ @character-developer Create a character: "mysterious government agent"
257
+
258
+ # 2. Review and edit the generated YAML
259
+ # Edit characters/agent-name.yml
260
+
261
+ # 3. Sync to database
262
+ /novel sync characters
263
+
264
+ # 4. Use character in chapters
265
+ # Write your scenes...
266
+
267
+ # 5. Check consistency after writing several chapters
268
+ @consistency-checker Check Agent Smith's consistency in chapters 5-12
269
+ ```
270
+
271
+ ### Writing Session Workflow
272
+
273
+ ```bash
274
+ # 1. Start session
275
+ /novel session start
276
+
277
+ # 2. Get continuation suggestions
278
+ @novel-writing-assistant Suggest 3 ways to continue chapter 8, scene 2
279
+ [Current text: Sarah stared at the signal pattern...]
280
+
281
+ # 3. Pick a direction and write
282
+ # [Write in your editor]
283
+
284
+ # 4. Check pacing
285
+ @plot-analyzer Review the pacing of chapter 8
286
+
287
+ # 5. End session
288
+ /novel session end --words 734
289
+ ```
290
+
291
+ ### Revision Workflow
292
+
293
+ ```bash
294
+ # 1. Character consistency check
295
+ @character-developer Review all characters for consistency
296
+
297
+ # 2. Plot structure analysis
298
+ @plot-analyzer Analyze overall story structure (chapters 1-24)
299
+
300
+ # 3. Detailed consistency check
301
+ @consistency-checker Full manuscript consistency check
302
+
303
+ # 4. Address issues
304
+ # [Fix problems identified]
305
+
306
+ # 5. Final verification
307
+ @consistency-checker Re-check chapters I just revised
308
+ ```
309
+
310
+ ## Tips
311
+
312
+ - **Don't use agents for every sentence** - Write first, use agents when stuck
313
+ - **Edit everything** - AI suggestions are starting points, not final copy
314
+ - **Combine with CLI tools** - Use `/novel` commands alongside agents
315
+ - **Trust your instincts** - If an agent suggestion feels wrong, ignore it
316
+ - **Experiment** - Try different agents for the same problem
317
+
318
+ ## Support
319
+
320
+ For issues or questions about agents:
321
+ - See main project documentation in `../README.md`
322
+ - Read [USER_GUIDE.md](../../USER_GUIDE.md) for comprehensive guidance
323
+ - Check [NOVEL_CRAFT_PRINCIPLES.md](../../NOVEL_CRAFT_PRINCIPLES.md) for philosophy
324
+
325
+ ---
326
+
327
+ **Remember**: Agents are tools to support your writing, not replace it. The story belongs to you. 📖✍️