executing-plans
executing-plans
Use when executing an implementation plan in the current session as the implementer yourself — your human partner chose inline execution, or no subagent tool is available
cli-anything-joplinCommand-line interface for Joplin workflows using the real joplin terminal backend
Independent GitHub snapshot · Automated classification · Original documentation governs
Use this skill to automate Joplin notebook, note, to-do, tag, attachment,
search, sync, and import/export workflows through a stateful harness backed by
the real joplin terminal binary.
joplin--profile to target a specific Joplin profilecd joplin/agent-harness
pip install -e .
# REPL mode (default)
cli-anything-joplin
# Machine-readable one-shot command
cli-anything-joplin --json notebooks list
# Stateful project
cli-anything-joplin project new --name demo -o ./demo.joplin-harness.json
cli-anything-joplin --project ./demo.joplin-harness.json notes create "Meeting note"
# Dry-run (no auto-save)
cli-anything-joplin --json --dry-run --project ./demo.joplin-harness.json notes create temp
When --json is enabled, commands return:
ok: booleancommand: stable command identifier such as notes.list, todos.toggledata: command payloaderror: null on success, or { type, message } on failureproject: new, open, save, info, json, statusnotebooks: list, create, use, removenotes: list, create, set, get, remove, copy, move, renametodos: list, create, toggle, clear, done, undonetags: list, add, remove, notetags, tagnotessearch: runsync: run (--target, --upgrade, --use-lock)interop: import, exportconfig: get, set, list, export, import-fileattach: addstatus: show, restorebackend: version, dump, keymap, geoloc, export-sync-statusserver: status, start, stope2ee: status, target-status, decrypt, decrypt-filesession: status, undo, redo, history--json for parseable output.--project when running multi-step workflows so history is persisted.--dry-run is set.project save explicitly.search behind GUI mode; if you see
"only available in GUI mode", treat search as best-effort.version command in npm global layouts; the
harness falls back to installed package metadata for backend version,
probing the symlink-resolved binary directory, the Windows-style sibling
node_modules/joplin, the Unix-style parent lib/node_modules/joplin, and
finally npm root -g.stdout/stderr in command results are verbatim; do not assume
warnings were stripped from note bodies or exports.error using the same command field as success
(config.import_file, e2ee.decrypt_file). Multi-word subcommands use
a single dot between group and subcommand.# Quick feedback loop
python -m pytest -q cli_anything/joplin/tests/test_core.py
python -m pytest -q cli_anything/joplin/tests/test_full_e2e.py::TestCLISubprocess
# Real backend (joplin must be in PATH)
python -m pytest -v cli_anything/joplin/tests/test_full_e2e.py::TestBackendCommands
python -m pytest -v cli_anything/joplin/tests/test_full_e2e.py::TestBackendWorkflows
python -m pytest -v cli_anything/joplin/tests/test_full_e2e.py::TestBackendIntegration
# Full suite
python -m pytest -v --tb=no cli_anything/joplin/tests
# Verify the installed console script entry point
CLI_ANYTHING_FORCE_INSTALLED=1 python -m pytest -v -s cli_anything/joplin/tests/test_full_e2e.py
Current validation baseline (Windows + Joplin CLI 3.6.2):
python -m pytest -q cli_anything/joplin/tests/test_core.py -> 107 passedpython -m pytest -q cli_anything/joplin/tests -> 134 passed, 1 skipped