RemNote via remnote-cli
Use this skill when a user wants to read or manage RemNote content from the command line with remnote-cli.
If the user needs navigation across the whole knowledge base (for example: "where does this topic live in my notes?",
"start from top-level note tree", "map main note groups"), prefer remnote-kb-navigation when it is available and
customized for the current user, then return to this skill for general command policy and write gating. If
remnote-kb-navigation is not available (or still template/unconfigured), continue with this skill alone and ask for
skill customization when needed.
Example Conversation Triggers
- "Check if RemNote bridge is connected."
- "Search my RemNote for sprint notes."
- "Find notes tagged weekly-review in RemNote."
- "Read this RemNote by ID:
<rem-id>." - "Map the top-level structure of my whole RemNote knowledge base."
- "Create a RemNote note titled X with this content." (requires
confirm write) - "Append this to my journal in RemNote." (requires
confirm write)
Preconditions (required)
- RemNote Automation Bridge plugin is installed in RemNote.
- Plugin install path is one of:
- Marketplace install guide:
https://github.com/robert7/remnote-mcp-bridge/blob/main/docs/guides/install-plugin-via-marketplace-beginner.md - Local dev plugin guide:
https://github.com/robert7/remnote-mcp-bridge/blob/main/docs/guides/development-run-plugin-locally.md
- Marketplace install guide:
remnote-cliis installed on the same machine where OpenClaw runs.- Preferred install:
npm install -g remnote-cli
- Preferred install:
- RemNote is open in browser/app (
https://www.remnote.com/). remnote-clidaemon is running (remnote-cli daemon start).- The plugin panel is open in RemNote right sidebar and shows connected status.
If any precondition is missing, stop and fix setup first.
Read-First Safety Policy
- Default to read-only flows:
status,search,search-tag,read,daemon status. - Do not run mutating commands by default.
- For writes (
create,update,journal), require the exact phraseconfirm writefrom the user in the same turn. - If
confirm writeis not present, ask for confirmation and do not execute writes.
Command Invocation Rule (critical)
- Run exactly one
remnote-clicommand per execution. - Invoke
remnote-clidirectly; do not chain shell commands. - Do not use
&&,|,;, subshells ((...)), command substitution ($()),xargs, orechopipelines. - WRONG:
remnote-cli daemon status --text && echo '---' && remnote-cli status --text - RIGHT:
remnote-cli daemon status --text - RIGHT:
remnote-cli status --text - Reason: command chaining can trigger exec approvals and break automation flow.
Write Payload Rule (allowlist-friendly)
- For write commands, prefer file-based payload flags:
--content-file <path|->forcreate/journal--append-file <path|->or--replace-file <path|->forupdate
- Keep executed command strings short and predictable for OpenClaw allowlisting.
- Inline
--content/--appendand positionaljournal [content]are discouraged except for very short single-line text. -(stdin) is supported but discouraged by default in OpenClaw flows because command context can be less explicit.
Compatibility Check (mandatory before real work)
- Check daemon and bridge connectivity:
remnote-cli daemon status --textremnote-cli status --text
- Confirm plugin panel is open in right sidebar and connected.
- Read versions from
remnote-cli status --text:- active plugin version
- CLI version
version_warning(if present)- write-policy flags:
acceptWriteOperations,acceptReplaceOperation
- Enforce version rule: bridge plugin and
remnote-climust be the same0.xminor line (prefer exact match). - If mismatch:
- Install matching CLI version:
- Exact:
npm install -g remnote-cli@<plugin-version> - Or same minor line (
0.<minor>.x) when exact is unavailable.
- Exact:
- Re-run:
remnote-cli --versionremnote-cli daemon restartis not available, so run:remnote-cli daemon stopremnote-cli daemon start
remnote-cli status --text
- Install matching CLI version:
Core Commands
Health and Connectivity
remnote-cli daemon startremnote-cli daemon status --textremnote-cli status --text
Read-Only Operations (default)
- Search notes:
remnote-cli search "query" - Search by tag:
remnote-cli search-tag "tag" - Read note by Rem ID:
remnote-cli read <rem-id> - Optional text mode: add
--text
Output Mode and Traversal Strategy
- Use JSON output (default) for navigation, multi-step retrieval, and any flow that needs IDs for follow-up reads.
- Use
--textonly for plain human summarization of exactly one note when no further navigation is needed. - For structure traversal, start with shallow reads and high child limit:
remnote-cli read <rem-id> --depth 1 --child-limit 500
--include-content modes
--include-content markdown:- Returns readable rendered child content.
- Best for summarization/presentation.
- Markdown content does not provide child IDs required for further navigation.
--include-content structured:- Returns hierarchical
contentStructureddata including child rem IDs. - Best for navigation and deterministic ID-first traversal.
- Returns hierarchical
Mutating Operations (only after confirm write)
- Create (preferred):
remnote-cli create "Title" --content-file /tmp/body.md --text - Update (preferred):
remnote-cli update <rem-id> --title "New Title" --append-file /tmp/append.md --text - Update replace (destructive, preferred only with explicit user intent):
remnote-cli update <rem-id> --replace-file /tmp/replacement.md --textremnote-cli update <rem-id> --replace "" --text(clear all direct children)
- Journal (preferred):
remnote-cli journal --content-file /tmp/entry.md --text - Fallbacks (discouraged): inline flags or positional
journal [content]for short single-line text only. - Safety:
- Never combine append and replace flags in one command.
- Run replace only when
acceptWriteOperations=trueandacceptReplaceOperation=truefromstatus. - Treat replace as destructive and require the user to clearly request replace semantics.
Failure Handling
- Daemon unreachable (exit code
2): start daemon and retry. - Bridge not connected: open RemNote, open right sidebar plugin panel, verify connected state, retry
status. - Version mismatch warning: align
remnote-cliversion to plugin0.xminor line, then restart daemon.
Operational Notes
- JSON output is default and preferred for automation.
--textis useful for quick human checks.- Reference command docs when unsure:
https://github.com/robert7/remnote-cli/blob/main/docs/guides/command-reference.md