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,598 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Build a print-ready PDF from the manuscript for a target publishing platform.
|
|
3
|
+
argument-hint: "[--platform <platform>] [--trim <size>] [--strict] [--hardcover] [--skip-validate]"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /scr:build-print -- Print PDF Build Pipeline
|
|
7
|
+
|
|
8
|
+
Assemble the manuscript and produce a print-ready PDF for the selected publishing platform. Includes validate gate, scaffold-exclusion, trim size validation, page-count guardrail (warning by default, hard block with --strict), and platform-aware Pandoc + Typst invocation.
|
|
9
|
+
|
|
10
|
+
## Usage
|
|
11
|
+
|
|
12
|
+
```
|
|
13
|
+
/scr:build-print [--platform <platform>] [--trim <size>] [--strict] [--hardcover] [--skip-validate]
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
**Flags:**
|
|
17
|
+
`--hardcover` Use hardcover page limit for KDP (550pp) instead of paperback (828pp)
|
|
18
|
+
|
|
19
|
+
**Platform values:** `kdp | ingram | apple | bn | d2d | kobo | google | smashwords | ieee | acm | lncs | elsevier | apa7` (default: kdp)
|
|
20
|
+
|
|
21
|
+
**Academic platforms** (`ieee | acm | lncs | elsevier | apa7`): produce `.tex` source only -- no `--trim` applies, no `--hardcover` applies. Writer compiles with their own TeX distribution.
|
|
22
|
+
|
|
23
|
+
**Trim values (KDP/Ingram):** `5x8 | 5.25x8 | 5.5x8.5 | 6x9 | 7x10` (default: 6x9)
|
|
24
|
+
|
|
25
|
+
**Note:** Apple, B&N, D2D, Kobo, Google, Smashwords are EPUB-only platforms. Running build-print with these platforms will produce an error directing the writer to use `/scr:build-ebook` instead.
|
|
26
|
+
|
|
27
|
+
## Instruction
|
|
28
|
+
|
|
29
|
+
You are a **manuscript build specialist** for print-ready PDF output.
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
### STEP 1: LOAD CONTEXT
|
|
34
|
+
|
|
35
|
+
Load the following project files:
|
|
36
|
+
|
|
37
|
+
- `.manuscript/config.json` -- to get `work_type`, title, author, language, and project settings
|
|
38
|
+
- Scriveno's installed/shared `CONSTRAINTS.json` (global `~/.scriveno/data/CONSTRAINTS.json` or project `.scriveno/data/CONSTRAINTS.json`) -- to check `exports` section for format availability by work type group
|
|
39
|
+
|
|
40
|
+
**Check format availability:**
|
|
41
|
+
|
|
42
|
+
Look up `build_print` in `CONSTRAINTS.json` under the `exports` section. Find the current work type's group in `CONSTRAINTS.json` under `work_type_groups`. Check if the group is in the `build_print.available` list.
|
|
43
|
+
|
|
44
|
+
Available for: `["prose", "visual", "poetry", "sacred", "academic"]`
|
|
45
|
+
|
|
46
|
+
If the work type group is **not available**:
|
|
47
|
+
> This command is not available for [work_type] projects. The print PDF build is available for: prose, visual, poetry, sacred, and academic work types.
|
|
48
|
+
|
|
49
|
+
Then **stop**.
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
### STEP 1.5: VALIDATE MANUSCRIPT
|
|
54
|
+
|
|
55
|
+
**Check for scaffold markers in `.manuscript/drafts/`.**
|
|
56
|
+
|
|
57
|
+
Scan all `.md` files in `.manuscript/drafts/` for:
|
|
58
|
+
- Lines containing `[Fill in` (covers `[Fill in:]`, `[Fill in or delete:]`)
|
|
59
|
+
- Lines containing `[Delete if not applicable:]`
|
|
60
|
+
- Lines containing `Alternate 1:` or `Alternate 2:`
|
|
61
|
+
- Files with more than one `# ` (top-level H1) heading
|
|
62
|
+
|
|
63
|
+
**Note:** `{{VAR}}` tokens are NOT scaffold markers and must not be flagged. They are writer content placeholders, out of scope for this gate.
|
|
64
|
+
|
|
65
|
+
**If `--skip-validate` was passed:**
|
|
66
|
+
|
|
67
|
+
> **Warning: Validate gate skipped (`--skip-validate`). Your manuscript may contain
|
|
68
|
+
> unresolved scaffold markers. Run `/scr:validate` to check before submitting.**
|
|
69
|
+
|
|
70
|
+
Proceed to STEP 2.
|
|
71
|
+
|
|
72
|
+
**If markers are found** (and `--skip-validate` was not passed):
|
|
73
|
+
|
|
74
|
+
> **Build blocked: unresolved scaffold markers found.**
|
|
75
|
+
>
|
|
76
|
+
> [list each as: `path/to/file.md:LINE_NUMBER: marker text`]
|
|
77
|
+
>
|
|
78
|
+
> **Fix:** Run `/scr:cleanup --apply` to remove scaffold markers, or manually
|
|
79
|
+
> edit the listed files, then re-run this build command.
|
|
80
|
+
|
|
81
|
+
Then **stop** -- do not proceed to STEP 2.
|
|
82
|
+
|
|
83
|
+
If no markers found: proceed to STEP 2.
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
### STEP 1.6: FRONT-MATTER GATE
|
|
88
|
+
|
|
89
|
+
**1.6a -- Scaffold exclusion**
|
|
90
|
+
|
|
91
|
+
Check if `.manuscript/front-matter/` exists.
|
|
92
|
+
|
|
93
|
+
If the directory does not exist:
|
|
94
|
+
> **Note:** No front matter found -- run `/scr:front-matter` first if you want publication front matter included.
|
|
95
|
+
|
|
96
|
+
Proceed to 1.6b.
|
|
97
|
+
|
|
98
|
+
If the directory exists, scan all `.md` files in `.manuscript/front-matter/`. For each file, check the first 10 lines for a YAML block containing `scaffold: true`. Build a scaffold exclusion list of the paths of all files where `scaffold: true` is found.
|
|
99
|
+
|
|
100
|
+
If any files were added to the scaffold exclusion list, note them for the assembly step (STEP 3b) and show:
|
|
101
|
+
> **Note:** [N] scaffold front-matter element(s) will be excluded from this export:
|
|
102
|
+
> - `.manuscript/front-matter/12-preface.md` (scaffold: true -- edit and set scaffold: false to include)
|
|
103
|
+
>
|
|
104
|
+
> To include a scaffold element, open the file and change `scaffold: true` to `scaffold: false`.
|
|
105
|
+
|
|
106
|
+
If no scaffold files were found, show no note.
|
|
107
|
+
|
|
108
|
+
**1.6b -- GENERATE element auto-refresh**
|
|
109
|
+
|
|
110
|
+
If `.manuscript/front-matter/` does not exist, skip auto-refresh and proceed to STEP 2.
|
|
111
|
+
|
|
112
|
+
If `.manuscript/WORK.md` does not exist, skip auto-refresh and proceed to STEP 2.
|
|
113
|
+
|
|
114
|
+
Compare the modification timestamp of `.manuscript/WORK.md` against each of the following GENERATE front-matter files:
|
|
115
|
+
- `.manuscript/front-matter/01-half-title.md`
|
|
116
|
+
- `.manuscript/front-matter/03-title-page.md`
|
|
117
|
+
- `.manuscript/front-matter/04-copyright.md`
|
|
118
|
+
- `.manuscript/front-matter/07-toc.md`
|
|
119
|
+
|
|
120
|
+
To compare timestamps, use the appropriate command for the platform:
|
|
121
|
+
- macOS: `stat -f %m <file>`
|
|
122
|
+
- Linux: `stat -c %Y <file>`
|
|
123
|
+
- Windows: `(Get-Item '<file>').LastWriteTimeUtc.Ticks`
|
|
124
|
+
- If timestamp comparison is not possible, assume WORK.md is newer and regenerate.
|
|
125
|
+
|
|
126
|
+
If WORK.md is newer than ANY of those 4 files, or if ANY of those 4 files do not exist:
|
|
127
|
+
Re-run the GENERATE step from `/scr:front-matter` for elements 1, 3, 4, and 7 only (half-title, title page, copyright page, TOC) using current WORK.md metadata. Regenerate all four even if only one triggered the condition. Do NOT regenerate scaffold elements (5, 6, 11, 12, 13) or any other elements.
|
|
128
|
+
|
|
129
|
+
If WORK.md is not newer than all 4 files and all 4 files exist: skip regeneration silently.
|
|
130
|
+
|
|
131
|
+
Proceed to STEP 2.
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
### STEP 1.7: TRADITION LOADING
|
|
136
|
+
|
|
137
|
+
Read top-level `tradition` from `.manuscript/config.json`. For older projects only, if top-level `tradition` is absent and `sacred.tradition` exists, use `sacred.tradition` as a legacy fallback.
|
|
138
|
+
|
|
139
|
+
If absent or null: skip this step silently and proceed to STEP 1.8.
|
|
140
|
+
|
|
141
|
+
Validate the tradition slug against the accepted list:
|
|
142
|
+
`catholic`, `orthodox`, `tewahedo`, `protestant`, `jewish`, `islamic-hafs`, `islamic-warsh`, `pali`, `tibetan`, `sanskrit`
|
|
143
|
+
|
|
144
|
+
If the value is not in this list:
|
|
145
|
+
> **Unknown tradition "{tradition}". Valid values: catholic, orthodox, tewahedo, protestant, jewish, islamic-hafs, islamic-warsh, pali, tibetan, sanskrit**
|
|
146
|
+
|
|
147
|
+
Then **stop**.
|
|
148
|
+
|
|
149
|
+
If present and valid, load `templates/sacred/{tradition}/manifest.yaml`.
|
|
150
|
+
|
|
151
|
+
Apply tradition data to `.manuscript/output/metadata.yaml` (before STEP 3f writes the file):
|
|
152
|
+
- Set `lang:` to the tradition's primary language tag:
|
|
153
|
+
- `arabic` script -> `ar`
|
|
154
|
+
- `hebrew` script -> `he`
|
|
155
|
+
- `ethiopic` script -> `am` (Amharic, primary Ge'ez liturgical language)
|
|
156
|
+
- `tibetan` script -> `bo`
|
|
157
|
+
- `devanagari` script -> `sa` (Sanskrit)
|
|
158
|
+
- `latin` script -> use the project language from config.json (default `en`)
|
|
159
|
+
- Set `font-family:` to the first entry in the manifest's `font_stack`.
|
|
160
|
+
|
|
161
|
+
If `rtl: true` in the manifest, add `--metadata dir=rtl` to the Pandoc invocation in STEP 4.
|
|
162
|
+
|
|
163
|
+
If `approval_block.required: true` in the manifest, show after the build completes:
|
|
164
|
+
> **Note:** This tradition requires an approval block ("{{approval_block.label}}") before publication. Scope: {{approval_block.scope}}.
|
|
165
|
+
|
|
166
|
+
Proceed to STEP 1.8.
|
|
167
|
+
|
|
168
|
+
---
|
|
169
|
+
|
|
170
|
+
### STEP 1.8: WORK TYPE TEMPLATE SELECTION
|
|
171
|
+
|
|
172
|
+
Read `work_type` from `.manuscript/config.json`.
|
|
173
|
+
|
|
174
|
+
**If `--platform` is one of `ieee`, `acm`, `lncs`, `elsevier`, `apa7` (academic publisher platforms):**
|
|
175
|
+
|
|
176
|
+
Map the platform to its LaTeX wrapper template:
|
|
177
|
+
|
|
178
|
+
| Platform | LATEX_TEMPLATE |
|
|
179
|
+
|----------|----------------|
|
|
180
|
+
| `ieee` | `data/export-templates/scriveno-ieee.latex` |
|
|
181
|
+
| `acm` | `data/export-templates/scriveno-acm.latex` |
|
|
182
|
+
| `lncs` | `data/export-templates/scriveno-lncs.latex` |
|
|
183
|
+
| `elsevier` | `data/export-templates/scriveno-elsevier.latex` |
|
|
184
|
+
| `apa7` | `data/export-templates/scriveno-apa7.latex` |
|
|
185
|
+
|
|
186
|
+
Set `LATEX_TEMPLATE` to the resolved path.
|
|
187
|
+
|
|
188
|
+
If the template file does not exist at that path:
|
|
189
|
+
> **Build template missing: `data/export-templates/scriveno-{platform}.latex` not found.**
|
|
190
|
+
> Re-install Scriveno or restore the file from the repository.
|
|
191
|
+
|
|
192
|
+
Then **stop**.
|
|
193
|
+
|
|
194
|
+
Set `TYPST_TEMPLATE` to null (Typst path is not used for academic platforms). Proceed to STEP 2.
|
|
195
|
+
|
|
196
|
+
---
|
|
197
|
+
|
|
198
|
+
Map `work_type` to the appropriate Typst template:
|
|
199
|
+
|
|
200
|
+
| work_type | Template |
|
|
201
|
+
|-----------|----------|
|
|
202
|
+
| `stage_play` | `data/export-templates/scriveno-stageplay.typst` |
|
|
203
|
+
| `picture_book` | `data/export-templates/scriveno-picturebook.typst` |
|
|
204
|
+
| `poetry_collection` | `data/export-templates/scriveno-chapbook.typst` |
|
|
205
|
+
| `single_poem` | `data/export-templates/scriveno-chapbook.typst` |
|
|
206
|
+
| All other work types | `data/export-templates/scriveno-book.typst` |
|
|
207
|
+
|
|
208
|
+
Set the resolved template path as `TYPST_TEMPLATE` for use in STEP 4.
|
|
209
|
+
|
|
210
|
+
If the resolved template file does not exist at the path:
|
|
211
|
+
> **Build template missing: `{TYPST_TEMPLATE}` not found.**
|
|
212
|
+
> Re-install Scriveno or restore the file from the repository.
|
|
213
|
+
|
|
214
|
+
Then **stop**.
|
|
215
|
+
|
|
216
|
+
Proceed to STEP 2.
|
|
217
|
+
|
|
218
|
+
---
|
|
219
|
+
|
|
220
|
+
### STEP 2: CHECK PREREQUISITES
|
|
221
|
+
|
|
222
|
+
Check for Pandoc:
|
|
223
|
+
|
|
224
|
+
```bash
|
|
225
|
+
command -v pandoc >/dev/null 2>&1
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
If Pandoc is not found:
|
|
229
|
+
|
|
230
|
+
> **Pandoc is required for print PDF build but is not installed.**
|
|
231
|
+
>
|
|
232
|
+
> **Install Pandoc:**
|
|
233
|
+
> - macOS: `brew install pandoc`
|
|
234
|
+
> - Linux: `sudo apt install pandoc`
|
|
235
|
+
> - Windows: `choco install pandoc`
|
|
236
|
+
> - Or download from https://pandoc.org/installing.html
|
|
237
|
+
>
|
|
238
|
+
> After installing, run this build command again.
|
|
239
|
+
|
|
240
|
+
Then **stop** -- do not attempt the build without the required tool.
|
|
241
|
+
|
|
242
|
+
**If `--platform` is NOT one of `ieee`, `acm`, `lncs`, `elsevier`, `apa7`, check for Typst:**
|
|
243
|
+
|
|
244
|
+
```bash
|
|
245
|
+
command -v typst >/dev/null 2>&1
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
If Typst is not found:
|
|
249
|
+
|
|
250
|
+
> **Typst is required for print PDF build but is not installed.**
|
|
251
|
+
>
|
|
252
|
+
> **Install Typst:**
|
|
253
|
+
> - macOS: `brew install typst`
|
|
254
|
+
> - Linux: Download from https://github.com/typst/typst/releases
|
|
255
|
+
> - Windows: `winget install typst`
|
|
256
|
+
> - Or visit https://typst.app for installation options
|
|
257
|
+
>
|
|
258
|
+
> After installing, run this build command again.
|
|
259
|
+
|
|
260
|
+
Then **stop**.
|
|
261
|
+
|
|
262
|
+
If `--platform ingram` was passed, also check Ghostscript:
|
|
263
|
+
|
|
264
|
+
```bash
|
|
265
|
+
command -v gs >/dev/null 2>&1
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
If Ghostscript is not found:
|
|
269
|
+
|
|
270
|
+
> **Ghostscript is required for IngramSpark PDF/X-1a output but is not installed.**
|
|
271
|
+
>
|
|
272
|
+
> **Install Ghostscript:**
|
|
273
|
+
> - macOS: `brew install ghostscript`
|
|
274
|
+
> - Linux: `sudo apt install ghostscript`
|
|
275
|
+
> - Windows: `choco install ghostscript`
|
|
276
|
+
> - Or download from https://www.ghostscript.com/releases/gsdnld.html
|
|
277
|
+
>
|
|
278
|
+
> After installing, run this build command again.
|
|
279
|
+
|
|
280
|
+
Then **stop**.
|
|
281
|
+
|
|
282
|
+
**If `--platform` is one of `ieee`, `acm`, `lncs`, `elsevier`, `apa7`, check for kpsewhich (TeX distribution presence):**
|
|
283
|
+
|
|
284
|
+
```bash
|
|
285
|
+
command -v kpsewhich >/dev/null 2>&1
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
If kpsewhich is not found:
|
|
289
|
+
|
|
290
|
+
> **No TeX distribution found. kpsewhich is required to verify LaTeX class availability.**
|
|
291
|
+
>
|
|
292
|
+
> **Install a TeX distribution:**
|
|
293
|
+
> - macOS: `brew install basictex` (BasicTeX, ~100 MB) or `brew install mactex` (full TeX Live, ~4 GB)
|
|
294
|
+
> - Linux: `sudo apt install texlive-base` or download TeX Live from https://tug.org/texlive/
|
|
295
|
+
> - Windows: Download MiKTeX from https://miktex.org/ or TeX Live from https://tug.org/texlive/
|
|
296
|
+
>
|
|
297
|
+
> After installing, run this build command again.
|
|
298
|
+
|
|
299
|
+
Then **stop**.
|
|
300
|
+
|
|
301
|
+
Map the platform to its publisher class file and `tlmgr` package:
|
|
302
|
+
|
|
303
|
+
| Platform | Class file | tlmgr package |
|
|
304
|
+
|----------|-----------|---------------|
|
|
305
|
+
| `ieee` | `IEEEtran.cls` | `ieeetran` |
|
|
306
|
+
| `acm` | `acmart.cls` | `acmart` |
|
|
307
|
+
| `lncs` | `llncs.cls` | `llncs` |
|
|
308
|
+
| `elsevier` | `elsarticle.cls` | `elsarticle` |
|
|
309
|
+
| `apa7` | `apa7.cls` | `apa7` |
|
|
310
|
+
|
|
311
|
+
Check for the publisher class:
|
|
312
|
+
|
|
313
|
+
```bash
|
|
314
|
+
kpsewhich <CLASS_FILE> >/dev/null 2>&1
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
If the class is not found, show the platform-specific install command:
|
|
318
|
+
|
|
319
|
+
- For `ieee` (IEEEtran.cls not found):
|
|
320
|
+
> **`IEEEtran.cls` is not installed in your TeX distribution.**
|
|
321
|
+
> Install it: `tlmgr install ieeetran`
|
|
322
|
+
> After installing, run this build command again.
|
|
323
|
+
|
|
324
|
+
- For `acm` (acmart.cls not found):
|
|
325
|
+
> **`acmart.cls` is not installed in your TeX distribution.**
|
|
326
|
+
> Install it: `tlmgr install acmart`
|
|
327
|
+
> After installing, run this build command again.
|
|
328
|
+
|
|
329
|
+
- For `lncs` (llncs.cls not found):
|
|
330
|
+
> **`llncs.cls` is not installed in your TeX distribution.**
|
|
331
|
+
> Install it: `tlmgr install llncs`
|
|
332
|
+
> If `tlmgr` is unavailable, download `llncs.cls` from Springer's author resources:
|
|
333
|
+
> https://www.springer.com/gp/computer-science/lncs/conference-proceedings-guidelines
|
|
334
|
+
> After installing, run this build command again.
|
|
335
|
+
|
|
336
|
+
- For `elsevier` (elsarticle.cls not found):
|
|
337
|
+
> **`elsarticle.cls` is not installed in your TeX distribution.**
|
|
338
|
+
> Install it: `tlmgr install elsarticle`
|
|
339
|
+
> After installing, run this build command again.
|
|
340
|
+
|
|
341
|
+
- For `apa7` (apa7.cls not found):
|
|
342
|
+
> **`apa7.cls` is not installed in your TeX distribution.**
|
|
343
|
+
> Install it: `tlmgr install apa7`
|
|
344
|
+
> After installing, run this build command again.
|
|
345
|
+
|
|
346
|
+
Then **stop**.
|
|
347
|
+
|
|
348
|
+
---
|
|
349
|
+
|
|
350
|
+
### STEP 2.5: VALIDATE PLATFORM AND TRIM SIZE
|
|
351
|
+
|
|
352
|
+
**Resolve the platform slug:**
|
|
353
|
+
|
|
354
|
+
- If `--platform` was passed, use that value.
|
|
355
|
+
- If not passed, default to `kdp`.
|
|
356
|
+
|
|
357
|
+
**Validate the platform slug:**
|
|
358
|
+
|
|
359
|
+
Check that the slug is one of the following allowed values:
|
|
360
|
+
`kdp`, `ingram`, `apple`, `bn`, `d2d`, `kobo`, `google`, `smashwords`, `ieee`, `acm`, `lncs`, `elsevier`, `apa7`
|
|
361
|
+
|
|
362
|
+
If the platform slug is invalid:
|
|
363
|
+
> **Platform "{slug}" is not recognised.**
|
|
364
|
+
>
|
|
365
|
+
> Valid platforms: kdp, ingram, apple, bn, d2d, kobo, google, smashwords, ieee, acm, lncs, elsevier, apa7
|
|
366
|
+
>
|
|
367
|
+
> Example: `/scr:build-print --platform kdp`
|
|
368
|
+
|
|
369
|
+
Then **stop**.
|
|
370
|
+
|
|
371
|
+
**Check for EPUB-only platforms.** If the platform is any of: `apple`, `bn`, `d2d`, `kobo`, `google`, `smashwords`:
|
|
372
|
+
> **{PLATFORM} is an EPUB-only platform and does not accept print PDFs.**
|
|
373
|
+
>
|
|
374
|
+
> To build an EPUB for this platform, run: `/scr:build-ebook --platform {slug}`
|
|
375
|
+
|
|
376
|
+
Then **stop**.
|
|
377
|
+
|
|
378
|
+
**If platform is an academic publisher platform** (`ieee`, `acm`, `lncs`, `elsevier`, `apa7`):
|
|
379
|
+
|
|
380
|
+
Skip trim-size validation and page-count guardrail -- these are not applicable to `.tex` output. Academic platforms have no trim size or page limit.
|
|
381
|
+
|
|
382
|
+
Proceed directly to STEP 3.
|
|
383
|
+
|
|
384
|
+
---
|
|
385
|
+
|
|
386
|
+
**Load manifest for selected platform:**
|
|
387
|
+
|
|
388
|
+
Load `templates/platforms/{platform}/manifest.yaml`.
|
|
389
|
+
|
|
390
|
+
**Resolve the trim size:**
|
|
391
|
+
|
|
392
|
+
- If `--trim` was passed, use that value.
|
|
393
|
+
- If not passed, use the manifest's `default_trim` value (6x9 for KDP and Ingram).
|
|
394
|
+
|
|
395
|
+
**Validate trim size against manifest:**
|
|
396
|
+
|
|
397
|
+
Check the trim size against the manifest's `trim_sizes` map. If the trim size is NOT in the map:
|
|
398
|
+
|
|
399
|
+
> **Trim size "{size}" is not supported for {PLATFORM}.**
|
|
400
|
+
>
|
|
401
|
+
> Supported trim sizes for {PLATFORM}: {list all keys from manifest.trim_sizes}
|
|
402
|
+
>
|
|
403
|
+
> Default trim: {manifest.default_trim}
|
|
404
|
+
|
|
405
|
+
Then **stop**.
|
|
406
|
+
|
|
407
|
+
**Page-count estimation and guardrail** (only when platform has `max_pages` in manifest):
|
|
408
|
+
|
|
409
|
+
Get manuscript word count by reading assembled markdown and counting words (split by whitespace). If word count cannot be determined, skip guardrail silently.
|
|
410
|
+
|
|
411
|
+
Estimate page count:
|
|
412
|
+
```
|
|
413
|
+
estimated_pages = Math.round(word_count / manifest.trim_sizes[trim].wpp)
|
|
414
|
+
```
|
|
415
|
+
|
|
416
|
+
Compare against `manifest.max_pages`:
|
|
417
|
+
- For paperback: compare against `manifest.max_pages.paperback`
|
|
418
|
+
- For hardcover: only KDP hardcover applies -- compare against `manifest.max_pages.hardcover` only if `--hardcover` flag is passed (otherwise use paperback limit)
|
|
419
|
+
|
|
420
|
+
If `estimated_pages` exceeds the limit:
|
|
421
|
+
|
|
422
|
+
- If `--strict` was NOT passed (default warning mode):
|
|
423
|
+
> WARNING Estimated {estimated_pages} pages at {trim} ({PLATFORM} paperback limit: {MAX}pp). Consider IngramSpark (1200pp). Building anyway...
|
|
424
|
+
|
|
425
|
+
- If `--strict` was passed (hard block):
|
|
426
|
+
> **Build blocked (--strict): Estimated {estimated_pages} pages at {trim} exceeds {PLATFORM} paperback limit ({MAX}pp).**
|
|
427
|
+
>
|
|
428
|
+
> **Options:**
|
|
429
|
+
> - Switch platform: `/scr:build-print --platform ingram`
|
|
430
|
+
> - Reduce manuscript length
|
|
431
|
+
> - Remove `--strict` to build anyway with a warning
|
|
432
|
+
|
|
433
|
+
Then **stop**.
|
|
434
|
+
|
|
435
|
+
---
|
|
436
|
+
|
|
437
|
+
### STEP 3: ASSEMBLE MANUSCRIPT
|
|
438
|
+
|
|
439
|
+
This step builds the complete manuscript from its component files. All formats use this assembled file as input.
|
|
440
|
+
|
|
441
|
+
**3a. Read OUTLINE.md for document order:**
|
|
442
|
+
|
|
443
|
+
Read `.manuscript/OUTLINE.md` and parse the scene/chapter list. Extract the ordered list of body units (scenes, chapters, sections) with their file paths in `.manuscript/drafts/body/`.
|
|
444
|
+
|
|
445
|
+
**3b. Scan front matter:**
|
|
446
|
+
|
|
447
|
+
Read all files in `.manuscript/front-matter/` directory. Sort by numeric prefix to maintain Chicago Manual of Style order.
|
|
448
|
+
|
|
449
|
+
**Scaffold exclusion:** Omit any files whose path appears in the scaffold exclusion list from STEP 1.6a.
|
|
450
|
+
|
|
451
|
+
If no front matter files exist, proceed with body content only.
|
|
452
|
+
|
|
453
|
+
**3c. Read body drafts:**
|
|
454
|
+
|
|
455
|
+
For each unit listed in OUTLINE.md, look for the corresponding draft file in `.manuscript/drafts/body/`. Read in OUTLINE.md order. Warn on any missing units.
|
|
456
|
+
|
|
457
|
+
**3d. Scan back matter:**
|
|
458
|
+
|
|
459
|
+
Read all files in `.manuscript/back-matter/` directory. Sort alphabetically. Back matter is optional.
|
|
460
|
+
|
|
461
|
+
**3e. Concatenate and write:**
|
|
462
|
+
|
|
463
|
+
Assemble the full manuscript in this order:
|
|
464
|
+
1. Front matter files (sorted by numeric prefix)
|
|
465
|
+
2. Body draft files (ordered by OUTLINE.md)
|
|
466
|
+
3. Back matter files (sorted alphabetically)
|
|
467
|
+
|
|
468
|
+
Insert `\newpage` page break markers between major sections.
|
|
469
|
+
|
|
470
|
+
```bash
|
|
471
|
+
mkdir -p .manuscript/output
|
|
472
|
+
```
|
|
473
|
+
|
|
474
|
+
Write assembled content to `.manuscript/output/assembled-manuscript.md`.
|
|
475
|
+
|
|
476
|
+
**3f. Generate metadata.yaml:**
|
|
477
|
+
|
|
478
|
+
Read `.manuscript/config.json` and `.manuscript/WORK.md` (if it exists) to generate Pandoc metadata. Write to `.manuscript/output/metadata.yaml`.
|
|
479
|
+
|
|
480
|
+
---
|
|
481
|
+
|
|
482
|
+
### STEP 4: BUILD PDF
|
|
483
|
+
|
|
484
|
+
**If `--platform` is one of `ieee`, `acm`, `lncs`, `elsevier`, `apa7` (academic LaTeX route):**
|
|
485
|
+
|
|
486
|
+
```bash
|
|
487
|
+
pandoc .manuscript/output/assembled-manuscript.md \
|
|
488
|
+
-o .manuscript/output/paper-{platform}.tex \
|
|
489
|
+
--template=data/export-templates/scriveno-{platform}.latex \
|
|
490
|
+
--metadata-file=.manuscript/output/metadata.yaml
|
|
491
|
+
```
|
|
492
|
+
|
|
493
|
+
Note: No `--pdf-engine` flag is used. Pandoc produces LaTeX source (`.tex`) only. To compile to PDF, run in `.manuscript/output/`:
|
|
494
|
+
|
|
495
|
+
```bash
|
|
496
|
+
# Typical pdflatex compilation workflow:
|
|
497
|
+
pdflatex paper-{platform}.tex
|
|
498
|
+
bibtex paper-{platform}
|
|
499
|
+
pdflatex paper-{platform}.tex
|
|
500
|
+
pdflatex paper-{platform}.tex
|
|
501
|
+
```
|
|
502
|
+
|
|
503
|
+
Proceed to STEP 5.
|
|
504
|
+
|
|
505
|
+
---
|
|
506
|
+
|
|
507
|
+
Look up trim dimensions from manifest:
|
|
508
|
+
- `width_in` from `manifest.trim_sizes[trim].width_in`
|
|
509
|
+
- `height_in` from `manifest.trim_sizes[trim].height_in`
|
|
510
|
+
|
|
511
|
+
```bash
|
|
512
|
+
pandoc .manuscript/output/assembled-manuscript.md \
|
|
513
|
+
-o .manuscript/output/print-{platform}.pdf \
|
|
514
|
+
--pdf-engine=typst \
|
|
515
|
+
--template={TYPST_TEMPLATE} \
|
|
516
|
+
--metadata-file=.manuscript/output/metadata.yaml \
|
|
517
|
+
--toc \
|
|
518
|
+
--toc-depth=2 \
|
|
519
|
+
-V paperwidth={width_in}in \
|
|
520
|
+
-V paperheight={height_in}in \
|
|
521
|
+
-V margin-inside=0.75in \
|
|
522
|
+
-V margin-outside=0.5in \
|
|
523
|
+
-V margin-top=0.75in \
|
|
524
|
+
-V margin-bottom=0.75in
|
|
525
|
+
```
|
|
526
|
+
|
|
527
|
+
**For IngramSpark (`--platform ingram`):** After Pandoc generates the PDF, note to the writer that a PDF/X-1a conversion via Ghostscript may be required for final IngramSpark submission. Provide the command pattern but do not auto-run it (the conversion is destructive and the writer should verify the intermediate PDF first):
|
|
528
|
+
|
|
529
|
+
```bash
|
|
530
|
+
# PDF/X-1a conversion for IngramSpark submission (run manually after verifying the PDF above):
|
|
531
|
+
gs -dPDFX -dBATCH -dNOPAUSE \
|
|
532
|
+
-dPDFXCompatibilityPolicy=1 \
|
|
533
|
+
-sColorConversionStrategy=CMYK \
|
|
534
|
+
-sDEVICE=pdfwrite \
|
|
535
|
+
-sOutputFile=.manuscript/output/print-ingram-cmyk.pdf \
|
|
536
|
+
.manuscript/output/print-ingram.pdf
|
|
537
|
+
```
|
|
538
|
+
|
|
539
|
+
---
|
|
540
|
+
|
|
541
|
+
### STEP 5: REPORT
|
|
542
|
+
|
|
543
|
+
**If `--platform` is NOT one of `ieee`, `acm`, `lncs`, `elsevier`, `apa7`:**
|
|
544
|
+
|
|
545
|
+
Show:
|
|
546
|
+
|
|
547
|
+
```
|
|
548
|
+
OK PDF built -> .manuscript/output/print-{platform}.pdf ({file_size})
|
|
549
|
+
```
|
|
550
|
+
|
|
551
|
+
Get file size with:
|
|
552
|
+
```bash
|
|
553
|
+
ls -lh .manuscript/output/print-{platform}.pdf | awk '{print $5}'
|
|
554
|
+
```
|
|
555
|
+
|
|
556
|
+
Then report the canonical cover file that pairs with this interior:
|
|
557
|
+
|
|
558
|
+
- If `--hardcover` was passed: `.manuscript/build/hardcover-cover.pdf`
|
|
559
|
+
- Otherwise: `.manuscript/build/paperback-cover.pdf`
|
|
560
|
+
|
|
561
|
+
Include this note:
|
|
562
|
+
|
|
563
|
+
> **Cover pairing:** Scriveno expects the matching finished print cover in `.manuscript/build/`. Exact wrap width, spine width, and safety guides must come from the current IngramSpark cover template generator (paperback for perfect-bound, hardcover for case laminate). Scriveno does not hard-code those final cover dimensions in this command.
|
|
564
|
+
|
|
565
|
+
**If `--platform` IS one of `ieee`, `acm`, `lncs`, `elsevier`, `apa7`, show instead:**
|
|
566
|
+
|
|
567
|
+
```
|
|
568
|
+
OK LaTeX source built -> .manuscript/output/paper-{platform}.tex ({file_size})
|
|
569
|
+
Compile with pdflatex or xelatex using your TeX distribution.
|
|
570
|
+
```
|
|
571
|
+
|
|
572
|
+
Get file size with:
|
|
573
|
+
```bash
|
|
574
|
+
ls -lh .manuscript/output/paper-{platform}.tex | awk '{print $5}'
|
|
575
|
+
```
|
|
576
|
+
|
|
577
|
+
## Response Contract
|
|
578
|
+
|
|
579
|
+
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.
|
|
580
|
+
|
|
581
|
+
Use this format:
|
|
582
|
+
|
|
583
|
+
```markdown
|
|
584
|
+
Next commands:
|
|
585
|
+
- `/scr:...`: One short sentence explaining what this path will do.
|
|
586
|
+
- `/scr:...`: One short sentence explaining what this alternate path will do.
|
|
587
|
+
```
|
|
588
|
+
|
|
589
|
+
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.
|
|
590
|
+
|
|
591
|
+
If the writer seems unsure or no specific next command is obvious, include this default option:
|
|
592
|
+
|
|
593
|
+
```markdown
|
|
594
|
+
Next commands:
|
|
595
|
+
- `/scr:next`: Inspect the project state and choose the right next step.
|
|
596
|
+
```
|
|
597
|
+
|
|
598
|
+
If the command stops because a prerequisite is missing, suggest the command that fixes the prerequisite. Keep every explanation practical and writer-facing.
|