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,430 @@
1
+ # Contributing to Scriveno
2
+
3
+ Scriveno is a pure skill system -- markdown files that AI agents read and execute. There is no compiled code, no build step, no runtime dependencies. Contributing means adding or editing markdown files and updating the central constraint registry.
4
+
5
+ This guide walks you through extending Scriveno: adding commands, agents, work types, templates, and export formats. Each section is self-contained -- jump to what you need.
6
+
7
+ ## File Structure Overview
8
+
9
+ Before diving in, here is how the codebase is organized:
10
+
11
+ ```
12
+ commands/scr/ Core command tree (100+ command files, including sacred subcommands)
13
+ commands/scr/sacred/ 8 sacred-exclusive subcommands
14
+ agents/ 6 specialized agents (drafter, voice-checker, etc.)
15
+ data/CONSTRAINTS.json Central constraint registry -- every command checks this
16
+ data/demo/ Pre-baked demo project (watchmaker story)
17
+ data/export-templates/ Export templates (Typst, CSS, LaTeX)
18
+ templates/ Base project templates + technical/ and sacred/ variants
19
+ templates/technical/ 6 technical-writing context variants
20
+ templates/sacred/ Sacred-specific context templates and tradition manifests
21
+ bin/install.js Multi-platform installer (Node.js)
22
+ docs/ Documentation suite (16 guides)
23
+ ```
24
+
25
+ Key principle: the AI agent reads these files at runtime. There is no compilation, no bundling, no transpilation. If you can write markdown, you can contribute.
26
+
27
+ ## Adding a Command
28
+
29
+ Every `/scr:*` command is a markdown file in `commands/scr/`. The agent reads the file and follows its instructions. Here is the complete process.
30
+
31
+ ### Step 1: Create the command file
32
+
33
+ Create `commands/scr/{name}.md` with YAML frontmatter and a markdown body. Here is a minimal example based on the `add-note` command:
34
+
35
+ ```yaml
36
+ ---
37
+ description: Add a quick note or reminder to the project notes file.
38
+ argument-hint: "<note text>"
39
+ ---
40
+ ```
41
+
42
+ The frontmatter has two fields:
43
+
44
+ - **`description`** -- One-line summary shown in help and command listings
45
+ - **`argument-hint`** -- Shows the expected arguments (use `<required>` and `[optional]` notation)
46
+
47
+ After the frontmatter, write the command instructions in markdown. Here is what the body of `add-note.md` looks like:
48
+
49
+ ```markdown
50
+ # Add Note
51
+
52
+ You are adding a quick note to the project's notes file.
53
+
54
+ ## What to do
55
+
56
+ 1. Take the note text from the argument
57
+ 2. Open `.manuscript/NOTES.md` (create it if it doesn't exist)
58
+ 3. If creating: add header `# Project Notes\n\n`
59
+ 4. Append the note with a timestamp:
60
+ - [2026-04-07 14:30] Note text here
61
+ 5. Save the file
62
+ 6. Confirm: "Note added."
63
+ ```
64
+
65
+ The body tells the AI agent exactly what to do -- step by step, in plain language.
66
+
67
+ ### Step 2: Add to CONSTRAINTS.json
68
+
69
+ Open `data/CONSTRAINTS.json` and add an entry under the `"commands"` object:
70
+
71
+ ```json
72
+ "add-note": {
73
+ "category": "utility",
74
+ "available": ["all"],
75
+ "description": "Add a quick note or reminder to the project notes file"
76
+ }
77
+ ```
78
+
79
+ The command entry fields:
80
+
81
+ - **`category`** -- Groups the command in help output (core, navigation, structure, craft, publishing, utility, sacred_exclusive, etc.)
82
+ - **`available`** -- Which work type groups can use this command. Use `["all"]` for universal commands, or list specific groups like `["prose", "script"]`
83
+ - **`description`** -- Same as the frontmatter description
84
+
85
+ Some commands have additional fields:
86
+
87
+ ```json
88
+ "draft": {
89
+ "category": "core",
90
+ "available": ["all"],
91
+ "renames_by_unit": true,
92
+ "description": "Draft the planned unit"
93
+ }
94
+ ```
95
+
96
+ - **`renames_by_unit`** -- Legacy schema flag indicating that the command adapts its terminology based on the work type. A novel project still runs `/scr:draft`, but Scriveno presents the work as drafting a chapter; a screenplay presents it as drafting an act.
97
+ - **`adapted`** -- Work-type-specific overrides (renames, behavior changes). For example, `editor-review` becomes `peer-review` for academic works.
98
+
99
+ ### Step 3: Understand adaptive terminology
100
+
101
+ Commands that set `renames_by_unit: true` in CONSTRAINTS.json adapt their terminology based on `command_unit` in the project's `.manuscript/config.json`. The command file itself handles this:
102
+
103
+ ```markdown
104
+ ## Adaptive naming
105
+
106
+ Load `.manuscript/config.json` for `command_unit`. This command stays `/scr:draft`; use the active unit term in prompts and output.
107
+ ```
108
+
109
+ When a writer starts a novel project, `command_unit` is set to `"chapter"`, so `/scr:draft` is presented in chapter terms. For a screenplay, the same `/scr:draft` command is presented in act terms. The command file itself does not change -- the adaptation happens at runtime through config.json.
110
+
111
+ ### Step 4: Write a full command
112
+
113
+ A full command file typically has these sections:
114
+
115
+ 1. **Title** -- `# Command Name`
116
+ 2. **Adaptive naming** (if applicable) -- How the command name adapts
117
+ 3. **Prerequisites** -- What must exist before this command runs
118
+ 4. **What to do** -- Step-by-step instructions for the agent
119
+ 5. **Tone** -- How the agent should communicate with the writer
120
+ 6. **Edge Cases** -- What to do when things go wrong
121
+
122
+ Look at `commands/scr/draft.md` for a complex example (orchestrates the drafter agent) or `commands/scr/add-unit.md` for a structural command with work-type adaptation.
123
+
124
+ ### Minimal vs full
125
+
126
+ A minimal command needs only frontmatter + basic instructions (like `add-note.md` at 29 lines). A full command like `draft.md` (46 lines) includes adaptive terminology, prerequisites, autopilot behavior, and tone guidance. Start minimal and add sections as needed.
127
+
128
+ ## Adding an Agent
129
+
130
+ Agents are specialized markdown files in `agents/`. They are invoked by commands in fresh context -- each invocation starts with a clean slate.
131
+
132
+ ### Step 1: Create the agent file
133
+
134
+ Create `agents/{name}.md` with YAML frontmatter:
135
+
136
+ ```yaml
137
+ ---
138
+ name: drafter
139
+ description: Drafts a single atomic unit in the writer's voice. Invoked in fresh context per atomic unit.
140
+ tools: Read, Write
141
+ ---
142
+ ```
143
+
144
+ The frontmatter fields:
145
+
146
+ - **`name`** -- Agent identifier
147
+ - **`description`** -- What the agent does
148
+ - **`tools`** -- Which tools the agent needs (Read, Write, Bash, etc.)
149
+
150
+ ### Step 2: Write the agent body
151
+
152
+ The body explains what the agent receives, what it does, and what it must never do. Here is the pattern from `agents/drafter.md`:
153
+
154
+ ```markdown
155
+ # Drafter agent
156
+
157
+ You are the Scriveno drafter. Your single job is to draft one atomic unit
158
+ in the writer's established voice.
159
+
160
+ ## What you receive
161
+
162
+ 1. **STYLE-GUIDE.md** -- The voice DNA
163
+ 2. **.manuscript/plans/{N}-{A}-PLAN.md** -- The plan for this atomic unit
164
+ 3. **CHARACTERS.md excerpt** -- Relevant characters only
165
+ 4. **Previous unit tail** -- Last 200 words of previous unit
166
+ 5. **THEMES.md excerpt** -- Relevant thematic threads
167
+
168
+ ## What you do NOT receive
169
+
170
+ - The full manuscript
171
+ - The writer's conversation history
172
+ - Other units' drafts
173
+
174
+ ## How to draft
175
+
176
+ [Step-by-step instructions...]
177
+
178
+ ## What you must never do
179
+
180
+ [Hard constraints...]
181
+ ```
182
+
183
+ ### The fresh-context-per-unit pattern
184
+
185
+ This is the most important architectural pattern in Scriveno. When a command invokes an agent:
186
+
187
+ - The agent is started in a **clean context** -- no prior conversation, no accumulated state
188
+ - It receives only the specific files it needs for this one unit
189
+ - STYLE-GUIDE.md is **always loaded first** -- voice DNA is the top priority
190
+ - After completing its work, the agent context is discarded
191
+
192
+ This prevents voice drift, context bloat, and cross-contamination between units. It is the key to voice fidelity.
193
+
194
+ ### Existing agents
195
+
196
+ Scriveno ships with 6 agents:
197
+
198
+ | Agent | Purpose |
199
+ |-------|---------|
200
+ | `drafter` | Drafts one atomic unit in the writer's voice |
201
+ | `voice-checker` | Compares drafts against STYLE-GUIDE.md, flags drift |
202
+ | `continuity-checker` | Catches contradictions, timeline errors, character drift |
203
+ | `plan-checker` | Validates unit plans before drafting |
204
+ | `researcher` | Gathers research material for a topic |
205
+ | `translator` | Translates content with voice preservation |
206
+
207
+ ## Adding a Work Type
208
+
209
+ Work types define what a writer is creating -- novel, screenplay, Quran commentary, etc. They live in `data/CONSTRAINTS.json` under two sections.
210
+
211
+ ### Step 1: Check if you need a new group
212
+
213
+ Work types belong to groups. Existing groups:
214
+
215
+ - `prose` -- novel, memoir, essay, etc.
216
+ - `script` -- screenplay, stage play, TV pilot, etc.
217
+ - `academic` -- research paper, thesis, journal article, etc.
218
+ - `technical` -- technical guide, runbook, API reference, design spec
219
+ - `visual` -- comic, graphic novel, children's book, etc.
220
+ - `poetry` -- poetry collection, single poem, song lyric
221
+ - `interactive` -- interactive fiction, game narrative
222
+ - `speech_song` -- speech
223
+ - `sacred` -- scripture, commentary, devotional, etc.
224
+
225
+ If your work type fits an existing group, skip to Step 2. To add a new group:
226
+
227
+ ```json
228
+ "work_type_groups": {
229
+ "your_group": {
230
+ "label": "Your Group",
231
+ "members": ["your_work_type"]
232
+ }
233
+ }
234
+ ```
235
+
236
+ ### Step 2: Add the work type entry
237
+
238
+ Add to the `"work_types"` object in CONSTRAINTS.json:
239
+
240
+ ```json
241
+ "your_work_type": {
242
+ "label": "Your Work Type",
243
+ "group": "prose",
244
+ "hierarchy": { "top": "part", "mid": "chapter", "atomic": "scene" },
245
+ "command_unit": "chapter"
246
+ }
247
+ ```
248
+
249
+ The fields:
250
+
251
+ - **`label`** -- Human-readable name
252
+ - **`group`** -- Which group this belongs to
253
+ - **`hierarchy`** -- Three structural levels:
254
+ - `top` -- Largest division (part, act, testament). Use `null` if not applicable.
255
+ - `mid` -- Middle division (chapter, scene, section)
256
+ - `atomic` -- Smallest draft unit (scene, beat, verse, stanza)
257
+ - **`command_unit`** -- Which hierarchy level commands operate on by default
258
+
259
+ For sacred work types, you can also add `config_defaults`:
260
+
261
+ ```json
262
+ "scripture_quranic": {
263
+ "label": "Scripture (Quranic)",
264
+ "group": "sacred",
265
+ "hierarchy": { "top": null, "mid": "surah", "atomic": "ayah" },
266
+ "command_unit": "surah",
267
+ "config_defaults": {
268
+ "verse_numbering_system": "quranic_hafs",
269
+ "calendar_system": "hijri"
270
+ }
271
+ }
272
+ ```
273
+
274
+ ### Step 3: Add to the group's members array
275
+
276
+ Add your work type key to the appropriate group's `members` array:
277
+
278
+ ```json
279
+ "prose": {
280
+ "label": "Prose",
281
+ "members": ["novel", "novella", "short_story", "your_work_type"]
282
+ }
283
+ ```
284
+
285
+ ### Step 4: Update command availability
286
+
287
+ Review commands in CONSTRAINTS.json. For each command, check its `available` array. If the command should work with your new work type's group, it probably already does (most commands use `["all"]`). If a command is group-restricted and should include your type, add the group name.
288
+
289
+ ## Adding a Template
290
+
291
+ Templates are markdown files in `templates/` that define the starting content for project context files. When a writer runs `/scr:new-work`, these templates are copied into `.manuscript/`.
292
+
293
+ ### Step 1: Create the template file
294
+
295
+ Create `templates/{NAME}.md` with placeholder content. Here is the pattern -- each template uses `{placeholders}` that the `new-work` command fills in:
296
+
297
+ ```markdown
298
+ # {work_title} -- Work Overview
299
+
300
+ ## Premise
301
+
302
+ {premise}
303
+
304
+ ## Tone & Mood
305
+
306
+ [To be developed during /scr:discuss]
307
+ ```
308
+
309
+ ### Step 2: Technical and sacred variants
310
+
311
+ If your template needs a technical-writing-specific or sacred-specific version, add it to `templates/technical/` or `templates/sacred/`. These templates replace or extend the standard ones for their work-type groups. For example:
312
+
313
+ - `templates/CHARACTERS.md` is the standard character template
314
+ - `templates/technical/AUDIENCE.md` replaces it for technical docs
315
+ - `templates/sacred/FIGURES.md` replaces it for sacred works (uses "figures" instead of "characters")
316
+
317
+ Existing technical templates: `DOC-BRIEF.md`, `AUDIENCE.md`, `DEPENDENCIES.md`, `SYSTEM.md`, `PROCEDURES.md`, `REFERENCES.md`.
318
+ Existing sacred templates: `COSMOLOGY.md`, `DOCTRINES.md`, `FIGURES.md`, `FRAMEWORK.md`, `LINEAGES.md`, `THEOLOGICAL-ARC.md`.
319
+
320
+ ### Step 3: Register in config.json
321
+
322
+ The `templates/config.json` file is the project configuration template. If your new template adds a configuration option, add the default value there.
323
+
324
+ ## Adding an Export Format
325
+
326
+ Export templates live in `data/export-templates/` and define how manuscripts are converted to output formats.
327
+
328
+ See `docs/shipped-assets.md` for the canonical inventory of shipped export templates and trust-critical launch assets.
329
+
330
+ ### Step 1: Create the template file
331
+
332
+ Add your template to `data/export-templates/`. Existing templates:
333
+
334
+ - `scriveno-book.typst` -- Book interior PDF (Typst template)
335
+ - `scriveno-epub.css` -- EPUB styling (CSS)
336
+ - `scriveno-academic.latex` -- Academic paper formatting (LaTeX)
337
+
338
+ Name your file `scriveno-{purpose}.{ext}` following the existing pattern.
339
+
340
+ ### Step 2: Update the export command
341
+
342
+ The export command (`commands/scr/export.md`) needs to know about your format. Add handling for the new format in the command's instruction body.
343
+
344
+ ### Step 3: Add CONSTRAINTS.json entry (if restricted)
345
+
346
+ If your export format is only available for certain work types, add an entry to the `"export_formats"` section of CONSTRAINTS.json with an `available_for` array specifying which work type groups can use it.
347
+
348
+ ## Testing Your Changes
349
+
350
+ Scriveno has a test suite that validates the constraint system and command structure.
351
+
352
+ ### Run the tests
353
+
354
+ ```bash
355
+ node --test test/
356
+ ```
357
+
358
+ This runs all tests, including:
359
+
360
+ - **CONSTRAINTS.json validation** -- Ensures all work types, commands, and cross-references are consistent
361
+ - **Command structure tests** -- Verifies command files have valid frontmatter
362
+ - **Installer tests** -- Checks that the installer handles all platforms correctly
363
+
364
+ ### Manual verification
365
+
366
+ After adding a command, verify:
367
+
368
+ 1. The command file exists at `commands/scr/{name}.md`
369
+ 2. The CONSTRAINTS.json entry matches the file
370
+ 3. The description in frontmatter matches CONSTRAINTS.json
371
+ 4. If the command references other files, those files exist
372
+
373
+ ## Documenting a Release
374
+
375
+ When a package release changes the public story, update the release docs alongside the code.
376
+
377
+ ### Release docs to update
378
+
379
+ - `CHANGELOG.md` -- package-level release history
380
+ - `docs/release-notes.md` -- public-facing summary of what changed and why it matters
381
+ - `README.md` -- current version/status blurb when the release changes the headline positioning
382
+ - `docs/shipped-assets.md` -- canonical inventory when bundled docs, templates, proof assets, or trust-critical files change
383
+ - `docs/command-reference.md` -- command contract reference when command behavior or flags change
384
+ - `templates/*/README.md` and `data/proof/*/README.md` -- shipped profile and proof documentation when those assets change
385
+ - `.planning/` milestone summary files -- only when the release closes out milestone work or changes the archive story
386
+
387
+ ### Minimum release checklist
388
+
389
+ 1. Bump the package version in `package.json` and any mirrored version metadata such as `data/CONSTRAINTS.json`
390
+ 2. Update `CHANGELOG.md` with the new version and the user-visible changes
391
+ 3. Update `docs/release-notes.md` with a concise explanation of what changed, why, and how it was verified
392
+ 4. Run `npm test`
393
+ 5. Run `npm run release:check`
394
+ 6. Publish only after the docs and package metadata tell the same story
395
+
396
+ ## Code Style
397
+
398
+ Scriveno follows these conventions:
399
+
400
+ - **Markdown files** -- All commands, agents, and templates are markdown
401
+ - **YAML frontmatter** -- Delimited by `---` on its own line, top and bottom
402
+ - **No build step** -- Changes take effect immediately (the agent reads files at runtime)
403
+ - **Friendly, direct tone** -- Write instructions as if talking to a capable colleague
404
+ - **Real examples** -- Use actual codebase patterns, not invented ones
405
+ - **Self-contained sections** -- Each command file should work without reading other files (except CONSTRAINTS.json and config.json)
406
+
407
+ ### Frontmatter conventions
408
+
409
+ Command frontmatter uses lowercase keys with hyphens:
410
+
411
+ ```yaml
412
+ ---
413
+ description: What this command does in one line.
414
+ argument-hint: "[optional args] <required args>"
415
+ ---
416
+ ```
417
+
418
+ Agent frontmatter uses lowercase keys:
419
+
420
+ ```yaml
421
+ ---
422
+ name: agent-name
423
+ description: What this agent does.
424
+ tools: Read, Write
425
+ ---
426
+ ```
427
+
428
+ ## Questions?
429
+
430
+ Check the [architecture overview](architecture.md) for how the whole system fits together, or the [command reference](command-reference.md) for the full list of commands and their usage.
@@ -0,0 +1,158 @@
1
+ # Creative Context
2
+
3
+ Creative Context is Scriveno's writer-native context routing protocol. It gives commands a light way to know which project files matter for a task without turning a manuscript into a process artifact.
4
+
5
+ The protocol is a pilot for the core writing loop:
6
+
7
+ `discuss -> plan -> draft -> editor-review -> next`
8
+
9
+ It is additive. Existing projects without metadata continue to work because every command still recognizes the historical `.manuscript/*.md` files.
10
+
11
+ ## Purpose
12
+
13
+ Creative Context solves three problems:
14
+
15
+ - **Memory:** choices made in conversation should travel into plans, drafts, and reviews.
16
+ - **Trust:** commands should load the right creative truth instead of re-reading everything or guessing.
17
+ - **Continuity:** open questions and watchpoints should remain visible without blocking creative momentum.
18
+
19
+ ## Principles
20
+
21
+ 1. `STYLE-GUIDE.md` is sovereign. It always loads first for drafting, voice checks, translation, and any task that can affect prose voice.
22
+ 2. Metadata routes context. It does not replace the existing files.
23
+ 3. Creative uncertainty is allowed. A `QUESTION` can block, but it can also travel forward as a `WATCHPOINT`.
24
+ 4. Writer-facing language stays writer-native. Commands should say voice, continuity, readiness, question, and watchpoint, not compliance or tier.
25
+ 5. Drafted prose never receives craft labels. Labels belong in context, plans, and reviews.
26
+
27
+ ## Domain Grilling
28
+
29
+ Domain grilling is the Creative Context habit of making language precise before it becomes a plan, draft, review, or published document. It applies most strongly to technical, academic, sacred, series, and worldbuilding-heavy projects, but it can help any work where terms carry continuity.
30
+
31
+ Use it when a writer introduces a fuzzy term, a loaded term, a term that conflicts with established project language, or a claim about how the work's world, system, doctrine, argument, procedure, or cast already behaves.
32
+
33
+ The rules:
34
+
35
+ 1. Check the project first. If WORK.md, RECORD.md, STYLE-GUIDE.md, WORLD.md, SYSTEM.md, PROCEDURES.md, REFERENCES.md, DOCTRINES.md, QUESTIONS.md, CHARACTERS.md, FIGURES.md, or prior drafts can answer the question, read them instead of asking the writer.
36
+ 2. Challenge conflicts immediately. If the writer says "account" but REFERENCES.md defines "workspace" as the thing being discussed, name the mismatch and ask which term should win.
37
+ 3. Sharpen fuzzy language. Propose a precise canonical term when a phrase can mean more than one thing.
38
+ 4. Test concrete scenarios. Use one specific edge case to expose unclear boundaries, especially for procedures, doctrines, magic systems, character knowledge, source handling, and reader promises.
39
+ 5. Ask one question at a time and include a recommended answer. Do not make the writer sort through a survey unless the work is still in broad discovery.
40
+ 6. Capture the resolution where it belongs:
41
+ - Unit-specific choices go in `.manuscript/{N}-CONTEXT.md` as `CHOICE`, `QUESTION`, or `WATCHPOINT`.
42
+ - Durable established facts, definitions, promises, and procedure truths go in RECORD.md.
43
+ - Technical canonical terminology and sources of truth go in REFERENCES.md.
44
+ - World, doctrine, audience, system, procedure, character, or theme decisions go in their matching adapted source file.
45
+
46
+ Do not turn `.manuscript/CONTEXT.md` into a glossary. It is an auto-regenerated bootstrap, not a decision notebook.
47
+
48
+ ## Pillar Map
49
+
50
+ | Creative pillar | Existing source files | Role |
51
+ |---|---|---|
52
+ | `voice` | `STYLE-GUIDE.md` | Authorial voice, register, sentence music, hard do and do-not rules |
53
+ | `work` | `WORK.md`, `BRIEF.md` | Project identity, premise, audience, reader promise |
54
+ | `structure` | `OUTLINE.md`, `PLOT-GRAPH.md` | Unit order, arc shape, pacing, setup and payoff |
55
+ | `record` | `RECORD.md` | Established content, open threads, promises, payoffs, continuity facts, movement, and next-unit obligations |
56
+ | `cast` | `CHARACTERS.md`, `FIGURES.md` | Character state, voice anchors, relationships, figure continuity |
57
+ | `world` | `WORLD.md`, `COSMOLOGY.md`, `SYSTEM.md` | Setting, constraints, environment, cosmology, operating rules |
58
+ | `themes` | `THEMES.md`, `DOCTRINES.md`, `QUESTIONS.md` | Motifs, doctrine, argument, inquiry, recurring meaning |
59
+ | `continuity` | `STATE.md`, `CONTEXT.md`, `HISTORY.log` | Current position, recent activity, open items, disk truth |
60
+ | `publication` | front matter, back matter, build files | Export and publishing intent |
61
+ | `translation` | glossary, translation memory, language config | Term consistency and cultural adaptation |
62
+ | `art` | cover, illustration, storyboard assets | Visual continuity and image direction |
63
+
64
+ The v2.1 pilot only changes the core writing loop. Publication, translation, art, and sacred expansion can adopt the same protocol later.
65
+
66
+ ## Template Metadata
67
+
68
+ Templates may include optional frontmatter:
69
+
70
+ ```yaml
71
+ ---
72
+ creative_pillar: voice
73
+ always_load_for: [draft, voice-check, plan, editor-review, translate]
74
+ authority: sovereign
75
+ ---
76
+ ```
77
+
78
+ Commands should treat this metadata as routing help. If the metadata is absent, fall back to the file's established role.
79
+
80
+ ## Craft Notes
81
+
82
+ Discuss, plan, and review artifacts can carry four labels:
83
+
84
+ | Label | Meaning | Blocks drafting? |
85
+ |---|---|---|
86
+ | `CHOICE` | Confirmed creative decision | No |
87
+ | `HUNCH` | Creative bet to test in drafting | No |
88
+ | `QUESTION` | Unresolved issue for writer or editor | Only when marked blocking |
89
+ | `WATCHPOINT` | Thing to preserve, test, or re-check later | No |
90
+
91
+ Use labels in context files, plan files, and review reports. Do not insert them into manuscript prose.
92
+
93
+ Recommended section:
94
+
95
+ ```markdown
96
+ ## Craft Notes
97
+
98
+ - CHOICE: Keep the chapter close third from Mara's point of view.
99
+ - HUNCH: Let the room feel colder after the argument without explaining why.
100
+ - QUESTION: Blocking: does Elias know about the forged letter yet?
101
+ - WATCHPOINT: Preserve Mara's clipped dialogue when she is afraid.
102
+ ```
103
+
104
+ ## Command Behavior
105
+
106
+ ### discuss
107
+
108
+ Capture the writer's confirmed choices, creative hunches, open questions, and watchpoints in `.manuscript/{N}-CONTEXT.md`.
109
+
110
+ When the conversation touches established content, also capture `## Record Notes`: what RECORD.md says this unit must honor, what thread or promise the unit may handle, and what the draft or review should add to RECORD.md after the unit lands.
111
+
112
+ Before capturing, run domain grilling on any fuzzy term, overloaded term, or claim that may contradict the project's established language. Resolve only what matters for the current unit. If a canonical term or source-of-truth decision becomes durable, route it to RECORD.md, REFERENCES.md, or the adapted source file instead of leaving it only in the unit context.
113
+
114
+ ### plan
115
+
116
+ Load craft notes from `{N}-CONTEXT.md`. Convert confirmed choices into plan constraints, hunches into draftable tests, questions into blocking or non-blocking items, and watchpoints into plan checks.
117
+
118
+ Load RECORD.md as the compact established-content store. Plans should include `## Record Notes` when the unit touches established facts, open threads, reader promises, payoffs, continuity facts, or next-unit obligations.
119
+
120
+ Run a domain model check before drafting: compare the plan's terms and assumptions against RECORD.md, REFERENCES.md, and the relevant adapted source files. If the plan uses a term differently than the project does, either revise the plan language or mark a blocking question.
121
+
122
+ ### draft
123
+
124
+ Pass craft notes through the plan file to the drafter. The drafter follows `CHOICE`, dramatizes `HUNCH` where useful, respects `WATCHPOINT`, and makes the safest call on non-blocking `QUESTION` items. Blocking questions must be resolved before drafting.
125
+
126
+ Pass Record Notes and RECORD.md to the drafter when present. After drafting, update RECORD.md with compact reader-visible changes: established facts, open threads, promises, payoffs, continuity facts, movement, and next-unit obligations. Do not turn every beat into a record entry.
127
+
128
+ Character persona notes are part of the same loop. Plans can include `## Character Persona Notes` for pressure behavior, relationship-specific interactions, dialogue constraints, and pairwise trust or conflict patterns. The drafter turns those notes into behavior on the page, never exposition.
129
+
130
+ Subject dynamics can layer onto any work type. Plans can include `## Subject Dynamics Notes` for the active idea, subject, process, place, object, doctrine, claim, evidence set, procedure, reader problem, or thematic pressure. These notes track the reader's starting state, the desired shift, the pressure or friction around the subject, and the interaction between ideas, evidence, steps, exceptions, images, objects, settings, or themes. The drafter turns those notes into movement on the page, never into visible craft labels.
131
+
132
+ For character-based work, use both sections when both layers matter. `## Character Persona Notes` answers how people behave under pressure. `## Subject Dynamics Notes` answers how meaning, theme, object significance, setting pressure, doctrine, argument, or reader understanding moves through the unit. If the two sections conflict, the plan should resolve the conflict before drafting rather than asking the drafter to guess.
133
+
134
+ When a draft changes subject movement after the plan has already landed, `/scr:subject-touch` updates the relevant living subject file, such as THEMES.md, QUESTIONS.md, REFERENCES.md, DOCTRINES.md, PROCEDURES.md, ARGUMENT-MAP.md, or an adapted context file.
135
+
136
+ Edge cases:
137
+
138
+ - If a unit has characters but they are not driving the scene, subject dynamics may be the primary section and character notes may be omitted.
139
+ - If a unit has no named characters but does have a speaker, narrator, implied reader, or instruction-following user, use subject dynamics and voice notes rather than inventing character persona.
140
+ - If an object, place, symbol, procedure, claim, or doctrine changes meaning because of a character interaction, include both sections and state the handoff clearly.
141
+ - If subject dynamics repeat a character note without adding reader movement, omit the duplicate.
142
+ - If subject dynamics would expose hidden craft scaffolding in drafted prose, keep it in the plan and review only.
143
+
144
+ ### editor-review
145
+
146
+ Review whether choices held, hunches worked, questions were resolved, and watchpoints were preserved. Store results in `.manuscript/reviews/{N}-REVIEW.md`.
147
+
148
+ Review whether the draft honored RECORD.md and list any confirmed record updates. If the draft contradicts RECORD.md, resolve the contradiction before marking the unit reviewed.
149
+
150
+ ### next
151
+
152
+ When state is ambiguous, prefer the next core-loop step. If a blocking question exists, route to `/scr:discuss N`. If only non-blocking questions or watchpoints exist, allow drafting or review to proceed while naming the watchpoint.
153
+
154
+ When RECORD.md shows a real branch, such as an open promise competing with the linear next unit, surface the branch instead of forcing a single path.
155
+
156
+ ## Backward Compatibility
157
+
158
+ No command may require `creative_pillar` metadata for existing projects. The metadata is a hint for new templates and a future optimization surface, not a new file-format gate.