scriveno 2.0.5

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 (239) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +222 -0
  3. package/agents/continuity-checker.md +85 -0
  4. package/agents/drafter.md +248 -0
  5. package/agents/plan-checker.md +209 -0
  6. package/agents/researcher.md +114 -0
  7. package/agents/translator.md +204 -0
  8. package/agents/voice-checker.md +154 -0
  9. package/bin/install.js +1620 -0
  10. package/commands/scr/add-note.md +51 -0
  11. package/commands/scr/add-unit.md +101 -0
  12. package/commands/scr/art-direction.md +225 -0
  13. package/commands/scr/autopilot-publish.md +210 -0
  14. package/commands/scr/autopilot-translate.md +237 -0
  15. package/commands/scr/autopilot.md +200 -0
  16. package/commands/scr/back-matter.md +630 -0
  17. package/commands/scr/back-translate.md +197 -0
  18. package/commands/scr/beta-reader.md +97 -0
  19. package/commands/scr/blurb.md +149 -0
  20. package/commands/scr/book-proposal.md +210 -0
  21. package/commands/scr/build-ebook.md +448 -0
  22. package/commands/scr/build-poetry-submission.md +202 -0
  23. package/commands/scr/build-print.md +598 -0
  24. package/commands/scr/build-smashwords.md +171 -0
  25. package/commands/scr/build-world.md +158 -0
  26. package/commands/scr/cast-list.md +104 -0
  27. package/commands/scr/chapter-header.md +158 -0
  28. package/commands/scr/character-arc.md +108 -0
  29. package/commands/scr/character-ref.md +160 -0
  30. package/commands/scr/character-sheet.md +143 -0
  31. package/commands/scr/character-touch.md +157 -0
  32. package/commands/scr/character-voice-sample.md +111 -0
  33. package/commands/scr/check-notes.md +50 -0
  34. package/commands/scr/cleanup.md +159 -0
  35. package/commands/scr/compare.md +112 -0
  36. package/commands/scr/complete-draft.md +49 -0
  37. package/commands/scr/continuity-check.md +129 -0
  38. package/commands/scr/copy-edit.md +118 -0
  39. package/commands/scr/cover-art.md +382 -0
  40. package/commands/scr/cultural-adaptation.md +177 -0
  41. package/commands/scr/demo.md +93 -0
  42. package/commands/scr/dialogue-audit.md +143 -0
  43. package/commands/scr/discuss.md +118 -0
  44. package/commands/scr/discussion-questions.md +129 -0
  45. package/commands/scr/do.md +68 -0
  46. package/commands/scr/draft.md +97 -0
  47. package/commands/scr/editor-review.md +466 -0
  48. package/commands/scr/export.md +942 -0
  49. package/commands/scr/fast.md +65 -0
  50. package/commands/scr/front-matter.md +696 -0
  51. package/commands/scr/health.md +113 -0
  52. package/commands/scr/help.md +121 -0
  53. package/commands/scr/history.md +92 -0
  54. package/commands/scr/illustrate-scene.md +211 -0
  55. package/commands/scr/import.md +95 -0
  56. package/commands/scr/insert-unit.md +108 -0
  57. package/commands/scr/line-edit.md +146 -0
  58. package/commands/scr/manager.md +77 -0
  59. package/commands/scr/manuscript-stats.md +139 -0
  60. package/commands/scr/map-illustration.md +213 -0
  61. package/commands/scr/map-manuscript.md +134 -0
  62. package/commands/scr/merge-units.md +136 -0
  63. package/commands/scr/multi-publish.md +344 -0
  64. package/commands/scr/new-character.md +167 -0
  65. package/commands/scr/new-revision.md +50 -0
  66. package/commands/scr/new-work.md +148 -0
  67. package/commands/scr/next.md +125 -0
  68. package/commands/scr/originality-check.md +170 -0
  69. package/commands/scr/outline.md +131 -0
  70. package/commands/scr/pacing-analysis.md +170 -0
  71. package/commands/scr/panel-layout.md +225 -0
  72. package/commands/scr/pause-work.md +88 -0
  73. package/commands/scr/plan.md +112 -0
  74. package/commands/scr/plant-seed.md +57 -0
  75. package/commands/scr/plot-graph.md +199 -0
  76. package/commands/scr/polish.md +141 -0
  77. package/commands/scr/profile-writer.md +154 -0
  78. package/commands/scr/progress.md +51 -0
  79. package/commands/scr/publish.md +455 -0
  80. package/commands/scr/query-letter.md +183 -0
  81. package/commands/scr/quick-write.md +82 -0
  82. package/commands/scr/relationship-map.md +129 -0
  83. package/commands/scr/remove-unit.md +120 -0
  84. package/commands/scr/reorder-units.md +126 -0
  85. package/commands/scr/resume-work.md +97 -0
  86. package/commands/scr/sacred/annotation-layer.md +105 -0
  87. package/commands/scr/sacred/chronology.md +121 -0
  88. package/commands/scr/sacred/concordance.md +88 -0
  89. package/commands/scr/sacred/cross-reference.md +97 -0
  90. package/commands/scr/sacred/doctrinal-check.md +129 -0
  91. package/commands/scr/sacred/genealogy.md +107 -0
  92. package/commands/scr/sacred/source-tracking.md +101 -0
  93. package/commands/scr/sacred/verse-numbering.md +103 -0
  94. package/commands/scr/sacred-numbering-format.md +103 -0
  95. package/commands/scr/save.md +109 -0
  96. package/commands/scr/scan.md +291 -0
  97. package/commands/scr/sensitivity-review.md +169 -0
  98. package/commands/scr/series-bible.md +127 -0
  99. package/commands/scr/session-report.md +80 -0
  100. package/commands/scr/settings.md +58 -0
  101. package/commands/scr/split-unit.md +123 -0
  102. package/commands/scr/spread-layout.md +187 -0
  103. package/commands/scr/storyboard.md +262 -0
  104. package/commands/scr/subject-touch.md +168 -0
  105. package/commands/scr/submit.md +50 -0
  106. package/commands/scr/subplot-map.md +147 -0
  107. package/commands/scr/sync.md +116 -0
  108. package/commands/scr/synopsis.md +137 -0
  109. package/commands/scr/theme-tracker.md +128 -0
  110. package/commands/scr/thread.md +83 -0
  111. package/commands/scr/timeline.md +141 -0
  112. package/commands/scr/track.md +564 -0
  113. package/commands/scr/translate.md +260 -0
  114. package/commands/scr/translation-glossary.md +298 -0
  115. package/commands/scr/translation-memory.md +310 -0
  116. package/commands/scr/troubleshoot.md +59 -0
  117. package/commands/scr/undo.md +106 -0
  118. package/commands/scr/validate.md +133 -0
  119. package/commands/scr/versions.md +94 -0
  120. package/commands/scr/voice-check.md +133 -0
  121. package/commands/scr/voice-test.md +68 -0
  122. package/data/CONSTRAINTS.json +1606 -0
  123. package/data/demo/.manuscript/BRIEF.md +37 -0
  124. package/data/demo/.manuscript/CHARACTERS.md +90 -0
  125. package/data/demo/.manuscript/OUTLINE.md +46 -0
  126. package/data/demo/.manuscript/PLOT-GRAPH.md +75 -0
  127. package/data/demo/.manuscript/STATE.md +44 -0
  128. package/data/demo/.manuscript/STYLE-GUIDE.md +119 -0
  129. package/data/demo/.manuscript/THEMES.md +51 -0
  130. package/data/demo/.manuscript/WORK.md +51 -0
  131. package/data/demo/.manuscript/config.json +59 -0
  132. package/data/demo/.manuscript/drafts/body/1-the-letter-DRAFT.md +51 -0
  133. package/data/demo/.manuscript/drafts/body/2-the-workshop-DRAFT.md +51 -0
  134. package/data/demo/.manuscript/drafts/body/3-the-pier-DRAFT.md +45 -0
  135. package/data/demo/.manuscript/drafts/body/4-the-clock-DRAFT.md +59 -0
  136. package/data/demo/.manuscript/plans/5-the-reunion-PLAN.md +52 -0
  137. package/data/demo/.manuscript/reviews/2-the-workshop-REVIEW.md +61 -0
  138. package/data/export-templates/scriveno-academic.latex +184 -0
  139. package/data/export-templates/scriveno-acm.latex +67 -0
  140. package/data/export-templates/scriveno-apa7.latex +83 -0
  141. package/data/export-templates/scriveno-book.typst +175 -0
  142. package/data/export-templates/scriveno-chapbook.typst +121 -0
  143. package/data/export-templates/scriveno-elsevier.latex +76 -0
  144. package/data/export-templates/scriveno-epub.css +386 -0
  145. package/data/export-templates/scriveno-fixed-layout-epub.css +76 -0
  146. package/data/export-templates/scriveno-fixed-layout.opf +23 -0
  147. package/data/export-templates/scriveno-ieee.latex +77 -0
  148. package/data/export-templates/scriveno-lncs.latex +79 -0
  149. package/data/export-templates/scriveno-picturebook.typst +113 -0
  150. package/data/export-templates/scriveno-poetry-submission-styles.md +45 -0
  151. package/data/export-templates/scriveno-poetry-submission.docx +0 -0
  152. package/data/export-templates/scriveno-smashwords-styles.md +45 -0
  153. package/data/export-templates/scriveno-smashwords.docx +0 -0
  154. package/data/export-templates/scriveno-stageplay.typst +129 -0
  155. package/data/proof/creative-context/README.md +79 -0
  156. package/data/proof/voice-dna/GUIDED-SAMPLE.md +19 -0
  157. package/data/proof/voice-dna/README.md +45 -0
  158. package/data/proof/voice-dna/STYLE-GUIDE-EXCERPT.md +43 -0
  159. package/data/proof/voice-dna/UNGUIDED-SAMPLE.md +11 -0
  160. package/data/proof/watchmaker-flow/README.md +78 -0
  161. package/docs/architecture.md +425 -0
  162. package/docs/command-reference.md +2384 -0
  163. package/docs/configuration.md +228 -0
  164. package/docs/context-protocol.md +81 -0
  165. package/docs/contributing.md +430 -0
  166. package/docs/creative-context.md +158 -0
  167. package/docs/development.md +152 -0
  168. package/docs/drafter-quality.md +127 -0
  169. package/docs/getting-started.md +198 -0
  170. package/docs/history-protocol.md +96 -0
  171. package/docs/proof-artifacts.md +56 -0
  172. package/docs/publishing.md +296 -0
  173. package/docs/release-notes.md +457 -0
  174. package/docs/runtime-support.md +77 -0
  175. package/docs/sacred-texts.md +296 -0
  176. package/docs/shipped-assets.md +129 -0
  177. package/docs/testing.md +156 -0
  178. package/docs/translation.md +343 -0
  179. package/docs/voice-dna.md +297 -0
  180. package/docs/work-types.md +339 -0
  181. package/lib/architectural-profiles.js +134 -0
  182. package/package.json +54 -0
  183. package/templates/BRIEF.md +51 -0
  184. package/templates/CHARACTERS.md +64 -0
  185. package/templates/CONTEXT.md +56 -0
  186. package/templates/OUTLINE.md +36 -0
  187. package/templates/RECORD.md +68 -0
  188. package/templates/STATE.md +50 -0
  189. package/templates/STYLE-GUIDE.md +121 -0
  190. package/templates/THEMES.md +36 -0
  191. package/templates/WORK.md +67 -0
  192. package/templates/WORLD.md +62 -0
  193. package/templates/WRITING-RULES.md +156 -0
  194. package/templates/academic/ARGUMENT-MAP.md +40 -0
  195. package/templates/academic/CONCEPTS.md +34 -0
  196. package/templates/academic/CONTEXT.md +29 -0
  197. package/templates/academic/PROPOSAL.md +37 -0
  198. package/templates/academic/QUESTIONS.md +24 -0
  199. package/templates/config.json +72 -0
  200. package/templates/pitfalls/comic.md +54 -0
  201. package/templates/pitfalls/commentary.md +62 -0
  202. package/templates/pitfalls/memoir.md +48 -0
  203. package/templates/pitfalls/novel.md +53 -0
  204. package/templates/pitfalls/poetry_collection.md +63 -0
  205. package/templates/pitfalls/research_paper.md +66 -0
  206. package/templates/pitfalls/runbook.md +64 -0
  207. package/templates/pitfalls/screenplay.md +54 -0
  208. package/templates/platforms/README.md +16 -0
  209. package/templates/platforms/apple/manifest.yaml +20 -0
  210. package/templates/platforms/bn/manifest.yaml +20 -0
  211. package/templates/platforms/d2d/manifest.yaml +20 -0
  212. package/templates/platforms/google/manifest.yaml +20 -0
  213. package/templates/platforms/ingram/manifest.yaml +44 -0
  214. package/templates/platforms/kdp/manifest.yaml +42 -0
  215. package/templates/platforms/kobo/manifest.yaml +20 -0
  216. package/templates/platforms/smashwords/manifest.yaml +26 -0
  217. package/templates/sacred/COSMOLOGY.md +88 -0
  218. package/templates/sacred/DOCTRINES.md +45 -0
  219. package/templates/sacred/FIGURES.md +69 -0
  220. package/templates/sacred/FRAMEWORK.md +98 -0
  221. package/templates/sacred/LINEAGES.md +52 -0
  222. package/templates/sacred/README.md +20 -0
  223. package/templates/sacred/THEOLOGICAL-ARC.md +69 -0
  224. package/templates/sacred/catholic/manifest.yaml +93 -0
  225. package/templates/sacred/islamic-hafs/manifest.yaml +134 -0
  226. package/templates/sacred/islamic-warsh/manifest.yaml +134 -0
  227. package/templates/sacred/jewish/manifest.yaml +56 -0
  228. package/templates/sacred/orthodox/manifest.yaml +98 -0
  229. package/templates/sacred/pali/manifest.yaml +20 -0
  230. package/templates/sacred/protestant/manifest.yaml +86 -0
  231. package/templates/sacred/sanskrit/manifest.yaml +20 -0
  232. package/templates/sacred/tewahedo/manifest.yaml +106 -0
  233. package/templates/sacred/tibetan/manifest.yaml +20 -0
  234. package/templates/technical/AUDIENCE.md +26 -0
  235. package/templates/technical/DEPENDENCIES.md +19 -0
  236. package/templates/technical/DOC-BRIEF.md +45 -0
  237. package/templates/technical/PROCEDURES.md +37 -0
  238. package/templates/technical/REFERENCES.md +36 -0
  239. package/templates/technical/SYSTEM.md +25 -0
@@ -0,0 +1,343 @@
1
+ # Translation Guide
2
+
3
+ Scriveno translates your manuscript into any language while preserving your voice. The translation pipeline handles glossary management, translation memory, cultural adaptation, quality verification, and multi-language publishing -- from setup to finished translated editions.
4
+
5
+ This guide covers the full pipeline: choosing a translation engine, translating your manuscript, managing terminology, verifying quality, and publishing in multiple languages.
6
+
7
+ ## Translation Engines
8
+
9
+ Scriveno uses three translation approaches, each suited to different languages and content types.
10
+
11
+ **DeepL** -- Primary engine for European languages. Higher quality than alternatives for English, French, German, Spanish, Italian, Portuguese, Dutch, Polish, Japanese, Chinese, and Korean. GDPR-compliant -- your content is not stored or used for training.
12
+
13
+ **Google Cloud Translation** -- Broad language coverage with 130+ languages. Required for Arabic, Hebrew, Hindi, Swahili, and other languages DeepL does not cover. Best choice for RTL scripts and languages with limited DeepL support.
14
+
15
+ **AI Agent (Claude/GPT)** -- The AI agent itself handles literary nuance, sacred text translation, and cultural adaptation that machine translation APIs miss. It applies your voice profile, maintains glossary compliance, and can do formal/dynamic equivalence translation. This is Scriveno's default for literary content -- every unit is translated by the translator agent with your STYLE-GUIDE.md loaded.
16
+
17
+ The translator agent works unit by unit in fresh context (just like the drafter), ensuring consistent quality and glossary compliance across the entire manuscript.
18
+
19
+ ## Getting Started with Translation
20
+
21
+ ### Step 1: Add a Target Language
22
+
23
+ Configure the language you want to translate into:
24
+
25
+ ```
26
+ /scr:translate --add-language fr
27
+ ```
28
+
29
+ This adds French to your project's target languages in `.manuscript/config.json`. You can add as many languages as you need.
30
+
31
+ Check your configured languages anytime:
32
+
33
+ ```
34
+ /scr:translate --languages
35
+ ```
36
+
37
+ ### Step 2: Create a Glossary
38
+
39
+ Before translating, set up a glossary for consistent terminology:
40
+
41
+ ```
42
+ /scr:translation-glossary fr
43
+ ```
44
+
45
+ Scriveno scans your manuscript for character names, place names, invented terms, titles, recurring phrases, and cultural references, then generates suggested translations. Review and edit the glossary before starting translation -- the translator agent treats glossary entries as law.
46
+
47
+ ### Step 3: Translate
48
+
49
+ Translate your manuscript:
50
+
51
+ ```
52
+ /scr:translate fr
53
+ ```
54
+
55
+ Scriveno translates one atomic unit at a time (scene, chapter, passage), each in fresh context with your STYLE-GUIDE.md, glossary, and translation memory loaded. You see progress per unit:
56
+
57
+ ```
58
+ Translated chapter 1, scene 1: 1,247 -> 1,389 words (1.11x)
59
+ Translated chapter 1, scene 2: 980 -> 1,102 words (1.12x)
60
+ ```
61
+
62
+ To translate all configured languages:
63
+
64
+ ```
65
+ /scr:translate --all
66
+ ```
67
+
68
+ To resume from a specific unit (after interruption or revision):
69
+
70
+ ```
71
+ /scr:translate fr --from chapter-3-scene-1
72
+ ```
73
+
74
+ ### Step 4: Verify Quality
75
+
76
+ Run back-translation to check for meaning drift:
77
+
78
+ ```
79
+ /scr:back-translate fr
80
+ ```
81
+
82
+ This translates the French text back to English and shows a side-by-side comparison with drift annotations. See the [Quality Verification](#quality-verification) section for details.
83
+
84
+ ## Glossary Management
85
+
86
+ Glossaries ensure that character names, place names, and invented terms are translated consistently throughout the manuscript. The translator agent checks the glossary for every unit -- inconsistent terminology across a translated manuscript destroys reader trust.
87
+
88
+ Glossaries are stored as readable markdown tables at `.manuscript/translation/GLOSSARY-{lang}.md`.
89
+
90
+ ### Creating a Glossary
91
+
92
+ ```
93
+ /scr:translation-glossary fr
94
+ ```
95
+
96
+ Scriveno extracts terms from your manuscript and generates an initial glossary with suggested translations. Terms are organized by category:
97
+
98
+ | Category | What It Covers |
99
+ |----------|---------------|
100
+ | `character_name` | Character names, nicknames, aliases |
101
+ | `place_name` | Locations, realms, geographical features |
102
+ | `invented_term` | Made-up words, neologisms, world-specific vocabulary |
103
+ | `title_honorific` | Titles, ranks, forms of address |
104
+ | `recurring_phrase` | Phrases that appear multiple times with specific meaning |
105
+ | `cultural_reference` | Setting-specific cultural elements |
106
+ | `brand_name` | Proper nouns, organization names |
107
+
108
+ ### Name Handling
109
+
110
+ How character names are handled depends on your `name_handling` setting in `.manuscript/config.json`:
111
+
112
+ - **`keep_original`** -- Names stay in their original form. Transliterations are added in parentheses on first occurrence if the target language uses a different script.
113
+ - **`transliterate`** -- Names are transliterated into the target language's script (e.g., Marcus becomes in Japanese).
114
+ - **`localize`** -- Names are given culturally equivalent forms (e.g., John becomes Jean in French).
115
+
116
+ ### Adding and Editing Terms
117
+
118
+ Add a single term:
119
+
120
+ ```
121
+ /scr:translation-glossary fr --add "chronoshifter" --translation "chronodecaleur" --category invented_term
122
+ ```
123
+
124
+ Bulk import terms:
125
+
126
+ ```
127
+ /scr:translation-glossary fr --import
128
+ ```
129
+
130
+ Review the glossary for missing terms and inconsistencies:
131
+
132
+ ```
133
+ /scr:translation-glossary fr --review
134
+ ```
135
+
136
+ The review mode scans your manuscript for terms that should be in the glossary but are not, and flags potential inconsistencies like similar terms that might confuse the translator.
137
+
138
+ ## Translation Memory
139
+
140
+ Translation memory (TM) stores aligned source-target segment pairs from completed translations. When the translator agent works on a new unit, relevant TM segments are loaded into its context so it can reuse approved translations for recurring descriptions, dialogue tags, and narrative patterns.
141
+
142
+ The TM is stored at `.manuscript/translation/translation-memory.json`.
143
+
144
+ ### When Translation Memory Matters
145
+
146
+ - **Sacred texts** -- Canonical terms and liturgical phrases must be translated identically every time
147
+ - **Series** -- Character names, place names, and invented terms need consistency across volumes
148
+ - **Technical writing** -- Terminology consistency is essential for clarity
149
+
150
+ ### Building Translation Memory
151
+
152
+ After completing a translation, build the TM from your approved translations:
153
+
154
+ ```
155
+ /scr:translation-memory fr --build
156
+ ```
157
+
158
+ Scriveno aligns source and target segments at the paragraph and sentence level, assigns confidence scores (1.0 for exact alignment, down to 0.3 for fuzzy matches), and deduplicates.
159
+
160
+ ### Translation Memory Commands
161
+
162
+ ```
163
+ /scr:translation-memory fr # Show stats (or build if none exists)
164
+ /scr:translation-memory fr --build # Build/rebuild from completed translations
165
+ /scr:translation-memory fr --stats # Show segment counts and coverage
166
+ /scr:translation-memory fr --export # Export as TMX for external CAT tools
167
+ /scr:translation-memory fr --clear # Clear TM for a language (with confirmation)
168
+ ```
169
+
170
+ The TMX export produces industry-standard Translation Memory eXchange format compatible with SDL Trados, MemoQ, OmegaT, and other computer-assisted translation tools.
171
+
172
+ ## Cultural Adaptation
173
+
174
+ Machine translation handles words. Cultural adaptation handles meaning. Scriveno flags culturally sensitive content that needs human attention beyond what translation APIs catch.
175
+
176
+ ```
177
+ /scr:cultural-adaptation fr
178
+ ```
179
+
180
+ The cultural adaptation review scans your translated text across 9 categories:
181
+
182
+ | Category | Severity | Examples |
183
+ |----------|----------|---------|
184
+ | **Idiom** | High | "Break a leg" translated literally instead of using a target-language equivalent |
185
+ | **Humor** | High | Jokes relying on source-language wordplay or cultural knowledge |
186
+ | **Politeness** | High | Wrong T-V distinction (tu/vous), inappropriate honorific levels |
187
+ | **Custom** | Medium | Holidays, greeting conventions, dining etiquette |
188
+ | **Measurement** | Medium | Imperial units preserved without metric conversion |
189
+ | **Currency** | Medium | Dollar amounts without localization context |
190
+ | **Name order** | Medium | Family name first/last conventions (important for Japanese, Chinese, Korean, Hungarian) |
191
+ | **Food** | Low | Cultural food references (Thanksgiving turkey, fish and chips) |
192
+ | **Punctuation** | Low | Quotation mark style, decimal separators, spacing conventions |
193
+
194
+ Filter by severity or scope to a specific unit:
195
+
196
+ ```
197
+ /scr:cultural-adaptation fr --severity high
198
+ /scr:cultural-adaptation fr --unit chapter-2-scene-1
199
+ /scr:cultural-adaptation fr --report
200
+ ```
201
+
202
+ The `--report` flag generates a standalone report at `.manuscript/translation/{lang}/CULTURAL-ADAPTATION-REPORT.md`.
203
+
204
+ ## Quality Verification
205
+
206
+ Back-translation is the primary quality verification tool. It translates the translated text back to the source language and shows a side-by-side comparison with drift annotations.
207
+
208
+ ```
209
+ /scr:back-translate fr
210
+ ```
211
+
212
+ ### How It Works
213
+
214
+ 1. Scriveno reads the translated text (without looking at the original)
215
+ 2. Translates it back to the source language
216
+ 3. Compares the back-translation with the original
217
+ 4. Annotates each segment with a drift marker
218
+
219
+ ### Drift Markers
220
+
221
+ | Marker | Meaning |
222
+ |--------|---------|
223
+ | **[OK]** | Meaning preserved -- wording may differ but intent is the same |
224
+ | **[DRIFT: meaning shift]** | Factual content, intent, or implication changed |
225
+ | **[DRIFT: tone shift]** | Emotional register changed (more formal, less urgent, different mood) |
226
+ | **[DRIFT: omission]** | Something from the original is missing |
227
+ | **[DRIFT: addition]** | Something not in the original was added |
228
+
229
+ ### Fidelity Assessment
230
+
231
+ - **90%+ OK** -- Excellent fidelity. Minor drifts are expected and acceptable.
232
+ - **75-89% OK** -- Good fidelity with notable drift areas. Review flagged segments.
233
+ - **Below 75% OK** -- Significant drift. Consider re-translating problem units.
234
+
235
+ Scope to a specific unit or generate a full report:
236
+
237
+ ```
238
+ /scr:back-translate fr --unit chapter-3
239
+ /scr:back-translate fr --report
240
+ ```
241
+
242
+ ## RTL and CJK Support
243
+
244
+ Scriveno handles right-to-left and CJK (Chinese, Japanese, Korean) scripts throughout the pipeline.
245
+
246
+ ### Right-to-Left Languages
247
+
248
+ RTL languages (Arabic, Hebrew, Persian, Urdu) receive special handling:
249
+
250
+ - **Text direction** -- Export commands automatically set `--variable dir=rtl` for Pandoc and `text-dir` for Typst
251
+ - **Template adjustments** -- The Typst book template reverses inside/outside margins for RTL binding
252
+ - **Font requirements** -- RTL exports need fonts with Arabic/Hebrew glyph support. Scriveno uses system-available fonts by default; specify custom fonts in `.manuscript/config.json`
253
+ - **Punctuation** -- Quotation marks use the appropriate convention (e.g., French-style guillemets for Arabic)
254
+
255
+ ### CJK Languages
256
+
257
+ CJK languages (Chinese, Japanese, Korean) receive:
258
+
259
+ - **Line breaking** -- CJK-aware line breaking rules (no break within words, proper kinsoku shori for Japanese)
260
+ - **Font handling** -- CJK exports use appropriate CJK fonts with correct glyph coverage
261
+ - **Spacing** -- No inter-word spaces (CJK convention), proper spacing between CJK and Latin characters
262
+ - **Quotation marks** -- Corner brackets are used by default
263
+
264
+ ### Script Detection
265
+
266
+ Scriveno auto-detects script direction from the language code:
267
+
268
+ - **RTL:** `ar`, `he`, `fa`, `ur`, `yi`, `ps`, `sd`
269
+ - **CJK:** `zh`, `ja`, `ko`
270
+ - **LTR:** All other languages
271
+
272
+ No manual configuration needed -- the translation and export commands apply the correct settings automatically.
273
+
274
+ ## Multi-Language Publishing
275
+
276
+ After translating, export your manuscript in all target languages and formats:
277
+
278
+ ```
279
+ /scr:multi-publish --languages fr,de,ja --format epub
280
+ ```
281
+
282
+ Multi-publish handles everything needed for translated editions:
283
+
284
+ - **Localized front matter** -- Translated title page, copyright page (with translation credit), dedication, and table of contents
285
+ - **Localized back matter** -- Translated author bio, acknowledgments, and auto-generated translator's note
286
+ - **Language-specific formatting** -- Correct quotation marks, punctuation spacing, number formatting, and text direction
287
+ - **Per-language output** -- Each language gets its own directory: `.manuscript/output/translations/{lang}/`
288
+
289
+ ### Multi-Publish Options
290
+
291
+ ```
292
+ /scr:multi-publish --languages fr,de # Specific languages, interactive format selection
293
+ /scr:multi-publish --all-languages # All configured languages
294
+ /scr:multi-publish --format pdf # Specific format for all languages
295
+ /scr:multi-publish --all-languages --all-formats # Everything
296
+ ```
297
+
298
+ For KDP or IngramSpark packages in translated editions, multi-publish creates language-specific packages with translated metadata and localized cover specifications.
299
+
300
+ ## Autopilot Translation
301
+
302
+ For hands-off translation of one or more languages, autopilot runs the complete 6-phase pipeline without asking questions:
303
+
304
+ ```
305
+ /scr:autopilot-translate --languages fr,de,ja
306
+ ```
307
+
308
+ The autopilot pipeline per language:
309
+
310
+ 1. **Glossary** -- Creates the glossary if it doesn't exist
311
+ 2. **Translate** -- Translates all units with fresh-context-per-unit
312
+ 3. **Translation Memory** -- Builds TM from completed translations
313
+ 4. **Cultural Adaptation** -- Flags culturally sensitive content
314
+ 5. **Back-Translate** -- Runs back-translation quality verification
315
+ 6. **Multi-Publish** -- Exports in all available formats
316
+
317
+ ### Autopilot Options
318
+
319
+ ```
320
+ /scr:autopilot-translate --all-languages # Translate all configured languages
321
+ /scr:autopilot-translate --languages ar --skip-publish # Translate without exporting
322
+ /scr:autopilot-translate --languages fr --skip-adaptation # Skip cultural adaptation
323
+ /scr:autopilot-translate --resume # Resume interrupted pipeline
324
+ ```
325
+
326
+ Autopilot tracks progress in STATE.md so you can resume where you left off after interruption. Each language is independent -- if Arabic completed phases 1-3 and French completed 1-5, resuming picks up each language at its next phase.
327
+
328
+ ## Sacred Text Translation
329
+
330
+ Sacred texts receive special translation handling with additional controls for theological precision:
331
+
332
+ - **Translation philosophy** -- Choose between formal equivalence (word-for-word), dynamic equivalence (thought-for-thought), paraphrase (modern accessibility), or interlinear (scholarly word-by-word alignment)
333
+ - **Canonical alignment** -- Match vocabulary to a canonical translation (KJV, NRSV, Sahih International, etc.)
334
+ - **Preserved source terms** -- Terms like YHWH, hesed, dharma, or taqwa are never translated -- they appear in the source language with transliteration and footnotes
335
+ - **Liturgical preservation** -- Maintains rhythmic and musical qualities for passages meant to be read aloud or chanted
336
+
337
+ Configure sacred translation settings as top-level keys in `.manuscript/config.json`. The most relevant keys are `tradition`, `translation_philosophy`, `canonical_alignment`, `preserve_source_terms`, and `transliteration_style`. Existing projects with a nested `sacred` object are still accepted as legacy input, but new projects use the top-level shape. For full details on sacred text work types, voice registers, and exclusive commands, see the Sacred Text Guide.
338
+
339
+ ## See Also
340
+
341
+ - [Getting Started](getting-started.md) -- Installation and first project
342
+ - [Command Reference](command-reference.md) -- Full list of translation commands
343
+ - [Publishing Guide](publishing.md) -- Exporting and publishing your manuscript
@@ -0,0 +1,297 @@
1
+ # Voice DNA Guide
2
+
3
+ Scriveno's core value is simple: **drafted prose sounds like the writer, not like AI.** The Voice DNA system makes this possible by profiling your writing voice across 15+ dimensions and loading that profile into every drafter agent invocation. If voice fidelity breaks, trust breaks, and no other feature matters.
4
+
5
+ This guide explains how Voice DNA works, what each dimension controls, and how to calibrate your profile.
6
+
7
+ ## What is Voice DNA?
8
+
9
+ Voice DNA is your writing fingerprint captured in a single file: `STYLE-GUIDE.md`. This file lives in your `.manuscript/` directory and is the single most important artifact in your project.
10
+
11
+ If you want a concrete proof artifact before reading the full theory, start with `data/proof/voice-dna/README.md`. That bundle compares one fixed brief before and after style-guide guidance is applied.
12
+
13
+ When the drafter agent writes a scene, chapter, or passage, it loads STYLE-GUIDE.md first -- before the outline, before the characters, before anything else. Every sentence it writes gets checked against your voice profile. Does this sentence match the writer's typical sentence length? Does this metaphor density match their style? Is this dialogue tag pattern consistent with how they write?
14
+
15
+ STYLE-GUIDE.md profiles your voice across 15+ dimensions organized into 9 parts. The next section walks through each one.
16
+
17
+ ## The Voice Dimensions
18
+
19
+ ### Part 1: Narrative Architecture
20
+
21
+ This section defines how your story is told at the highest structural level.
22
+
23
+ **Narrative perspective:**
24
+ - **POV** -- First person, close third, distant third, omniscient, or second person
25
+ - **POV consistency** -- Single POV throughout, multi-POV by chapter, or shifting within scenes
26
+ - **Narrator reliability** -- Reliable, unreliable, or ambiguous
27
+ - **Narrator distance** -- Intimate, observational, detached, or cinematic
28
+
29
+ **Tense:**
30
+ - **Primary tense** -- Past, present, or mixed
31
+ - **Tense shifts** -- Where and why tense shifts are allowed (e.g., flashbacks in present tense)
32
+
33
+ **Narrative stance:**
34
+ - **Knowing vs. discovering** -- Does the narrator know what's coming, or discover it alongside the reader?
35
+ - **Emotional distance** -- Warm or cool, sympathetic or critical or neutral
36
+ - **Judgment** -- Moralistic, withholding, ironic, or compassionate
37
+
38
+ **Example:** Two writers with different narrative architecture settings produce very different openings. A close-third, past-tense, intimate narrator might write: *She pressed her palm against the cold glass and watched the street below empty out.* An omniscient, present-tense, detached narrator might write: *The street empties. In the apartment above the bakery, a woman stands at the window, though she cannot see what is coming.*
39
+
40
+ ### Part 2: Sentence and Paragraph Architecture
41
+
42
+ This section controls the rhythm and texture of your prose at the sentence and paragraph level.
43
+
44
+ **Sentence architecture:**
45
+ - **Average sentence length** -- A target word count (e.g., 12 words, 22 words)
46
+ - **Sentence variation** -- High variation, mostly short, mostly long, or rhythmic alternation
47
+ - **Complex structures** -- Preference for embedded clauses, parallel structures, fragments
48
+ - **Sentence music** -- Staccato, flowing, punchy, or lyrical
49
+
50
+ **Paragraph architecture:**
51
+ - **Paragraph length** -- Short, medium, long, or variable
52
+ - **White space** -- Dense, generous, or rhythmic
53
+ - **Paragraph breaks** -- When to break: beat shift, POV shift, emphasis
54
+
55
+ **Example:** A writer who favors short sentences with staccato music and generous white space:
56
+
57
+ *He sat down. The chair creaked. Outside, rain.*
58
+
59
+ A writer who favors long, flowing sentences with dense paragraphs:
60
+
61
+ *He lowered himself into the chair, which creaked beneath him the way old things do when they remember what they once held, and through the window the rain came down in sheets that blurred the garden into something impressionist and half-remembered.*
62
+
63
+ ### Part 3: Vocabulary and Diction
64
+
65
+ This section governs word choice and language register.
66
+
67
+ **Vocabulary:**
68
+ - **Register** -- Formal, conversational, lyrical, colloquial, or literary
69
+ - **Complexity** -- Accessible, elevated, or specialized
70
+ - **Word origin** -- Preference for Anglo-Saxon (gut, blood, dark) vs. Latinate (intestinal, sanguine, tenebrous)
71
+ - **Jargon handling** -- How domain-specific terms are introduced and used
72
+ - **Profanity** -- None, mild, moderate, explicit, or character-specific
73
+
74
+ **Example:** An Anglo-Saxon-preferring writer with conversational register: *He walked into the dark room and felt sick.* A Latinate-preferring writer with literary register: *He entered the tenebrous chamber and experienced a wave of nausea.*
75
+
76
+ ### Part 4: Figurative Language
77
+
78
+ This section controls metaphor, simile, symbolism, and imagery.
79
+
80
+ - **Metaphor density** -- Sparse, moderate, or dense
81
+ - **Metaphor style** -- Grounded/concrete, abstract/philosophical, or sensory
82
+ - **Recurring image systems** -- Motifs that should recur throughout the work (e.g., water imagery, mechanical metaphors)
83
+ - **Similes** -- Frequency and style preferences
84
+ - **Symbolism** -- Overt, buried, or emergent
85
+
86
+ **Example:** A writer with sparse, grounded metaphors: *The argument sat between them like a third plate at the table.* A writer with dense, abstract metaphors: *Their words were architectures of evasion, each sentence a buttress holding up the cathedral of what they would not say.*
87
+
88
+ ### Part 5: Dialogue
89
+
90
+ This section defines how characters speak and how dialogue is presented on the page.
91
+
92
+ - **Dialogue ratio** -- What percentage of text is dialogue
93
+ - **Tag style** -- Said-bookish ("said" only), creative tags ("exclaimed," "murmured"), action beats, or minimal (no tags)
94
+ - **Subtext level** -- On-the-nose, moderately layered, or heavily subtextual
95
+ - **Dialect/accent** -- Phonetic spelling, light suggestion, or none
96
+ - **Interrupted speech** -- Frequency and handling (em-dashes, ellipses, trailing off)
97
+
98
+ **Character voice differentiation:** Each character should sound distinct. CHARACTERS.md (or FIGURES.md for sacred work types) holds individual voice anchors for each character -- speech patterns, vocabulary, rhythms, tics.
99
+
100
+ **Example:** A writer who favors action beats over dialogue tags with heavily subtextual dialogue:
101
+
102
+ *She set the glass down. "It's fine."*
103
+ *He looked at the glass. "Sure."*
104
+ *"I said it's fine."*
105
+
106
+ vs. a writer who uses creative tags with on-the-nose dialogue:
107
+
108
+ *"I'm upset about what happened," she declared firmly.*
109
+ *"I understand completely," he reassured her.*
110
+
111
+ ### Part 6: Description and Sensory Detail
112
+
113
+ This section controls how the physical world appears in your prose.
114
+
115
+ **Description density:**
116
+ - **Overall density** -- Sparse, moderate, rich, or lush
117
+ - **Sense mix** -- Visual-dominant, multi-sensory, or synesthetic
118
+ - **Specificity** -- General, specific, or hyper-specific with brand names
119
+
120
+ **Physicality:**
121
+ - **Body awareness** -- How often characters' physical sensations appear
122
+ - **Place** -- How strongly setting is felt
123
+ - **Time of day/weather** -- How often atmosphere is referenced
124
+
125
+ **Example:** A sparse, visual-dominant writer: *The room was small and white.* A lush, multi-sensory writer: *The room smelled of camphor and old paper, and the walls had that particular yellow-white of teeth, and somewhere a radiator ticked like a slow clock.*
126
+
127
+ ### Part 7: Pacing and Rhythm
128
+
129
+ This section governs the speed and flow of narrative.
130
+
131
+ **Pacing:**
132
+ - **Default pace** -- Slow-burn, steady, brisk, or breakneck
133
+ - **Pace variation** -- Where and how pace shifts (action scenes speed up, emotional scenes slow down)
134
+ - **Scene-to-summary ratio** -- How much is dramatized vs. summarized
135
+
136
+ **Transitions:**
137
+ - **Between scenes** -- Hard cuts, soft fades, or hooks
138
+ - **Between chapters** -- Cliffhangers, echoes, or clean breaks
139
+ - **Time jumps** -- How they're signaled, how frequent, how handled
140
+
141
+ ### Part 7: Reference Influences
142
+
143
+ This section captures the authors, works, and passages that anchor your voice.
144
+
145
+ - **Authors/works to evoke** -- The writers whose style yours echoes or aspires to
146
+ - **Reference passages** -- 500-word samples from your own previous work or selected reference authors, used by the drafter as voice anchors
147
+
148
+ These references give the drafter concrete examples to calibrate against, not to copy but to understand the register you're aiming for.
149
+
150
+ ### Part 9: Always / Never / Consider
151
+
152
+ This section holds your explicit rules -- the things the drafter should always do, never do, or consider doing.
153
+
154
+ - **Always** -- Hard rules (e.g., "Always use Oxford commas," "Always ground abstract moments in physical sensation")
155
+ - **Never** -- Prohibitions (e.g., "Never use the word 'whilst'," "Never start a chapter with dialogue")
156
+ - **Consider** -- Soft guidance (e.g., "Consider using shorter paragraphs in action scenes," "Consider echoing the opening image at chapter ends")
157
+
158
+ These rules override everything else. If the writer says "never use semicolons," the drafter does not use semicolons, even if a semicolon would be grammatically ideal.
159
+
160
+ ## Setting Up Your Voice Profile
161
+
162
+ Your STYLE-GUIDE.md starts as a template during project setup, then gets filled in through Voice DNA profiling. There are two main paths:
163
+
164
+ ### Path 1: Interview (recommended)
165
+
166
+ Run `/scr:profile-writer --questionnaire` (or simply `/scr:profile-writer`) and Scriveno interviews you about your writing preferences. It asks about your sentence style, dialogue preferences, figurative language density, and other dimensions, then writes those decisions into STYLE-GUIDE.md.
167
+
168
+ ### Path 2: Writing sample
169
+
170
+ Run `/scr:profile-writer --analyze <file>` with a sample of your existing writing (500-1000 words works well) and Scriveno analyzes it to extract your voice profile automatically. This works especially well if you have published work or a manuscript-in-progress that represents the voice you want.
171
+
172
+ After profiling, run `/scr:voice-test` before drafting. `/scr:discuss` comes later in the workflow and assumes STYLE-GUIDE.md already exists for the unit-planning conversation.
173
+
174
+ ## Calibrating with voice-test
175
+
176
+ Before drafting your first unit, run:
177
+
178
+ ```
179
+ /scr:voice-test
180
+ ```
181
+
182
+ This command drafts a short sample scene using your current STYLE-GUIDE.md profile. You read the sample and tell Scriveno what sounds right and what sounds off. "The dialogue is too formal." "The sentences are too long." "I would never use that word." Scriveno adjusts your profile based on your feedback.
183
+
184
+ Think of voice-test as a sound check before a concert. You're making sure the drafter will sound like you before it writes 80,000 words.
185
+
186
+ After your first draft units are complete, you can also run:
187
+
188
+ ```
189
+ /scr:voice-check
190
+ ```
191
+
192
+ This compares drafted prose against your STYLE-GUIDE.md and flags anything that drifted -- sentences that are too long relative to your profile, metaphor density that crept up, dialogue tags that shifted style. For sacred work types, the same `/scr:voice-check` command shifts into a register-check role and verifies voice register consistency.
193
+
194
+ ## Sacred Voice Registers
195
+
196
+ Sacred and historical work types support 10 specialized voice registers. These go beyond your personal writing voice to capture the distinct tones found in religious and historical literature.
197
+
198
+ The 10 registers are:
199
+
200
+ | Register | Character | Example Pattern |
201
+ |----------|-----------|-----------------|
202
+ | **Prophetic** | Urgent, declarative, oracular | "Thus says the Lord" framing, imperative mood, repetition for emphasis |
203
+ | **Wisdom** | Aphoristic, reflective, balanced | Parallelism, "Better X than Y" structures, observational tone |
204
+ | **Legal / Halakhic** | Precise, conditional, imperative | Case-law structure, exhaustive enumeration, binding weight |
205
+ | **Liturgical** | Formal, rhythmic, responsive | Call-and-response, doxological language, musical awareness |
206
+ | **Narrative-historical** | Chronicle-like, temporal, factual | Sequential narration, genealogical asides, minimal editorializing |
207
+ | **Apocalyptic** | Visionary, symbolic, cosmic | "I saw..." framing, symbolic numbers, throne-room scenes |
208
+ | **Epistolary** | Personal, didactic, pastoral | Greeting formula, practical instruction, closing benediction |
209
+ | **Poetic / Psalmic** | Musical, metaphorical, parallelism-heavy | Hebrew parallelism patterns, emotional range, chiastic structures |
210
+ | **Parabolic** | Allegorical, story-within-story | "The kingdom of heaven is like..." concrete daily-life imagery |
211
+ | **Didactic** | Instructional, systematic, expository | Topic-by-topic structure, teacher-student dynamic, Q&A format |
212
+
213
+ Each unit's plan file specifies which register to use. Your STYLE-GUIDE.md Part 8 (Sacred Voice Registers) describes how YOU handle each register -- the drafter always defers to your personalized register style over the generic descriptions.
214
+
215
+ If no register is specified in a plan file, the drafter defaults to narrative-historical.
216
+
217
+ For full details on sacred work types, exclusive commands, and tradition-specific configuration, see the Sacred Text Guide.
218
+
219
+ ## How Voice Stays Consistent
220
+
221
+ Scriveno uses a **fresh-context-per-unit** architecture. Here's how it works:
222
+
223
+ 1. Each atomic unit (scene, passage, verse, beat) gets its own fresh drafter agent invocation
224
+ 2. The drafter loads STYLE-GUIDE.md first -- before anything else
225
+ 3. The drafter then loads two optional rule layers (see "Three rule layers" below) that scaffold weaker models against AI tells without overriding the writer's voice
226
+ 4. The drafter also receives the last 200 words of the previous unit for continuity
227
+ 5. The drafter writes the unit, checking every sentence against your voice profile
228
+ 6. After drafting, a voice-check pass flags any drift
229
+
230
+ Why fresh context? Because AI agents accumulate context over a conversation, and accumulated context causes voice drift. After 10,000 words of continuous generation, the AI starts sounding like itself instead of like you. By giving each unit a clean slate with STYLE-GUIDE.md loaded fresh, Scriveno keeps every unit at peak voice fidelity.
231
+
232
+ This is the same principle behind recording each instrument separately in a studio -- isolation gives you control.
233
+
234
+ ### Three rule layers
235
+
236
+ Starting in `1.6.0`, Scriveno loads three rule layers in this order on every drafter invocation:
237
+
238
+ 1. **STYLE-GUIDE.md** (sovereign): your Voice DNA. Always loaded; nothing overrides it.
239
+ 2. **WRITING-RULES.md** (universal, optional): human-first restraint, variance over substitution, factual integrity, soft-inference discipline, register awareness, sourced stance, artifact cleanup, and canonical AI-tell don'ts. It tells the drafter to avoid hedging, throat-clearing, balanced-both-sides constructions, generic metaphors, symmetrical rhythm, moralizing closings, AI tics in dialogue, invented support, truncated beats, copied chat residue, over-polishing human texture, and replacing one machine signature with a new humanizer signature. Loaded if the file is present in `.manuscript/` or the installed templates.
240
+ 3. **Pitfall pack** (type-specific, optional): traps unique to your `work_type`. Filter words for prose, unfilmable description for screenplays, missing-precondition checks for runbooks, anachronism for sacred commentary, and so on. Loaded from `.manuscript/PITFALLS.md` if you've authored a project-local override, otherwise from the installed `templates/pitfalls/<work_type>.md`.
241
+
242
+ Conflict resolution is top-down: STYLE-GUIDE.md beats WRITING-RULES.md beats the pitfall pack. If your voice in STYLE-GUIDE.md says you hedge, fragment, moralize, use formal register, or keep period diction deliberately, that voice wins. The rule layers are scaffolding, not constraints.
243
+
244
+ Three knobs in `.manuscript/config.json` tune the system:
245
+
246
+ - `draft.rigor`: `standard` (defaults) or `strict` (per-sentence rules check; useful when routing to a weaker model)
247
+ - `draft.context_profile`: `minimal`, `standard`, or `full` (controls how much context the drafter loads per unit; `minimal` saves tokens on weaker models)
248
+ - `draft.pitfalls_enabled`: `true` (default) or `false` (skip the pitfall pack when the writer's voice deliberately leans into a trap)
249
+
250
+ The same rule layer also has a diagnostic side. When you ask "is this AI" or "does this still sound like me," `/scr:voice-check` and `/scr:originality-check` read the rules from the other side: they report an authenticity band (Reads human / Mixed signals / Reads AI-generated) first, then a 0-100 score, then flagged spans with reasons, and they never rewrite. They match scrutiny to evidence (low density biases hard toward a high score, because over-flagging genuine human prose is the worst error here), credit strong false positives as score-raising human markers, and always name what they deliberately did not flag. Fixing flagged prose is a separate step (`/scr:line-edit`, `/scr:polish`, or a re-draft) you choose, after which the check re-runs as a fresh read. Diagnosis and rewriting stay apart on purpose, with you between them.
251
+
252
+ See [docs/drafter-quality.md](drafter-quality.md) for the full system, including model-tier recommendations.
253
+
254
+ ## Troubleshooting
255
+
256
+ ### Voice drift
257
+
258
+ **Symptom:** Later units sound different from earlier ones.
259
+ **Fix:** Run `/scr:voice-check` to identify specific dimensions that drifted. Update STYLE-GUIDE.md if your preferences have evolved, or flag the drifted units for redraft.
260
+
261
+ ### Too formal / too stiff
262
+
263
+ **Symptom:** Prose sounds like an essay or press release instead of a story.
264
+ **Fix:** Check your register setting in STYLE-GUIDE.md Part 3 (Vocabulary). If it's set to "formal" or "literary," try "conversational." Also check sentence length -- longer average sentences tend to read more formally.
265
+
266
+ ### Too informal / too loose
267
+
268
+ **Symptom:** Prose sounds like a blog post or chat message.
269
+ **Fix:** Increase register complexity, lengthen average sentence length, or add "Consider" rules like "Consider varying sentence openings" to add structural sophistication.
270
+
271
+ ### Characters sound the same
272
+
273
+ **Symptom:** All dialogue sounds like it comes from the same person.
274
+ **Fix:** Check CHARACTERS.md -- each character needs distinct voice anchors (vocabulary, sentence patterns, speech tics). The drafter uses these to differentiate character speech from narrative voice.
275
+
276
+ ### Too many metaphors / not enough metaphors
277
+
278
+ **Symptom:** Prose is either overwritten or too bare.
279
+ **Fix:** Adjust metaphor density in STYLE-GUIDE.md Part 4 (Figurative Language). "Sparse" means one metaphor per page at most. "Dense" means multiple per paragraph. Find your natural density by looking at your existing writing.
280
+
281
+ ### AI-sounding hedging
282
+
283
+ **Symptom:** Phrases like "perhaps," "it could be argued," "in a sense" appearing in drafted prose.
284
+ **Fix:** Two complementary remedies. (1) Add to your "Never" list: "Never use hedging language (perhaps, it could be argued, in a sense, to some degree)." The drafter respects Never rules absolutely. (2) Confirm `WRITING-RULES.md` is present in `.manuscript/`; its "Hedging and qualifiers" subsection is loaded by the drafter and voice-checker as the canonical AI-tell list. If voice-check reports keep flagging hedges, set `draft.rigor` to `strict` in `config.json` to enforce per-sentence checks.
285
+
286
+ ### Is this draft AI, or does it still sound like me?
287
+
288
+ **Symptom:** You want an honest read of how authentically a draft reads as your own work, or which spans sound machine-written.
289
+ **Fix:** Run `/scr:voice-check` (with STYLE-GUIDE.md present it measures deviation from your voice) or `/scr:originality-check`. You get a band, a 0-100 score, flagged spans with reasons, and a "Reads as human" section naming what was deliberately not flagged. These commands diagnose only; they never rewrite and never carry a target score into a fix. If you want flagged prose improved, run `/scr:line-edit` or `/scr:polish`, then re-run the check as a fresh re-verify. This is an honest read, not a detector-beating tool, and it names no detector.
290
+
291
+ ## See Also
292
+
293
+ - [Proof Artifacts](proof-artifacts.md) -- inspect the Voice DNA before/after bundle first if you want the fastest concrete evidence
294
+ - [Getting Started](getting-started.md) -- Install Scriveno and write your first draft
295
+ - [Drafter Quality](drafter-quality.md) -- the three rule layers, the `draft` config block, and model-tier recommendations
296
+ - [Command Reference](command-reference.md) -- Full list of all 112 commands with usage and examples
297
+ - [Work Types Guide](work-types.md) -- How work types adapt Scriveno's vocabulary and commands