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.
- package/LICENSE +21 -0
- package/README.md +222 -0
- package/agents/continuity-checker.md +85 -0
- package/agents/drafter.md +248 -0
- package/agents/plan-checker.md +209 -0
- package/agents/researcher.md +114 -0
- package/agents/translator.md +204 -0
- package/agents/voice-checker.md +154 -0
- package/bin/install.js +1620 -0
- package/commands/scr/add-note.md +51 -0
- package/commands/scr/add-unit.md +101 -0
- package/commands/scr/art-direction.md +225 -0
- package/commands/scr/autopilot-publish.md +210 -0
- package/commands/scr/autopilot-translate.md +237 -0
- package/commands/scr/autopilot.md +200 -0
- package/commands/scr/back-matter.md +630 -0
- package/commands/scr/back-translate.md +197 -0
- package/commands/scr/beta-reader.md +97 -0
- package/commands/scr/blurb.md +149 -0
- package/commands/scr/book-proposal.md +210 -0
- package/commands/scr/build-ebook.md +448 -0
- package/commands/scr/build-poetry-submission.md +202 -0
- package/commands/scr/build-print.md +598 -0
- package/commands/scr/build-smashwords.md +171 -0
- package/commands/scr/build-world.md +158 -0
- package/commands/scr/cast-list.md +104 -0
- package/commands/scr/chapter-header.md +158 -0
- package/commands/scr/character-arc.md +108 -0
- package/commands/scr/character-ref.md +160 -0
- package/commands/scr/character-sheet.md +143 -0
- package/commands/scr/character-touch.md +157 -0
- package/commands/scr/character-voice-sample.md +111 -0
- package/commands/scr/check-notes.md +50 -0
- package/commands/scr/cleanup.md +159 -0
- package/commands/scr/compare.md +112 -0
- package/commands/scr/complete-draft.md +49 -0
- package/commands/scr/continuity-check.md +129 -0
- package/commands/scr/copy-edit.md +118 -0
- package/commands/scr/cover-art.md +382 -0
- package/commands/scr/cultural-adaptation.md +177 -0
- package/commands/scr/demo.md +93 -0
- package/commands/scr/dialogue-audit.md +143 -0
- package/commands/scr/discuss.md +118 -0
- package/commands/scr/discussion-questions.md +129 -0
- package/commands/scr/do.md +68 -0
- package/commands/scr/draft.md +97 -0
- package/commands/scr/editor-review.md +466 -0
- package/commands/scr/export.md +942 -0
- package/commands/scr/fast.md +65 -0
- package/commands/scr/front-matter.md +696 -0
- package/commands/scr/health.md +113 -0
- package/commands/scr/help.md +121 -0
- package/commands/scr/history.md +92 -0
- package/commands/scr/illustrate-scene.md +211 -0
- package/commands/scr/import.md +95 -0
- package/commands/scr/insert-unit.md +108 -0
- package/commands/scr/line-edit.md +146 -0
- package/commands/scr/manager.md +77 -0
- package/commands/scr/manuscript-stats.md +139 -0
- package/commands/scr/map-illustration.md +213 -0
- package/commands/scr/map-manuscript.md +134 -0
- package/commands/scr/merge-units.md +136 -0
- package/commands/scr/multi-publish.md +344 -0
- package/commands/scr/new-character.md +167 -0
- package/commands/scr/new-revision.md +50 -0
- package/commands/scr/new-work.md +148 -0
- package/commands/scr/next.md +125 -0
- package/commands/scr/originality-check.md +170 -0
- package/commands/scr/outline.md +131 -0
- package/commands/scr/pacing-analysis.md +170 -0
- package/commands/scr/panel-layout.md +225 -0
- package/commands/scr/pause-work.md +88 -0
- package/commands/scr/plan.md +112 -0
- package/commands/scr/plant-seed.md +57 -0
- package/commands/scr/plot-graph.md +199 -0
- package/commands/scr/polish.md +141 -0
- package/commands/scr/profile-writer.md +154 -0
- package/commands/scr/progress.md +51 -0
- package/commands/scr/publish.md +455 -0
- package/commands/scr/query-letter.md +183 -0
- package/commands/scr/quick-write.md +82 -0
- package/commands/scr/relationship-map.md +129 -0
- package/commands/scr/remove-unit.md +120 -0
- package/commands/scr/reorder-units.md +126 -0
- package/commands/scr/resume-work.md +97 -0
- package/commands/scr/sacred/annotation-layer.md +105 -0
- package/commands/scr/sacred/chronology.md +121 -0
- package/commands/scr/sacred/concordance.md +88 -0
- package/commands/scr/sacred/cross-reference.md +97 -0
- package/commands/scr/sacred/doctrinal-check.md +129 -0
- package/commands/scr/sacred/genealogy.md +107 -0
- package/commands/scr/sacred/source-tracking.md +101 -0
- package/commands/scr/sacred/verse-numbering.md +103 -0
- package/commands/scr/sacred-numbering-format.md +103 -0
- package/commands/scr/save.md +109 -0
- package/commands/scr/scan.md +291 -0
- package/commands/scr/sensitivity-review.md +169 -0
- package/commands/scr/series-bible.md +127 -0
- package/commands/scr/session-report.md +80 -0
- package/commands/scr/settings.md +58 -0
- package/commands/scr/split-unit.md +123 -0
- package/commands/scr/spread-layout.md +187 -0
- package/commands/scr/storyboard.md +262 -0
- package/commands/scr/subject-touch.md +168 -0
- package/commands/scr/submit.md +50 -0
- package/commands/scr/subplot-map.md +147 -0
- package/commands/scr/sync.md +116 -0
- package/commands/scr/synopsis.md +137 -0
- package/commands/scr/theme-tracker.md +128 -0
- package/commands/scr/thread.md +83 -0
- package/commands/scr/timeline.md +141 -0
- package/commands/scr/track.md +564 -0
- package/commands/scr/translate.md +260 -0
- package/commands/scr/translation-glossary.md +298 -0
- package/commands/scr/translation-memory.md +310 -0
- package/commands/scr/troubleshoot.md +59 -0
- package/commands/scr/undo.md +106 -0
- package/commands/scr/validate.md +133 -0
- package/commands/scr/versions.md +94 -0
- package/commands/scr/voice-check.md +133 -0
- package/commands/scr/voice-test.md +68 -0
- package/data/CONSTRAINTS.json +1606 -0
- package/data/demo/.manuscript/BRIEF.md +37 -0
- package/data/demo/.manuscript/CHARACTERS.md +90 -0
- package/data/demo/.manuscript/OUTLINE.md +46 -0
- package/data/demo/.manuscript/PLOT-GRAPH.md +75 -0
- package/data/demo/.manuscript/STATE.md +44 -0
- package/data/demo/.manuscript/STYLE-GUIDE.md +119 -0
- package/data/demo/.manuscript/THEMES.md +51 -0
- package/data/demo/.manuscript/WORK.md +51 -0
- package/data/demo/.manuscript/config.json +59 -0
- package/data/demo/.manuscript/drafts/body/1-the-letter-DRAFT.md +51 -0
- package/data/demo/.manuscript/drafts/body/2-the-workshop-DRAFT.md +51 -0
- package/data/demo/.manuscript/drafts/body/3-the-pier-DRAFT.md +45 -0
- package/data/demo/.manuscript/drafts/body/4-the-clock-DRAFT.md +59 -0
- package/data/demo/.manuscript/plans/5-the-reunion-PLAN.md +52 -0
- package/data/demo/.manuscript/reviews/2-the-workshop-REVIEW.md +61 -0
- package/data/export-templates/scriveno-academic.latex +184 -0
- package/data/export-templates/scriveno-acm.latex +67 -0
- package/data/export-templates/scriveno-apa7.latex +83 -0
- package/data/export-templates/scriveno-book.typst +175 -0
- package/data/export-templates/scriveno-chapbook.typst +121 -0
- package/data/export-templates/scriveno-elsevier.latex +76 -0
- package/data/export-templates/scriveno-epub.css +386 -0
- package/data/export-templates/scriveno-fixed-layout-epub.css +76 -0
- package/data/export-templates/scriveno-fixed-layout.opf +23 -0
- package/data/export-templates/scriveno-ieee.latex +77 -0
- package/data/export-templates/scriveno-lncs.latex +79 -0
- package/data/export-templates/scriveno-picturebook.typst +113 -0
- package/data/export-templates/scriveno-poetry-submission-styles.md +45 -0
- package/data/export-templates/scriveno-poetry-submission.docx +0 -0
- package/data/export-templates/scriveno-smashwords-styles.md +45 -0
- package/data/export-templates/scriveno-smashwords.docx +0 -0
- package/data/export-templates/scriveno-stageplay.typst +129 -0
- package/data/proof/creative-context/README.md +79 -0
- package/data/proof/voice-dna/GUIDED-SAMPLE.md +19 -0
- package/data/proof/voice-dna/README.md +45 -0
- package/data/proof/voice-dna/STYLE-GUIDE-EXCERPT.md +43 -0
- package/data/proof/voice-dna/UNGUIDED-SAMPLE.md +11 -0
- package/data/proof/watchmaker-flow/README.md +78 -0
- package/docs/architecture.md +425 -0
- package/docs/command-reference.md +2384 -0
- package/docs/configuration.md +228 -0
- package/docs/context-protocol.md +81 -0
- package/docs/contributing.md +430 -0
- package/docs/creative-context.md +158 -0
- package/docs/development.md +152 -0
- package/docs/drafter-quality.md +127 -0
- package/docs/getting-started.md +198 -0
- package/docs/history-protocol.md +96 -0
- package/docs/proof-artifacts.md +56 -0
- package/docs/publishing.md +296 -0
- package/docs/release-notes.md +457 -0
- package/docs/runtime-support.md +77 -0
- package/docs/sacred-texts.md +296 -0
- package/docs/shipped-assets.md +129 -0
- package/docs/testing.md +156 -0
- package/docs/translation.md +343 -0
- package/docs/voice-dna.md +297 -0
- package/docs/work-types.md +339 -0
- package/lib/architectural-profiles.js +134 -0
- package/package.json +54 -0
- package/templates/BRIEF.md +51 -0
- package/templates/CHARACTERS.md +64 -0
- package/templates/CONTEXT.md +56 -0
- package/templates/OUTLINE.md +36 -0
- package/templates/RECORD.md +68 -0
- package/templates/STATE.md +50 -0
- package/templates/STYLE-GUIDE.md +121 -0
- package/templates/THEMES.md +36 -0
- package/templates/WORK.md +67 -0
- package/templates/WORLD.md +62 -0
- package/templates/WRITING-RULES.md +156 -0
- package/templates/academic/ARGUMENT-MAP.md +40 -0
- package/templates/academic/CONCEPTS.md +34 -0
- package/templates/academic/CONTEXT.md +29 -0
- package/templates/academic/PROPOSAL.md +37 -0
- package/templates/academic/QUESTIONS.md +24 -0
- package/templates/config.json +72 -0
- package/templates/pitfalls/comic.md +54 -0
- package/templates/pitfalls/commentary.md +62 -0
- package/templates/pitfalls/memoir.md +48 -0
- package/templates/pitfalls/novel.md +53 -0
- package/templates/pitfalls/poetry_collection.md +63 -0
- package/templates/pitfalls/research_paper.md +66 -0
- package/templates/pitfalls/runbook.md +64 -0
- package/templates/pitfalls/screenplay.md +54 -0
- package/templates/platforms/README.md +16 -0
- package/templates/platforms/apple/manifest.yaml +20 -0
- package/templates/platforms/bn/manifest.yaml +20 -0
- package/templates/platforms/d2d/manifest.yaml +20 -0
- package/templates/platforms/google/manifest.yaml +20 -0
- package/templates/platforms/ingram/manifest.yaml +44 -0
- package/templates/platforms/kdp/manifest.yaml +42 -0
- package/templates/platforms/kobo/manifest.yaml +20 -0
- package/templates/platforms/smashwords/manifest.yaml +26 -0
- package/templates/sacred/COSMOLOGY.md +88 -0
- package/templates/sacred/DOCTRINES.md +45 -0
- package/templates/sacred/FIGURES.md +69 -0
- package/templates/sacred/FRAMEWORK.md +98 -0
- package/templates/sacred/LINEAGES.md +52 -0
- package/templates/sacred/README.md +20 -0
- package/templates/sacred/THEOLOGICAL-ARC.md +69 -0
- package/templates/sacred/catholic/manifest.yaml +93 -0
- package/templates/sacred/islamic-hafs/manifest.yaml +134 -0
- package/templates/sacred/islamic-warsh/manifest.yaml +134 -0
- package/templates/sacred/jewish/manifest.yaml +56 -0
- package/templates/sacred/orthodox/manifest.yaml +98 -0
- package/templates/sacred/pali/manifest.yaml +20 -0
- package/templates/sacred/protestant/manifest.yaml +86 -0
- package/templates/sacred/sanskrit/manifest.yaml +20 -0
- package/templates/sacred/tewahedo/manifest.yaml +106 -0
- package/templates/sacred/tibetan/manifest.yaml +20 -0
- package/templates/technical/AUDIENCE.md +26 -0
- package/templates/technical/DEPENDENCIES.md +19 -0
- package/templates/technical/DOC-BRIEF.md +45 -0
- package/templates/technical/PROCEDURES.md +37 -0
- package/templates/technical/REFERENCES.md +36 -0
- 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.
|