¿Qué hace cli-anything-joplin?
Usa este skill para automatizar flujos de trabajo de Joplin (notebooks, notas, tareas pendientes, etiquetas, adjuntos, búsqueda, sincronización e importación/exportación) a través de un harness con estado respaldado por el binario real de terminal joplin.
Requisitos
- Python 3.10+
- Binario de terminal de Joplin disponible como
joplin - Opcional: pasa
--profilepara apuntar a un perfil específico de Joplin
Instalación
cd joplin/agent-harness
pip install -e .
Uso
# Modo REPL (predeterminado)
cli-anything-joplin
# Comando único legible por máquina
cli-anything-joplin --json notebooks list
# Proyecto con estado
cli-anything-joplin project new --name demo -o ./demo.joplin-harness.json
cli-anything-joplin --project ./demo.joplin-harness.json notes create "Nota de reunión"
# Simulación (sin guardado automático)
cli-anything-joplin --json --dry-run --project ./demo.joplin-harness.json notes create temp
Contrato de salida JSON
Cuando --json está habilitado, los comandos devuelven:
ok: booleanocommand: identificador de comando estable, p. ej.,notes.list,todos.toggledata: carga útil del comandoerror: null en éxito, o{ type, message }en fallo
Grupos de comandos
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
Guía para el agente
- Prefiere
--jsonpara salida analizable. - Usa
--projectal ejecutar flujos de trabajo multi-paso para que el historial se persista. - Los comandos mutantes de un solo uso guardan automáticamente el proyecto a menos que se establezca
--dry-run. - El modo REPL no guarda automáticamente; ejecuta
project saveexplícitamente. - Algunas compilaciones de la CLI de Joplin bloquean
searchdetrás del modo GUI; si ves"only available in GUI mode", trata la búsqueda como un esfuerzo opcional. - Joplin 3.6.x puede tener un comando
versionroto en diseños globales de npm; el harness recurre a metadatos de paquetes instalados parabackend version, explorando el directorio binario resuelto por enlace simbólico, el hermanonode_modules/joplinestilo Windows, el padrelib/node_modules/joplinestilo Unix y finalmentenpm root -g. - La salida
stdout/stderrdel backend en los resultados del comando es textual; no asumas que las advertencias se eliminaron de los cuerpos de notas o exportaciones. - En caso de fallo, analiza
errorusando el mismo campocommandque en éxito (config.import_file,e2ee.decrypt_file). Los subcomandos de varias palabras usan un solo punto entre el grupo y el subcomando.
Flujo de trabajo de prueba
# Bucle de retroalimentación rápida
python -m pytest -q cli_anything/joplin/tests/test_core.py
python -m pytest -q cli_anything/joplin/tests/test_full_e2e.py::TestCLISubprocess
# Backend real (joplin debe estar en 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
# Suite completa
python -m pytest -v --tb=no cli_anything/joplin/tests
# Verificar el punto de entrada del script de consola instalado
CLI_ANYTHING_FORCE_INSTALLED=1 python -m pytest -v -s cli_anything/joplin/tests/test_full_e2e.py
Línea base de validación actual (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