Agent Skills
› HKUDS/CLI-Anything
› cli-anything-joplin
cli-anything-joplin
GitHub提供Joplin笔记应用的CLI自动化能力,支持笔记本、笔记、待办、标签及同步等全工作流操作。通过JSON输出和状态管理,实现与真实Joplin终端后端的交互,适用于笔记内容的创建、检索、导入导出及多步骤工作流的编排。
Trigger Scenarios
需要批量处理或自动化操作Joplin笔记内容
需要通过命令行脚本集成Joplin笔记数据
执行Joplin的同步、导入导出或搜索任务
Install
npx skills add HKUDS/CLI-Anything --skill cli-anything-joplin -g -y
SKILL.md
Frontmatter
{
"name": "cli-anything-joplin",
"description": "Command-line interface for Joplin workflows using the real joplin terminal backend"
}
cli-anything-joplin
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.
Requirements
- Python 3.10+
- Joplin terminal binary available as
joplin - Optional: pass
--profileto target a specific Joplin profile
Install
cd joplin/agent-harness
pip install -e .
Usage
# 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
JSON output contract
When --json is enabled, commands return:
ok: booleancommand: stable command identifier such asnotes.list,todos.toggledata: command payloaderror: null on success, or{ type, message }on failure
Command groups
project: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
Agent guidance
- Prefer
--jsonfor parseable output. - Use
--projectwhen running multi-step workflows so history is persisted. - One-shot mutating commands auto-save the project unless
--dry-runis set. - REPL mode does not auto-save; run
project saveexplicitly. - Some Joplin CLI builds gate
searchbehind GUI mode; if you see"only available in GUI mode", treat search as best-effort. - Joplin 3.6.x can have a broken
versioncommand in npm global layouts; the harness falls back to installed package metadata forbackend version, probing the symlink-resolved binary directory, the Windows-style siblingnode_modules/joplin, the Unix-style parentlib/node_modules/joplin, and finallynpm root -g. - Backend
stdout/stderrin command results are verbatim; do not assume warnings were stripped from note bodies or exports. - On failure, parse
errorusing the samecommandfield as success (config.import_file,e2ee.decrypt_file). Multi-word subcommands use a single dot between group and subcommand.
Test workflow
# 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
Version History
- 6f372d3 Current 2026-08-20 06:41


