The repository ships with validators and workflows that enforce protocol structure across generated assets, runtime operations, MCP discovery, transcripts, skill/plugin packaging, and docs.
VPP runtime contract
npm run check:generatedrejects drift from the v1.5 manifest.npm run typecheckverifies the typed core, host adapter, MCP server, and Worker.npm run test:vppcovers transitions, global counters, cycles, repair, OpenAPI operations, and 2025-era MCP discovery.npm run validate:vpp-artifactschecks the portable skill and plugin package.npm run check:plugin-packagerejects stale downloadable plugin and standalone skill archives.npm run build:workerperforms a Cloudflare dry-run build without deploying.
Markdown linting
- Command:
npm run lint:md - Scope: Human-authored documentation; generated specifications are excluded from style rewrites.
- Purpose: Keep formatting predictable for both human readers and downstream tooling that ingests the spec.
Spell checking
- Command:
npx cspell --no-progress "docs/**/*.md" "spec/**/*.md" "website/docs/**/*.md" "README.md" - Scope: Human-facing docs and machine-readable specs.
- Purpose: Guard against typos in tag names, modifiers, and experiment identifiers that would otherwise break scripts.
Transcript validation
- Command:
node scripts/test-transcripts.mjs - Scope: Fixtures in
/tests/and/corpus/. - Purpose: Ensure transcripts respect the command-line grammar and footer schema before they enter the corpus.
Experiment harnesses
- Location:
/experiments/ - Scripts:
npm run run:exp1-protret,npm run run:exp2-promptinj,npm run run:exp1b-user-only, and associated analyzers. - Purpose: Provide reproducible prompt-injection and retention studies grounded in the current protocol release.
Pages deployment
- Workflow:
.github/workflows/pages.yml - Steps: Install Node 20, run lint + spell + parser checks, build the VitePress site with
npm run docs:build, and publish viaactions/deploy-pages. - Output: https://viableprompt.org/
Use these commands locally before pushing changes; CI will block merges that diverge from the expected outputs.