scriveno 2.0.11 → 2.0.12
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 +11 -6
- package/commands/scr/new-work.md +1 -1
- package/data/CONSTRAINTS.json +1 -1
- package/docs/configuration.md +1 -1
- package/docs/contributing.md +7 -2
- package/docs/development.md +15 -3
- package/docs/getting-started.md +5 -3
- package/docs/proof-artifacts.md +5 -0
- package/docs/quick-proof.md +174 -0
- package/docs/release-checklist.md +117 -0
- package/docs/release-notes.md +36 -0
- package/docs/route-graph.md +1 -1
- package/docs/runtime-support.md +13 -0
- package/docs/shipped-assets.md +3 -0
- package/docs/starter-sets.md +74 -0
- package/docs/testing.md +18 -3
- package/package.json +4 -2
- package/scripts/check-writing-policy.js +86 -0
- package/templates/config.json +1 -1
package/README.md
CHANGED
|
@@ -2,13 +2,15 @@
|
|
|
2
2
|
|
|
3
3
|
[](https://github.com/aihxp/scriveno/actions/workflows/ci.yml)
|
|
4
4
|
[](LICENSE)
|
|
5
|
-
[](CHANGELOG.md)
|
|
6
6
|
[](https://www.npmjs.com/package/scriveno)
|
|
7
7
|
[](https://www.npmjs.com/package/scriveno)
|
|
8
8
|
[](docs/runtime-support.md#shared-auto-invoke-engine)
|
|
9
9
|
[](docs/auto-invoke-policy.md)
|
|
10
10
|
[](docs/runtime-support.md#runtime-smoke-and-agent-checks)
|
|
11
11
|
[](docs/auto-invoke-policy.md#safe-apply-and-audit-commands)
|
|
12
|
+
[](docs/quick-proof.md)
|
|
13
|
+
[](docs/starter-sets.md)
|
|
12
14
|
|
|
13
15
|
**[scriveno on npm](https://www.npmjs.com/package/scriveno)**
|
|
14
16
|
|
|
@@ -18,7 +20,7 @@
|
|
|
18
20
|
|
|
19
21
|
Scriveno brings spec-driven workflows to longform writing. It runs inside your AI coding agent (Claude Code, Cursor, Gemini CLI, and more) and also ships a guided Perplexity Desktop setup path for file-aware support without overstating parity.
|
|
20
22
|
|
|
21
|
-
Scriveno is best understood as **AI-native longform writing software built around voice preservation**. Its core promise is narrow and high-stakes: drafted prose should sound like the writer, not like AI. If you want evidence before features, start with the [Proof Artifacts](docs/proof-artifacts.md).
|
|
23
|
+
Scriveno is best understood as **AI-native longform writing software built around voice preservation**. Its core promise is narrow and high-stakes: drafted prose should sound like the writer, not like AI. If you want evidence before features, start with the [Quick Proof](docs/quick-proof.md), then inspect the [Proof Artifacts](docs/proof-artifacts.md).
|
|
22
24
|
|
|
23
25
|
```bash
|
|
24
26
|
npx scriveno@latest
|
|
@@ -72,7 +74,7 @@ $scr-help
|
|
|
72
74
|
|
|
73
75
|
If you only ever type `/scr-next` in Claude Code, you can complete an entire novel. It always knows what's next.
|
|
74
76
|
|
|
75
|
-
If you want the shortest proof-first route, read [Proof
|
|
77
|
+
If you want the shortest proof-first route, read [Quick Proof](docs/quick-proof.md) before exploring the rest of the docs. If you want a small command path for your goal, use [Starter Sets](docs/starter-sets.md).
|
|
76
78
|
|
|
77
79
|
---
|
|
78
80
|
|
|
@@ -190,6 +192,8 @@ Scriveno is built on five principles:
|
|
|
190
192
|
## Documentation
|
|
191
193
|
|
|
192
194
|
- [Proof Artifacts](docs/proof-artifacts.md) -- Canonical proof hub for the watchmaker sample flow and Voice DNA before/after bundle
|
|
195
|
+
- [Quick Proof](docs/quick-proof.md) -- 10-minute proof-first route through install checks, the demo, and the next draft
|
|
196
|
+
- [Starter Sets](docs/starter-sets.md) -- Small command paths for drafting, polishing, publishing, translation, sacred commentary, and repair
|
|
193
197
|
- [Getting Started](docs/getting-started.md) -- Install to first draft in 10 minutes
|
|
194
198
|
- [Command Reference](docs/command-reference.md) -- All 112 commands with usage, flags, and examples
|
|
195
199
|
- [Work Types Guide](docs/work-types.md) -- How 50 work types adapt Scriveno's vocabulary
|
|
@@ -205,6 +209,7 @@ Scriveno is built on five principles:
|
|
|
205
209
|
- [Route Graph Audit](docs/route-graph.md) -- Generated route graph, automation lanes, and priority fixtures
|
|
206
210
|
- [Development](docs/development.md) -- Contributor workflow for changing commands, templates, installer logic, and docs
|
|
207
211
|
- [Testing](docs/testing.md) -- What the test suite covers and which checks to run before shipping
|
|
212
|
+
- [Release Checklist](docs/release-checklist.md) -- Local, npm, GitHub, and fresh-install release verification
|
|
208
213
|
- [Release Notes](docs/release-notes.md) -- Public summary of what changed between package releases
|
|
209
214
|
- [Shipped Assets](docs/shipped-assets.md) -- Canonical inventory of bundled export templates and launch-critical files
|
|
210
215
|
- [Runtime Support](docs/runtime-support.md) -- Canonical runtime matrix, Node baseline, and verification-status framing
|
|
@@ -235,11 +240,11 @@ Scriveno currently ships installer targets for these AI tooling environments:
|
|
|
235
240
|
|
|
236
241
|
## Status
|
|
237
242
|
|
|
238
|
-
**Version:** 2.0.
|
|
243
|
+
**Version:** 2.0.12
|
|
239
244
|
|
|
240
|
-
Scriveno's core command surface is stable across 112 commands, 50 work types, and 11 installer targets. The current repo baseline includes shipped planning milestones through `v2.0 Publishing Cover Packaging`, plus the creative-context, record-store, branching-next, runtime-sync, adaptive concierge, human-first writing-safeguard, authenticity-diagnostic, domain-grilling, installer-marker cleanup, cross-runtime agent metadata, visible automation status, the shared `scriveno status --project .` auto-invoke engine, route-intelligence lanes, safe apply reporting, runtime smoke checks, agent availability checks, route graph audits,
|
|
245
|
+
Scriveno's core command surface is stable across 112 commands, 50 work types, and 11 installer targets. The current repo baseline includes shipped planning milestones through `v2.0 Publishing Cover Packaging`, plus the creative-context, record-store, branching-next, runtime-sync, adaptive concierge, human-first writing-safeguard, authenticity-diagnostic, domain-grilling, installer-marker cleanup, cross-runtime agent metadata, visible automation status, the shared `scriveno status --project .` auto-invoke engine, route-intelligence lanes, safe apply reporting, runtime smoke checks, agent availability checks, route graph audits, the full audit repair pass through `2.0.11`, and the first-run proof surface in `2.0.12`. See [Quick Proof](docs/quick-proof.md) for the fastest proof path, [Shipped Assets](docs/shipped-assets.md) for the canonical asset inventory, and [Runtime Support](docs/runtime-support.md) for the runtime compatibility matrix.
|
|
241
246
|
|
|
242
|
-
Version `2.0.
|
|
247
|
+
Version `2.0.12` publishes Scriveno under the package name `scriveno`, so the current install command is `npx scriveno@latest`. The older `scriveno-cli` package name is historical and was unpublished during the rename, so npm cannot attach a deprecation notice to it while it has no active registry record. The older `scriven-cli` package remains on npm only as a deprecated legacy name that points users to `scriveno`. Do not treat either legacy package name as active unless a deliberate compatibility shim is republished. See [CHANGELOG](CHANGELOG.md) for the full list and [docs/release-notes.md](docs/release-notes.md) for the public-facing summary.
|
|
243
248
|
|
|
244
249
|
Package history is tracked in [CHANGELOG.md](CHANGELOG.md), and the public-facing summary for this release is in [docs/release-notes.md](docs/release-notes.md).
|
|
245
250
|
|
package/commands/scr/new-work.md
CHANGED
|
@@ -69,7 +69,7 @@ Always create `RECORD.md` from `templates/RECORD.md` without renaming it. It is
|
|
|
69
69
|
Write `.manuscript/config.json` by starting from `templates/config.json` and filling the project-specific values. The generated config must include the shared settings blocks that later commands read:
|
|
70
70
|
```json
|
|
71
71
|
{
|
|
72
|
-
"scriveno_version": "2.0.
|
|
72
|
+
"scriveno_version": "2.0.12",
|
|
73
73
|
"work_type": "<chosen>",
|
|
74
74
|
"group": "<group>",
|
|
75
75
|
"command_unit": "<unit>",
|
package/data/CONSTRAINTS.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "./constraints.schema.json",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.12",
|
|
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."
|
package/docs/configuration.md
CHANGED
package/docs/contributing.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Scriveno is a pure skill system -- markdown files that AI agents read and execute. There is no compiled code, no build step, no runtime dependencies. Contributing means adding or editing markdown files and updating the central constraint registry.
|
|
4
4
|
|
|
5
|
-
This guide walks you through extending Scriveno: adding commands, agents, work types, templates, and export formats. Each section is self-contained -- jump to what you need.
|
|
5
|
+
This guide walks you through extending Scriveno: adding commands, agents, work types, templates, and export formats. Each section is self-contained -- jump to what you need. For release operations, use [Release Checklist](release-checklist.md).
|
|
6
6
|
|
|
7
7
|
## File Structure Overview
|
|
8
8
|
|
|
@@ -379,6 +379,9 @@ When a package release changes the public story, update the release docs alongsi
|
|
|
379
379
|
- `CHANGELOG.md` -- package-level release history
|
|
380
380
|
- `docs/release-notes.md` -- public-facing summary of what changed and why it matters
|
|
381
381
|
- `README.md` -- current version/status blurb when the release changes the headline positioning
|
|
382
|
+
- `docs/quick-proof.md` -- proof-first first-run route when install, demo, or proof expectations change
|
|
383
|
+
- `docs/starter-sets.md` -- goal-based command paths when command positioning changes
|
|
384
|
+
- `docs/release-checklist.md` -- publish workflow when release validation changes
|
|
382
385
|
- `docs/shipped-assets.md` -- canonical inventory when bundled docs, templates, proof assets, or trust-critical files change
|
|
383
386
|
- `docs/command-reference.md` -- command contract reference when command behavior or flags change
|
|
384
387
|
- `docs/auto-invoke-policy.md` -- proactive routing, safe apply, local-helper, and agent-spawn policy
|
|
@@ -395,7 +398,9 @@ When a package release changes the public story, update the release docs alongsi
|
|
|
395
398
|
4. Run `npm test`
|
|
396
399
|
5. Run `npm run release:check`
|
|
397
400
|
6. For runtime, installer, agent, sync, or route-intelligence changes, run `scriveno sync --check`, `scriveno smoke --json`, `scriveno agents --json`, and `scriveno routes --json`
|
|
398
|
-
7.
|
|
401
|
+
7. For docs, prompts, command markdown, release notes, and README changes, run `npm run policy:check`
|
|
402
|
+
8. Follow [Release Checklist](release-checklist.md) before publishing
|
|
403
|
+
9. Publish only after the docs and package metadata tell the same story
|
|
399
404
|
|
|
400
405
|
## Code Style
|
|
401
406
|
|
package/docs/development.md
CHANGED
|
@@ -106,6 +106,12 @@ Run the release gate before publishing:
|
|
|
106
106
|
npm run release:check
|
|
107
107
|
```
|
|
108
108
|
|
|
109
|
+
Run the writing-policy gate directly when changing docs, prompts, commands, release notes, or public copy:
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
npm run policy:check
|
|
113
|
+
```
|
|
114
|
+
|
|
109
115
|
Start the installer locally:
|
|
110
116
|
|
|
111
117
|
```bash
|
|
@@ -143,6 +149,9 @@ For release-oriented documentation surfaces, the main files are:
|
|
|
143
149
|
|
|
144
150
|
- `README.md`
|
|
145
151
|
- `CHANGELOG.md`
|
|
152
|
+
- `docs/quick-proof.md`
|
|
153
|
+
- `docs/starter-sets.md`
|
|
154
|
+
- `docs/release-checklist.md`
|
|
146
155
|
- `docs/release-notes.md`
|
|
147
156
|
- `docs/shipped-assets.md`
|
|
148
157
|
- `docs/command-reference.md`
|
|
@@ -158,9 +167,10 @@ A good pre-ship pass for Scriveno changes is:
|
|
|
158
167
|
|
|
159
168
|
1. run the targeted tests for the touched surface
|
|
160
169
|
2. run `npm test`
|
|
161
|
-
3. run `npm run
|
|
162
|
-
4. run
|
|
163
|
-
5.
|
|
170
|
+
3. run `npm run policy:check` for docs, command, agent, prompt, and release-note changes
|
|
171
|
+
4. run `npm run release:check` for package-facing changes
|
|
172
|
+
5. run the proactive audit commands when routing, runtime, installer, or agent surfaces changed
|
|
173
|
+
6. review trust-sensitive docs for runtime, asset, and support claims
|
|
164
174
|
|
|
165
175
|
## Related docs
|
|
166
176
|
|
|
@@ -168,6 +178,8 @@ A good pre-ship pass for Scriveno changes is:
|
|
|
168
178
|
- [Configuration](configuration.md)
|
|
169
179
|
- [Testing](testing.md)
|
|
170
180
|
- [Contributing](contributing.md)
|
|
181
|
+
- [Quick Proof](quick-proof.md)
|
|
182
|
+
- [Release Checklist](release-checklist.md)
|
|
171
183
|
- [Auto-Invoke Policy](auto-invoke-policy.md)
|
|
172
184
|
- [Runtime Support](runtime-support.md)
|
|
173
185
|
- [Route Graph Audit](route-graph.md)
|
package/docs/getting-started.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Go from zero to a drafted scene in under 10 minutes. This guide walks you through installation, project setup, and your first draft.
|
|
4
4
|
|
|
5
|
-
Want evidence first? Start with [Proof Artifacts](proof-artifacts.md). The watchmaker sample flow and the Voice DNA before/after bundle give you the fastest way to inspect what Scriveno actually proves today.
|
|
5
|
+
Want evidence first? Start with [Quick Proof](quick-proof.md), then continue to [Proof Artifacts](proof-artifacts.md). The watchmaker sample flow and the Voice DNA before/after bundle give you the fastest way to inspect what Scriveno actually proves today.
|
|
6
6
|
|
|
7
7
|
## Prerequisites
|
|
8
8
|
|
|
@@ -63,7 +63,7 @@ This creates a pre-built short story project -- a retired watchmaker who receive
|
|
|
63
63
|
|
|
64
64
|
Explore at your own pace. When you're ready to start your own work, run `/scr-demo --clear` to clean up.
|
|
65
65
|
|
|
66
|
-
If you want a curated reading path instead of jumping straight into the demo files, open [Proof
|
|
66
|
+
If you want a curated reading path instead of jumping straight into the demo files, open [Quick Proof](quick-proof.md) first. It maps the install checks, runtime command shapes, watchmaker demo, and next draft into one 10-minute path.
|
|
67
67
|
|
|
68
68
|
## Step 3: Start Your Project
|
|
69
69
|
|
|
@@ -204,11 +204,13 @@ Beyond the core workflow, Scriveno offers:
|
|
|
204
204
|
- **Versions** -- `/scr-save`, `/scr-history`, `/scr-versions`, `/scr-compare`
|
|
205
205
|
- **Navigation** -- `/scr-help`, `/scr-next`, `/scr-pause-work`
|
|
206
206
|
|
|
207
|
-
For the full command list, see [Command Reference](command-reference.md).
|
|
207
|
+
For small goal-based paths, use [Starter Sets](starter-sets.md). For the full command list, see [Command Reference](command-reference.md).
|
|
208
208
|
|
|
209
209
|
If you want the trust surfaces around installation and shipping details, continue with:
|
|
210
210
|
|
|
211
211
|
- [Runtime Support](runtime-support.md) -- installer targets, support levels, and verification status
|
|
212
|
+
- [Quick Proof](quick-proof.md) -- proof-first first-run path through install, demo, and next draft
|
|
213
|
+
- [Starter Sets](starter-sets.md) -- small command sets by writing goal
|
|
212
214
|
- [Auto-Invoke Policy](auto-invoke-policy.md) -- status engine, visible automation, and agent-spawn boundaries
|
|
213
215
|
- [Route Graph Audit](route-graph.md) -- generated route graph, automation lanes, and priority fixtures
|
|
214
216
|
- [Shipped Assets](shipped-assets.md) -- what the npm package actually includes on the trust-critical surface
|
package/docs/proof-artifacts.md
CHANGED
|
@@ -4,10 +4,13 @@ This document is the canonical index of Scriveno's proof layer. It points to con
|
|
|
4
4
|
|
|
5
5
|
## Start Here
|
|
6
6
|
|
|
7
|
+
- Read **Quick Proof** if you want one 10-minute route through installation checks, demo inspection, runtime command shapes, and the next draft command.
|
|
7
8
|
- Read the **Watchmaker Sample Flow** if you want one end-to-end writing workflow from setup through drafts, review, and next step.
|
|
8
9
|
- Read **Voice DNA** if you want the shortest possible proof of how style guidance changes output on the same brief.
|
|
9
10
|
- Read **Creative Context** if you want to see one craft choice travel through discuss, plan, draft, and review artifacts.
|
|
10
11
|
|
|
12
|
+
**Fast path:** [Quick Proof](quick-proof.md)
|
|
13
|
+
|
|
11
14
|
## Watchmaker Sample Flow
|
|
12
15
|
|
|
13
16
|
**What it proves:** Scriveno ships one credible writing workflow from setup context through drafted outcome, review evidence, and next-step continuity.
|
|
@@ -52,6 +55,8 @@ Read the bundle in order if you want to inspect sentence rhythm, metaphor select
|
|
|
52
55
|
## Related Trust Docs
|
|
53
56
|
|
|
54
57
|
- [Shipped Assets](shipped-assets.md) -- canonical inventory of the trust-critical files Scriveno actually bundles
|
|
58
|
+
- [Quick Proof](quick-proof.md) -- 10-minute proof-first path through install checks, the demo, and the next draft
|
|
59
|
+
- [Starter Sets](starter-sets.md) -- small command sets by writing goal
|
|
55
60
|
- [Runtime Support](runtime-support.md) -- canonical runtime matrix and installer-baseline framing
|
|
56
61
|
- [Auto-Invoke Policy](auto-invoke-policy.md) -- proactive status, safe apply, local-helper, and agent-spawn boundaries
|
|
57
62
|
- [Route Graph Audit](route-graph.md) -- generated route graph, automation lanes, and priority fixtures
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
# Quick Proof
|
|
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.
|
|
4
|
+
|
|
5
|
+
## What This Proves
|
|
6
|
+
|
|
7
|
+
- Scriveno ships inspectable proof bundles, not only feature claims.
|
|
8
|
+
- The watchmaker demo includes real manuscript state, drafts, review notes, and a planned next unit.
|
|
9
|
+
- Voice DNA changes output on the same brief, with guided and unguided samples side by side.
|
|
10
|
+
- 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.
|
|
11
|
+
- The public CLI can audit installed surfaces with `scriveno smoke --json`.
|
|
12
|
+
|
|
13
|
+
## 10-Minute Route
|
|
14
|
+
|
|
15
|
+
### 1. Install
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
npx scriveno@latest
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
For a source checkout while developing Scriveno itself:
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
node bin/install.js --runtimes claude-code,cursor,gemini-cli,codex,opencode,copilot,windsurf,antigravity,manus,perplexity-desktop,generic --global --developer --silent
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
### 2. Check The Installed Surface
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
scriveno status --project .
|
|
31
|
+
scriveno smoke --json
|
|
32
|
+
scriveno agents --json
|
|
33
|
+
scriveno routes --json
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Expected result: the commands report installed surfaces, agent prompt availability, route lanes, and any manual gates. They do not mutate manuscript files.
|
|
37
|
+
|
|
38
|
+
### 3. Open The Demo
|
|
39
|
+
|
|
40
|
+
Claude Code:
|
|
41
|
+
|
|
42
|
+
```text
|
|
43
|
+
/scr-demo
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Standard slash-command runtimes:
|
|
47
|
+
|
|
48
|
+
```text
|
|
49
|
+
/scr:demo
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Codex:
|
|
53
|
+
|
|
54
|
+
```text
|
|
55
|
+
$scr-demo
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Then inspect the shipped files:
|
|
59
|
+
|
|
60
|
+
- [data/demo/.manuscript/WORK.md](../data/demo/.manuscript/WORK.md)
|
|
61
|
+
- [data/demo/.manuscript/STYLE-GUIDE.md](../data/demo/.manuscript/STYLE-GUIDE.md)
|
|
62
|
+
- [data/demo/.manuscript/STATE.md](../data/demo/.manuscript/STATE.md)
|
|
63
|
+
- [data/demo/.manuscript/drafts/body/1-the-letter-DRAFT.md](../data/demo/.manuscript/drafts/body/1-the-letter-DRAFT.md)
|
|
64
|
+
- [data/demo/.manuscript/drafts/body/2-the-workshop-DRAFT.md](../data/demo/.manuscript/drafts/body/2-the-workshop-DRAFT.md)
|
|
65
|
+
- [data/demo/.manuscript/reviews/2-the-workshop-REVIEW.md](../data/demo/.manuscript/reviews/2-the-workshop-REVIEW.md)
|
|
66
|
+
- [data/demo/.manuscript/plans/5-the-reunion-PLAN.md](../data/demo/.manuscript/plans/5-the-reunion-PLAN.md)
|
|
67
|
+
|
|
68
|
+
### 4. Read The Proof Bundle
|
|
69
|
+
|
|
70
|
+
Start here:
|
|
71
|
+
|
|
72
|
+
- [data/proof/watchmaker-flow/README.md](../data/proof/watchmaker-flow/README.md)
|
|
73
|
+
- [data/proof/voice-dna/README.md](../data/proof/voice-dna/README.md)
|
|
74
|
+
- [data/proof/creative-context/README.md](../data/proof/creative-context/README.md)
|
|
75
|
+
|
|
76
|
+
The fastest comparison is the Voice DNA pair:
|
|
77
|
+
|
|
78
|
+
- [data/proof/voice-dna/UNGUIDED-SAMPLE.md](../data/proof/voice-dna/UNGUIDED-SAMPLE.md)
|
|
79
|
+
- [data/proof/voice-dna/GUIDED-SAMPLE.md](../data/proof/voice-dna/GUIDED-SAMPLE.md)
|
|
80
|
+
|
|
81
|
+
### 5. Ask For The Next Unit
|
|
82
|
+
|
|
83
|
+
The demo includes a planned but undrafted fifth unit. Use the command shape for your host:
|
|
84
|
+
|
|
85
|
+
Claude Code:
|
|
86
|
+
|
|
87
|
+
```text
|
|
88
|
+
/scr-draft 5
|
|
89
|
+
/scr-editor-review 5
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Standard slash-command runtimes:
|
|
93
|
+
|
|
94
|
+
```text
|
|
95
|
+
/scr:draft 5
|
|
96
|
+
/scr:editor-review 5
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
Codex:
|
|
100
|
+
|
|
101
|
+
```text
|
|
102
|
+
$scr-draft 5
|
|
103
|
+
$scr-editor-review 5
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### 6. Ask Scriveno What To Do Next
|
|
107
|
+
|
|
108
|
+
Claude Code:
|
|
109
|
+
|
|
110
|
+
```text
|
|
111
|
+
/scr-next
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
Standard slash-command runtimes:
|
|
115
|
+
|
|
116
|
+
```text
|
|
117
|
+
/scr:next
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
Codex:
|
|
121
|
+
|
|
122
|
+
```text
|
|
123
|
+
$scr-next
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
Terminal:
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
scriveno status --project .
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
## Example Transcript
|
|
133
|
+
|
|
134
|
+
These transcript blocks show the expected shape, not a promise that every host prints identical phrasing.
|
|
135
|
+
|
|
136
|
+
```text
|
|
137
|
+
> /scr-demo
|
|
138
|
+
Created the watchmaker demo project.
|
|
139
|
+
Next: inspect STYLE-GUIDE.md, read the first draft, then run /scr-next.
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
```text
|
|
143
|
+
> scriveno status --project .
|
|
144
|
+
Recommended next command: /scr:next
|
|
145
|
+
Candidate agents: drafter, voice-checker
|
|
146
|
+
Candidate local helpers: scan, save
|
|
147
|
+
Manual gates: writer approval before publishing or overwriting exports
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
```text
|
|
151
|
+
> /scr:draft 5
|
|
152
|
+
Loaded STYLE-GUIDE.md and the plan for unit 5.
|
|
153
|
+
Drafted the next atomic unit in fresh context.
|
|
154
|
+
Next: /scr:editor-review 5
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
## Runtime Expectations
|
|
158
|
+
|
|
159
|
+
Use [Runtime Support](runtime-support.md) as the canonical matrix. The short version:
|
|
160
|
+
|
|
161
|
+
- Claude Code is the primary reference runtime.
|
|
162
|
+
- Codex installs generated `$scr-*` skills, mirrored commands, agent prompts, and `.toml` agent metadata.
|
|
163
|
+
- Cursor, Gemini CLI, OpenCode, GitHub Copilot, Windsurf, and Antigravity install command directories plus agent prompts.
|
|
164
|
+
- Manus Desktop and the generic fallback install bundled skill manifests.
|
|
165
|
+
- Perplexity Desktop is a guided local-MCP setup target, not a writable command runtime.
|
|
166
|
+
|
|
167
|
+
No runtime claim here should be read as host-runtime parity proof. The repo proves install surfaces and package artifacts; host parity still needs per-host verification.
|
|
168
|
+
|
|
169
|
+
## Where To Go Next
|
|
170
|
+
|
|
171
|
+
- [Starter Sets](starter-sets.md) for small command paths by writing goal
|
|
172
|
+
- [Getting Started](getting-started.md) for the complete first-project walkthrough
|
|
173
|
+
- [Proof Artifacts](proof-artifacts.md) for the proof hub
|
|
174
|
+
- [Runtime Support](runtime-support.md) for installation and support levels
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
# Release Checklist
|
|
2
|
+
|
|
3
|
+
This checklist is the package-release path for Scriveno maintainers. It is designed to verify the source checkout, the package tarball, the installed runtime surfaces, the published npm package, and the GitHub release.
|
|
4
|
+
|
|
5
|
+
## 1. Confirm A Clean Baseline
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
git status --short --branch
|
|
9
|
+
npm view scriveno version
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
Choose the next package version from npm, not from memory.
|
|
13
|
+
|
|
14
|
+
## 2. Run Local Gates
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
npm run release:check
|
|
18
|
+
npm audit --omit=dev --json
|
|
19
|
+
node bin/install.js routes --json
|
|
20
|
+
node bin/install.js agents --json
|
|
21
|
+
node bin/install.js smoke --json
|
|
22
|
+
node bin/install.js sync --check --json
|
|
23
|
+
git diff --check
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Also scan text files for the repo writing policy:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
node scripts/check-writing-policy.js
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
If that script does not exist in a checkout yet, run the equivalent local policy scan used by the release operator.
|
|
33
|
+
|
|
34
|
+
## 3. Clear Previous Local Installs
|
|
35
|
+
|
|
36
|
+
Before validating a release candidate, clear Scriveno-owned install surfaces so stale files cannot hide installer defects.
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
rm -rf "$HOME/.scriveno"
|
|
40
|
+
rm -rf "$HOME/.codex/commands/scr"
|
|
41
|
+
rm -rf "$HOME/.cursor/commands/scr"
|
|
42
|
+
rm -rf "$HOME/.gemini/commands/scr"
|
|
43
|
+
rm -rf "$HOME/.gemini/antigravity/commands/scr"
|
|
44
|
+
rm -rf "$HOME/.config/opencode/commands/scr"
|
|
45
|
+
rm -rf "$HOME/.github/commands/scr"
|
|
46
|
+
rm -rf "$HOME/.windsurf/commands/scr"
|
|
47
|
+
rm -rf "$HOME/.manus/skills/scriveno"
|
|
48
|
+
npm cache clean --force
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Then reinstall from the checkout:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
npm install -g .
|
|
55
|
+
scriveno --runtimes claude-code,cursor,gemini-cli,codex,opencode,copilot,windsurf,antigravity,manus,perplexity-desktop,generic --global --developer --silent
|
|
56
|
+
scriveno smoke --json
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## 4. Pack The Candidate
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
mkdir -p dist
|
|
63
|
+
npm pack --pack-destination dist
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Inspect the tarball name and confirm the version matches `package.json`.
|
|
67
|
+
|
|
68
|
+
## 5. Commit And Tag
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
git status --short
|
|
72
|
+
git add README.md CHANGELOG.md docs package.json package-lock.json data templates commands .planning test
|
|
73
|
+
git commit -m "Release scriveno X.Y.Z"
|
|
74
|
+
git tag vX.Y.Z
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Keep the commit message plain and version-specific.
|
|
78
|
+
|
|
79
|
+
## 6. Publish To npm
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
npm publish --access public
|
|
83
|
+
npm view scriveno version
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
The published version must match `package.json` and the tag.
|
|
87
|
+
|
|
88
|
+
## 7. Push Git And Create GitHub Release
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
git push origin main
|
|
92
|
+
git push origin vX.Y.Z
|
|
93
|
+
gh release create vX.Y.Z dist/scriveno-X.Y.Z.tgz --title "Scriveno X.Y.Z" --notes-file /tmp/scriveno-release-notes.md
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
The release notes should summarize the user-facing change, docs updated, tests run, and npm verification.
|
|
97
|
+
|
|
98
|
+
## 8. Verify From Published npm
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
npm install -g scriveno@latest
|
|
102
|
+
scriveno --version
|
|
103
|
+
scriveno --runtimes claude-code,cursor,gemini-cli,codex,opencode,copilot,windsurf,antigravity,manus,perplexity-desktop,generic --global --developer --silent
|
|
104
|
+
scriveno smoke --json
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
This is the final proof that a fresh user can install the same package that was released.
|
|
108
|
+
|
|
109
|
+
## 9. Final State
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
git status --short --branch
|
|
113
|
+
gh release view vX.Y.Z
|
|
114
|
+
npm view scriveno version
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
The final state should show a clean worktree, a visible GitHub release, and npm latest aligned to the new version.
|
package/docs/release-notes.md
CHANGED
|
@@ -2,6 +2,42 @@
|
|
|
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.0.12 - 2026-05-16
|
|
6
|
+
|
|
7
|
+
### What changed
|
|
8
|
+
|
|
9
|
+
- Scriveno now ships [Quick Proof](quick-proof.md), a 10-minute route through install checks, the watchmaker demo, Voice DNA samples, runtime command shapes, and the next draft command.
|
|
10
|
+
- Scriveno now ships [Starter Sets](starter-sets.md), goal-based command paths for drafting, polishing, publishing, translation, sacred commentary, and repair.
|
|
11
|
+
- Scriveno now ships [Release Checklist](release-checklist.md), a maintainer path for local gates, stale install cleanup, packing, npm publishing, GitHub release creation, and fresh `scriveno@latest` verification.
|
|
12
|
+
- `npm run release:check` now includes `npm run policy:check`, which scans tracked text files for the repository writing policy before packaging.
|
|
13
|
+
- README badges, Getting Started, Proof Artifacts, Runtime Support, Development, Contributing, Testing, Shipped Assets, Route Graph, Configuration, changelog, package metadata, constraints metadata, generated config metadata, and release tests are aligned on `2.0.12`.
|
|
14
|
+
|
|
15
|
+
### Why it matters
|
|
16
|
+
|
|
17
|
+
The product already had proof artifacts, but the shortest path through them was too implicit. This release makes the first 10 minutes clearer for a new writer and makes the release process harder to drift by documenting and testing the local, npm, GitHub, and fresh-install verification path.
|
|
18
|
+
|
|
19
|
+
### Affected areas
|
|
20
|
+
|
|
21
|
+
- README badges and launch copy
|
|
22
|
+
- proof-first documentation
|
|
23
|
+
- starter command guidance
|
|
24
|
+
- release checklist and testing docs
|
|
25
|
+
- writing-policy release gate
|
|
26
|
+
- package metadata and generated project examples
|
|
27
|
+
- planning state and release-alignment tests
|
|
28
|
+
|
|
29
|
+
### Verification
|
|
30
|
+
|
|
31
|
+
- `node --test test/first-run-proof-surface.test.js test/package.test.js test/phase16-trust-regression.test.js test/phase14-runtime-credibility.test.js`
|
|
32
|
+
- `npm run policy:check`
|
|
33
|
+
- `npm run release:check`
|
|
34
|
+
- `node bin/install.js routes --json`
|
|
35
|
+
- `node bin/install.js agents --json`
|
|
36
|
+
- `node bin/install.js sync --check --json`
|
|
37
|
+
- `node bin/install.js smoke --json`
|
|
38
|
+
- `npm audit --omit=dev --json`
|
|
39
|
+
- `git diff --check`
|
|
40
|
+
|
|
5
41
|
## 2.0.11 - 2026-05-16
|
|
6
42
|
|
|
7
43
|
### What changed
|
package/docs/route-graph.md
CHANGED
|
@@ -13,7 +13,7 @@ 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.0.12`, the route graph contains:
|
|
17
17
|
|
|
18
18
|
- 112 commands
|
|
19
19
|
- intent-order edges from `command_intents`
|
package/docs/runtime-support.md
CHANGED
|
@@ -65,6 +65,17 @@ Node is not a runtime dependency for Scriveno's markdown command system itself.
|
|
|
65
65
|
- Manus Desktop and the generic skills fallback install a manifest `SKILL.md`, mirrored command files, and agent prompts inside the skill bundle.
|
|
66
66
|
- Perplexity Desktop receives setup assets for a local-MCP connector. It does not receive writable command or agent prompt directories from the installer.
|
|
67
67
|
|
|
68
|
+
## First-Run Command Shapes
|
|
69
|
+
|
|
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
|
+
|
|
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`
|
|
75
|
+
- Guided targets: follow the generated setup instructions and connector recipe
|
|
76
|
+
|
|
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
|
+
|
|
68
79
|
## Shared Auto-Invoke Engine
|
|
69
80
|
|
|
70
81
|
Every install target receives the same read-only status engine through Scriveno's shared asset directory:
|
|
@@ -126,5 +137,7 @@ That distinction is intentional. Installer-path coverage and guided setup assets
|
|
|
126
137
|
## See Also
|
|
127
138
|
|
|
128
139
|
- [Getting Started](getting-started.md) -- install flow and first-run expectations
|
|
140
|
+
- [Quick Proof](quick-proof.md) -- first-run proof path and runtime command shapes
|
|
141
|
+
- [Starter Sets](starter-sets.md) -- small command sets by writing goal
|
|
129
142
|
- [Shipped Assets](shipped-assets.md) -- trust-critical files that ship with the package
|
|
130
143
|
- [Release Notes](release-notes.md) -- latest package-level summary
|
package/docs/shipped-assets.md
CHANGED
|
@@ -115,6 +115,9 @@ Sacred commands read top-level sacred profile keys in new projects and preserve
|
|
|
115
115
|
- `CHANGELOG.md` -- package-level release history
|
|
116
116
|
- `docs/release-notes.md` -- public-facing release summary
|
|
117
117
|
- `docs/proof-artifacts.md` -- canonical proof hub for sample-flow and voice-preservation evidence
|
|
118
|
+
- `docs/quick-proof.md` -- proof-first first-run route through install checks, demo inspection, and next-draft commands
|
|
119
|
+
- `docs/starter-sets.md` -- small command paths for common writing goals
|
|
120
|
+
- `docs/release-checklist.md` -- release validation path for source, npm, GitHub, and fresh installs
|
|
118
121
|
- `docs/runtime-support.md` -- canonical runtime matrix, Node baseline, and support-confidence framing
|
|
119
122
|
- `docs/command-reference.md` -- canonical command surface reference
|
|
120
123
|
- `docs/configuration.md` -- canonical project config and package metadata reference
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# Starter Sets
|
|
2
|
+
|
|
3
|
+
Scriveno has a large command surface because it covers many kinds of writing. Starter sets give each writer a short path instead of asking them to learn every command up front.
|
|
4
|
+
|
|
5
|
+
Each set is intentionally small. Use `/scr-next`, `/scr:next`, or `$scr-next` whenever you are unsure which command should come next.
|
|
6
|
+
|
|
7
|
+
## Draft A Book
|
|
8
|
+
|
|
9
|
+
- `/scr:new-work` creates the project and work-type context.
|
|
10
|
+
- `/scr:profile-writer` turns the style guide into a real Voice DNA profile.
|
|
11
|
+
- `/scr:discuss` shapes the next unit with a few targeted questions.
|
|
12
|
+
- `/scr:plan` writes the next unit plan.
|
|
13
|
+
- `/scr:draft` drafts the planned unit in fresh context.
|
|
14
|
+
- `/scr:editor-review` reviews the draft for revision.
|
|
15
|
+
- `/scr:next` chooses the safest next move from project state.
|
|
16
|
+
|
|
17
|
+
## Polish A Manuscript
|
|
18
|
+
|
|
19
|
+
- `/scr:import` brings existing material into a Scriveno project.
|
|
20
|
+
- `/scr:profile-writer` calibrates the voice profile against your actual prose.
|
|
21
|
+
- `/scr:continuity-check` finds contradictions and timeline drift.
|
|
22
|
+
- `/scr:voice-check` compares drafts against Voice DNA.
|
|
23
|
+
- `/scr:line-edit` improves sentence-level flow.
|
|
24
|
+
- `/scr:copy-edit` catches grammar, clarity, and consistency issues.
|
|
25
|
+
- `/scr:polish` chains the revision passes when the manuscript is ready.
|
|
26
|
+
|
|
27
|
+
## Publish An Ebook
|
|
28
|
+
|
|
29
|
+
- `/scr:publish` starts the publication workflow.
|
|
30
|
+
- `/scr:front-matter` prepares title-page, copyright, and dedication pages.
|
|
31
|
+
- `/scr:back-matter` prepares author notes, acknowledgments, and reader materials.
|
|
32
|
+
- `/scr:blurb` drafts store-facing description copy.
|
|
33
|
+
- `/scr:cover-art` prepares cover direction or cover assets.
|
|
34
|
+
- `/scr:build-ebook` builds the ebook package.
|
|
35
|
+
- `/scr:export` writes the selected export format.
|
|
36
|
+
|
|
37
|
+
## Translate A Work
|
|
38
|
+
|
|
39
|
+
- `/scr:translation-glossary` defines recurring terms, names, and voice rules.
|
|
40
|
+
- `/scr:translation-memory` records approved translation decisions.
|
|
41
|
+
- `/scr:translate` translates the selected unit or manuscript segment.
|
|
42
|
+
- `/scr:cultural-adaptation` flags idioms and culture-specific phrasing.
|
|
43
|
+
- `/scr:back-translate` checks whether meaning survived translation.
|
|
44
|
+
- `/scr:multi-publish` prepares parallel translated editions.
|
|
45
|
+
|
|
46
|
+
## Build Sacred Commentary
|
|
47
|
+
|
|
48
|
+
- `/scr:new-work` creates a commentary, devotional, homiletic, or scripture project.
|
|
49
|
+
- `/scr:sacred:source-tracking` records primary and secondary source anchors.
|
|
50
|
+
- `/scr:sacred:concordance` builds searchable term and passage links.
|
|
51
|
+
- `/scr:sacred:cross-reference` maps related passages and interpretive connections.
|
|
52
|
+
- `/scr:sacred:doctrinal-check` verifies internal consistency and tradition constraints.
|
|
53
|
+
- `/scr:draft` writes the next commentary or sacred text unit.
|
|
54
|
+
- `/scr:editor-review` reviews the unit without flattening the tradition-native vocabulary.
|
|
55
|
+
|
|
56
|
+
## Repair And Resume
|
|
57
|
+
|
|
58
|
+
- `/scr:health` diagnoses missing files, stale state, and broken project assumptions.
|
|
59
|
+
- `/scr:sync` checks installed command, agent, and helper surfaces.
|
|
60
|
+
- `/scr:scan` refreshes project inventory.
|
|
61
|
+
- `/scr:check-notes` surfaces open notes and unresolved reminders.
|
|
62
|
+
- `/scr:resume-work` restores the paused thread or project state.
|
|
63
|
+
- `/scr:next` chooses the next safe command.
|
|
64
|
+
|
|
65
|
+
## Command Shape By Runtime
|
|
66
|
+
|
|
67
|
+
The starter sets use `/scr:*` because that is the shared command id format in Scriveno docs. Host surfaces differ:
|
|
68
|
+
|
|
69
|
+
- Claude Code uses flat commands such as `/scr-draft`.
|
|
70
|
+
- Standard command-directory runtimes currently keep `/scr:draft`.
|
|
71
|
+
- Codex uses generated skills such as `$scr-draft`.
|
|
72
|
+
- Guided targets such as Perplexity Desktop follow their generated setup instructions.
|
|
73
|
+
|
|
74
|
+
See [Runtime Support](runtime-support.md) for the canonical runtime matrix.
|
package/docs/testing.md
CHANGED
|
@@ -10,7 +10,8 @@ The root `package.json` defines:
|
|
|
10
10
|
"scripts": {
|
|
11
11
|
"test": "node --test test/*.test.js",
|
|
12
12
|
"pack:check": "npm pack --dry-run",
|
|
13
|
-
"
|
|
13
|
+
"policy:check": "node scripts/check-writing-policy.js",
|
|
14
|
+
"release:check": "npm test && npm run policy:check && npm run pack:check",
|
|
14
15
|
"prepublishOnly": "npm run release:check"
|
|
15
16
|
}
|
|
16
17
|
```
|
|
@@ -19,7 +20,8 @@ That means:
|
|
|
19
20
|
|
|
20
21
|
- `npm test` runs the whole test suite
|
|
21
22
|
- `npm run pack:check` verifies the package contents that would ship
|
|
22
|
-
- `npm run
|
|
23
|
+
- `npm run policy:check` scans tracked text files for the repo writing policy
|
|
24
|
+
- `npm run release:check` runs tests, policy checks, and package checks
|
|
23
25
|
- publishing is guarded by `release:check` through `prepublishOnly`
|
|
24
26
|
|
|
25
27
|
## Run the suite
|
|
@@ -95,8 +97,10 @@ Use these when changing README, docs, shipped-assets claims, or milestone trust
|
|
|
95
97
|
|
|
96
98
|
- `test/phase13-launch-surface-integrity.test.js`
|
|
97
99
|
- `test/phase15-proof-artifacts-positioning.test.js`
|
|
100
|
+
- `test/first-run-proof-surface.test.js`
|
|
98
101
|
- `test/phase19-verification-trust-surface-updates.test.js`
|
|
99
102
|
- `test/repository-policy.test.js`
|
|
103
|
+
- `npm run policy:check`
|
|
100
104
|
|
|
101
105
|
### Feature-family regression tests
|
|
102
106
|
|
|
@@ -136,6 +140,12 @@ For the standard release gate, prefer:
|
|
|
136
140
|
npm run release:check
|
|
137
141
|
```
|
|
138
142
|
|
|
143
|
+
For docs, prompt, command markdown, and release-note changes, run:
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
npm run policy:check
|
|
147
|
+
```
|
|
148
|
+
|
|
139
149
|
When changing proactive routing, runtime install paths, or agent surfaces, also run:
|
|
140
150
|
|
|
141
151
|
```bash
|
|
@@ -148,6 +158,8 @@ scriveno routes --json
|
|
|
148
158
|
|
|
149
159
|
Use those for release prep so you can inspect what would ship without mutating the registry.
|
|
150
160
|
|
|
161
|
+
For the full publish path, including clearing local installs, packing, publishing, pushing, creating the GitHub release, and verifying `scriveno@latest`, use [Release Checklist](release-checklist.md).
|
|
162
|
+
|
|
151
163
|
## Practical workflow
|
|
152
164
|
|
|
153
165
|
For most changes:
|
|
@@ -156,11 +168,14 @@ For most changes:
|
|
|
156
168
|
2. make the fix
|
|
157
169
|
3. rerun the targeted files
|
|
158
170
|
4. run `npm test`
|
|
159
|
-
5. if
|
|
171
|
+
5. if docs, prompts, commands, or release notes changed, run `npm run policy:check`
|
|
172
|
+
6. if packaging or release docs changed, run `npm run release:check`
|
|
160
173
|
|
|
161
174
|
## Related docs
|
|
162
175
|
|
|
163
176
|
- [Development](development.md)
|
|
164
177
|
- [Configuration](configuration.md)
|
|
165
178
|
- [Contributing](contributing.md)
|
|
179
|
+
- [Quick Proof](quick-proof.md)
|
|
180
|
+
- [Release Checklist](release-checklist.md)
|
|
166
181
|
- [Release Notes](release-notes.md)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "scriveno",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.12",
|
|
4
4
|
"description": "Spec-driven creative writing, publishing, and translation pipeline for AI coding agents. From blank page to published book.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"scriveno": "bin/install.js"
|
|
@@ -9,7 +9,8 @@
|
|
|
9
9
|
"start": "node bin/install.js",
|
|
10
10
|
"test": "node --test test/*.test.js",
|
|
11
11
|
"pack:check": "npm pack --dry-run",
|
|
12
|
-
"
|
|
12
|
+
"policy:check": "node scripts/check-writing-policy.js",
|
|
13
|
+
"release:check": "npm test && npm run policy:check && npm run pack:check",
|
|
13
14
|
"prepublishOnly": "npm run release:check"
|
|
14
15
|
},
|
|
15
16
|
"publishConfig": {
|
|
@@ -47,6 +48,7 @@
|
|
|
47
48
|
"commands/",
|
|
48
49
|
"agents/",
|
|
49
50
|
"templates/",
|
|
51
|
+
"scripts/",
|
|
50
52
|
"docs/",
|
|
51
53
|
"README.md",
|
|
52
54
|
"LICENSE"
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
const fs = require('node:fs');
|
|
4
|
+
const path = require('node:path');
|
|
5
|
+
const { execSync } = require('node:child_process');
|
|
6
|
+
|
|
7
|
+
const ROOT = path.join(__dirname, '..');
|
|
8
|
+
const BINARY_EXTENSIONS = new Set([
|
|
9
|
+
'.docx',
|
|
10
|
+
'.gif',
|
|
11
|
+
'.ico',
|
|
12
|
+
'.jpeg',
|
|
13
|
+
'.jpg',
|
|
14
|
+
'.pdf',
|
|
15
|
+
'.png',
|
|
16
|
+
'.tgz',
|
|
17
|
+
'.zip',
|
|
18
|
+
]);
|
|
19
|
+
|
|
20
|
+
function trackedFiles() {
|
|
21
|
+
const output = execSync('git ls-files', { cwd: ROOT, encoding: 'utf8' }).trim();
|
|
22
|
+
return output ? output.split(/\n/) : [];
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
function isBinaryPath(relativePath) {
|
|
26
|
+
return BINARY_EXTENSIONS.has(path.extname(relativePath).toLowerCase());
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
function lineNumberFor(source, index) {
|
|
30
|
+
return source.slice(0, index).split('\n').length;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
function shouldFlag(codePoint, char) {
|
|
34
|
+
return codePoint === 0x2013
|
|
35
|
+
|| codePoint === 0x2014
|
|
36
|
+
|| /\p{Extended_Pictographic}/u.test(char);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
function scan() {
|
|
40
|
+
const findings = [];
|
|
41
|
+
|
|
42
|
+
for (const relativePath of trackedFiles()) {
|
|
43
|
+
if (isBinaryPath(relativePath)) {
|
|
44
|
+
continue;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
const absolutePath = path.join(ROOT, relativePath);
|
|
48
|
+
const buffer = fs.readFileSync(absolutePath);
|
|
49
|
+
if (buffer.includes(0)) {
|
|
50
|
+
continue;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
const source = buffer.toString('utf8');
|
|
54
|
+
for (let index = 0; index < source.length; index += 1) {
|
|
55
|
+
const codePoint = source.codePointAt(index);
|
|
56
|
+
const char = String.fromCodePoint(codePoint);
|
|
57
|
+
if (shouldFlag(codePoint, char)) {
|
|
58
|
+
findings.push({
|
|
59
|
+
codePoint,
|
|
60
|
+
line: lineNumberFor(source, index),
|
|
61
|
+
relativePath,
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
if (codePoint > 0xffff) {
|
|
66
|
+
index += 1;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
return findings;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
const findings = scan();
|
|
75
|
+
|
|
76
|
+
for (const finding of findings) {
|
|
77
|
+
const hex = finding.codePoint.toString(16).toUpperCase().padStart(4, '0');
|
|
78
|
+
console.error(`${finding.relativePath}:${finding.line}: forbidden U+${hex}`);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
if (findings.length > 0) {
|
|
82
|
+
console.error(`Writing policy scan failed: ${findings.length} forbidden marker(s).`);
|
|
83
|
+
process.exit(1);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
console.log('Writing policy scan passed.');
|
package/templates/config.json
CHANGED