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/docs/configuration.md
CHANGED
|
@@ -57,22 +57,47 @@ When a writer runs `/scr:new-work`, Scriveno creates `.manuscript/config.json`.
|
|
|
57
57
|
|
|
58
58
|
```json
|
|
59
59
|
{
|
|
60
|
-
"scriveno_version": "2.0
|
|
60
|
+
"scriveno_version": "2.6.0",
|
|
61
61
|
"work_type": "<chosen>",
|
|
62
62
|
"group": "<group>",
|
|
63
63
|
"command_unit": "<unit>",
|
|
64
64
|
"developer_mode": false,
|
|
65
65
|
"created_at": "<ISO timestamp>",
|
|
66
|
+
"updated_at": "<ISO timestamp>",
|
|
66
67
|
"autopilot": {
|
|
67
68
|
"enabled": false,
|
|
68
|
-
"profile": "guided"
|
|
69
|
+
"profile": "guided",
|
|
70
|
+
"custom_checkpoints": []
|
|
71
|
+
},
|
|
72
|
+
"voice": {
|
|
73
|
+
"calibrated": false,
|
|
74
|
+
"last_calibration": null,
|
|
75
|
+
"drift_threshold": 0.3
|
|
76
|
+
},
|
|
77
|
+
"draft": {
|
|
78
|
+
"rigor": "standard",
|
|
79
|
+
"context_profile": "standard",
|
|
80
|
+
"pitfalls_enabled": true
|
|
81
|
+
},
|
|
82
|
+
"export": {
|
|
83
|
+
"default_format": "docx_manuscript",
|
|
84
|
+
"include_front_matter": true,
|
|
85
|
+
"include_back_matter": true
|
|
86
|
+
},
|
|
87
|
+
"translation": {
|
|
88
|
+
"source_language": "en",
|
|
89
|
+
"target_languages": []
|
|
90
|
+
},
|
|
91
|
+
"collaboration": {
|
|
92
|
+
"tracks_enabled": false,
|
|
93
|
+
"default_track": "canon"
|
|
69
94
|
}
|
|
70
95
|
}
|
|
71
96
|
```
|
|
72
97
|
|
|
73
98
|
That `scriveno_version` value should track the current package release and the live `/scr:new-work` contract, not an older milestone snapshot.
|
|
74
99
|
|
|
75
|
-
Every project gets those core keys. Additional blocks are added only when the work type requires them.
|
|
100
|
+
Every project gets those core keys and shared blocks (`autopilot`, `voice`, `draft`, `export`, `translation`, `collaboration`). The `voice.drift_threshold` default of 0.3 is the voice-drift gate: drift is `(100 - score) / 100`, so 0.3 offers a re-draft when the voice score falls below 70 (see [Drafter Quality](drafter-quality.md) and `agents/voice-checker.md`). Additional blocks are added only when the work type requires them: a `technical` block for technical writing, top-level sacred profile keys for sacred work types, and `platform` for work types with an inferred publishing target.
|
|
76
101
|
|
|
77
102
|
### Technical writing projects
|
|
78
103
|
|
package/docs/contributing.md
CHANGED
|
@@ -19,7 +19,7 @@ templates/ Base project templates + technical/ and sacred/ variants
|
|
|
19
19
|
templates/technical/ 6 technical-writing context variants
|
|
20
20
|
templates/sacred/ Sacred-specific context templates and tradition manifests
|
|
21
21
|
bin/install.js Multi-platform installer (Node.js)
|
|
22
|
-
docs/ Documentation suite (
|
|
22
|
+
docs/ Documentation suite (25 guides)
|
|
23
23
|
```
|
|
24
24
|
|
|
25
25
|
Key principle: the AI agent reads these files at runtime. There is no compilation, no bundling, no transpilation. If you can write markdown, you can contribute.
|
|
@@ -343,7 +343,7 @@ The export command (`commands/scr/export.md`) needs to know about your format. A
|
|
|
343
343
|
|
|
344
344
|
### Step 3: Add CONSTRAINTS.json entry (if restricted)
|
|
345
345
|
|
|
346
|
-
If your export format is only available for certain work types, add an entry to the `"
|
|
346
|
+
If your export format is only available for certain work types, add an entry to the `"exports"` section of CONSTRAINTS.json with an `available` array specifying which work type groups can use it (or `["all"]` for universal formats).
|
|
347
347
|
|
|
348
348
|
## Testing Your Changes
|
|
349
349
|
|
package/docs/drafter-quality.md
CHANGED
|
@@ -104,7 +104,7 @@ Rough guidance for matching settings to model class. The writer's experience wit
|
|
|
104
104
|
| Mid-tier (Sonnet 4.x, GPT-4 mini, Haiku 4.x) | Day-to-day drafting, most novels and screenplays | `standard` | `standard` |
|
|
105
105
|
| Budget (Haiku, GPT-3.5, local 7-13B) | Bulk drafting of short scenes, repetitive structural work | `strict` | `minimal` |
|
|
106
106
|
|
|
107
|
-
If voice fidelity drops below the writer's `voice.drift_threshold
|
|
107
|
+
If voice fidelity drops below the writer's `voice.drift_threshold` (a voice-checker score below 70 at the default 0.3, where drift is `(100 - score) / 100`), the first lever is `rigor: strict`. The second is to step up a model tier. The third is to recalibrate STYLE-GUIDE.md via `/scr:voice-test`.
|
|
108
108
|
|
|
109
109
|
## Token economy
|
|
110
110
|
|
package/docs/getting-started.md
CHANGED
|
@@ -22,12 +22,13 @@ npx scriveno@latest
|
|
|
22
22
|
|
|
23
23
|
This installs Scriveno into the runtime you choose. Command-directory and skills targets place files where the runtime expects them. Guided targets like Perplexity Desktop instead write setup assets and show the exact connector steps you need. Takes about 30 seconds.
|
|
24
24
|
|
|
25
|
-
Once installed, Claude Code uses flat `/scr-*` commands such as `/scr-help
|
|
25
|
+
Once installed, Claude Code uses flat `/scr-*` commands such as `/scr-help`, `/scr-first-run`, and `/scr-new-work`. Other command-directory runtimes currently keep `/scr:*`. Codex uses generated `$scr-*` skills such as `$scr-help`, `$scr-first-run`, and `$scr-new-work`. Guided targets explain their supported setup path directly in the generated setup files.
|
|
26
26
|
|
|
27
27
|
You can also ask Scriveno for a read-only project status from any terminal:
|
|
28
28
|
|
|
29
29
|
```
|
|
30
30
|
scriveno status --project .
|
|
31
|
+
scriveno first-run --project .
|
|
31
32
|
scriveno status . --json
|
|
32
33
|
scriveno status --project . --apply-safe
|
|
33
34
|
scriveno sync --check
|
|
@@ -37,6 +38,8 @@ That status command is the same shared auto-invoke engine used by `/scr-next`, `
|
|
|
37
38
|
|
|
38
39
|
Use `--apply-safe` when you want Scriveno to run the read-only checks and show which helpers are safe, skipped, or agent-ready. Use `sync --check` when you want the installed runtime surfaces checked too.
|
|
39
40
|
|
|
41
|
+
If you want one guided proof path instead of separate checks, start with `scriveno first-run --project .`.
|
|
42
|
+
|
|
40
43
|
## Step 2: Explore the Demo (Optional)
|
|
41
44
|
|
|
42
45
|
Not sure what Scriveno does? Try the demo before starting your own project:
|
package/docs/proof-artifacts.md
CHANGED
|
@@ -5,6 +5,7 @@ This document is the canonical index of Scriveno's proof layer. It points to con
|
|
|
5
5
|
## Start Here
|
|
6
6
|
|
|
7
7
|
- Read **Quick Proof** if you want one 10-minute route through installation checks, demo inspection, runtime command shapes, and the next draft command.
|
|
8
|
+
- Read **First-Run Proof** if you want the committed transcript artifact for `/scr:first-run`, `scriveno first-run --project .`, runtime smoke, and the demo flow.
|
|
8
9
|
- Read the **Watchmaker Sample Flow** if you want one end-to-end writing workflow from setup through drafts, review, and next step.
|
|
9
10
|
- Read **Voice DNA** if you want the shortest possible proof of how style guidance changes output on the same brief.
|
|
10
11
|
- Read **Creative Context** if you want to see one craft choice travel through discuss, plan, draft, and review artifacts.
|
|
@@ -32,6 +33,14 @@ This document is the canonical index of Scriveno's proof layer. It points to con
|
|
|
32
33
|
|
|
33
34
|
Start with the proof bundle if you want the curated version. Follow the underlying files if you want to inspect the raw sample directly.
|
|
34
35
|
|
|
36
|
+
## First-Run Proof
|
|
37
|
+
|
|
38
|
+
**What it proves:** Scriveno has an executable first-run guide and committed transcript artifacts for the first proof path.
|
|
39
|
+
|
|
40
|
+
**Canonical artifact:** [data/proof/first-run/README.md](../data/proof/first-run/README.md)
|
|
41
|
+
|
|
42
|
+
**Related parity artifact:** [data/proof/runtime-parity/README.md](../data/proof/runtime-parity/README.md)
|
|
43
|
+
|
|
35
44
|
## Voice DNA
|
|
36
45
|
|
|
37
46
|
**What it proves:** Scriveno's style-guide layer changes draft behavior in visible ways when the same brief is written unguided versus guided.
|
|
@@ -57,6 +66,8 @@ Read the bundle in order if you want to inspect sentence rhythm, metaphor select
|
|
|
57
66
|
- [Shipped Assets](shipped-assets.md) -- canonical inventory of the trust-critical files Scriveno actually bundles
|
|
58
67
|
- [Quick Proof](quick-proof.md) -- 10-minute proof-first path through install checks, the demo, and the next draft
|
|
59
68
|
- [Starter Sets](starter-sets.md) -- small command sets by writing goal
|
|
69
|
+
- [data/proof/first-run/README.md](../data/proof/first-run/README.md) -- committed first-run transcript artifact
|
|
70
|
+
- [data/proof/runtime-parity/README.md](../data/proof/runtime-parity/README.md) -- runtime surface evidence and host-parity boundary
|
|
60
71
|
- [Runtime Support](runtime-support.md) -- canonical runtime matrix and installer-baseline framing
|
|
61
72
|
- [Auto-Invoke Policy](auto-invoke-policy.md) -- proactive status, safe apply, local-helper, and agent-spawn boundaries
|
|
62
73
|
- [Route Graph Audit](route-graph.md) -- generated route graph, automation lanes, and priority fixtures
|
package/docs/quick-proof.md
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
# Quick Proof
|
|
2
2
|
|
|
3
|
-
This is the shortest proof-first path through Scriveno. It is meant for a fresh user who wants to see real shipped artifacts, a demo manuscript, runtime expectations, and the first practical commands before reading the full manual.
|
|
3
|
+
This is the shortest proof-first path through Scriveno. It is meant for a fresh user who wants to see real shipped artifacts, a demo manuscript, runtime expectations, and the first practical commands before reading the full manual. If your runtime supports Scriveno commands, the executable version of this page is `/scr:first-run`.
|
|
4
4
|
|
|
5
5
|
## What This Proves
|
|
6
6
|
|
|
7
7
|
- Scriveno ships inspectable proof bundles, not only feature claims.
|
|
8
|
+
- Scriveno ships `/scr:first-run` and `scriveno first-run --project .` as guided first-run surfaces.
|
|
8
9
|
- The watchmaker demo includes real manuscript state, drafts, review notes, and a planned next unit.
|
|
9
10
|
- Voice DNA changes output on the same brief, with guided and unguided samples side by side.
|
|
10
11
|
- Runtime behavior is explicit: Claude Code is the primary reference runtime, Codex uses generated `$scr-*` skills, standard slash-command targets use `/scr:*`, and guided targets document their local setup path.
|
|
@@ -27,31 +28,35 @@ node bin/install.js --runtimes claude-code,cursor,gemini-cli,codex,opencode,copi
|
|
|
27
28
|
### 2. Check The Installed Surface
|
|
28
29
|
|
|
29
30
|
```bash
|
|
31
|
+
scriveno first-run --project .
|
|
30
32
|
scriveno status --project .
|
|
31
33
|
scriveno smoke --json
|
|
32
34
|
scriveno agents --json
|
|
33
35
|
scriveno routes --json
|
|
34
36
|
```
|
|
35
37
|
|
|
36
|
-
Expected result: the commands report installed surfaces, agent prompt availability, route lanes, and any manual gates. They do not mutate manuscript files.
|
|
38
|
+
Expected result: the commands report the recommended first path, installed surfaces, agent prompt availability, route lanes, and any manual gates. They do not mutate manuscript files.
|
|
37
39
|
|
|
38
40
|
### 3. Open The Demo
|
|
39
41
|
|
|
40
42
|
Claude Code:
|
|
41
43
|
|
|
42
44
|
```text
|
|
45
|
+
/scr-first-run
|
|
43
46
|
/scr-demo
|
|
44
47
|
```
|
|
45
48
|
|
|
46
49
|
Standard slash-command runtimes:
|
|
47
50
|
|
|
48
51
|
```text
|
|
52
|
+
/scr:first-run
|
|
49
53
|
/scr:demo
|
|
50
54
|
```
|
|
51
55
|
|
|
52
56
|
Codex:
|
|
53
57
|
|
|
54
58
|
```text
|
|
59
|
+
$scr-first-run
|
|
55
60
|
$scr-demo
|
|
56
61
|
```
|
|
57
62
|
|
|
@@ -72,6 +77,8 @@ Start here:
|
|
|
72
77
|
- [data/proof/watchmaker-flow/README.md](../data/proof/watchmaker-flow/README.md)
|
|
73
78
|
- [data/proof/voice-dna/README.md](../data/proof/voice-dna/README.md)
|
|
74
79
|
- [data/proof/creative-context/README.md](../data/proof/creative-context/README.md)
|
|
80
|
+
- [data/proof/first-run/README.md](../data/proof/first-run/README.md)
|
|
81
|
+
- [data/proof/runtime-parity/README.md](../data/proof/runtime-parity/README.md)
|
|
75
82
|
|
|
76
83
|
The fastest comparison is the Voice DNA pair:
|
|
77
84
|
|
|
@@ -147,6 +154,18 @@ Candidate local helpers: scan, save
|
|
|
147
154
|
Manual gates: writer approval before publishing or overwriting exports
|
|
148
155
|
```
|
|
149
156
|
|
|
157
|
+
```text
|
|
158
|
+
> scriveno first-run --project .
|
|
159
|
+
Scriveno first-run guide
|
|
160
|
+
Current recommendation: /scr:new-work
|
|
161
|
+
Recommended first path:
|
|
162
|
+
1. /scr:demo
|
|
163
|
+
2. cd scriveno-demo
|
|
164
|
+
3. /scr:next
|
|
165
|
+
4. /scr:draft 5
|
|
166
|
+
5. /scr:editor-review 5
|
|
167
|
+
```
|
|
168
|
+
|
|
150
169
|
```text
|
|
151
170
|
> /scr:draft 5
|
|
152
171
|
Loaded STYLE-GUIDE.md and the plan for unit 5.
|
|
@@ -169,6 +188,8 @@ No runtime claim here should be read as host-runtime parity proof. The repo prov
|
|
|
169
188
|
## Where To Go Next
|
|
170
189
|
|
|
171
190
|
- [Starter Sets](starter-sets.md) for small command paths by writing goal
|
|
191
|
+
- [data/proof/first-run/README.md](../data/proof/first-run/README.md) for committed first-run transcripts
|
|
192
|
+
- [data/proof/runtime-parity/README.md](../data/proof/runtime-parity/README.md) for runtime parity evidence
|
|
172
193
|
- [Getting Started](getting-started.md) for the complete first-project walkthrough
|
|
173
194
|
- [Proof Artifacts](proof-artifacts.md) for the proof hub
|
|
174
195
|
- [Runtime Support](runtime-support.md) for installation and support levels
|
package/docs/release-notes.md
CHANGED
|
@@ -2,6 +2,67 @@
|
|
|
2
2
|
|
|
3
3
|
This document is the public-facing summary of what changed between package releases. For package history, see the root [CHANGELOG](../CHANGELOG.md).
|
|
4
4
|
|
|
5
|
+
## 2.6.0 - 2026-05-29
|
|
6
|
+
|
|
7
|
+
### What changed
|
|
8
|
+
|
|
9
|
+
- Fixed a Pandoc-variable mismatch so RTL, CJK, and non-Latin fonts now reach the print and PDF path; added RTL support to the picturebook and stageplay templates (all four interior templates verified with `dir=rtl`).
|
|
10
|
+
- Made the voice-drift gate functional: `agents/voice-checker.md` now defines `drift = (100 - score) / 100`, so the default `voice.drift_threshold` of 0.3 means a re-draft is offered below a voice score of 70.
|
|
11
|
+
- Kept `/scr:autopilot-publish` fully unattended and advisory; a severe voice failure is surfaced loudly rather than halting the run.
|
|
12
|
+
- Corrected `/scr:quick-write` and `/scr:beta-reader` framing to match what they actually do.
|
|
13
|
+
- Marked the translation and illustration API tables as future targets, not shipped behavior.
|
|
14
|
+
- Audited and fixed documentation drift across the suite: command reference usage lines, the configuration baseline, the architecture file tree, voice-dna part numbering, the missing speech work type, and stale counts.
|
|
15
|
+
- Added `lib/track-safety.js` with adversarial tests, and `argument-hint` to 17 commands.
|
|
16
|
+
|
|
17
|
+
### Why it matters
|
|
18
|
+
|
|
19
|
+
This release closes the gap between what Scriveno documented and what it shipped. The export fix makes RTL and non-Latin print output actually work, the voice gate is now a real computed check instead of a phantom threshold, and the documentation no longer claims integrations or behavior that the prompt system does not provide.
|
|
20
|
+
|
|
21
|
+
### Affected areas
|
|
22
|
+
|
|
23
|
+
- export and print templates (RTL, CJK, fonts)
|
|
24
|
+
- voice-checker drift mapping and autopilot gates
|
|
25
|
+
- translation and illustration honesty
|
|
26
|
+
- documentation suite (command reference, configuration, architecture, voice-dna, README)
|
|
27
|
+
- track-safety helper and command argument hints
|
|
28
|
+
- package metadata and release-alignment tests
|
|
29
|
+
|
|
30
|
+
## 2.5.0 - 2026-05-16
|
|
31
|
+
|
|
32
|
+
### What changed
|
|
33
|
+
|
|
34
|
+
- Scriveno now ships `/scr:first-run`, an executable first-run path through install checks, demo proof, starter choices, and next commands.
|
|
35
|
+
- The public CLI now supports `scriveno first-run --project .`, giving terminal users the same proof path without relying on host-specific slash-command behavior.
|
|
36
|
+
- First-run guidance is connected to `/scr:help`, `/scr:demo`, Quick Proof, Starter Sets, Runtime Support, Shipped Assets, Command Reference, README launch copy, and architecture docs.
|
|
37
|
+
- Scriveno now includes committed first-run and runtime-parity proof bundles under `data/proof/`.
|
|
38
|
+
- Runtime smoke now validates the 113-command installed surface across Claude Code, Codex, Cursor, Gemini CLI, OpenCode, GitHub Copilot, Windsurf, Antigravity, Manus, Perplexity Desktop, and the generic fallback.
|
|
39
|
+
- README badges, package metadata, constraints metadata, generated config metadata, changelog, release notes, configuration docs, route graph docs, architecture docs, proof docs, and release tests are aligned on `2.5.0`.
|
|
40
|
+
|
|
41
|
+
### Why it matters
|
|
42
|
+
|
|
43
|
+
The previous release documented a stronger proof path. This release makes that path executable. A new writer can install Scriveno, run one first-run command, inspect proof artifacts, create the demo, and move into drafting without having to assemble the path from documentation.
|
|
44
|
+
|
|
45
|
+
### Affected areas
|
|
46
|
+
|
|
47
|
+
- first-run command surface
|
|
48
|
+
- public CLI installer and smoke checks
|
|
49
|
+
- proof artifact bundles
|
|
50
|
+
- README badges and launch copy
|
|
51
|
+
- runtime support matrix
|
|
52
|
+
- command reference and route graph docs
|
|
53
|
+
- package metadata and generated project examples
|
|
54
|
+
- release-alignment tests
|
|
55
|
+
|
|
56
|
+
### Verification
|
|
57
|
+
|
|
58
|
+
- `npm run policy:check`
|
|
59
|
+
- `node --test test/first-run-proof-surface.test.js test/adaptive-concierge.test.js test/auto-invoke-engine.test.js test/command-surface-coherence.test.js test/collaboration-trust-surface.test.js test/package.test.js test/phase15-proof-artifacts-positioning.test.js`
|
|
60
|
+
- `npm test`
|
|
61
|
+
- `npm run release:check`
|
|
62
|
+
- `git diff --check`
|
|
63
|
+
- `scriveno first-run --project .`
|
|
64
|
+
- `scriveno smoke --json`
|
|
65
|
+
|
|
5
66
|
## 2.0.12 - 2026-05-16
|
|
6
67
|
|
|
7
68
|
### What changed
|
package/docs/route-graph.md
CHANGED
|
@@ -13,9 +13,9 @@ The text report summarizes command count, graph edges, agent-capable routes, loc
|
|
|
13
13
|
|
|
14
14
|
## Current Shape
|
|
15
15
|
|
|
16
|
-
As of `2.0
|
|
16
|
+
As of `2.6.0`, the route graph contains:
|
|
17
17
|
|
|
18
|
-
-
|
|
18
|
+
- 113 commands
|
|
19
19
|
- intent-order edges from `command_intents`
|
|
20
20
|
- dependency-chain edges from `dependencies.core_chain`
|
|
21
21
|
- automation lanes from `getCommandAutomationPolicy()`
|
package/docs/runtime-support.md
CHANGED
|
@@ -69,12 +69,13 @@ Node is not a runtime dependency for Scriveno's markdown command system itself.
|
|
|
69
69
|
|
|
70
70
|
Scriveno docs use `/scr:*` as the shared command id format unless a host-specific example is needed. Installed command surfaces differ by runtime:
|
|
71
71
|
|
|
72
|
-
- Claude Code: `/scr-demo`, `/scr-new-work`, `/scr-next`
|
|
73
|
-
- Standard command-directory runtimes: `/scr:demo`, `/scr:new-work`, `/scr:next`
|
|
74
|
-
- Codex: `$scr-demo`, `$scr-new-work`, `$scr-next`
|
|
72
|
+
- Claude Code: `/scr-first-run`, `/scr-demo`, `/scr-new-work`, `/scr-next`
|
|
73
|
+
- Standard command-directory runtimes: `/scr:first-run`, `/scr:demo`, `/scr:new-work`, `/scr:next`
|
|
74
|
+
- Codex: `$scr-first-run`, `$scr-demo`, `$scr-new-work`, `$scr-next`
|
|
75
75
|
- Guided targets: follow the generated setup instructions and connector recipe
|
|
76
76
|
|
|
77
77
|
Use [Quick Proof](quick-proof.md) for the 10-minute proof route and [Starter Sets](starter-sets.md) for goal-based command paths.
|
|
78
|
+
Use [Runtime Parity Evidence](../data/proof/runtime-parity/README.md) for the committed boundary between install-surface proof and host-runtime parity proof.
|
|
78
79
|
|
|
79
80
|
## Shared Auto-Invoke Engine
|
|
80
81
|
|
package/docs/sacred-texts.md
CHANGED
|
@@ -292,5 +292,5 @@ Here is a quick walkthrough for starting a sacred writing project:
|
|
|
292
292
|
## See Also
|
|
293
293
|
|
|
294
294
|
- [Getting Started](getting-started.md) -- Install Scriveno and create your first project
|
|
295
|
-
- [Command Reference](command-reference.md) -- Full reference for all
|
|
295
|
+
- [Command Reference](command-reference.md) -- Full reference for all 113 commands, including the [Sacred Exclusive](command-reference.md#sacred-exclusive) section
|
|
296
296
|
- [README](../README.md) -- Project overview and feature list
|
package/docs/shipped-assets.md
CHANGED
|
@@ -123,6 +123,8 @@ Sacred commands read top-level sacred profile keys in new projects and preserve
|
|
|
123
123
|
- `docs/configuration.md` -- canonical project config and package metadata reference
|
|
124
124
|
- `data/proof/watchmaker-flow/README.md` -- canonical sample-flow proof bundle rooted in shipped demo files
|
|
125
125
|
- `data/proof/voice-dna/README.md` -- canonical Voice DNA proof bundle
|
|
126
|
+
- `data/proof/first-run/README.md` -- committed transcript artifact for the executable first-run path
|
|
127
|
+
- `data/proof/runtime-parity/README.md` -- runtime install-surface evidence and host-parity boundary
|
|
126
128
|
- `commands/scr/export.md` -- source of truth for export command behavior
|
|
127
129
|
- `docs/publishing.md` -- user-facing explanation of export formats and publishing packages
|
|
128
130
|
- `docs/contributing.md` -- contributor-facing guidance for extending export support
|
package/docs/starter-sets.md
CHANGED
|
@@ -4,6 +4,14 @@ Scriveno has a large command surface because it covers many kinds of writing. St
|
|
|
4
4
|
|
|
5
5
|
Each set is intentionally small. Use `/scr-next`, `/scr:next`, or `$scr-next` whenever you are unsure which command should come next.
|
|
6
6
|
|
|
7
|
+
## First 10 Minutes
|
|
8
|
+
|
|
9
|
+
- `/scr:first-run` runs the guided proof path and shows runtime-specific command shapes.
|
|
10
|
+
- `/scr:demo` creates the isolated watchmaker demo.
|
|
11
|
+
- `/scr:next` inspects the demo state and recommends the next move.
|
|
12
|
+
- `/scr:draft` drafts the planned fifth unit.
|
|
13
|
+
- `/scr:editor-review` reviews the new draft.
|
|
14
|
+
|
|
7
15
|
## Draft A Book
|
|
8
16
|
|
|
9
17
|
- `/scr:new-work` creates the project and work-type context.
|
package/docs/translation.md
CHANGED
|
@@ -2,17 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
Scriveno translates your manuscript into any language while preserving your voice. The translation pipeline handles glossary management, translation memory, cultural adaptation, quality verification, and multi-language publishing -- from setup to finished translated editions.
|
|
4
4
|
|
|
5
|
-
This guide covers the full pipeline:
|
|
5
|
+
This guide covers the full pipeline: how translation works, translating your manuscript, managing terminology, verifying quality, and publishing in multiple languages.
|
|
6
6
|
|
|
7
|
-
## Translation
|
|
7
|
+
## Translation approach
|
|
8
8
|
|
|
9
|
-
Scriveno
|
|
9
|
+
Scriveno translates through the in-context translator agent (`agents/translator.md`), not an external translation API. The agent itself handles literary nuance, sacred-text registers, and cultural adaptation that machine-translation services miss. It applies your voice profile, maintains glossary compliance, and can do formal or dynamic equivalence translation. Every unit is translated by the translator agent in fresh context with your STYLE-GUIDE.md loaded.
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
**Google Cloud Translation** -- Broad language coverage with 130+ languages. Required for Arabic, Hebrew, Hindi, Swahili, and other languages DeepL does not cover. Best choice for RTL scripts and languages with limited DeepL support.
|
|
14
|
-
|
|
15
|
-
**AI Agent (Claude/GPT)** -- The AI agent itself handles literary nuance, sacred text translation, and cultural adaptation that machine translation APIs miss. It applies your voice profile, maintains glossary compliance, and can do formal/dynamic equivalence translation. This is Scriveno's default for literary content -- every unit is translated by the translator agent with your STYLE-GUIDE.md loaded.
|
|
11
|
+
DeepL and Google Cloud Translation are documented as possible future integration targets, not current behavior. Scriveno does not call either service today; if an automated machine-translation path is added later, this guide will describe how it plugs in.
|
|
16
12
|
|
|
17
13
|
The translator agent works unit by unit in fresh context (just like the drafter), ensuring consistent quality and glossary compliance across the entire manuscript.
|
|
18
14
|
|
|
@@ -171,7 +167,7 @@ The TMX export produces industry-standard Translation Memory eXchange format com
|
|
|
171
167
|
|
|
172
168
|
## Cultural Adaptation
|
|
173
169
|
|
|
174
|
-
|
|
170
|
+
Translation handles words. Cultural adaptation handles meaning. Scriveno flags culturally sensitive content that needs deliberate attention beyond a faithful unit-by-unit rendering.
|
|
175
171
|
|
|
176
172
|
```
|
|
177
173
|
/scr:cultural-adaptation fr
|
|
@@ -247,8 +243,8 @@ Scriveno handles right-to-left and CJK (Chinese, Japanese, Korean) scripts throu
|
|
|
247
243
|
|
|
248
244
|
RTL languages (Arabic, Hebrew, Persian, Urdu) receive special handling:
|
|
249
245
|
|
|
250
|
-
- **Text direction** -- Export commands
|
|
251
|
-
- **Template adjustments** -- The Typst book template reverses inside/outside margins for RTL binding
|
|
246
|
+
- **Text direction** -- Export commands pass the Pandoc `dir` variable (`dir=rtl`); the Typst interior templates read that `dir` variable to orient text
|
|
247
|
+
- **Template adjustments** -- The Typst interior templates honor RTL: the book template reverses inside/outside margins for RTL binding, and the stageplay template flips its binding margin and page-number alignment. The chapbook and picturebook templates set text direction from the `dir` variable.
|
|
252
248
|
- **Font requirements** -- RTL exports need fonts with Arabic/Hebrew glyph support. Scriveno uses system-available fonts by default; specify custom fonts in `.manuscript/config.json`
|
|
253
249
|
- **Punctuation** -- Quotation marks use the appropriate convention (e.g., French-style guillemets for Arabic)
|
|
254
250
|
|
package/docs/voice-dna.md
CHANGED
|
@@ -138,7 +138,7 @@ This section governs the speed and flow of narrative.
|
|
|
138
138
|
- **Between chapters** -- Cliffhangers, echoes, or clean breaks
|
|
139
139
|
- **Time jumps** -- How they're signaled, how frequent, how handled
|
|
140
140
|
|
|
141
|
-
### Part
|
|
141
|
+
### Part 8: Reference Influences
|
|
142
142
|
|
|
143
143
|
This section captures the authors, works, and passages that anchor your voice.
|
|
144
144
|
|
|
@@ -210,7 +210,7 @@ The 10 registers are:
|
|
|
210
210
|
| **Parabolic** | Allegorical, story-within-story | "The kingdom of heaven is like..." concrete daily-life imagery |
|
|
211
211
|
| **Didactic** | Instructional, systematic, expository | Topic-by-topic structure, teacher-student dynamic, Q&A format |
|
|
212
212
|
|
|
213
|
-
Each unit's plan file specifies which register to use. Your STYLE-GUIDE.md Part 8
|
|
213
|
+
Each unit's plan file specifies which register to use. Your STYLE-GUIDE.md "Sacred voice registers" part (Part 8 in the shipped template) describes how YOU handle each register -- the drafter always defers to your personalized register style over the generic descriptions.
|
|
214
214
|
|
|
215
215
|
If no register is specified in a plan file, the drafter defaults to narrative-historical.
|
|
216
216
|
|
|
@@ -276,7 +276,7 @@ See [docs/drafter-quality.md](drafter-quality.md) for the full system, including
|
|
|
276
276
|
### Too many metaphors / not enough metaphors
|
|
277
277
|
|
|
278
278
|
**Symptom:** Prose is either overwritten or too bare.
|
|
279
|
-
**Fix:** Adjust metaphor density in STYLE-GUIDE.md Part
|
|
279
|
+
**Fix:** Adjust metaphor density in STYLE-GUIDE.md Part 3 (vocabulary and figurative language). "Sparse" means one metaphor per page at most. "Dense" means multiple per paragraph. Find your natural density by looking at your existing writing.
|
|
280
280
|
|
|
281
281
|
### AI-sounding hedging
|
|
282
282
|
|
|
@@ -293,5 +293,5 @@ See [docs/drafter-quality.md](drafter-quality.md) for the full system, including
|
|
|
293
293
|
- [Proof Artifacts](proof-artifacts.md) -- inspect the Voice DNA before/after bundle first if you want the fastest concrete evidence
|
|
294
294
|
- [Getting Started](getting-started.md) -- Install Scriveno and write your first draft
|
|
295
295
|
- [Drafter Quality](drafter-quality.md) -- the three rule layers, the `draft` config block, and model-tier recommendations
|
|
296
|
-
- [Command Reference](command-reference.md) -- Full list of all
|
|
296
|
+
- [Command Reference](command-reference.md) -- Full list of all 113 commands with usage and examples
|
|
297
297
|
- [Work Types Guide](work-types.md) -- How work types adapt Scriveno's vocabulary and commands
|
package/docs/work-types.md
CHANGED
|
@@ -335,5 +335,5 @@ Your work type is stored in `.manuscript/config.json` and can be changed later b
|
|
|
335
335
|
## See Also
|
|
336
336
|
|
|
337
337
|
- [Getting Started](getting-started.md) -- Install Scriveno and write your first draft
|
|
338
|
-
- [Command Reference](command-reference.md) -- Full list of all
|
|
338
|
+
- [Command Reference](command-reference.md) -- Full list of all 113 commands with usage and examples
|
|
339
339
|
- [Voice DNA Guide](voice-dna.md) -- How Scriveno profiles and preserves your writing voice
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
// lib/track-safety.js
|
|
2
|
+
// Canonical, dependency-free slug + branch derivation for /scr:track (D-01).
|
|
3
|
+
//
|
|
4
|
+
// The track.md prompt instructs the agent to slugify a writer-provided track
|
|
5
|
+
// label before it ever touches a git or shell command. This module is the
|
|
6
|
+
// single source of truth for that algorithm. The installer copies lib/ into the
|
|
7
|
+
// writer's data dir, so it ships as <data-dir>/lib/track-safety.js and a runtime
|
|
8
|
+
// can derive a guaranteed-safe slug deterministically instead of relying on the
|
|
9
|
+
// model to apply the rules by hand:
|
|
10
|
+
//
|
|
11
|
+
// node <data-dir>/lib/track-safety.js "Editor's Suggestions"
|
|
12
|
+
// -> {"slug":"editors-suggestions","branch":"track/editors-suggestions"}
|
|
13
|
+
//
|
|
14
|
+
// Safety property: a sanitized slug contains only [a-z0-9-]. It can never carry
|
|
15
|
+
// a shell metacharacter, quote, whitespace, path separator, or command
|
|
16
|
+
// substitution, so interpolating `track/<slug>` into a git command line is safe.
|
|
17
|
+
|
|
18
|
+
'use strict';
|
|
19
|
+
|
|
20
|
+
// A slug is shell-safe iff it is a non-empty run of lowercase alphanumerics and
|
|
21
|
+
// hyphens with no leading/trailing hyphen.
|
|
22
|
+
const SLUG_SAFE = /^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/;
|
|
23
|
+
const FALLBACK_SLUG = 'untitled';
|
|
24
|
+
|
|
25
|
+
// Apply the D-01 rules: lowercase, whitespace/underscores to hyphen, strip
|
|
26
|
+
// everything that is not [a-z0-9-], collapse hyphen runs, trim edge hyphens.
|
|
27
|
+
// Returns FALLBACK_SLUG when the label has no usable characters (e.g. "***",
|
|
28
|
+
// "日本", "") so the caller never produces an empty branch name.
|
|
29
|
+
function sanitizeTrackSlug(label) {
|
|
30
|
+
const slug = String(label == null ? '' : label)
|
|
31
|
+
.toLowerCase()
|
|
32
|
+
.replace(/[\s_]+/g, '-')
|
|
33
|
+
.replace(/[^a-z0-9-]+/g, '')
|
|
34
|
+
.replace(/-+/g, '-')
|
|
35
|
+
.replace(/^-+|-+$/g, '');
|
|
36
|
+
return slug.length > 0 ? slug : FALLBACK_SLUG;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
function isShellSafeSlug(slug) {
|
|
40
|
+
return typeof slug === 'string' && SLUG_SAFE.test(slug);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// Resolve a collision-free branch name. `existingBranches` is the set of branch
|
|
44
|
+
// names already present in the repo (e.g. parsed from `git branch`). Mirrors
|
|
45
|
+
// track.md create-step 6: append -2, -3, ... to the slug until the branch name
|
|
46
|
+
// is free.
|
|
47
|
+
function resolveTrackBranch(label, existingBranches = []) {
|
|
48
|
+
const taken = new Set(existingBranches);
|
|
49
|
+
const baseSlug = sanitizeTrackSlug(label);
|
|
50
|
+
let slug = baseSlug;
|
|
51
|
+
let n = 2;
|
|
52
|
+
while (taken.has(`track/${slug}`)) {
|
|
53
|
+
slug = `${baseSlug}-${n}`;
|
|
54
|
+
n += 1;
|
|
55
|
+
}
|
|
56
|
+
return { slug, branch: `track/${slug}` };
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
module.exports = {
|
|
60
|
+
sanitizeTrackSlug,
|
|
61
|
+
isShellSafeSlug,
|
|
62
|
+
resolveTrackBranch,
|
|
63
|
+
FALLBACK_SLUG,
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
if (require.main === module) {
|
|
67
|
+
const label = process.argv[2] || '';
|
|
68
|
+
const existing = process.argv[3]
|
|
69
|
+
? process.argv[3].split(',').map((s) => s.trim()).filter(Boolean)
|
|
70
|
+
: [];
|
|
71
|
+
process.stdout.write(JSON.stringify(resolveTrackBranch(label, existing)) + '\n');
|
|
72
|
+
}
|
package/package.json
CHANGED
package/templates/config.json
CHANGED