scriveno 2.0.8 → 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 +9 -6
- package/commands/scr/health.md +6 -0
- package/commands/scr/new-work.md +1 -1
- package/commands/scr/next.md +6 -0
- package/commands/scr/progress.md +6 -0
- package/commands/scr/save.md +6 -0
- package/commands/scr/scan.md +6 -0
- package/commands/scr/session-report.md +6 -0
- package/data/CONSTRAINTS.json +3082 -701
- package/docs/architecture.md +13 -3
- package/docs/auto-invoke-policy.md +14 -0
- package/docs/configuration.md +1 -1
- package/docs/getting-started.md +1 -1
- package/docs/release-notes.md +33 -0
- package/docs/runtime-support.md +3 -1
- package/lib/auto-invoke-engine.js +388 -2
- 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
|
|
|
@@ -353,7 +353,17 @@ Codex uses a skill-native variation of this strategy. The installer generates on
|
|
|
353
353
|
|
|
354
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
355
|
|
|
356
|
-
The engine checks disk evidence only: project presence, STATE.md, CONTEXT.md freshness,
|
|
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.
|
|
357
367
|
|
|
358
368
|
### Installation modes
|
|
359
369
|
|
|
@@ -4,6 +4,10 @@ Scriveno can be proactive, but it must be proactive from disk evidence. Commands
|
|
|
4
4
|
|
|
5
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
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
|
+
|
|
7
11
|
## Cross-Platform Agent Rules
|
|
8
12
|
|
|
9
13
|
Scriveno agent prompts live in `agents/*.md`. Each host runtime exposes them differently:
|
|
@@ -23,8 +27,14 @@ Agent status:
|
|
|
23
27
|
Trigger: <command or state condition>
|
|
24
28
|
Spawned agents:
|
|
25
29
|
- <agent-name>: <count, none, or prompt-run fallback used>
|
|
30
|
+
Candidate agents:
|
|
31
|
+
- <command>: <agent names or none>
|
|
26
32
|
Local operations:
|
|
27
33
|
- <operation>: <result>
|
|
34
|
+
Candidate local helpers:
|
|
35
|
+
- <command>: <reason or none>
|
|
36
|
+
Manual gates:
|
|
37
|
+
- <command>: <reason or none>
|
|
28
38
|
Auto-invoked:
|
|
29
39
|
- <command or helper>: yes/no
|
|
30
40
|
Why: <one sentence tied to disk state>
|
|
@@ -47,8 +57,12 @@ Run these read-only checks in `/scr:next`, `/scr:progress`, and closeouts for ma
|
|
|
47
57
|
|
|
48
58
|
- If `STATE.md`, `CONTEXT.md`, `HISTORY.log`, or draft mtimes disagree, suggest `/scr:scan`.
|
|
49
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.
|
|
50
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`.
|
|
51
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.
|
|
52
66
|
- If export outputs are older than source files, suggest `/scr:export` or `/scr:publish`.
|
|
53
67
|
- If no save exists after recent manuscript changes, suggest `/scr:save`.
|
|
54
68
|
|
package/docs/configuration.md
CHANGED
package/docs/getting-started.md
CHANGED
|
@@ -31,7 +31,7 @@ scriveno status --project .
|
|
|
31
31
|
scriveno status . --json
|
|
32
32
|
```
|
|
33
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.
|
|
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
35
|
|
|
36
36
|
## Step 2: Explore the Demo (Optional)
|
|
37
37
|
|
package/docs/release-notes.md
CHANGED
|
@@ -2,6 +2,39 @@
|
|
|
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
|
+
|
|
5
38
|
## 2.0.8 - 2026-05-16
|
|
6
39
|
|
|
7
40
|
### What changed
|
package/docs/runtime-support.md
CHANGED
|
@@ -71,7 +71,7 @@ Every install target receives the same read-only status engine through Scriveno'
|
|
|
71
71
|
- project installs: `.scriveno/lib/auto-invoke-engine.js`
|
|
72
72
|
- source checkouts: `lib/auto-invoke-engine.js`
|
|
73
73
|
|
|
74
|
-
The engine computes proactive state from disk evidence: missing or stale context, unresolved review files, translation work, 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.
|
|
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
75
|
|
|
76
76
|
The public CLI entrypoint is:
|
|
77
77
|
|
|
@@ -82,6 +82,8 @@ scriveno status . --json
|
|
|
82
82
|
|
|
83
83
|
The JSON form is intended for CI, host adapters, and future runtime smoke tests.
|
|
84
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
|
+
|
|
85
87
|
## What Scriveno Proves Today
|
|
86
88
|
|
|
87
89
|
Scriveno currently proves all of the following in-repo:
|