scriveno 2.7.2 → 2.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  description: Compile and export manuscript to publication-ready formats.
3
- argument-hint: "[--format <format>] [--formatted] [--print-ready] [--skip-validate]"
3
+ argument-hint: "[--format <format>] [--formatted] [--print-ready] [--skip-validate] [--check]"
4
4
  ---
5
5
 
6
6
  # /scr:export -- Manuscript Export
@@ -11,11 +11,13 @@ Assemble the manuscript from OUTLINE.md and export to the specified format. Hand
11
11
 
12
12
  ```
13
13
  /scr:export # interactive picker
14
- /scr:export --format <format> [--formatted] [--print-ready] [--skip-validate]
14
+ /scr:export --format <format> [--formatted] [--print-ready] [--skip-validate] [--check]
15
15
  ```
16
16
 
17
17
  If `--format` is omitted, run the interactive picker (see STEP 0). Otherwise jump straight to STEP 1 with the requested format.
18
18
 
19
+ If `--check` is passed, check format availability and required external tools, print a readiness report, and stop before assembling or writing export files.
20
+
19
21
  ---
20
22
 
21
23
  ### STEP 0: INTERACTIVE PICKER (only when --format is omitted)
@@ -135,6 +137,8 @@ Then **stop**.
135
137
 
136
138
  **Check for scaffold markers in `.manuscript/drafts/`.**
137
139
 
140
+ If `--check` was passed, skip the scaffold-marker scan and proceed to STEP 2. Tool check mode verifies readiness of external commands only; it does not certify manuscript content.
141
+
138
142
  Scan all `.md` files in `.manuscript/drafts/` for:
139
143
  - Lines containing `[Fill in` (covers `[Fill in:]`, `[Fill in or delete:]`)
140
144
  - Lines containing `[Delete if not applicable:]`
@@ -217,6 +221,27 @@ Proceed to STEP 2.
217
221
 
218
222
  Check for required external tools based on the requested format.
219
223
 
224
+ **Tool gate rules:**
225
+
226
+ 1. Never silently substitute one tool for another. For example, do not use WeasyPrint when Typst is missing, and do not use Calibre when Pandoc is missing.
227
+ 2. Record the tool command that was checked and, when available, the detected version.
228
+ 3. If `--check` was passed, do not create `.manuscript/output/`, do not assemble the manuscript, and do not run conversion commands. Print the report and stop after this step.
229
+ 4. If a required tool is missing, stop and show install instructions. Do not attempt a degraded export.
230
+
231
+ Use this readiness report shape in `--check` mode:
232
+
233
+ ```text
234
+ Export Tool Check
235
+ =================
236
+ Format: pdf --print-ready
237
+
238
+ [PASS] pandoc .......... pandoc 3.x
239
+ [PASS] typst ........... typst 0.x
240
+ [SKIP] ghostscript ..... not required for this format
241
+
242
+ Result: ready
243
+ ```
244
+
220
245
  **For markdown:** No external tools needed. Skip to Step 3.
221
246
 
222
247
  **For docx, epub, latex, query-package:** Check for Pandoc:
@@ -269,6 +294,22 @@ If not found, provide install instructions (`pip install screenplain`) and stop.
269
294
 
270
295
  **For fountain:** No external tools needed.
271
296
 
297
+ **For kdp-package:** Check for Pandoc and Typst. If either tool is missing, stop before building the package.
298
+
299
+ **For ingram-package:** Check for Pandoc, Typst, and Ghostscript (`gs`). If any required tool is missing, stop before building the package.
300
+
301
+ **For query-package and submission-package:** Check for Pandoc.
302
+
303
+ **Optional screenplay PDF:** Afterwriting is optional for `fountain`. If it is missing, do not fail the Fountain export; report it as optional. If `--check` is passed, show it as optional with install guidance:
304
+
305
+ ```bash
306
+ command -v afterwriting >/dev/null 2>&1
307
+ ```
308
+
309
+ > Optional: To generate a formatted screenplay PDF, install Afterwriting with `npm i -g afterwriting`.
310
+
311
+ If `--check` was passed, stop here after printing the readiness report.
312
+
272
313
  ---
273
314
 
274
315
  ### STEP 3: ASSEMBLE MANUSCRIPT
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  description: Diagnose and repair common project state issues.
3
- argument-hint: "[--repair]"
3
+ argument-hint: "[--repair] [--context]"
4
4
  ---
5
5
 
6
6
  # Health
@@ -87,6 +87,39 @@ With `--repair`, fix what can be auto-fixed:
87
87
 
88
88
  After repair: re-run diagnostics and show the updated health report.
89
89
 
90
+ ## Context mode (--context)
91
+
92
+ With `--context`, focus only on loaded-context health. This is a read-only guard for long projects and large unit sessions.
93
+
94
+ 1. Estimate the files an agent is likely to load before writing:
95
+ - `.manuscript/STYLE-GUIDE.md`
96
+ - `.manuscript/CONTEXT.md`
97
+ - `.manuscript/STATE.md`
98
+ - `.manuscript/OUTLINE.md`
99
+ - `.manuscript/RECORD.md`
100
+ - The newest plan, draft, and review files for the active unit
101
+ 2. Estimate tokens as `ceil(bytes / 4)`. This is intentionally simple and conservative.
102
+ 3. Classify the result:
103
+ - `ok`: under 45,000 estimated tokens
104
+ - `watch`: 45,000-79,999 estimated tokens
105
+ - `tight`: 80,000-119,999 estimated tokens
106
+ - `critical`: 120,000 or more estimated tokens
107
+ 4. Report the five largest loaded files so the writer can see what is making the session heavy.
108
+ 5. If the state is `watch`, suggest `/scr:health --context` again before the next large operation.
109
+ 6. If the state is `tight`, suggest `/scr:save` before drafting, review, translation, or export.
110
+ 7. If the state is `critical`, suggest `/scr:thread` or a fresh unit session before writing more prose.
111
+
112
+ If the shared CLI engine is available, prefer it:
113
+
114
+ ```bash
115
+ scriveno status --project "$PWD" --trigger "/scr:health --context"
116
+ node lib/auto-invoke-engine.js --project "$PWD" --trigger "/scr:health --context"
117
+ node "$HOME/.scriveno/lib/auto-invoke-engine.js" --project "$PWD" --trigger "/scr:health --context"
118
+ node .scriveno/lib/auto-invoke-engine.js --project "$PWD" --trigger "/scr:health --context"
119
+ ```
120
+
121
+ Return only the context-health portion of the report unless another health issue blocks the command.
122
+
90
123
  ## Automation Status
91
124
 
92
125
  Every response must include a compact status block:
@@ -100,6 +133,7 @@ Candidate agents:
100
133
  - none
101
134
  Local operations:
102
135
  - health checks run: {count}
136
+ - context estimate run: {yes|no}
103
137
  - repairs applied: {count}
104
138
  Candidate local helpers:
105
139
  - /scr:scan or /scr:save when health detects repairable drift
@@ -34,7 +34,7 @@ You are helping the user navigate Scriveno commands. Load Scriveno's installed/s
34
34
 
35
35
  ## The "getting started" view (no project yet)
36
36
 
37
- Ask the user what they want to do. Don't list all 113 commands -- show them this:
37
+ Ask the user what they want to do. Don't list all 115 commands -- show them this:
38
38
 
39
39
  ```
40
40
  Scriveno -- ready to start.
@@ -69,7 +69,7 @@ Always create `RECORD.md` from `templates/RECORD.md` without renaming it. It is
69
69
  Write `.manuscript/config.json` by starting from `templates/config.json` and filling the project-specific values. The generated config must include the shared settings blocks that later commands read:
70
70
  ```json
71
71
  {
72
- "scriveno_version": "2.7.2",
72
+ "scriveno_version": "2.8.0",
73
73
  "work_type": "<chosen>",
74
74
  "group": "<group>",
75
75
  "command_unit": "<unit>",
@@ -0,0 +1,138 @@
1
+ ---
2
+ description: Run one manuscript unit through a proof path from voice profile to export readiness.
3
+ argument-hint: "[unit] [--demo] [--export-check]"
4
+ ---
5
+
6
+ # Proof Unit
7
+
8
+ You are proving that Scriveno can carry one unit through the real writing loop without losing the writer's voice.
9
+
10
+ Follow the auto-invoke policy. In the source repository it is documented at `docs/auto-invoke-policy.md`. `/scr:proof-unit` coordinates existing commands. It should keep every step small and stop before any destructive or publishing action unless the writer explicitly confirms.
11
+
12
+ ## Goal
13
+
14
+ Run one chosen unit through this vertical slice:
15
+
16
+ 1. Confirm project and voice context.
17
+ 2. Discuss or refine the unit shape.
18
+ 3. Plan the unit.
19
+ 4. Draft the unit with fresh context.
20
+ 5. Review the draft for voice, continuity, and revision issues.
21
+ 6. Check context health before another large operation.
22
+ 7. Check export prerequisites without writing final packages unless requested.
23
+
24
+ The proof is successful only if the unit still sounds like the writer and the next production step is obvious.
25
+
26
+ ## Inputs
27
+
28
+ - `unit`: The unit number or label. If omitted, infer it from `.manuscript/STATE.md`.
29
+ - `--demo`: Prefer the demo project path and use its planned proof unit.
30
+ - `--export-check`: Run `/scr:export --check` after review to verify external tools.
31
+
32
+ If there is no `.manuscript/` directory, recommend `/scr:demo` or `/scr:new-work` before doing anything else.
33
+
34
+ ## Required Checks
35
+
36
+ 1. Read `.manuscript/STYLE-GUIDE.md` first. If it is missing or thin, suggest `/scr:profile-writer` or `/scr:voice-test` before drafting.
37
+ 2. Read `.manuscript/STATE.md`, `.manuscript/OUTLINE.md`, and `.manuscript/config.json`.
38
+ 3. Run context health with the shared engine when available:
39
+
40
+ ```bash
41
+ scriveno status --project "$PWD" --trigger /scr:proof-unit
42
+ node lib/auto-invoke-engine.js --project "$PWD" --trigger /scr:proof-unit
43
+ node "$HOME/.scriveno/lib/auto-invoke-engine.js" --project "$PWD" --trigger /scr:proof-unit
44
+ node .scriveno/lib/auto-invoke-engine.js --project "$PWD" --trigger /scr:proof-unit
45
+ ```
46
+
47
+ 4. If context health is `tight` or `critical`, stop before drafting and suggest `/scr:save`, `/scr:thread`, or a fresh unit session.
48
+ 5. Verify that the plan, draft, and review files are all unit-scoped. Do not load the whole manuscript into a drafting pass.
49
+
50
+ ## Execution Path
51
+
52
+ Use the first missing step in order:
53
+
54
+ 1. Missing voice profile: `/scr:profile-writer` or `/scr:voice-test`.
55
+ 2. Missing unit discussion: `/scr:discuss <unit>`.
56
+ 3. Missing unit plan: `/scr:plan <unit>`.
57
+ 4. Missing unit draft: `/scr:draft <unit>`.
58
+ 5. Missing review: `/scr:editor-review <unit>`.
59
+ 6. Review flags voice drift: `/scr:voice-check <unit>`.
60
+ 7. Review flags continuity drift: `/scr:continuity-check <unit>`.
61
+ 8. Review passes and `--export-check` was provided: `/scr:export --check`.
62
+ 9. Review passes without export check: `/scr:submit <unit>` or `/scr:progress`.
63
+
64
+ Do not run more than one prose-generating step without reporting back. The writer should see the proof path as a sequence of verified stops, not a silent batch.
65
+
66
+ ## Proof Report
67
+
68
+ End with a compact proof report:
69
+
70
+ ```markdown
71
+ Proof unit: Chapter 3
72
+ Voice profile: present
73
+ Plan: present
74
+ Draft: present
75
+ Review: present
76
+ Context health: ok
77
+ Export prerequisites: not checked
78
+
79
+ Result: ready for submit, with no blocking voice drift found.
80
+ ```
81
+
82
+ When something fails, name the missing file or blocking step and offer the direct command that fixes it.
83
+
84
+ ## Automation Status
85
+
86
+ Every response must include a compact status block:
87
+
88
+ ```text
89
+ Automation status:
90
+ Trigger: /scr:proof-unit {unit}
91
+ Spawned agents:
92
+ - drafter when /scr:draft is the selected step
93
+ - voice-checker when draft or voice review is selected
94
+ - diagnostic worker when /scr:editor-review is selected
95
+ Candidate agents:
96
+ - drafter
97
+ - voice-checker
98
+ - continuity-checker
99
+ Local operations:
100
+ - project state inspected: yes
101
+ - context health estimated: yes
102
+ - export prerequisite check: {yes|no}
103
+ Candidate local helpers:
104
+ - /scr:health --context
105
+ - /scr:export --check
106
+ Manual gates:
107
+ - publish or final package creation
108
+ Auto-invoked:
109
+ - {selected command}: {yes|no}
110
+ Why: proof-unit coordinates the smallest real writing loop while keeping publishing actions explicit
111
+ ```
112
+
113
+ ## Response Contract
114
+
115
+ Every writer-facing response must end with one to four next-command suggestions. Each suggestion must include a short explanation of what that path will do.
116
+
117
+ Use this format:
118
+
119
+ ```markdown
120
+ Next commands:
121
+ - `/scr:...`: One short sentence explaining what this path will do.
122
+ - `/scr:...`: One short sentence explaining what this alternate path will do.
123
+ ```
124
+
125
+ If exactly one path is clearly best, provide one suggestion. If two, three, or four useful paths exist, show them as alternatives. Do not force a linear path when the writer has a real choice.
126
+
127
+ If the writer seems unsure or no specific next command is obvious, include this default option:
128
+
129
+ ```markdown
130
+ Next commands:
131
+ - `/scr:next`: Inspect the project state and choose the right next step.
132
+ ```
133
+
134
+ If the command stops because a prerequisite is missing, suggest the command that fixes the prerequisite. Keep every explanation practical and writer-facing.
135
+
136
+ ## Tone
137
+
138
+ Focused and evidence-first. The point is to build trust with one real unit, not to rush the whole manuscript.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  description: "Publishing wizard or preset-driven pipeline. Chains export commands based on destination."
3
- argument-hint: "[--preset <preset>] [--all] [--skip-validate]"
3
+ argument-hint: "[--preset <preset>] [--all] [--skip-validate] [--preflight]"
4
4
  ---
5
5
 
6
6
  # /scr:publish -- Publishing Wizard
@@ -10,12 +10,13 @@ You are the publishing wizard. Your job is to turn a completed manuscript into p
10
10
  ## Usage
11
11
 
12
12
  ```
13
- /scr:publish [--preset <preset>] [--all] [--skip-validate]
13
+ /scr:publish [--preset <preset>] [--all] [--skip-validate] [--preflight]
14
14
  ```
15
15
 
16
16
  - `--preset <preset>` -- Run a named preset pipeline without questions
17
17
  - `--all` -- Run every preset available for the current work type
18
18
  - `--skip-validate` -- Skip the scaffold-marker gate (not recommended)
19
+ - `--preflight` -- Check readiness and required tools, then stop before writing deliverables
19
20
  - No arguments -- Run the interactive wizard
20
21
 
21
22
  ---
@@ -124,6 +125,48 @@ Proceed to STEP 2.
124
125
 
125
126
  ---
126
127
 
128
+ ### STEP 1.7: PREFLIGHT MODE
129
+
130
+ If `--preflight` was passed, run a readiness check only and stop before generating front matter, back matter, exports, packages, or history entries.
131
+
132
+ Preflight must include:
133
+
134
+ 1. The validation gate from STEP 1.5 unless `--skip-validate` was also passed.
135
+ 2. The front-matter scaffold exclusion check from STEP 1.6a.
136
+ 3. The publishing prerequisite checklist from STEP 3a.
137
+ 4. Preset availability against `CONSTRAINTS.json`.
138
+ 5. External tool checks by calling the matching export checks:
139
+ - `share-pdf`: `/scr:export --format pdf --check`
140
+ - `share-docx`: `/scr:export --format docx --check`
141
+ - `share-epub`: `/scr:export --format epub --check`
142
+ - `kdp-ebook`: `/scr:export --format epub --check`
143
+ - `kdp-paperback`: `/scr:export --format pdf --print-ready --check` and `/scr:export --format kdp-package --check`
144
+ - `ingram-paperback`: `/scr:export --format pdf --print-ready --check` and `/scr:export --format ingram-package --check`
145
+ - `query-submission`: `/scr:export --format query-package --check`
146
+ - `submission-package`: `/scr:export --format submission-package --check`
147
+ - `screenplay-query`: `/scr:export --format fountain --check`, `/scr:export --format fdx --check`, and `/scr:export --format query-package --check`
148
+ - `all-formats`: check each available base format
149
+
150
+ Use this report shape:
151
+
152
+ ```text
153
+ Publishing Preflight
154
+ ====================
155
+ Preset: kdp-paperback
156
+
157
+ [PASS] manuscript validation
158
+ [WARN] front matter ........ not generated
159
+ [PASS] pandoc
160
+ [PASS] typst
161
+ [SKIP] ghostscript ......... not required until ingram-package
162
+
163
+ Result: ready after 1 optional item
164
+ ```
165
+
166
+ If preflight finds a blocking issue, stop and suggest the command that fixes it. Do not continue into STEP 2.
167
+
168
+ ---
169
+
127
170
  ### STEP 2: ROUTE
128
171
 
129
172
  **If `--preset` is given:** Validate the preset name against the known presets below. If valid, jump to STEP 4 (preset pipeline). If invalid, show the list of available presets and stop.
@@ -0,0 +1,149 @@
1
+ ---
2
+ description: Inspect or change the installed Scriveno command profile.
3
+ argument-hint: "[list|status|profile <core|writing|publishing|translation|specialist|full>] [--runtime <runtime>] [--dry-run]"
4
+ ---
5
+
6
+ # Surface
7
+
8
+ You are helping the writer keep Scriveno's installed command surface clear, small, and appropriate for the work they are doing.
9
+
10
+ Follow the auto-invoke policy. In the source repository it is documented at `docs/auto-invoke-policy.md`. `/scr:surface` is a local installer helper. It does not spawn agents and should not edit a manuscript.
11
+
12
+ ## What This Command Does
13
+
14
+ Use this command when the writer wants fewer commands, a publishing-only install, a translation-focused install, or a check of what profile is currently installed.
15
+
16
+ Available profiles:
17
+
18
+ - `core`: Main writing loop and orientation commands.
19
+ - `writing`: Core workflow plus revision, structure, character, and quality commands.
20
+ - `publishing`: Core workflow plus export, publishing, metadata, and platform packaging commands.
21
+ - `translation`: Core workflow plus translation, localization, glossary, and multi-publish commands.
22
+ - `specialist`: Core workflow plus sacred, illustration, collaboration, and utility surfaces.
23
+ - `full`: Every Scriveno command.
24
+
25
+ ## Actions
26
+
27
+ ### `list`
28
+
29
+ Run:
30
+
31
+ ```bash
32
+ scriveno surface list
33
+ ```
34
+
35
+ Report each profile, command count, and intended use.
36
+
37
+ ### `status`
38
+
39
+ Run:
40
+
41
+ ```bash
42
+ scriveno surface status
43
+ ```
44
+
45
+ Report:
46
+
47
+ - Installed profile from `.scriveno/settings.json` or `~/.scriveno/settings.json`
48
+ - Installed runtimes
49
+ - Scope (`project` or `global`)
50
+ - Writer or developer mode
51
+ - Suggested profile if the current one is much larger than the active workflow needs
52
+
53
+ ### `profile <name>`
54
+
55
+ Before changing anything, run a dry run:
56
+
57
+ ```bash
58
+ scriveno surface profile <name> --dry-run
59
+ ```
60
+
61
+ If the writer confirms, reinstall that profile for the same runtime surface:
62
+
63
+ ```bash
64
+ scriveno surface profile <name>
65
+ ```
66
+
67
+ If no prior runtime is recorded, ask for one runtime target, then run:
68
+
69
+ ```bash
70
+ scriveno surface profile <name> --runtimes codex --project
71
+ ```
72
+
73
+ Use the active runtime name instead of `codex` when the writer is in Claude Code, Cursor, Gemini CLI, OpenCode, GitHub Copilot, Windsurf, Antigravity, Manus, Perplexity Desktop, or the generic skill fallback.
74
+
75
+ ## Safety Rules
76
+
77
+ 1. Prefer `--dry-run` before changing the installed surface.
78
+ 2. Do not delete custom user files. The installer cleans only Scriveno-owned command mirrors.
79
+ 3. Keep agents installed even when a smaller command profile is selected. Drafting, review, and translation still need their agent prompts when a profile includes those workflows.
80
+ 4. Do not imply that a smaller profile disables project data. It only changes the installed command surface.
81
+ 5. If the writer is unsure, recommend `writing` for active drafting and `full` for exploration.
82
+
83
+ ## Output Shape
84
+
85
+ Use this shape:
86
+
87
+ ```markdown
88
+ Surface profile: writing
89
+ Installed runtimes: codex
90
+ Scope: project
91
+
92
+ Selected commands: 52 command files
93
+ Best use: active drafting with revision and structure tools
94
+
95
+ No files changed because this was a dry run.
96
+ ```
97
+
98
+ ## Automation Status
99
+
100
+ Every response must include a compact status block:
101
+
102
+ ```text
103
+ Automation status:
104
+ Trigger: /scr:surface {args}
105
+ Spawned agents:
106
+ - none
107
+ Candidate agents:
108
+ - none
109
+ Local operations:
110
+ - surface profile inspected: {yes|no}
111
+ - installer dry run: {yes|no}
112
+ - installer profile change: {yes|no}
113
+ Candidate local helpers:
114
+ - scriveno surface list
115
+ - scriveno surface status
116
+ - scriveno surface profile <name> --dry-run
117
+ Manual gates:
118
+ - writer confirmation before changing installed runtimes
119
+ Auto-invoked:
120
+ - none
121
+ Why: surface management changes installed command files, not manuscript prose
122
+ ```
123
+
124
+ ## Response Contract
125
+
126
+ Every writer-facing response must end with one to four next-command suggestions. Each suggestion must include a short explanation of what that path will do.
127
+
128
+ Use this format:
129
+
130
+ ```markdown
131
+ Next commands:
132
+ - `/scr:...`: One short sentence explaining what this path will do.
133
+ - `/scr:...`: One short sentence explaining what this alternate path will do.
134
+ ```
135
+
136
+ If exactly one path is clearly best, provide one suggestion. If two, three, or four useful paths exist, show them as alternatives. Do not force a linear path when the writer has a real choice.
137
+
138
+ If the writer seems unsure or no specific next command is obvious, include this default option:
139
+
140
+ ```markdown
141
+ Next commands:
142
+ - `/scr:next`: Inspect the project state and choose the right next step.
143
+ ```
144
+
145
+ If the command stops because a prerequisite is missing, suggest the command that fixes the prerequisite. Keep every explanation practical and writer-facing.
146
+
147
+ ## Tone
148
+
149
+ Clear and practical. Treat command-surface changes like workspace organization, not like a feature upsell.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "./constraints.schema.json",
3
- "version": "2.7.2",
3
+ "version": "2.8.0",
4
4
  "description": "Scriveno constraint system: work types, command availability, exports, and dependencies. Every command checks this file at runtime.",
5
5
  "_notes": {
6
6
  "sacred_keys": "Sacred subcommands live at commands/scr/sacred/<name>.md and run as /scr:sacred:<name>. Their CONSTRAINTS keys use the sacred:<name> form so /scr:help can render the runnable slash-command path directly. The sacred-numbering-format entry is a separate flat command (commands/scr/sacred-numbering-format.md) that surfaces the active tradition's numbering format. It used to be named sacred-verse-numbering, which collided with sacred:verse-numbering at install time -- both flattened to scr-sacred-verse-numbering. Renamed in v1.6.x; the installer now refuses to install when two sources share a flat skill name."
@@ -3015,6 +3015,23 @@
3015
3015
  ],
3016
3016
  "description": "Diagnose and repair common project state issues"
3017
3017
  },
3018
+ "surface": {
3019
+ "category": "utility",
3020
+ "available": [
3021
+ "all"
3022
+ ],
3023
+ "description": "Inspect or change the installed Scriveno command profile"
3024
+ },
3025
+ "proof-unit": {
3026
+ "category": "core",
3027
+ "available": [
3028
+ "all"
3029
+ ],
3030
+ "description": "Run one manuscript unit through a proof path from voice profile to export readiness",
3031
+ "requires": [
3032
+ "profile-writer"
3033
+ ]
3034
+ },
3018
3035
  "scan": {
3019
3036
  "category": "utility",
3020
3037
  "available": [
@@ -43,7 +43,7 @@ Proof artifacts:
43
43
  > scriveno smoke --json
44
44
  {
45
45
  "ok": true,
46
- "expectedCommands": 113,
46
+ "expectedCommands": 115,
47
47
  "expectedAgents": [
48
48
  "continuity-checker",
49
49
  "drafter",
@@ -439,7 +439,7 @@ Scriveno's `package.json` has no runtime dependencies. The installer is pure Nod
439
439
 
440
440
  ### Plan is canonical
441
441
 
442
- The product plan is the source of truth. If a command file contradicts the plan, the command file is wrong. This ensures consistency across 113 commands and prevents drift as multiple contributors work on the system.
442
+ The product plan is the source of truth. If a command file contradicts the plan, the command file is wrong. This ensures consistency across 115 commands and prevents drift as multiple contributors work on the system.
443
443
 
444
444
  ### Backward compatibility
445
445
 
@@ -1,6 +1,6 @@
1
1
  # Command Reference
2
2
 
3
- Scriveno has **113 commands** organized into **14 categories**. Commands adapt automatically to your work type -- for example, `/scr:draft` talks about drafting a surah for Quranic commentary, an act for screenplays, and a section for research papers.
3
+ Scriveno has **115 commands** organized into **14 categories**. Commands adapt automatically to your work type -- for example, `/scr:draft` talks about drafting a surah for Quranic commentary, an act for screenplays, and a section for research papers.
4
4
 
5
5
  Commands marked with **adaptive terminology** change how Scriveno talks about your work type's `command_unit` in `.manuscript/config.json`, while keeping the runnable command id stable. Commands marked with **group adaptation** have different labels for specific work type groups (academic, sacred, etc.).
6
6
 
@@ -146,6 +146,26 @@ Finalize Chapter 3 after editor review. Marks it as complete in the workflow.
146
146
 
147
147
  ---
148
148
 
149
+ ### `/scr:proof-unit`
150
+
151
+ **Description:** Run one manuscript unit through a proof path from voice profile to export readiness.
152
+
153
+ **Usage:** `/scr:proof-unit [unit] [--demo] [--export-check]`
154
+
155
+ **Prerequisites:** STYLE-GUIDE.md should exist. If it is missing, run `/scr:profile-writer` or `/scr:voice-test` first.
156
+
157
+ **Flags:**
158
+ - `--demo` -- Use the demo proof path when available
159
+ - `--export-check` -- Run `/scr:export --check` after review to verify external tools
160
+
161
+ **Example:**
162
+ ```
163
+ /scr:proof-unit 3 --export-check
164
+ ```
165
+ Prove one chapter through discuss, plan, draft, review, context health, and export-tool readiness without silently running a full publishing pipeline.
166
+
167
+ ---
168
+
149
169
  ### `/scr:complete-draft`
150
170
 
151
171
  **Description:** Mark the entire manuscript draft as complete.
@@ -1336,7 +1356,7 @@ Generate 10-15 book club questions that spark real conversation about your theme
1336
1356
 
1337
1357
  **Description:** Publishing wizard or preset-driven pipeline. Chains export commands based on destination.
1338
1358
 
1339
- **Usage:** `/scr:publish [--preset <preset>] [--all] [--skip-validate]`
1359
+ **Usage:** `/scr:publish [--preset <preset>] [--all] [--skip-validate] [--preflight]`
1340
1360
 
1341
1361
  **Prerequisites:** None (wraps export commands)
1342
1362
 
@@ -1348,6 +1368,7 @@ Generate 10-15 book club questions that spark real conversation about your theme
1348
1368
  - **Academic / archival:** `academic-submission`, `thesis-defense`, `all-formats`
1349
1369
  - `--all` -- Run all applicable presets
1350
1370
  - `--skip-validate` -- Skip the scaffold-marker validation gate (not recommended)
1371
+ - `--preflight` -- Check publishing readiness and external tools, then stop before writing deliverables
1351
1372
  - No flags -- Run the interactive wizard, which asks the writer-facing question "What are you doing?" (Share / Publish / Submit / Academic / Screenplay / Everything / Custom) and drills into the matching branch.
1352
1373
 
1353
1374
  **Available for:** All work types
@@ -1364,7 +1385,7 @@ Run the full KDP paperback publishing pipeline: prepare the interior package, ge
1364
1385
 
1365
1386
  **Description:** Compile and export manuscript to publication-ready formats.
1366
1387
 
1367
- **Usage:** `/scr:export [--format <format>] [--formatted] [--print-ready] [--skip-validate]`
1388
+ **Usage:** `/scr:export [--format <format>] [--formatted] [--print-ready] [--skip-validate] [--check]`
1368
1389
 
1369
1390
  **Prerequisites:** Complete draft must exist
1370
1391
 
@@ -1373,6 +1394,7 @@ Run the full KDP paperback publishing pipeline: prepare the interior package, ge
1373
1394
  - `--formatted` -- Use designed/formatted template (vs. manuscript format)
1374
1395
  - `--print-ready` -- Generate the interior print PDF surface used by print-package flows
1375
1396
  - `--skip-validate` -- Skip the scaffold-marker validation gate (not recommended)
1397
+ - `--check` -- Verify format availability and required external tools without assembling or writing export files
1376
1398
 
1377
1399
  **Available for:** All work types (format availability varies by work type)
1378
1400
 
@@ -1932,12 +1954,13 @@ See all your writing projects with status, word count, and last activity.
1932
1954
 
1933
1955
  **Description:** Diagnose and repair common project state issues.
1934
1956
 
1935
- **Usage:** `/scr:health [--repair]`
1957
+ **Usage:** `/scr:health [--repair] [--context]`
1936
1958
 
1937
1959
  **Prerequisites:** None
1938
1960
 
1939
1961
  **Flags:**
1940
1962
  - `--repair` -- Attempt to fix detected issues
1963
+ - `--context` -- Estimate loaded-context size and flag watch, tight, or critical sessions
1941
1964
 
1942
1965
  **Available for:** All work types
1943
1966
 
@@ -1949,6 +1972,30 @@ Check for missing files, broken references, and state inconsistencies, then fix
1949
1972
 
1950
1973
  ---
1951
1974
 
1975
+ ### `/scr:surface`
1976
+
1977
+ **Description:** Inspect or change the installed Scriveno command profile.
1978
+
1979
+ **Usage:** `/scr:surface [list|status|profile <name>] [--runtime <runtime>] [--dry-run]`
1980
+
1981
+ **Prerequisites:** Node.js >=20.0.0 and a Scriveno package or repo checkout with `bin/install.js`
1982
+
1983
+ **Flags:**
1984
+ - `list` -- Show available profiles and command counts
1985
+ - `status` -- Show the currently installed profile and runtime surface
1986
+ - `profile <name>` -- Reinstall a named profile: core, writing, publishing, translation, specialist, or full
1987
+ - `--dry-run` -- Show the planned install changes without writing files
1988
+
1989
+ **Available for:** All work types
1990
+
1991
+ **Example:**
1992
+ ```
1993
+ /scr:surface profile writing --dry-run
1994
+ ```
1995
+ Preview a smaller drafting-focused command surface before changing installed runtime files.
1996
+
1997
+ ---
1998
+
1952
1999
  ### `/scr:scan`
1953
2000
 
1954
2001
  **Description:** Detect drift between recorded state (STATE.md, OUTLINE.md, config.json) and what is actually on disk.