scriveno 2.0.7 → 2.0.9
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 +26 -5
- package/bin/install.js +76 -2
- package/commands/scr/health.md +6 -0
- package/commands/scr/new-work.md +1 -1
- package/commands/scr/next.md +17 -0
- package/commands/scr/progress.md +17 -0
- package/commands/scr/save.md +6 -0
- package/commands/scr/scan.md +6 -0
- package/commands/scr/session-report.md +17 -0
- package/commands/scr/sync.md +11 -0
- package/data/CONSTRAINTS.json +3082 -701
- package/docs/architecture.md +19 -3
- package/docs/auto-invoke-policy.md +17 -0
- package/docs/configuration.md +1 -1
- package/docs/getting-started.md +12 -0
- package/docs/release-notes.md +68 -0
- package/docs/runtime-support.md +24 -1
- package/lib/auto-invoke-engine.js +906 -0
- package/package.json +1 -1
- package/templates/config.json +1 -10
package/docs/architecture.md
CHANGED
|
@@ -4,7 +4,7 @@ How Scriveno works under the hood -- for developers who want to understand the s
|
|
|
4
4
|
|
|
5
5
|
## Overview
|
|
6
6
|
|
|
7
|
-
Scriveno is a
|
|
7
|
+
Scriveno is a markdown-first skill system with a small Node.js support layer. AI coding agents (Claude Code, Cursor, Gemini CLI, and others) read markdown command files and follow their instructions using their built-in tools (Read, Write, Bash). Node.js handles installation, packaging, runtime synchronization, and the shared read-only status engine.
|
|
8
8
|
|
|
9
9
|
The entire system is a collection of files:
|
|
10
10
|
|
|
@@ -13,7 +13,7 @@ The entire system is a collection of files:
|
|
|
13
13
|
- **CONSTRAINTS.json** is the central registry that controls which commands are available for which work types
|
|
14
14
|
- **Templates** provide starting content for new projects
|
|
15
15
|
|
|
16
|
-
Nothing compiles
|
|
16
|
+
Nothing compiles for the command layer. Changes to markdown commands take effect immediately because the agent reads files at runtime. Changes to the installer or shared status engine are tested and shipped through the npm package.
|
|
17
17
|
|
|
18
18
|
## Skill System Design
|
|
19
19
|
|
|
@@ -349,6 +349,22 @@ Codex uses a skill-native variation of this strategy. The installer generates on
|
|
|
349
349
|
|
|
350
350
|
**Guided local-MCP (type: `guided-mcp`).** Writes setup assets and connector recipes for runtimes that expose a documented local-MCP surface instead of a writable slash-command directory. Perplexity Desktop currently fits this model: Scriveno writes a setup guide and filesystem-server command recipe under `.scriveno/perplexity/`, and the user adds that command inside Perplexity Desktop's Connectors UI.
|
|
351
351
|
|
|
352
|
+
### Shared status engine
|
|
353
|
+
|
|
354
|
+
Scriveno also ships `lib/auto-invoke-engine.js`, exposed through `scriveno status --project .` and `scriveno status . --json`. The installer copies this library into the shared Scriveno asset directory for global and project installs, so command surfaces can call a single read-only status engine before falling back to embedded markdown logic.
|
|
355
|
+
|
|
356
|
+
The engine checks disk evidence only: project presence, required project files, STATE.md, CONTEXT.md freshness, plan files, draft files, review coverage, unresolved notes, revision-track proposals, translation work, publishing prerequisites, exports, history, and save signals. It recommends the next command, but it does not mutate files and does not spawn agents by itself. That boundary keeps proactive behavior portable across Claude Code, Codex, Cursor, Gemini CLI, OpenCode, GitHub Copilot, Windsurf, Antigravity, Manus, Perplexity Desktop, and the generic fallback.
|
|
357
|
+
|
|
358
|
+
The engine now reports three automation lanes:
|
|
359
|
+
|
|
360
|
+
- **Candidate agents**: bounded specialist routes that may spawn when the host supports it, such as `drafter`, `voice-checker`, `continuity-checker`, `translator`, `plan-checker`, beta-reader workers, and import analysis workers.
|
|
361
|
+
- **Candidate local helpers**: deterministic file or status helpers such as `/scr:save`, `/scr:scan`, `/scr:check-notes`, `/scr:progress`, `/scr:session-report`, and `/scr:sync`.
|
|
362
|
+
- **Manual gates**: writer-owned routes that need explicit confirmation, including publishing packages, export overwrites, and revision-track merge or proposal decisions.
|
|
363
|
+
|
|
364
|
+
Every command registry category has an automation lane through `getCommandAutomationPolicy()`. This makes route coverage testable: core routes are mixed, navigation routes are read-only, quality and review routes are agent-or-local, publishing and collaboration routes are manual-gated, utility and session routes are local-helper, and structure-management routes stay manual because they can rename or remove manuscript units.
|
|
365
|
+
|
|
366
|
+
This turns disconnected side features into visible routes. A plan without a draft recommends `/scr:draft` and lists the drafter route as a candidate agent path. Drafts without reviews recommend `/scr:editor-review` before export. Notes route to `/scr:check-notes`. Revision proposals route to `/scr:editor-review --proposal` or `/scr:track`. Publishing gaps route to `/scr:front-matter`, `/scr:back-matter`, `/scr:blurb`, `/scr:cover-art`, or `/scr:publish` depending on disk evidence.
|
|
367
|
+
|
|
352
368
|
### Installation modes
|
|
353
369
|
|
|
354
370
|
The installer supports two scopes:
|
|
@@ -360,7 +376,7 @@ The user chooses during installation. Guided local-MCP targets still write their
|
|
|
360
376
|
|
|
361
377
|
### Runtime credibility
|
|
362
378
|
|
|
363
|
-
Scriveno's installer compatibility floor is `Node.js >=20.0.0`. For new installs, prefer a currently supported LTS such as Node.js 24. The compatibility floor applies to `npx scriveno@latest`, `bin/install.js`, and the repo's JavaScript test suite, not to the markdown command system once files are installed.
|
|
379
|
+
Scriveno's installer compatibility floor is `Node.js >=20.0.0`. For new installs, prefer a currently supported LTS such as Node.js 24. The compatibility floor applies to `npx scriveno@latest`, `bin/install.js`, `scriveno status --project .`, the shared status engine, and the repo's JavaScript test suite, not to the markdown command system once files are installed.
|
|
364
380
|
|
|
365
381
|
This architecture doc is intentionally about mechanics: detection rules, install path shapes, `commands` versus `skills` versus `guided-mcp`, and global versus project scope. For the authoritative runtime matrix, support levels, and verification status, see [`docs/runtime-support.md`](runtime-support.md).
|
|
366
382
|
|
|
@@ -2,6 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
Scriveno can be proactive, but it must be proactive from disk evidence. Commands should inspect `.manuscript/`, reports, timestamps, config, and installed runtime surfaces before choosing an automatic helper.
|
|
4
4
|
|
|
5
|
+
The executable policy lives in `lib/auto-invoke-engine.js` and is exposed through `scriveno status --project .`. The installer copies it to `.scriveno/lib/auto-invoke-engine.js` for project installs and `~/.scriveno/lib/auto-invoke-engine.js` for global installs, so every runtime can use the same read-only status logic.
|
|
6
|
+
|
|
7
|
+
The engine reports candidates instead of silently acting. It can identify planned-but-undrafted work, drafts without review coverage, unresolved note files, revision proposals, translation follow-ups, publishing prerequisite gaps, stale exports, and stale session context. It then separates what could spawn an agent, what could run as a local helper, and what must stay behind a manual gate.
|
|
8
|
+
|
|
9
|
+
The same file exports `getCommandAutomationPolicy()`, which classifies every command registry route into an automation lane. Tests assert that every command category is covered, so newly added routes cannot sit outside the proactive policy by accident.
|
|
10
|
+
|
|
5
11
|
## Cross-Platform Agent Rules
|
|
6
12
|
|
|
7
13
|
Scriveno agent prompts live in `agents/*.md`. Each host runtime exposes them differently:
|
|
@@ -10,6 +16,7 @@ Scriveno agent prompts live in `agents/*.md`. Each host runtime exposes them dif
|
|
|
10
16
|
- Codex installs `$scr-*` skills, mirrored command files, agent prompts, and `.toml` metadata so Codex can expose agent types.
|
|
11
17
|
- Cursor, Gemini CLI, OpenCode, Copilot, Windsurf, and Antigravity install nested command directories and agent prompts in their runtime-specific agent directories.
|
|
12
18
|
- Manus and the generic skill runtime bundle `SKILL.md`, commands, and agents inside the skill directory.
|
|
19
|
+
- All runtimes share the same installed auto-invoke engine under the Scriveno shared asset directory.
|
|
13
20
|
|
|
14
21
|
When a host supports native fresh-context spawning, use the native agent or subagent mechanism. When it does not, load the installed agent prompt from the active runtime and run it in an isolated fresh context. When the action is only a file operation, report `Agent: none`.
|
|
15
22
|
|
|
@@ -20,8 +27,14 @@ Agent status:
|
|
|
20
27
|
Trigger: <command or state condition>
|
|
21
28
|
Spawned agents:
|
|
22
29
|
- <agent-name>: <count, none, or prompt-run fallback used>
|
|
30
|
+
Candidate agents:
|
|
31
|
+
- <command>: <agent names or none>
|
|
23
32
|
Local operations:
|
|
24
33
|
- <operation>: <result>
|
|
34
|
+
Candidate local helpers:
|
|
35
|
+
- <command>: <reason or none>
|
|
36
|
+
Manual gates:
|
|
37
|
+
- <command>: <reason or none>
|
|
25
38
|
Auto-invoked:
|
|
26
39
|
- <command or helper>: yes/no
|
|
27
40
|
Why: <one sentence tied to disk state>
|
|
@@ -44,8 +57,12 @@ Run these read-only checks in `/scr:next`, `/scr:progress`, and closeouts for ma
|
|
|
44
57
|
|
|
45
58
|
- If `STATE.md`, `CONTEXT.md`, `HISTORY.log`, or draft mtimes disagree, suggest `/scr:scan`.
|
|
46
59
|
- If voice or continuity reports have unresolved issues, suggest `/scr:voice-check`, `/scr:continuity-check`, or `/scr:editor-review`.
|
|
60
|
+
- If plan files exist with no corresponding drafts, suggest `/scr:draft` before reopening planning.
|
|
61
|
+
- If drafts exist without review coverage, suggest `/scr:editor-review` before export.
|
|
47
62
|
- If editor notes or track proposals exist, suggest `/scr:editor-review --notes`, `/scr:editor-review --respond`, or `/scr:track`.
|
|
63
|
+
- If note files contain unresolved items, suggest `/scr:check-notes`.
|
|
48
64
|
- If translation folders exist or config lists target languages, suggest translation follow-ups.
|
|
65
|
+
- If front matter, back matter, blurb, or cover handoff assets are missing, surface the specific publishing prerequisite before packaging.
|
|
49
66
|
- If export outputs are older than source files, suggest `/scr:export` or `/scr:publish`.
|
|
50
67
|
- If no save exists after recent manuscript changes, suggest `/scr:save`.
|
|
51
68
|
|
package/docs/configuration.md
CHANGED
package/docs/getting-started.md
CHANGED
|
@@ -24,6 +24,15 @@ This installs Scriveno into the runtime you choose. Command-directory and skills
|
|
|
24
24
|
|
|
25
25
|
Once installed, Claude Code uses flat `/scr-*` commands such as `/scr-help` and `/scr-new-work`. Other command-directory runtimes currently keep `/scr:*`. Codex uses generated `$scr-*` skills such as `$scr-help` and `$scr-new-work`. Guided targets explain their supported setup path directly in the generated setup files.
|
|
26
26
|
|
|
27
|
+
You can also ask Scriveno for a read-only project status from any terminal:
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
scriveno status --project .
|
|
31
|
+
scriveno status . --json
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
That status command is the same shared auto-invoke engine used by `/scr-next`, `/scr:next`, `/scr:progress`, `/scr:session-report`, and `/scr:sync` when local command execution is available. It recommends the next safest command, but does not mutate files or spawn agents by itself. Current status output separates candidate agents, candidate local helpers, and manual gates so you can tell whether Scriveno is pointing at a specialist route, a deterministic file helper, or a writer-owned decision.
|
|
35
|
+
|
|
27
36
|
## Step 2: Explore the Demo (Optional)
|
|
28
37
|
|
|
29
38
|
Not sure what Scriveno does? Try the demo before starting your own project:
|
|
@@ -181,6 +190,8 @@ $scr-next
|
|
|
181
190
|
|
|
182
191
|
`/scr-next` reads your project state and runs the right next step automatically. A writer who only ever types `/scr-next` in Claude Code can complete an entire manuscript from start to finish.
|
|
183
192
|
|
|
193
|
+
For a terminal-readable version of the same project-state reasoning, run `scriveno status --project .`.
|
|
194
|
+
|
|
184
195
|
Beyond the core workflow, Scriveno offers:
|
|
185
196
|
|
|
186
197
|
- **Revision** -- `/scr-editor-review`, `/scr-line-edit`, `/scr-continuity-check`
|
|
@@ -194,5 +205,6 @@ For the full command list, see [Command Reference](command-reference.md).
|
|
|
194
205
|
If you want the trust surfaces around installation and shipping details, continue with:
|
|
195
206
|
|
|
196
207
|
- [Runtime Support](runtime-support.md) -- installer targets, support levels, and verification status
|
|
208
|
+
- [Auto-Invoke Policy](auto-invoke-policy.md) -- status engine, visible automation, and agent-spawn boundaries
|
|
197
209
|
- [Shipped Assets](shipped-assets.md) -- what the npm package actually includes on the trust-critical surface
|
|
198
210
|
- [Release Notes](release-notes.md) -- what changed in the latest package release
|
package/docs/release-notes.md
CHANGED
|
@@ -2,6 +2,74 @@
|
|
|
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.9 - 2026-05-16
|
|
6
|
+
|
|
7
|
+
### What changed
|
|
8
|
+
|
|
9
|
+
- `scriveno status --project .` now detects connected workflow gaps instead of only broad project state.
|
|
10
|
+
- The shared engine can route planned-but-undrafted work to `/scr:draft`, drafts without review coverage to `/scr:editor-review`, unresolved notes to `/scr:check-notes`, revision proposals to `/scr:editor-review --proposal`, translation work to verification follow-ups, and publishing gaps to the specific missing prerequisite.
|
|
11
|
+
- Status output now separates `Candidate agents`, `Candidate local helpers`, and `Manual gates`.
|
|
12
|
+
- Every command registry category now has an automation lane through `getCommandAutomationPolicy()`.
|
|
13
|
+
- Markdown fallback contracts for `/scr:next`, `/scr:progress`, `/scr:session-report`, `/scr:save`, `/scr:scan`, and `/scr:health` now show the same route-intelligence shape when a host cannot call the Node engine.
|
|
14
|
+
- README badges, README status copy, Architecture, Auto-Invoke Policy, Configuration, changelog, and package metadata are aligned on `2.0.9`.
|
|
15
|
+
|
|
16
|
+
### Why it matters
|
|
17
|
+
|
|
18
|
+
The status engine now connects previously separate flows. A writer can see whether Scriveno is recommending an agent-backed route, a deterministic local helper, or a writer-owned manual action. That makes automation more proactive without making it mysterious or pushy.
|
|
19
|
+
|
|
20
|
+
### Affected areas
|
|
21
|
+
|
|
22
|
+
- shared auto-invoke engine
|
|
23
|
+
- public status CLI output
|
|
24
|
+
- route automation policy
|
|
25
|
+
- command fallback status blocks
|
|
26
|
+
- README badges and launch copy
|
|
27
|
+
- architecture and auto-invoke documentation
|
|
28
|
+
- package metadata and generated project examples
|
|
29
|
+
- regression tests for route intelligence and command policy coverage
|
|
30
|
+
|
|
31
|
+
### Verification
|
|
32
|
+
|
|
33
|
+
- `npm test`
|
|
34
|
+
- `npm run release:check`
|
|
35
|
+
- `npm pack --json`
|
|
36
|
+
- `git diff --check`
|
|
37
|
+
|
|
38
|
+
## 2.0.8 - 2026-05-16
|
|
39
|
+
|
|
40
|
+
### What changed
|
|
41
|
+
|
|
42
|
+
- Scriveno now exposes proactive project status through `scriveno status --project .` and `scriveno status . --json`.
|
|
43
|
+
- A shared read-only engine at `lib/auto-invoke-engine.js` computes status from disk evidence and recommends the safest next command.
|
|
44
|
+
- The installer copies the engine into Scriveno shared assets for global and project installs, so Claude Code, Codex, Cursor, Gemini CLI, OpenCode, GitHub Copilot, Windsurf, Antigravity, Manus, Perplexity Desktop, and the generic fallback can share the same status contract.
|
|
45
|
+
- `/scr:next`, `/scr:progress`, `/scr:session-report`, and `/scr:sync` now try the public status CLI first, then fall back to source, global, or project engine paths.
|
|
46
|
+
- The README now includes a status CLI badge, quick-start status command, proactive status section, and a direct Auto-Invoke Policy link.
|
|
47
|
+
- Package and shipped metadata are aligned on `2.0.8`.
|
|
48
|
+
|
|
49
|
+
### Why it matters
|
|
50
|
+
|
|
51
|
+
The previous release made automation visible. This release makes the safest read-only part executable as a real package surface. Users and host runtimes can now ask Scriveno what the project needs next without relying on a hidden background process or a Codex-only path.
|
|
52
|
+
|
|
53
|
+
The engine still does not mutate files or spawn agents by itself. It gives a consistent, inspectable status answer; command workflows decide what to run next.
|
|
54
|
+
|
|
55
|
+
### Affected areas
|
|
56
|
+
|
|
57
|
+
- public CLI
|
|
58
|
+
- shared auto-invoke engine
|
|
59
|
+
- installer shared assets
|
|
60
|
+
- `/scr:next`, `/scr:progress`, `/scr:session-report`, and `/scr:sync`
|
|
61
|
+
- README badges and launch copy
|
|
62
|
+
- runtime support and auto-invoke documentation
|
|
63
|
+
- release metadata and package contents
|
|
64
|
+
- regression tests for CLI output, JSON output, install assets, and package inclusion
|
|
65
|
+
|
|
66
|
+
### Verification
|
|
67
|
+
|
|
68
|
+
- `node --test`
|
|
69
|
+
- `npm run release:check`
|
|
70
|
+
- `npm pack --dry-run --json`
|
|
71
|
+
- `git diff --check`
|
|
72
|
+
|
|
5
73
|
## 2.0.7 - 2026-05-16
|
|
6
74
|
|
|
7
75
|
### What changed
|
package/docs/runtime-support.md
CHANGED
|
@@ -10,9 +10,11 @@ Node is required for:
|
|
|
10
10
|
|
|
11
11
|
- running `npx scriveno@latest`
|
|
12
12
|
- executing `bin/install.js`
|
|
13
|
+
- running `scriveno status --project .`
|
|
14
|
+
- executing the shared auto-invoke status engine at `lib/auto-invoke-engine.js`
|
|
13
15
|
- running the repo's JavaScript test suite
|
|
14
16
|
|
|
15
|
-
Node is not a runtime dependency for Scriveno's markdown command system itself. Once installed, Scriveno's command files, agent prompts, templates, and
|
|
17
|
+
Node is not a runtime dependency for Scriveno's markdown command system itself. Once installed, Scriveno's command files, agent prompts, templates, constraints, and shared auto-invoke engine are read by the host AI coding agent. Runtimes that can run local shell commands can call the engine directly; runtimes that cannot should use the same command text as a fallback contract.
|
|
16
18
|
|
|
17
19
|
## Evidence Levels
|
|
18
20
|
|
|
@@ -61,6 +63,27 @@ Node is not a runtime dependency for Scriveno's markdown command system itself.
|
|
|
61
63
|
- Manus Desktop and the generic skills fallback install a manifest `SKILL.md`, mirrored command files, and agent prompts inside the skill bundle.
|
|
62
64
|
- Perplexity Desktop receives setup assets for a local-MCP connector. It does not receive writable command or agent prompt directories from the installer.
|
|
63
65
|
|
|
66
|
+
## Shared Auto-Invoke Engine
|
|
67
|
+
|
|
68
|
+
Every install target receives the same read-only status engine through Scriveno's shared asset directory:
|
|
69
|
+
|
|
70
|
+
- global installs: `~/.scriveno/lib/auto-invoke-engine.js`
|
|
71
|
+
- project installs: `.scriveno/lib/auto-invoke-engine.js`
|
|
72
|
+
- source checkouts: `lib/auto-invoke-engine.js`
|
|
73
|
+
|
|
74
|
+
The engine computes proactive state from disk evidence: missing or stale context, plan and draft coverage, unresolved review files, unresolved notes, revision proposals, translation work, publishing prerequisites, stale exports, missing history, and the recommended next command. It does not mutate manuscript files and does not spawn agents. Host commands such as `/scr:next`, `/scr:progress`, `/scr:session-report`, and `/scr:sync` should call it first when local command execution is available, then fall back to their embedded markdown logic when the host cannot run Node.
|
|
75
|
+
|
|
76
|
+
The public CLI entrypoint is:
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
scriveno status --project .
|
|
80
|
+
scriveno status . --json
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
The JSON form is intended for CI, host adapters, and future runtime smoke tests.
|
|
84
|
+
|
|
85
|
+
Status output uses the same route-intelligence shape across runtimes: `Candidate agents`, `Candidate local helpers`, and `Manual gates`. That keeps Claude Code, Codex, Cursor, Gemini CLI, OpenCode, GitHub Copilot, Windsurf, Antigravity, Manus, Perplexity Desktop, and generic skill installs aligned even when their native spawning mechanisms differ.
|
|
86
|
+
|
|
64
87
|
## What Scriveno Proves Today
|
|
65
88
|
|
|
66
89
|
Scriveno currently proves all of the following in-repo:
|