This guide is for contributors working on Scriveno itself rather than using Scriveno as a writer.
Scriveno is a pure skill and command system:
- commands are markdown files in
commands/scr/ - agents are markdown files in
agents/ - templates are markdown or JSON files in
templates/ - the installer is the only Node-based executable surface in
bin/install.js data/CONSTRAINTS.jsonis the central registry for capabilities and adaptation
There is no compiled app, frontend bundle, service, or dependency-heavy local dev stack to boot.
Scriveno’s local development requirements are intentionally small:
- Node.js >=20.0.0 for the installer and test runner. Use a currently supported LTS such as Node.js 24 for new work.
- npm for package scripts and publish tooling
- git for normal repo history
Install dependencies:
npm installToday that mainly creates the lockfile context and standard npm metadata flow. The package remains dependency-free at runtime.
These are the main places contributors work:
commands/scr/for writer-facing commandscommands/scr/sacred/for sacred-exclusive subcommandsagents/for fresh-context worker agents likedrafterandvoice-checkertemplates/for generated project scaffoldingdata/CONSTRAINTS.jsonfor work types, commands, adaptations, and export rulesdocs/for shipped documentationtest/for Node test suitesbin/install.jsfor runtime installation behavior
- Edit or add the markdown file under
commands/scr/ - Register or update the command in
data/CONSTRAINTS.json - Update docs if the command surface or wording changed
- Add or update tests when the change affects trust, counts, adaptation, packaging, or installer behavior
Use Contributing for the full command-authoring walkthrough.
- Add or update the work type under
data/CONSTRAINTS.json - Check its group, hierarchy,
command_unit, and anyconfig_defaults - Update docs that reference work-type counts or examples
- Update tests that lock the visible work-type surface
- Add the template under
templates/,templates/technical/, ortemplates/sacred/ - Update the command logic or docs that describe the generated file set
- Verify the template is included by npm packaging if it is supposed to ship
- Edit
bin/install.js - Update docs that mention installer targets, runtime support, or setup paths
- Run the installer and package-oriented tests
- Dry-run packaging before release-sensitive changes
These constraints matter more than convenience:
- keep the system markdown-first and dependency-light
- preserve the Voice DNA pipeline
- keep
>=20.0.0as the installer compatibility floor unless the product plan changes - treat
docs/runtime-support.mdanddocs/shipped-assets.mdas trust-critical docs - avoid overstating runtime parity or shipped assets
If a command file and the plan disagree, the plan is canonical and the command should be corrected.
Run the full suite:
npm testRun a smaller targeted subset while iterating:
node --test test/package.test.js test/constraints.test.jsRun the release gate before publishing:
npm run release:checkRun the writing-policy gate directly when changing docs, prompts, commands, release notes, or public copy:
npm run policy:checkStart the installer locally:
npm startRefresh installed runtime surfaces from this checkout after changing commands, agents, or installer-generated skills:
node bin/install.js --runtime codex --global --developer --silentThe writer-facing form of this maintenance operation is /scr:sync.
For a full cross-runtime refresh from this checkout, use:
node bin/install.js --runtimes claude-code,cursor,gemini-cli,codex,opencode,copilot,windsurf,antigravity,manus,perplexity-desktop,generic --global --developer --silentAfter installation, the shared audit commands should pass:
scriveno sync --check
scriveno smoke --json
scriveno agents --json
scriveno routes --jsonDocs are part of the shipped product. If you change visible behavior, update every affected documentation surface in the same pass: root docs, files under docs/, proof READMEs, template READMEs, and command markdown that exposes user-facing contracts.
For release-oriented documentation surfaces, the main files are:
README.mdCHANGELOG.mddocs/quick-proof.mddocs/starter-sets.mddocs/release-checklist.mddocs/release-notes.mddocs/shipped-assets.mddocs/command-reference.mddocs/auto-invoke-policy.mddocs/runtime-support.mddocs/route-graph.mdtemplates/*/README.mdwhen shipped profiles or templates change.planning/milestone summaries when you are still using an external planning layer
A good pre-ship pass for Scriveno changes is:
- run the targeted tests for the touched surface
- run
npm test - run
npm run policy:checkfor docs, command, agent, prompt, and release-note changes - run
npm run release:checkfor package-facing changes - run the proactive audit commands when routing, runtime, installer, or agent surfaces changed
- review trust-sensitive docs for runtime, asset, and support claims