Skip to content

Guide · Agent skill

How to use the Joplin Notes CLI Harness agent skill

Updated · written with AI from the project's own documentation and checked against our catalogue data

The cli-anything-joplin skill lets an AI agent work with your Joplin notebooks, notes, to-dos, tags and attachments by running a command-line tool that talks to the real Joplin terminal app. This guide explains what an agent skill is, how to install this one, how to ask for work in plain language, and what to check before letting it change your notes. By the end you will know the requirements, the safe way to try it, and where its limits are.

Joplin Notes CLI HarnessHKUDS/CLI-Anything · Apache-2.0

Quick start

  1. 1Check requirements. Confirm Python 3.10 or newer is installed and that the Joplin terminal app is available as joplin on your PATH.
  2. 2Install the skill. Download the ZIP from this page and unzip it into ~/.claude/skills/ or a project's .claude/skills/ folder, or upload it under Settings → Capabilities → Skills.
  3. 3Install the command package. From the joplin/agent-harness folder in the repository, run pip install -e . to install cli-anything-joplin.
  4. 4Run a test command. Run cli-anything-joplin --json notebooks list to confirm the harness can reach Joplin.
  5. 5Create a project file. Use project new with --name and -o to create a project file that records multi-step work.
  6. 6Ask the agent in plain language. Describe the notebook, notes and outcome you want, and ask for a dry-run before any change.
  7. 7Review the JSON result. Check the ok flag and the error field in each response before accepting the change.

What an agent skill is and what this one does

An agent skill is a folder containing a SKILL.md file. The file tells an AI agent when to use a capability and how to run it. This skill is defined by a SKILL.md file that describes a stateful harness backed by the real joplin terminal binary.

Once the skill is active, the agent can automate Joplin notebook, note, to-do, tag, attachment, search, sync, and import/export workflows through that command-line tool.

  • Manage notebooks: list, create, use, remove
  • Manage notes: list, create, set, get, remove, copy, move, rename
  • Manage to-dos: list, create, toggle, clear, done, undone
  • Manage tags and attachments, run search, sync, and import or export notes
  • Save multi-step work to a project file so the history is persisted

Install the cli-anything-joplin skill

Download the skill ZIP from this page and unzip it into one of these locations: ~/.claude/skills/ for a personal install, or a project's .claude/skills/ folder for a single project. Alternatively, upload the ZIP in the Claude apps under Settings → Capabilities → Skills.

The skill's own install step is for the command-line package. Before the agent can run anything, the Joplin terminal app must be installed and available as joplin on your PATH. Then, from the joplin/agent-harness folder in the repository, install the package in editable mode.

  • Python 3.10 or newer
  • Joplin terminal binary available as joplin on PATH
  • Optional: pass --profile to target a specific Joplin profile
cd joplin/agent-harness pip install -e .

Try the command line before you hand it to the agent

The skill runs the cli-anything-joplin command. Running it yourself first shows you what the agent will see. With no arguments it starts REPL mode. For machine-readable output, add --json to a one-shot command.

For repeatable work, create a project file. Commands that change data auto-save the project unless you use --dry-run, which lets you preview a change without saving it.

# 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

Trigger the skill with natural requests

You do not need to type commands yourself. Ask the agent in plain language and name Joplin so it picks up this skill. Be specific about the notebook, the notes and the outcome you want, and say whether you want a preview first.

Good requests name the scope and the action. For example: list the notes in a notebook, tag a set of notes, or export a notebook. For anything that changes data, ask the agent to dry-run first so you can read the result.

  • "Using Joplin, list the notes in my Work notebook as JSON."
  • "In Joplin, add the tag 'review' to every note in the Meeting notebook. Dry-run first and show me what would change."
  • "Create a Joplin project file for this week's cleanup and record each step in it."
  • "Sync my Joplin notes and tell me if any command failed."

Understand the JSON output

When --json is on, every command returns the same shape, which makes results easy for the agent or a script to check. Each response contains an ok flag, a stable command name such as notes.list or todos.toggle, a data payload, and an error field that is null on success.

  • ok: true or false
  • command: stable identifier such as notes.list or todos.toggle
  • data: the command's payload
  • error: null on success, or an object with type and message on failure

Safety notes before you let it run

This skill runs scripts and uses the network. Commands can change or delete notes, and sync may upload data. Only use it on notes that you are comfortable exposing to an automated tool. Use --dry-run for changes and keep a copy of important notes first.

Backend stdout and stderr are returned verbatim, so warnings are not stripped from note bodies or exports. Check exported output before you share it.

  • Use --dry-run before mutating commands
  • Do not run it on notes that must stay private from automated tools
  • Sync and import/export can move data outside your machine; confirm the target first

Tips and known limits

Search may not always work. Some Joplin CLI builds only allow search in GUI mode. If the output says "only available in GUI mode", treat search as best-effort rather than relying on it.

In REPL mode, changes are not auto-saved, so run project save explicitly. Joplin 3.6.x can have a broken version command in npm global layouts; the harness then falls back to installed package metadata for backend version.

  • Prefer --json so results are parseable
  • Use --project for multi-step work so history is kept
  • Run project save after changes made in REPL mode
  • Multi-word subcommands use a dot, such as config.import_file

What people use it for

  • Batch-tag or move notes across notebooks after a reorganisation
  • Create and toggle to-dos from a list of tasks
  • Export a notebook or import notes as part of a repeatable backup or migration routine
  • Run sync on a schedule and report failed commands in JSON
  • Build a saved project file that records each change for later review

Frequently asked questions

How do I install the cli-anything-joplin skill?

Download the skill ZIP from this page and unzip it into ~/.claude/skills/ or a project's .claude/skills/ folder. You can also upload the ZIP in the Claude apps under Settings → Capabilities → Skills.

What do I need before using this skill?

You need Python 3.10 or newer and the Joplin terminal binary available as joplin on your PATH. The harness is installed from the joplin/agent-harness folder in the repository with pip install -e .

Does the skill run code on my computer and use the network?

Yes. The skill runs scripts and uses the network, and sync may upload data. Use it only on notes you are comfortable exposing to an automated tool.

Why does search sometimes fail?

Some Joplin CLI builds only allow search in GUI mode. If you see "only available in GUI mode", the source says to treat search as best-effort.

Is this skill free to use?

The repository is licensed under Apache-2.0. This page does not state any price, so check the repository for licence terms in full.

What should I use if I do not have the Joplin terminal app?

The skill depends on the Joplin terminal app, so it will not work without it. Install Joplin's terminal binary and make sure it is available as joplin on your PATH before using this skill.

New agent skills, repos and AI tools — every week

The best new skills and open-source projects, the fastest-growing repos, and one free prompt. Five minutes to read. Unsubscribe anytime.

Our verdict

This skill suits developers and power users who already use Joplin and want an agent to batch-edit, organise, sync or export notes with structured JSON output. Skip it if you do not have the Joplin terminal app, or if your notes must not be touched by an automated tool, since commands can change or delete notes and sync may upload data.

Download the skill