notabene doctor | Read-only state as JSON: config/store/port/editor + detected doc folders — --json |
notabene init | Write notabene.config.mjs + create the store (no-op if present); --detect auto-detects doc folders. Also writes the agent entry point: <store>/protocol.md + a bounded block in AGENTS.md — opt out with --no-protocol / --no-agents-md. Idempotent: re-run it to refresh both |
notabene dev | Start the review server over this repo’s docs (live-reload); --detach runs it as a background daemon — reused when one of the same version is already up, restarted on this version otherwise (e.g. after a plugin update). With the optional pagefind dev dep, its search is full-text too |
notabene status | Is the detached server running? (pid, port, URL, renderer version) — --json |
notabene stop | Stop the detached server |
notabene build | Build the site (Node standalone; docs prerendered, no write API in the artifact) |
notabene build --public | Read-only static site for public hosting — see the guide. [--site URL] [--base /sub] [--out DIR]. With the optional pagefind dev dep installed, the artifact gets static full-text search |
notabene preview | Serve the built site |
notabene lint | Validate inter-doc links against the last build’s emitted routes (did-you-mean suggestions; --json). After build --public, also catches links from public pages into private content. Exit 1 = broken links, 2 = no build yet |
notabene pdf | Export a PDF via headless Chromium (bookmark outline + page numbers); --scope doc|space:K|folder:K/P|page:K/I, --locale, --out, --chrome. Needs the optional puppeteer peer dep (or puppeteer-core + --chrome) |
notabene migrate | Convert the store to the one-file-per-comment layout (stamps schemaVersion 3) |
notabene comments ls | List comments — --open --json --page <p> (for agents/scripts) |
notabene comments done | Mark comment(s) handled: done <id…> [--note <text>] [--journal <entryId>]. The status comes from review (auto → resolved, approve → addressed) — --status overrides, --force acts on a comment that is on hold. Atomic; every other field preserved |
notabene comments reopen | Send comment(s) back to open: reopen <id…> [--reply <text>] [--author <name>] — the reason becomes a thread reply the agent reads on its next pass (the CLI side of rejecting at /review) |
notabene comments verify | Audit the store: statuses, comment↔journal links both ways, layout, duplicates, dangling pages. --json; exit 1 on errors, 2 with no store. Run it after an agent pass, or in CI |
notabene journal add | Append a JSON journal entry read from stdin (atomic; --json echoes { id } so an agent can chain it) |
notabene protocol | Print the agent protocol on stdout — --path prints where it lives, --write refreshes <store>/protocol.md |