scriveno 2.0.12 → 2.6.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.
- package/README.md +12 -6
- package/agents/voice-checker.md +10 -0
- package/bin/install.js +91 -2
- package/commands/scr/autopilot-publish.md +1 -1
- package/commands/scr/autopilot-translate.md +5 -6
- package/commands/scr/autopilot.md +3 -3
- package/commands/scr/beta-reader.md +6 -3
- package/commands/scr/build-ebook.md +1 -1
- package/commands/scr/build-print.md +2 -2
- package/commands/scr/continuity-check.md +1 -0
- package/commands/scr/copy-edit.md +1 -0
- package/commands/scr/demo.md +1 -0
- package/commands/scr/dialogue-audit.md +1 -0
- package/commands/scr/discussion-questions.md +1 -0
- package/commands/scr/draft.md +2 -2
- package/commands/scr/export.md +1 -1
- package/commands/scr/first-run.md +128 -0
- package/commands/scr/help.md +2 -1
- package/commands/scr/line-edit.md +1 -0
- package/commands/scr/map-manuscript.md +1 -0
- package/commands/scr/multi-publish.md +3 -2
- package/commands/scr/new-character.md +1 -0
- package/commands/scr/new-work.md +1 -1
- package/commands/scr/originality-check.md +1 -0
- package/commands/scr/pacing-analysis.md +1 -0
- package/commands/scr/polish.md +1 -0
- package/commands/scr/quick-write.md +4 -1
- package/commands/scr/sensitivity-review.md +1 -0
- package/commands/scr/synopsis.md +1 -0
- package/commands/scr/theme-tracker.md +1 -0
- package/commands/scr/timeline.md +1 -0
- package/commands/scr/track.md +2 -0
- package/commands/scr/translate.md +1 -1
- package/commands/scr/voice-check.md +1 -0
- package/data/CONSTRAINTS.json +11 -1
- package/data/export-templates/scriveno-book.typst +2 -2
- package/data/export-templates/scriveno-chapbook.typst +1 -1
- package/data/export-templates/scriveno-picturebook.typst +9 -0
- package/data/export-templates/scriveno-stageplay.typst +14 -4
- package/data/proof/first-run/README.md +96 -0
- package/data/proof/runtime-parity/README.md +48 -0
- package/docs/architecture.md +6 -3
- package/docs/command-reference.md +39 -23
- package/docs/configuration.md +28 -3
- package/docs/contributing.md +2 -2
- package/docs/drafter-quality.md +1 -1
- package/docs/getting-started.md +4 -1
- package/docs/proof-artifacts.md +11 -0
- package/docs/quick-proof.md +23 -2
- package/docs/release-notes.md +61 -0
- package/docs/route-graph.md +2 -2
- package/docs/runtime-support.md +4 -3
- package/docs/sacred-texts.md +1 -1
- package/docs/shipped-assets.md +2 -0
- package/docs/starter-sets.md +8 -0
- package/docs/translation.md +7 -11
- package/docs/voice-dna.md +4 -4
- package/docs/work-types.md +1 -1
- package/lib/track-safety.js +72 -0
- package/package.json +1 -1
- package/templates/config.json +1 -1
package/commands/scr/polish.md
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: Write a scene, passage, or chapter outside the full planning workflow.
|
|
3
|
+
argument-hint: "[--discuss] [--research] [--full]"
|
|
3
4
|
---
|
|
4
5
|
|
|
5
6
|
# /scr:quick-write -- Ad-Hoc Writing Without Full Planning
|
|
@@ -18,7 +19,7 @@ Write a scene, passage, or chapter outside the full planning workflow.
|
|
|
18
19
|
|
|
19
20
|
## Instruction
|
|
20
21
|
|
|
21
|
-
Quick write
|
|
22
|
+
Quick write is the fast path. It loads STYLE-GUIDE.md, drafts in the current conversation context (not a fresh per-unit context), and commits atomically. It runs continuity and voice checks only when you pass `--full`. For voice-critical work, prefer `/scr:draft`, which drafts each unit in a fresh context and always runs a voice-check.
|
|
22
23
|
|
|
23
24
|
### STEP 1: GATHER INTENT
|
|
24
25
|
|
|
@@ -49,6 +50,8 @@ If the host runtime cannot spawn a focused researcher, run the research pass in
|
|
|
49
50
|
|
|
50
51
|
Write the passage following all established style guide constraints. Target whatever length feels natural unless the writer specified a target.
|
|
51
52
|
|
|
53
|
+
Quick-write drafts in the current conversation context rather than spawning the drafter in a fresh per-unit context; this trades some voice isolation for speed. When fresh-context voice fidelity matters, use `/scr:draft` instead.
|
|
54
|
+
|
|
52
55
|
### STEP 4: VERIFY (if --full)
|
|
53
56
|
|
|
54
57
|
Run continuity and voice checks against existing manuscript.
|
package/commands/scr/synopsis.md
CHANGED
package/commands/scr/timeline.md
CHANGED
package/commands/scr/track.md
CHANGED
|
@@ -48,6 +48,8 @@ Track metadata lives in `.manuscript/tracks.json`. Create this file on first `tr
|
|
|
48
48
|
|
|
49
49
|
**Label-to-branch mapping (D-01):** Writer-friendly labels are stored as-is. The git branch name is derived by slugifying the label: lowercase, replace spaces with hyphens, strip special characters (keep alphanumeric and hyphens only), prefix with `track/`. Example: "Second Draft Attempt" becomes `track/second-draft-attempt`.
|
|
50
50
|
|
|
51
|
+
This slugify step is the one safety boundary that keeps a writer-chosen label out of a shell command, so it is mandatory, never optional. The canonical algorithm ships as `lib/track-safety.js` (installed to `<data-dir>/lib/track-safety.js`). To derive the slug and a collision-free branch deterministically instead of applying the rules by hand, run `node <data-dir>/lib/track-safety.js "<label>"`, which prints `{"slug":"...","branch":"..."}` with collisions already resolved against a comma-separated second argument of existing branch names. A correct slug contains only `[a-z0-9-]`; if it contains anything else, do not pass it to git.
|
|
52
|
+
|
|
51
53
|
**Canon branch metadata:** `canon_branch` stores the real branch name of the canon manuscript. This may be `main`, `master`, `trunk`, or any other branch name the writer uses.
|
|
52
54
|
|
|
53
55
|
## Canon Branch Resolution
|
|
@@ -214,7 +214,7 @@ After all units are translated, show a summary:
|
|
|
214
214
|
> - Build translation memory: `/scr:translation-memory [lang] --build`
|
|
215
215
|
> - Cultural adaptation review: `/scr:cultural-adaptation [lang]`
|
|
216
216
|
> - Back-translate to verify: `/scr:back-translate [lang]`
|
|
217
|
-
> - Export translation: `/scr:
|
|
217
|
+
> - Export translation: `/scr:multi-publish --languages [lang] --format [format]` (the translated-export path; `/scr:export` builds the source-language manuscript only)
|
|
218
218
|
|
|
219
219
|
## Agent and Automation Status
|
|
220
220
|
|
package/data/CONSTRAINTS.json
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "./constraints.schema.json",
|
|
3
|
-
"version": "2.0
|
|
3
|
+
"version": "2.6.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."
|
|
7
7
|
},
|
|
8
8
|
"command_intents": {
|
|
9
9
|
"start": [
|
|
10
|
+
"first-run",
|
|
10
11
|
"new-work",
|
|
11
12
|
"demo",
|
|
12
13
|
"import",
|
|
@@ -31,6 +32,7 @@
|
|
|
31
32
|
"beta-reader"
|
|
32
33
|
],
|
|
33
34
|
"navigate": [
|
|
35
|
+
"first-run",
|
|
34
36
|
"next",
|
|
35
37
|
"progress",
|
|
36
38
|
"manuscript-stats",
|
|
@@ -1752,6 +1754,13 @@
|
|
|
1752
1754
|
],
|
|
1753
1755
|
"description": "Auto-detect and run the next workflow step"
|
|
1754
1756
|
},
|
|
1757
|
+
"first-run": {
|
|
1758
|
+
"category": "navigation",
|
|
1759
|
+
"available": [
|
|
1760
|
+
"all"
|
|
1761
|
+
],
|
|
1762
|
+
"description": "Guided first-run path through proof, demo, runtime checks, and starter choices"
|
|
1763
|
+
},
|
|
1755
1764
|
"do": {
|
|
1756
1765
|
"category": "navigation",
|
|
1757
1766
|
"available": [
|
|
@@ -2331,6 +2340,7 @@
|
|
|
2331
2340
|
},
|
|
2332
2341
|
"beta-reader": {
|
|
2333
2342
|
"category": "review",
|
|
2343
|
+
"description": "Simulate a beta reader's experience of the manuscript using a fresh-context reader persona (same model, not a second or external AI).",
|
|
2334
2344
|
"available": [
|
|
2335
2345
|
"all"
|
|
2336
2346
|
],
|
|
@@ -13,10 +13,10 @@
|
|
|
13
13
|
#let margin-bottom = $if(margin-bottom)$$margin-bottom$$else$0.75in$endif$
|
|
14
14
|
|
|
15
15
|
// Text direction: parameterized for RTL compatibility (Phase 7)
|
|
16
|
-
#let text-dir = $if(
|
|
16
|
+
#let text-dir = $if(dir)$$dir$$else$ltr$endif$
|
|
17
17
|
|
|
18
18
|
// Language code for CJK detection
|
|
19
|
-
#let lang-code = $if(
|
|
19
|
+
#let lang-code = $if(lang)$"$lang$"$else$"en"$endif$
|
|
20
20
|
|
|
21
21
|
// CJK detection helper
|
|
22
22
|
#let is-cjk = lang-code in ("zh", "ja", "ko")
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
#let margin-outside = $if(margin-outside)$$margin-outside$$else$0.625in$endif$
|
|
17
17
|
|
|
18
18
|
// Text direction
|
|
19
|
-
#let text-dir = $if(
|
|
19
|
+
#let text-dir = $if(dir)$$dir$$else$ltr$endif$
|
|
20
20
|
|
|
21
21
|
// Font configuration -- chapbooks default to a clean readable serif
|
|
22
22
|
#let body-font = $if(mainfont)$"$mainfont$"$else$"Libertinus Serif"$endif$
|
|
@@ -20,6 +20,13 @@
|
|
|
20
20
|
// Override with -V margin-top= etc. if custom margins are needed
|
|
21
21
|
#let margin-all = $if(margin-top)$$margin-top$$else$0.375in$endif$
|
|
22
22
|
|
|
23
|
+
// Text direction: parameterized for RTL compatibility (set via --metadata dir=rtl).
|
|
24
|
+
// Margins are symmetric and body text is centered, so only the base text
|
|
25
|
+
// direction needs to flip for right-to-left scripts.
|
|
26
|
+
#let text-dir = $if(dir)$$dir$$else$ltr$endif$
|
|
27
|
+
#let is-rtl = text-dir == rtl
|
|
28
|
+
#let lang-code = $if(lang)$"$lang$"$else$"en"$endif$
|
|
29
|
+
|
|
23
30
|
// Metadata
|
|
24
31
|
#let book-title = $if(title)$"$title$"$else$"Untitled"$endif$
|
|
25
32
|
#let book-author = $if(author)$"$for(author)$$it.name$$sep$, $endfor$"$else$""$endif$
|
|
@@ -46,6 +53,8 @@
|
|
|
46
53
|
#set text(
|
|
47
54
|
font: $if(mainfont)$"$mainfont$"$else$"Helvetica"$endif$,
|
|
48
55
|
size: $if(fontsize)$$fontsize$$else$16pt$endif$,
|
|
56
|
+
dir: text-dir,
|
|
57
|
+
lang: lang-code,
|
|
49
58
|
fallback: true,
|
|
50
59
|
)
|
|
51
60
|
|
|
@@ -17,6 +17,13 @@
|
|
|
17
17
|
#let margin-top = $if(margin-top)$$margin-top$$else$1in$endif$
|
|
18
18
|
#let margin-bottom = $if(margin-bottom)$$margin-bottom$$else$1in$endif$
|
|
19
19
|
|
|
20
|
+
// Text direction: parameterized for RTL compatibility (set via --metadata dir=rtl).
|
|
21
|
+
// For right-to-left scripts the wider binding margin moves to the right edge and
|
|
22
|
+
// the page number flips to the top-left.
|
|
23
|
+
#let text-dir = $if(dir)$$dir$$else$ltr$endif$
|
|
24
|
+
#let is-rtl = text-dir == rtl
|
|
25
|
+
#let lang-code = $if(lang)$"$lang$"$else$"en"$endif$
|
|
26
|
+
|
|
20
27
|
// Metadata
|
|
21
28
|
#let play-title = $if(title)$"$title$"$else$"Untitled"$endif$
|
|
22
29
|
#let play-author = $if(author)$"$for(author)$$it.name$$sep$, $endfor$"$else$""$endif$
|
|
@@ -30,16 +37,17 @@
|
|
|
30
37
|
width: page-width,
|
|
31
38
|
height: page-height,
|
|
32
39
|
margin: (
|
|
33
|
-
|
|
34
|
-
|
|
40
|
+
// The 1.5in binding margin sits on the left for LTR and flips to the right for RTL.
|
|
41
|
+
left: if is-rtl { margin-right } else { margin-left },
|
|
42
|
+
right: if is-rtl { margin-left } else { margin-right },
|
|
35
43
|
top: margin-top,
|
|
36
44
|
bottom: margin-bottom,
|
|
37
45
|
),
|
|
38
|
-
// Page numbering: top-right,
|
|
46
|
+
// Page numbering: top-right for LTR scripts, top-left for RTL
|
|
39
47
|
header: context {
|
|
40
48
|
let page-num = counter(page).get().first()
|
|
41
49
|
if page-num > 1 {
|
|
42
|
-
align(right, text(size: 10pt)[#str(page-num).])
|
|
50
|
+
align(if is-rtl { left } else { right }, text(size: 10pt)[#str(page-num).])
|
|
43
51
|
}
|
|
44
52
|
},
|
|
45
53
|
)
|
|
@@ -48,6 +56,8 @@
|
|
|
48
56
|
#set text(
|
|
49
57
|
font: $if(mainfont)$"$mainfont$"$else$"Courier New"$endif$,
|
|
50
58
|
size: $if(fontsize)$$fontsize$$else$12pt$endif$,
|
|
59
|
+
dir: text-dir,
|
|
60
|
+
lang: lang-code,
|
|
51
61
|
fallback: true,
|
|
52
62
|
)
|
|
53
63
|
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
# First-Run Proof
|
|
2
|
+
|
|
3
|
+
This bundle is the committed proof artifact for Scriveno's first 10 minutes. It pairs the executable `/scr:first-run` command with the terminal-level checks and demo commands a new writer can run.
|
|
4
|
+
|
|
5
|
+
## What It Proves
|
|
6
|
+
|
|
7
|
+
- Scriveno has a runtime command for first-run orientation, not only a documentation page.
|
|
8
|
+
- The first-run path stays small: check surfaces, create the demo, inspect proof files, draft unit 5, review unit 5.
|
|
9
|
+
- The command shapes are explicit for Claude Code, standard slash-command runtimes, and Codex.
|
|
10
|
+
- The demo path uses shipped files in `data/demo/.manuscript/`.
|
|
11
|
+
|
|
12
|
+
## Transcript: First-Run Guide
|
|
13
|
+
|
|
14
|
+
```text
|
|
15
|
+
> scriveno first-run --project .
|
|
16
|
+
Scriveno first-run guide
|
|
17
|
+
Project: .
|
|
18
|
+
Current recommendation: /scr:new-work
|
|
19
|
+
|
|
20
|
+
Runtime command shapes:
|
|
21
|
+
- Claude Code: /scr-first-run, /scr-demo, /scr-next
|
|
22
|
+
- Standard slash-command runtimes: /scr:first-run, /scr:demo, /scr:next
|
|
23
|
+
- Codex: $scr-first-run, $scr-demo, $scr-next
|
|
24
|
+
|
|
25
|
+
Recommended first path:
|
|
26
|
+
1. /scr:demo
|
|
27
|
+
2. cd scriveno-demo
|
|
28
|
+
3. /scr:next
|
|
29
|
+
4. /scr:draft 5
|
|
30
|
+
5. /scr:editor-review 5
|
|
31
|
+
|
|
32
|
+
Proof artifacts:
|
|
33
|
+
- docs/quick-proof.md
|
|
34
|
+
- docs/starter-sets.md
|
|
35
|
+
- data/proof/watchmaker-flow/README.md
|
|
36
|
+
- data/proof/voice-dna/README.md
|
|
37
|
+
- data/proof/runtime-parity/README.md
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Transcript: Runtime Smoke
|
|
41
|
+
|
|
42
|
+
```text
|
|
43
|
+
> scriveno smoke --json
|
|
44
|
+
{
|
|
45
|
+
"ok": true,
|
|
46
|
+
"expectedCommands": 113,
|
|
47
|
+
"expectedAgents": [
|
|
48
|
+
"continuity-checker",
|
|
49
|
+
"drafter",
|
|
50
|
+
"plan-checker",
|
|
51
|
+
"researcher",
|
|
52
|
+
"translator",
|
|
53
|
+
"voice-checker"
|
|
54
|
+
],
|
|
55
|
+
"runtimes": [
|
|
56
|
+
{ "runtime": "claude-code", "ok": true },
|
|
57
|
+
{ "runtime": "codex", "ok": true },
|
|
58
|
+
{ "runtime": "cursor", "ok": true },
|
|
59
|
+
{ "runtime": "gemini-cli", "ok": true },
|
|
60
|
+
{ "runtime": "opencode", "ok": true },
|
|
61
|
+
{ "runtime": "copilot", "ok": true },
|
|
62
|
+
{ "runtime": "windsurf", "ok": true },
|
|
63
|
+
{ "runtime": "antigravity", "ok": true },
|
|
64
|
+
{ "runtime": "manus", "ok": true },
|
|
65
|
+
{ "runtime": "perplexity-desktop", "ok": true },
|
|
66
|
+
{ "runtime": "generic", "ok": true }
|
|
67
|
+
]
|
|
68
|
+
}
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## Transcript: Demo Flow
|
|
72
|
+
|
|
73
|
+
```text
|
|
74
|
+
> /scr:demo
|
|
75
|
+
Demo project created at ./scriveno-demo/
|
|
76
|
+
|
|
77
|
+
> cd scriveno-demo
|
|
78
|
+
|
|
79
|
+
> /scr:next
|
|
80
|
+
Unit 5 has a plan but no draft yet, so /scr:draft 5 is the next best move.
|
|
81
|
+
|
|
82
|
+
> /scr:draft 5
|
|
83
|
+
Loaded STYLE-GUIDE.md and .manuscript/plans/5-the-reunion-PLAN.md.
|
|
84
|
+
Drafted unit 5 in the established watchmaker voice.
|
|
85
|
+
|
|
86
|
+
> /scr:editor-review 5
|
|
87
|
+
Reviewed unit 5 for voice, continuity, emotional payoff, and revision needs.
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
## Related Files
|
|
91
|
+
|
|
92
|
+
- [docs/quick-proof.md](../../../docs/quick-proof.md)
|
|
93
|
+
- [docs/starter-sets.md](../../../docs/starter-sets.md)
|
|
94
|
+
- [data/demo/.manuscript/plans/5-the-reunion-PLAN.md](../../demo/.manuscript/plans/5-the-reunion-PLAN.md)
|
|
95
|
+
- [data/proof/watchmaker-flow/README.md](../watchmaker-flow/README.md)
|
|
96
|
+
- [data/proof/voice-dna/README.md](../voice-dna/README.md)
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Runtime Parity Evidence
|
|
2
|
+
|
|
3
|
+
This bundle records what Scriveno can prove about runtime support today and what still requires host-runtime testing.
|
|
4
|
+
|
|
5
|
+
## Verified In The Repo
|
|
6
|
+
|
|
7
|
+
- The installer has named targets for Claude Code, Cursor, Gemini CLI, Codex, OpenCode, GitHub Copilot, Windsurf, Antigravity, Manus Desktop, Perplexity Desktop, and the generic skill fallback.
|
|
8
|
+
- `scriveno smoke --json` checks installed command counts, agent prompt availability, Codex metadata, guided Perplexity assets, and shared engine availability.
|
|
9
|
+
- `scriveno agents --json` distinguishes prompt fallback readiness, Codex metadata readiness, guided setup, and bundled skill prompts.
|
|
10
|
+
- `scriveno routes --json` verifies route lanes and command graph shape from the live constraints file.
|
|
11
|
+
- Regression tests cover install surface shape, Codex metadata, Claude flat command mapping, skill bundles, and public audit commands.
|
|
12
|
+
|
|
13
|
+
## Runtime Surface Expectations
|
|
14
|
+
|
|
15
|
+
| Runtime | What is verified locally | Native host behavior claim |
|
|
16
|
+
|---------|--------------------------|----------------------------|
|
|
17
|
+
| Claude Code | Flat `/scr-*` commands plus agent prompts install | Host-supported when Claude Code exposes agents |
|
|
18
|
+
| Codex | `$scr-*` skills, mirrored commands, prompts, and `.toml` metadata install | Host-supported when Codex exposes agent roles |
|
|
19
|
+
| Cursor | Nested `/scr:*` commands plus agent prompts install | Host-supported when Cursor exposes agents |
|
|
20
|
+
| Gemini CLI | Nested `/scr:*` commands plus agent prompts install | Host-supported when Gemini CLI exposes agents |
|
|
21
|
+
| OpenCode | Nested `/scr:*` commands plus agent prompts install | Host-supported when OpenCode exposes agents |
|
|
22
|
+
| GitHub Copilot | Nested `/scr:*` commands plus agent prompts install | Host-supported when Copilot exposes agents |
|
|
23
|
+
| Windsurf | Nested `/scr:*` commands plus agent prompts install | Host-supported when Windsurf exposes agents |
|
|
24
|
+
| Antigravity | Nested `/scr:*` commands plus agent prompts install | Host-supported when Antigravity exposes agents |
|
|
25
|
+
| Manus Desktop | Skill bundle with commands and agent prompts installs | Host-supported when Manus exposes skill agents |
|
|
26
|
+
| Perplexity Desktop | Guided local-MCP setup assets install | Native command and agent spawning not assumed |
|
|
27
|
+
| Generic | SKILL.md bundle with commands and agent prompts installs | Native spawning not assumed |
|
|
28
|
+
|
|
29
|
+
## Remaining Host-In-The-Loop Gap
|
|
30
|
+
|
|
31
|
+
Scriveno still does not claim full host-runtime parity. The missing proof is a recorded run inside each actual host UI or agent process showing that the host invokes the installed command and agent surfaces exactly as expected.
|
|
32
|
+
|
|
33
|
+
That gap is now narrower: install surfaces, metadata, command counts, agent prompts, shared audit commands, and proof artifacts are all checked. This document separates install-surface proof and host-runtime parity proof so Scriveno can be precise about what is verified. The remaining work is external host execution evidence, not package-surface wiring.
|
|
34
|
+
|
|
35
|
+
## Suggested Host Parity Script
|
|
36
|
+
|
|
37
|
+
For each host that supports local commands:
|
|
38
|
+
|
|
39
|
+
```text
|
|
40
|
+
1. Install scriveno@latest.
|
|
41
|
+
2. Run the host-native first-run command.
|
|
42
|
+
3. Run the host-native demo command.
|
|
43
|
+
4. Run the host-native next command inside scriveno-demo.
|
|
44
|
+
5. Confirm the host can route to draft unit 5.
|
|
45
|
+
6. Save a short transcript or screenshot under data/proof/runtime-parity/<runtime>/.
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Use the command shape from [docs/runtime-support.md](../../../docs/runtime-support.md).
|
package/docs/architecture.md
CHANGED
|
@@ -164,7 +164,8 @@ scriveno/
|
|
|
164
164
|
scriveno-book.typst Book interior PDF
|
|
165
165
|
scriveno-epub.css EPUB styling
|
|
166
166
|
scriveno-academic.latex Academic paper formatting
|
|
167
|
-
|
|
167
|
+
proof/ Committed proof bundles (voice-dna, runtime-parity)
|
|
168
|
+
templates/ Per-project starting content (repo root, sibling of data/)
|
|
168
169
|
config.json Per-project configuration template
|
|
169
170
|
WORK.md Work overview template
|
|
170
171
|
OUTLINE.md Structural outline template
|
|
@@ -199,6 +200,7 @@ scriveno/
|
|
|
199
200
|
install.js Multi-platform installer (Node.js)
|
|
200
201
|
docs/
|
|
201
202
|
proof-artifacts.md Canonical proof layer and artifact index
|
|
203
|
+
quick-proof.md Executable first-run proof path and command shapes
|
|
202
204
|
getting-started.md Install to first draft in 10 minutes
|
|
203
205
|
command-reference.md Full command listing with usage
|
|
204
206
|
work-types.md 50 work types and how they adapt Scriveno
|
|
@@ -372,6 +374,7 @@ The same engine now exposes:
|
|
|
372
374
|
- **Agent availability**: `agents` verifies prompt fallback readiness for non-Codex runtimes and metadata readiness for Codex.
|
|
373
375
|
- **Runtime smoke**: `smoke` checks installed command, skill, guide, agent, metadata, and shared-engine surfaces.
|
|
374
376
|
- **Route graph audit**: `routes` derives a command graph from constraints, command intents, dependencies, and automation lanes.
|
|
377
|
+
- **First-run guide**: `first-run` prints the guided proof path, runtime command shapes, proof artifacts, demo sequence, and next commands.
|
|
375
378
|
|
|
376
379
|
### Installation modes
|
|
377
380
|
|
|
@@ -420,7 +423,7 @@ The voice-checker agent (`agents/voice-checker.md`) compares drafted prose again
|
|
|
420
423
|
- Specific issues organized by category (structural voice, lexical voice, character voice, AI-slop indicators)
|
|
421
424
|
- Severity ratings (drift vs critical violation)
|
|
422
425
|
|
|
423
|
-
The voice-checker is invoked after every drafted unit.
|
|
426
|
+
The voice-checker is invoked after every drafted unit and returns an Overall score (0-100). Normalized drift is `drift = (100 - score) / 100`, so the default `config.json` threshold of 0.3 means the writer is offered a re-draft when the voice score falls below 70. See the "Normalized drift" section of `agents/voice-checker.md` for the single definition callers share.
|
|
424
427
|
|
|
425
428
|
### Calibration
|
|
426
429
|
|
|
@@ -434,7 +437,7 @@ Scriveno's `package.json` has no runtime dependencies. The installer is pure Nod
|
|
|
434
437
|
|
|
435
438
|
### Plan is canonical
|
|
436
439
|
|
|
437
|
-
The product plan is the source of truth. If a command file contradicts the plan, the command file is wrong. This ensures consistency across
|
|
440
|
+
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.
|
|
438
441
|
|
|
439
442
|
### Backward compatibility
|
|
440
443
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Command Reference
|
|
2
2
|
|
|
3
|
-
Scriveno has **
|
|
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.
|
|
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
|
|
|
@@ -227,9 +227,25 @@ Start a series bible for a trilogy. Track characters, world details, and timelin
|
|
|
227
227
|
|
|
228
228
|
Commands for finding your way through the workflow and understanding your manuscript.
|
|
229
229
|
|
|
230
|
+
### `/scr:first-run`
|
|
231
|
+
|
|
232
|
+
**Description:** Run the guided first-run path through install checks, demo proof, starter choices, and next commands.
|
|
233
|
+
|
|
234
|
+
**Usage:** `/scr:first-run [--proof] [--runtime <runtime>]`
|
|
235
|
+
|
|
236
|
+
**Prerequisites:** None
|
|
237
|
+
|
|
238
|
+
**Example:**
|
|
239
|
+
```
|
|
240
|
+
/scr:first-run
|
|
241
|
+
```
|
|
242
|
+
Show the proof-first path, runtime command shapes, demo sequence, proof artifacts, and the first safe command to try.
|
|
243
|
+
|
|
244
|
+
---
|
|
245
|
+
|
|
230
246
|
### `/scr:next`
|
|
231
247
|
|
|
232
|
-
**Description:** Auto-detect what to do next in your workflow and
|
|
248
|
+
**Description:** Auto-detect what to do next in your workflow and run it. The one command a writer can always use.
|
|
233
249
|
|
|
234
250
|
**Usage:** `/scr:next`
|
|
235
251
|
|
|
@@ -261,7 +277,7 @@ Scriveno maps your intent to the right command and runs it.
|
|
|
261
277
|
|
|
262
278
|
### `/scr:help`
|
|
263
279
|
|
|
264
|
-
**Description:** Show Scriveno commands grouped by
|
|
280
|
+
**Description:** Show Scriveno commands grouped by workflow stage, filtered to what's relevant for your current work type and progress.
|
|
265
281
|
|
|
266
282
|
**Usage:** `/scr:help [category or search term]`
|
|
267
283
|
|
|
@@ -334,7 +350,7 @@ Import an existing Word document and split it into chapters, scenes, and context
|
|
|
334
350
|
|
|
335
351
|
**Description:** Spawn parallel analysis agents to understand an existing manuscript's voice, structure, characters, and themes.
|
|
336
352
|
|
|
337
|
-
**Usage:** `/scr:map-manuscript`
|
|
353
|
+
**Usage:** `/scr:map-manuscript [area]`
|
|
338
354
|
|
|
339
355
|
**Prerequisites:** None
|
|
340
356
|
|
|
@@ -548,7 +564,7 @@ Visualize your novel's structure mapped to the hero's journey.
|
|
|
548
564
|
|
|
549
565
|
**Description:** Generate a chronological event timeline from the outline.
|
|
550
566
|
|
|
551
|
-
**Usage:** `/scr:timeline`
|
|
567
|
+
**Usage:** `/scr:timeline [--story-order] [--chronological]`
|
|
552
568
|
|
|
553
569
|
**Prerequisites:** OUTLINE.md must exist
|
|
554
570
|
|
|
@@ -568,7 +584,7 @@ See events in chronological order, even if your narrative is non-linear.
|
|
|
568
584
|
|
|
569
585
|
**Description:** Track thematic threads across the work with auto-detection suggestions.
|
|
570
586
|
|
|
571
|
-
**Usage:** `/scr:theme-tracker`
|
|
587
|
+
**Usage:** `/scr:theme-tracker [--detect]`
|
|
572
588
|
|
|
573
589
|
**Prerequisites:** THEMES.md must exist
|
|
574
590
|
|
|
@@ -764,7 +780,7 @@ Commands for creating and managing characters, relationships, and world-building
|
|
|
764
780
|
|
|
765
781
|
**Description:** Build a complete character profile through guided interactive interview.
|
|
766
782
|
|
|
767
|
-
**Usage:** `/scr:new-character
|
|
783
|
+
**Usage:** `/scr:new-character <name>`
|
|
768
784
|
|
|
769
785
|
**Prerequisites:** WORK.md must exist
|
|
770
786
|
|
|
@@ -946,7 +962,7 @@ Scriveno drafts a sample passage using your voice profile. If it doesn't sound r
|
|
|
946
962
|
|
|
947
963
|
**Description:** Perform a line-level prose quality pass with inline annotations.
|
|
948
964
|
|
|
949
|
-
**Usage:** `/scr:line-edit`
|
|
965
|
+
**Usage:** `/scr:line-edit [N]`
|
|
950
966
|
|
|
951
967
|
**Prerequisites:** Draft must exist
|
|
952
968
|
|
|
@@ -964,7 +980,7 @@ Scriveno reads your prose line by line, flagging weak verbs, passive voice, redu
|
|
|
964
980
|
|
|
965
981
|
**Description:** Perform a correctness pass for grammar, spelling, punctuation, and consistency.
|
|
966
982
|
|
|
967
|
-
**Usage:** `/scr:copy-edit`
|
|
983
|
+
**Usage:** `/scr:copy-edit [N]`
|
|
968
984
|
|
|
969
985
|
**Prerequisites:** Draft must exist
|
|
970
986
|
|
|
@@ -982,7 +998,7 @@ Catch typos, grammar issues, and consistency problems (character name spellings,
|
|
|
982
998
|
|
|
983
999
|
**Description:** Chain line-edit, copy-edit, and voice-check for comprehensive prose polish.
|
|
984
1000
|
|
|
985
|
-
**Usage:** `/scr:polish`
|
|
1001
|
+
**Usage:** `/scr:polish [N]`
|
|
986
1002
|
|
|
987
1003
|
**Prerequisites:** Draft and STYLE-GUIDE.md must exist
|
|
988
1004
|
|
|
@@ -1000,7 +1016,7 @@ Run all three quality passes in sequence. The comprehensive final polish before
|
|
|
1000
1016
|
|
|
1001
1017
|
**Description:** Write a scene, passage, or chapter outside the full planning workflow.
|
|
1002
1018
|
|
|
1003
|
-
**Usage:** `/scr:quick-write`
|
|
1019
|
+
**Usage:** `/scr:quick-write [--discuss] [--research] [--full]`
|
|
1004
1020
|
|
|
1005
1021
|
**Prerequisites:** None
|
|
1006
1022
|
|
|
@@ -1022,7 +1038,7 @@ Commands for reviewing your manuscript from different angles -- continuity, voic
|
|
|
1022
1038
|
|
|
1023
1039
|
**Description:** Automated continuity verification to scan for narrative contradictions across the manuscript.
|
|
1024
1040
|
|
|
1025
|
-
**Usage:** `/scr:continuity-check`
|
|
1041
|
+
**Usage:** `/scr:continuity-check [N]`
|
|
1026
1042
|
|
|
1027
1043
|
**Prerequisites:** Draft must exist
|
|
1028
1044
|
|
|
@@ -1043,7 +1059,7 @@ Find contradictions: "In Chapter 3 Maria has brown eyes, but in Chapter 7 they'r
|
|
|
1043
1059
|
|
|
1044
1060
|
**Description:** Compare drafted prose against STYLE-GUIDE.md to detect voice drift.
|
|
1045
1061
|
|
|
1046
|
-
**Usage:** `/scr:voice-check`
|
|
1062
|
+
**Usage:** `/scr:voice-check [N]`
|
|
1047
1063
|
|
|
1048
1064
|
**Prerequisites:** Draft and STYLE-GUIDE.md must exist
|
|
1049
1065
|
|
|
@@ -1064,7 +1080,7 @@ Detect where your drafted prose drifts from your established voice profile.
|
|
|
1064
1080
|
|
|
1065
1081
|
**Description:** Flag potential sensitivity issues with context, suggest alternatives, and note intentional craft.
|
|
1066
1082
|
|
|
1067
|
-
**Usage:** `/scr:sensitivity-review`
|
|
1083
|
+
**Usage:** `/scr:sensitivity-review [N]`
|
|
1068
1084
|
|
|
1069
1085
|
**Prerequisites:** Draft must exist
|
|
1070
1086
|
|
|
@@ -1086,7 +1102,7 @@ Flag content that could be unintentionally harmful, with context-aware suggestio
|
|
|
1086
1102
|
|
|
1087
1103
|
**Description:** Generate a structure-aware pacing report analyzing scene tempo and narrative flow.
|
|
1088
1104
|
|
|
1089
|
-
**Usage:** `/scr:pacing-analysis`
|
|
1105
|
+
**Usage:** `/scr:pacing-analysis [N]`
|
|
1090
1106
|
|
|
1091
1107
|
**Prerequisites:** Draft must exist
|
|
1092
1108
|
|
|
@@ -1104,7 +1120,7 @@ See where your story drags or rushes. Scriveno maps scene length, tension, and t
|
|
|
1104
1120
|
|
|
1105
1121
|
**Description:** Audit dialogue for character voice differentiation, attribution clarity, and talking-head detection.
|
|
1106
1122
|
|
|
1107
|
-
**Usage:** `/scr:dialogue-audit`
|
|
1123
|
+
**Usage:** `/scr:dialogue-audit [N]`
|
|
1108
1124
|
|
|
1109
1125
|
**Prerequisites:** Draft must exist with dialogue
|
|
1110
1126
|
|
|
@@ -1123,9 +1139,9 @@ Check that each character sounds distinct, dialogue tags are clear, and scenes a
|
|
|
1123
1139
|
|
|
1124
1140
|
### `/scr:beta-reader`
|
|
1125
1141
|
|
|
1126
|
-
**Description:** Simulate a beta reader's experience of the manuscript
|
|
1142
|
+
**Description:** Simulate a beta reader's experience of the manuscript using a fresh-context reader persona (same model, not a second or external AI).
|
|
1127
1143
|
|
|
1128
|
-
**Usage:** `/scr:beta-reader`
|
|
1144
|
+
**Usage:** `/scr:beta-reader [N] [--focus <area>]`
|
|
1129
1145
|
|
|
1130
1146
|
**Prerequisites:** Draft must exist
|
|
1131
1147
|
|
|
@@ -1147,7 +1163,7 @@ Get a simulated reader's reaction: what hooked them, where they got confused, wh
|
|
|
1147
1163
|
|
|
1148
1164
|
**Description:** Scan drafted prose for AI-generated patterns and unintentional similarity to published works.
|
|
1149
1165
|
|
|
1150
|
-
**Usage:** `/scr:originality-check`
|
|
1166
|
+
**Usage:** `/scr:originality-check [N]`
|
|
1151
1167
|
|
|
1152
1168
|
**Prerequisites:** Draft must exist
|
|
1153
1169
|
|
|
@@ -1243,7 +1259,7 @@ Get three blurb variations: punchy (Amazon listing), standard (back cover), exte
|
|
|
1243
1259
|
|
|
1244
1260
|
**Description:** Generate plot synopsis at specified length for query and submission packages.
|
|
1245
1261
|
|
|
1246
|
-
**Usage:** `/scr:synopsis`
|
|
1262
|
+
**Usage:** `/scr:synopsis [--length <1p|2p|5p>]`
|
|
1247
1263
|
|
|
1248
1264
|
**Prerequisites:** Complete draft must exist
|
|
1249
1265
|
|
|
@@ -1297,7 +1313,7 @@ Generate a full book proposal: overview, market analysis, chapter summaries, aut
|
|
|
1297
1313
|
|
|
1298
1314
|
**Description:** Generate reading group discussion questions exploring themes, characters, and craft.
|
|
1299
1315
|
|
|
1300
|
-
**Usage:** `/scr:discussion-questions`
|
|
1316
|
+
**Usage:** `/scr:discussion-questions [--count <N>]`
|
|
1301
1317
|
|
|
1302
1318
|
**Prerequisites:** Complete draft must exist
|
|
1303
1319
|
|
|
@@ -1462,7 +1478,7 @@ Build a poetry-submission DOCX for journal or contest submission using the poetr
|
|
|
1462
1478
|
|
|
1463
1479
|
**Description:** Run full publishing pipeline unattended with quality gate (voice-check + continuity-check).
|
|
1464
1480
|
|
|
1465
|
-
**Usage:** `/scr:autopilot-publish --preset <preset
|
|
1481
|
+
**Usage:** `/scr:autopilot-publish --preset <preset> [--front-level <minimum|balanced|maximum|skip>] [--back-level <minimum|balanced|maximum|skip>]`
|
|
1466
1482
|
|
|
1467
1483
|
**Prerequisites:** Complete draft must exist
|
|
1468
1484
|
|
|
@@ -1497,7 +1513,7 @@ Commands for generating cover art, scene illustrations, character references, ma
|
|
|
1497
1513
|
- `--trim <size>` -- Preferred trim shorthand for prompt framing
|
|
1498
1514
|
- `--kdp <trim_size>` -- Legacy alias for `--trim`
|
|
1499
1515
|
- `--series` -- Generate series-consistent cover
|
|
1500
|
-
- `--prompt-only` -- Generate prompts without
|
|
1516
|
+
- `--prompt-only` -- Generate prompts without packaging reminders
|
|
1501
1517
|
- `--element` -- Generate specific cover element
|
|
1502
1518
|
|
|
1503
1519
|
**Example:**
|