Memeroot · CLI bridge · Node.js, no runtime dependencies

memeroot-cli

Programmatic bridge between Claude Code and the Memeroot canvas. Validate, bundle, and package region files into a single canvas-ready HTML — opened in any browser, the canvas boots with content already loaded.

Three commands: validate, bundle, package. Pure Node.js, no external dependencies, no runtime services. Designed to be invoked by Claude Code (via the bash tool) when the memeroot-bridge skill is active.

↓ Download memeroot-cli.zip View memeroot-bridge skill

The workflow it closes

user "document REV-001" Claude Code + regulated-doc-author + memeroot-bridge produces files: control.xml tod.xml toe.xml memeroot-cli validate · bundle · package produces: audit-packet.html (canvas + content + auto-load bootstrap) Memeroot canvas opens in any browser 3 regions in Tree ready for signing writes XML invokes via bash opens .html

Without this CLI, the workflow from "produce content" to "have content in canvas" requires three manual steps from the user: open canvas, drop files, ingest each one. With this CLI, Claude Code closes the loop programmatically: the user receives one HTML file, opens it, the canvas boots with all content already in the Tree.

The three commands

memeroot validate

Check region files for well-formedness, stable IDs, and Memeroot conventions before signing.
$ memeroot validate control.xml tod.xml toe.xml
 control.xml  <control id="REV-001"> · 1842b
 tod.xml      <test-of-design id="TOD-REV-001-2026Q1"> · 2410b
 toe.xml      <test-of-operating-effectiveness id="TOE-REV-001-2026Q1"> · 3104b

3 ok · 0 failed · 0 warnings

Checks: well-formed XML · root element with id matching [A-Za-z][A-Za-z0-9_-]{1,127} · root is a known Memeroot region kind · no fake <signature> elements · no absolute file paths · no unfilled [NEEDS INPUT:…] placeholders. Exit code 0 = pass, 1 = at least one failure.

memeroot bundle

Combine multiple region files into a single <workspace> XML.
$ memeroot bundle control.xml tod.xml toe.xml -o packet.xml --title "REV-001 audit"
 wrote packet.xml (8412b · 3 regions · id WS-2026-05-23-mphr...)

Each input is validated first; bundle aborts on any failure. The workspace wrapper carries metadata (generation timestamp, source filenames, region count). Inputs that are already workspace bundles can be nested.

memeroot package

Produce a single-file HTML containing the Memeroot canvas with regions pre-loaded.
$ memeroot package control.xml tod.xml toe.xml -o audit-packet.html --title "REV-001 Q1 audit"
 wrote audit-packet.html (149312b · canvas + 3 region file(s) + bootstrap)
  open in a browser; canvas boots with content pre-loaded

Wraps the bundled workspace with the canvas HTML template, plus a small bootstrap script that auto-injects content into the canvas's ingest endpoint on page load. The recipient opens audit-packet.html, sees the canvas boot, sees a confirmation banner ("✓ packet loaded · N bytes"), and finds the regions already in the Tree tab ready for signing.

Install

$ unzip memeroot-cli.zip
$ cd memeroot-cli/
$ npm install -g .
# Or use directly: node bin/memeroot ...

$ memeroot help
memeroot — Memeroot canvas ↔ Claude Code bridge CLI
Commands:
  memeroot validate <file>...           — check files for well-formedness, ids, conventions
  memeroot bundle <file>... -o out.xml  — combine region files into one workspace.xml
  memeroot package <file>... -o out.html — produce single-file canvas with regions pre-loaded

Requires Node.js 18+. No runtime dependencies; the CLI is pure Node.js using only built-in modules. The canvas template bundled with the package is the same single-file MR-CANVAS-v0.8.html the Memeroot ecosystem uses.

Composition with the memeroot-bridge skill

The CLI is designed to be invoked by Claude Code itself, via the bash tool, when the memeroot-bridge skill is active. Typical session:

User: "Document the REV-001 control for SOX Q1; output as Memeroot packet."

Claude Code:
  [ regulated-document-author + memeroot-bridge skills activate ]

  # Produces three structured region files
  $ cat > control.xml << 'XML'
    <control id="REV-001">...</control>
    XML
  $ cat > tod.xml << 'XML'
    <test-of-design id="TOD-REV-001-2026Q1">...</test-of-design>
    XML
  $ cat > toe.xml << 'XML'
    <test-of-operating-effectiveness id="TOE-REV-001-2026Q1">...
    XML

  # Self-validates before packaging
  $ memeroot validate *.xml
  ✓ 3 ok · 0 failed · 0 warnings

  # Packages as single HTML deliverable
  $ memeroot package *.xml -o audit-packet.html --title "REV-001 Q1 audit"
   wrote audit-packet.html

  → User receives audit-packet.html
  → Opens it in browser
  → Canvas boots, three regions in the Tree, banner: "✓ packet loaded"
  → User signs in Sign tab as the appropriate identity
  → Bundles for distribution to external auditor

The natural-language → multi-signed audit packet pipeline is now fully automated end-to-end with these four pieces working together: Claude Code, regulated-document-author skill, memeroot-bridge skill, memeroot-cli.