obsidian-cli
Obsidian CLI — Operate on Obsidian Vaults
Requires the obsidian CLI on $PATH and the Obsidian desktop app running.
obsidian <command> [options]
General Notes
- To get the vault directory path, run
obsidian vault info=path. file=<name>resolves by name (like wikilinks);path=<path>is an exact path (e.g.folder/note.md).- Most commands default to the active file when
file/pathis omitted. - Quote values with spaces:
name="My Note". - Use
\nfor newline,\tfor tab in content values. - Target a specific vault:
vault=<name>. - Many commands accept
format=json|tsv|csvfor structured output.
Security Rules
- Confirm with the user before executing write/delete commands (
create,append,prepend,delete,move,rename,property:set,property:remove). - Prefer reading before writing to verify the target file.
Vault & File Info
obsidian vault # vault info
obsidian vault info=name # vault name only
obsidian vaults # list known vaults
obsidian vaults verbose # include vault paths
obsidian files # list all files
obsidian files folder=Projects ext=md # filter by folder/extension
obsidian files total # file count
obsidian folders # list folders
obsidian file file=MyNote # show file info
obsidian folder path=Projects # show folder info
Reading & Writing Notes
read — Read file contents
obsidian read file=MyNote
obsidian read path=folder/note.md
create — Create a new file
obsidian create name=MyNote content="Hello world"
obsidian create name=FromTemplate template=Daily open
obsidian create path=Projects/idea.md content="New idea" overwrite
| Flag | Description |
|---|---|
name |
File name |
path |
File path |
content |
Initial content |
template |
Template to use |
overwrite |
Overwrite if file exists |
open |
Open file after creating |
newtab |
Open in new tab |
WRITE command — confirm with the user before executing.
append / prepend — Add content to a file
obsidian append file=MyNote content="New paragraph"
obsidian append file=MyNote content=" inline text" inline
obsidian prepend path=inbox.md content="# New Section"
inline appends/prepends without a newline separator.
WRITE command — confirm with the user before executing.
delete — Delete a file
obsidian delete file=MyNote
obsidian delete path=old/note.md permanent # skip trash
WRITE command — confirm with the user before executing.
move / rename
obsidian move file=MyNote to=Archive/
obsidian move path=inbox/note.md to=Projects/note.md
obsidian rename file=MyNote name="Better Name"
WRITE command — confirm with the user before executing.
open — Open a file in Obsidian
obsidian open file=MyNote
obsidian open path=Projects/idea.md newtab
Daily Notes
obsidian daily # open today's daily note
obsidian daily:read # read daily note contents
obsidian daily:path # get daily note path
obsidian daily:append content="- Task done"
obsidian daily:prepend content="## Morning"
daily:append and daily:prepend accept inline, open, and paneType=tab|split|window.
daily:append / daily:prepend — confirm with the user before executing.
Search
obsidian search query="meeting notes"
obsidian search query="TODO" path=Projects limit=10 case
obsidian search:context query="API key" # includes matching line context
obsidian search:context query="bug" format=json
obsidian search:open query="meeting" # open search in Obsidian UI
| Flag | Description |
|---|---|
query |
Search text (required) |
path |
Limit to folder |
limit |
Max files |
total |
Return match count only |
case |
Case sensitive |
format |
text (default) or json |
Tags & Properties
Tags
obsidian tags # list all tags
obsidian tags counts sort=count # sorted by frequency
obsidian tags file=MyNote # tags for a specific file
obsidian tag name=project # tag info
obsidian tag name=project verbose # include file list
Properties (frontmatter)
obsidian properties # list all properties in vault
obsidian properties file=MyNote format=yaml
obsidian property:read name=status file=MyNote
obsidian property:set name=status value=done file=MyNote
obsidian property:set name=priority value=1 type=number file=MyNote
obsidian property:remove name=draft file=MyNote
Property types: text, list, number, checkbox, date, datetime.
property:set / property:remove — confirm with the user before executing.
Tasks
obsidian tasks # list all tasks
obsidian tasks todo # incomplete tasks only
obsidian tasks done # completed tasks only
obsidian tasks file=MyNote verbose # grouped by file with line numbers
obsidian tasks daily # tasks from daily note
obsidian tasks status=" " format=json # filter by status character
obsidian task path=note.md line=5 toggle # toggle task status
obsidian task file=MyNote line=3 done # mark task done
obsidian task daily line=2 todo # mark daily task as todo
task (toggle/done/todo) — confirm with the user before executing.
Links & Graph Analysis
obsidian links file=MyNote # outgoing links
obsidian backlinks file=MyNote # incoming links
obsidian backlinks file=MyNote counts # with link counts
obsidian orphans # files with no incoming links
obsidian deadends # files with no outgoing links
obsidian unresolved # unresolved links in vault
obsidian unresolved verbose # include source files
Bookmarks
obsidian bookmarks # list bookmarks
obsidian bookmark file=Projects/idea.md title="Read later"
obsidian bookmark search="TODO" title="Todo search"
obsidian bookmark url="https://example.com" title="Reference"
bookmark — confirm with the user before executing.
Templates
obsidian templates # list available templates
obsidian template:read name=Daily
obsidian template:read name=Daily resolve title="Today's Note"
obsidian template:insert name=Daily # insert into active file
Outline & Word Count
obsidian outline file=MyNote # heading tree
obsidian outline file=MyNote format=md # markdown format
obsidian wordcount file=MyNote
obsidian wordcount file=MyNote words # word count only
Plugins
obsidian plugins # list installed plugins
obsidian plugins filter=community versions
obsidian plugins:enabled filter=core
obsidian plugin id=dataview # plugin info
obsidian plugin:enable id=dataview
obsidian plugin:disable id=dataview
obsidian plugin:install id=dataview enable # install and enable
obsidian plugin:uninstall id=dataview
obsidian plugin:reload id=my-plugin # for development
obsidian plugins:restrict on # enable restricted mode
plugin:enable/disable/install/uninstall — confirm with the user before executing.
Sync & History
Sync
obsidian sync:status # show sync status
obsidian sync on # resume sync
obsidian sync off # pause sync
obsidian sync:history file=MyNote # sync version history
obsidian sync:read file=MyNote version=2 # read a sync version
obsidian sync:restore file=MyNote version=2 # restore a sync version
obsidian sync:deleted # list deleted files in sync
Local History
obsidian history file=MyNote # list history versions
obsidian history:list # list files with history
obsidian history:read file=MyNote version=1 # read a history version
obsidian history:restore file=MyNote version=3
sync:restore / history:restore — confirm with the user before executing.
Themes & CSS Snippets
obsidian themes # list installed themes
obsidian theme # show active theme
obsidian theme:set name="Minimal"
obsidian theme:install name="Minimal" enable
obsidian theme:uninstall name="Minimal"
obsidian snippets # list CSS snippets
obsidian snippet:enable name=custom
obsidian snippet:disable name=custom
Commands & Hotkeys
obsidian commands # list all commands
obsidian commands filter=editor # filter by prefix
obsidian command id=editor:toggle-bold # execute a command
obsidian hotkeys # list hotkeys
obsidian hotkey id=editor:toggle-bold # get hotkey for command
Other Commands
obsidian aliases # list aliases in vault
obsidian recents # recently opened files
obsidian random # open a random note
obsidian random:read folder=Ideas # read a random note from folder
obsidian unique name="Zettel" content="..." # create unique note (with timestamp)
obsidian diff file=MyNote # list local/sync versions
obsidian diff file=MyNote from=1 to=3 # diff between versions
obsidian tabs # list open tabs
obsidian workspace # show workspace tree
obsidian reload # reload the vault
obsidian version # show Obsidian version
QuickAdd Plugin
If the QuickAdd community plugin is installed:
obsidian quickadd:list # list choices
obsidian quickadd:run choice="Add Task" vars='{"task":"Buy milk"}'
obsidian quickadd:check choice="Add Task" # check missing inputs
Output Format Tips
Use format=json for structured output that can be piped to jq:
obsidian search:context query="TODO" format=json | jq '.[].file'
obsidian tags counts format=json | jq '.[] | select(.count > 5)'
obsidian tasks format=json | jq '.[] | select(.status == " ")'
More from kadel/claude-plugins
jira cli usage
This skill should be used when the user asks to "interact with Jira", "list Jira issues", "create Jira issue", "manage sprints", "view epics", "search issues", "move issue status", "assign issue", or mentions using the jira command-line tool for project management.
13backstage custom resource
This skill should be used when the user asks to "create Backstage CR", "create RHDH custom resource", "configure rhdh-operator", "create Backstage manifest", "modify Backstage CR", "configure RHDH deployment", "add dynamic plugins to CR", "configure Backstage database", "set up Backstage route", "configure app-config for RHDH", "create rhdh.redhat.com/v1alpha Backstage", or mentions creating or modifying a Backstage Custom Resource for the rhdh-operator.
10worktree feature development
This skill should be used when the user asks to "start a new feature", "create feature branch in worktree", "set up isolated feature development", "work on feature in separate directory", or mentions git worktree for feature isolation.
10generate frontend wiring
This skill should be used when the user asks to "generate frontend wiring", "show frontend wiring", "create RHDH binding", "generate dynamic plugin config", "show plugin wiring for RHDH", "create app-config for frontend plugin", or wants to generate the RHDH dynamic plugin wiring configuration for an existing Backstage frontend plugin. The skill analyzes the plugin's source code and generates the appropriate configuration.
9rhdh frontend dynamic plugin bootstrap
This skill should be used when the user asks to "create RHDH frontend plugin", "bootstrap frontend dynamic plugin", "create UI plugin for RHDH", "new frontend plugin for Red Hat Developer Hub", "add entity card to RHDH", "create dynamic route", "add sidebar menu item", "configure mount points", "create theme plugin", or mentions creating frontend components, UI pages, entity cards, or visual customizations for Red Hat Developer Hub or RHDH. This skill is specifically for frontend plugins - for backend plugins, use the separate backend plugin skill.
9rhdh backend dynamic plugin bootstrap
This skill should be used when the user asks to "create RHDH backend plugin", "bootstrap backend dynamic plugin", "create backstage backend plugin for RHDH", "new backend plugin for Red Hat Developer Hub", "create dynamic backend plugin", "scaffold RHDH backend plugin", "new scaffolder action", "create catalog processor", or mentions creating a new backend plugin, backend module, or server-side functionality for Red Hat Developer Hub or RHDH. This skill is specifically for backend plugins - for frontend plugins, use the separate frontend plugin skill.
9