Agent skill
obsidian-cli
Interact with Obsidian using the official CLI to read, search, create, and manage notes, daily notes, tasks, properties, and more. Use when the user wants to query or manipulate vault content via the obsidian command.
Install this agent skill to your Project
npx add-skill https://github.com/jykim/claude-obsidian-skills/tree/main/obsidian-cli
Metadata
Additional technical details for this skill
- author
- lifidea
- created
- 1772236800
- version
- 1.0.0
SKILL.md
Obsidian CLI Skill
The official Obsidian command-line interface allows you to interact with your vault from the terminal — reading notes, searching, managing properties, handling tasks, and more.
Prerequisites
Verify the CLI is installed and running:
obsidian --version
obsidian help
Requirements:
- Obsidian v1.12+ (released late 2024)
- Catalyst license or higher (Obsidian Sync, Publish, or community support)
- Obsidian must be running — the CLI communicates via IPC with a live instance
- macOS, Windows, or Linux support
If not installed, download the latest Obsidian installer from https://obsidian.md/download
Key Concepts
IPC-Based Communication
The obsidian-cli works by connecting to a running Obsidian instance via inter-process communication (IPC). It does not manipulate files directly; all commands are executed through Obsidian's API, ensuring proper handling of plugins, sync, and vault structure.
File vs Path Parameters
Two ways to target files:
-
file=<name>— Resolves by name like wikilinks. Searches across folders to find the file. More flexible but slower.- Example:
obsidian read file="My Note"(finds the file regardless of folder) - Best for: Quick access when you know the filename
- Example:
-
path=<path>— Exact path from vault root. No searching, just direct access.- Example:
obsidian read path="Journal/2026-02-28.md"(exact path required) - Best for: Performance-sensitive operations, when you know the exact location
- Example:
Vault Parameter
By default, commands run against the currently active vault. Override with:
obsidian read file="Note" vault="My Vault"
Quoting & Escaping
- Spaces in values — Always quote:
name="My Note"notname=My Note - Newlines — Use
\n:content="Line 1\nLine 2" - Tabs — Use
\t:content="Column1\tColumn2"
Flags vs Parameters
- Flags — Boolean options, no value needed:
--verbose,--overwrite,--inline - Parameters — Key=value pairs:
file="Name",query="term",limit=10
Syntax Guide
Basic Command Structure
obsidian <command> [parameter=value...] [--flag...]
Examples
# Parameters with simple values
obsidian read file="Journal"
# Parameters with spaces (quoted)
obsidian create name="My Daily Note" content="Hello world"
# Multiple parameters
obsidian search query="TODO" path="Projects" limit=10
# Flags
obsidian files folder="Project" --verbose
# Mixed
obsidian create path="Journal/2026-02-28.md" content="Daily note" --open
File Targeting Patterns
Read a Note by Name
obsidian read file="Meeting Notes"
Searches vault for Meeting Notes.md anywhere.
Read by Exact Path
obsidian read path="Project/2026-02-28.md"
Reads from exact location; faster for known paths.
Create with Template
obsidian create name="New Note" template="Daily Note Template"
List Files in Folder
obsidian files folder="Journal"
Command Reference
Commands are organized by category. Use obsidian help <command> for detailed options.
File Operations
read
Read file contents. Returns full text or structured data.
# Read by name
obsidian read file="My Note"
# Read by path
obsidian read path="Journal/2026-02-28.md"
# Active file (omit file/path params)
obsidian read
create
Create a new file with optional content and template.
# Simple creation
obsidian create name="New Note"
# With content
obsidian create name="Daily Note" content="Today's note"
# With template
obsidian create name="Meeting" template="Meeting Template" --open
# With exact path
obsidian create path="Journal/2026-02-28.md" content="..." --overwrite
append
Add content to end of file.
obsidian append file="My Note" content="New line"
# Inline (no newline before appended text)
obsidian append file="My Note" content=" continued" --inline
prepend
Add content to beginning of file.
obsidian prepend file="My Note" content="Header\n"
# Inline
obsidian prepend file="My Note" content="[Start] " --inline
delete
Remove a file (sends to trash by default).
obsidian delete file="Old Note"
# Permanent deletion
obsidian delete path="Archive/obsolete.md" --permanent
rename
Change a file's name.
obsidian rename file="Old Name" name="New Name"
move
Move file to different folder.
obsidian move file="Note" to="Archive"
# Move with new name
obsidian move path="Journal/old.md" to="Archive/2025-old.md"
open
Open file in Obsidian editor.
obsidian open file="Note"
# Open in new tab
obsidian open file="Note" --newtab
File Information
file
Show metadata about a file.
obsidian file file="My Note"
Returns: created date, modified date, size, links, backlinks count.
files
List all files in vault (optionally filtered).
# All files
obsidian files
# By folder
obsidian files folder="Journal"
# By extension
obsidian files ext="md"
# With count
obsidian files folder="Project" --total
folder
Show folder information.
obsidian folder path="Journal"
# Specific info
obsidian folder path="Journal" info=files # Number of files
obsidian folder path="Journal" info=size # Total size
obsidian folder path="Journal" info=folders # Number of subfolders
folders
List folders in vault.
obsidian folders
# Subfolders only
obsidian folders folder="Archive"
# With count
obsidian folders folder="Journal" --total
vault
Show vault information.
obsidian vault # All info
obsidian vault info=name # Vault name
obsidian vault info=path # Vault folder path
obsidian vault info=files # Total files
obsidian vault info=size # Total vault size
vaults
List all known vaults.
obsidian vaults
# Verbose (include paths)
obsidian vaults --verbose
wordcount
Count words and characters in file.
obsidian wordcount file="Chapter 1"
# Word count only
obsidian wordcount file="Chapter 1" --words
# Character count only
obsidian wordcount file="Chapter 1" --characters
Searching & Navigation
search
Full-text search vault.
# Basic search
obsidian search query="TODO"
# Limited results
obsidian search query="meeting" limit=5
# In folder
obsidian search query="TODO" path="Projects"
# Case sensitive
obsidian search query="MyClass" --case
# JSON output
obsidian search query="bug" format=json
search:context
Search with matching line context.
# Show surrounding lines
obsidian search:context query="TODO" path="Journal"
# JSON format
obsidian search:context query="error" format=json
search:open
Open search dialog in Obsidian.
obsidian search:open query="TODO"
Links & References
links
List outgoing links from a file.
obsidian links file="My Note"
# Count only
obsidian links file="My Note" --total
backlinks
List files linking to a target (incoming links).
obsidian backlinks file="Project Overview"
# Include link counts
obsidian backlinks file="Project Overview" --counts
# Format output
obsidian backlinks file="Project" format=json
aliases
Show aliases for a file (alternative names).
obsidian aliases file="Meeting"
# Count aliases
obsidian aliases file="Meeting" --total
# Verbose (include paths)
obsidian aliases file="Meeting" --verbose
# Aliases for active file
obsidian aliases --active
unresolved
List broken/unresolved links in vault.
obsidian unresolved
# Count only
obsidian unresolved --total
# Verbose (show source files)
obsidian unresolved --verbose
# JSON format
obsidian unresolved format=json
deadends
List files with no outgoing links.
obsidian deadends
# Count
obsidian deadends --total
# Include non-markdown files
obsidian deadends --all
orphans
List files with no incoming links (not referenced).
obsidian orphans
# Count
obsidian orphans --total
# Include non-markdown
obsidian orphans --all
Tags
tags
List all tags in vault with frequencies.
obsidian tags
# For specific file
obsidian tags file="My Note"
# By path
obsidian tags path="Journal"
# With counts
obsidian tags --counts
# Sort by count
obsidian tags --counts sort=count
# JSON format
obsidian tags format=json
# Tags for active file
obsidian tags --active
tag
Get info about a specific tag.
obsidian tag name=meeting
# Count only
obsidian tag name=meeting --total
# List files with tag
obsidian tag name=work --verbose
Tasks & Checklists
tasks
List all tasks in vault.
obsidian tasks
# Incomplete tasks
obsidian tasks --todo
# Completed tasks
obsidian tasks --done
# By file
obsidian tasks file="My Note"
# By path
obsidian tasks path="Journal"
# By status (e.g., "x" for done, "-" for in progress)
obsidian tasks status="-"
# Verbose (group by file with line numbers)
obsidian tasks --verbose
# JSON format
obsidian tasks format=json
# Tasks from daily note
obsidian tasks --daily
task
Show or update a single task.
# Show task at line 5 in Journal/2026-02-28.md
obsidian task ref="Journal/2026-02-28.md:5"
# Toggle task status
obsidian task ref="Journal/2026-02-28.md:5" --toggle
# Mark as done
obsidian task ref="Journal/2026-02-28.md:5" --done
# Mark as incomplete
obsidian task ref="Journal/2026-02-28.md:5" --todo
# Set custom status (e.g., in progress)
obsidian task file="My Note" line=3 status="-"
Properties & Metadata
properties
List all properties in vault with usage counts.
obsidian properties
# Properties for specific file
obsidian properties file="My Note"
# By path
obsidian properties path="Journal"
# With counts
obsidian properties --counts
# Count specific property
obsidian properties name=category --total
# Sort by count
obsidian properties sort=count
# YAML format
obsidian properties format=yaml
# JSON format
obsidian properties format=json
# Properties for active file
obsidian properties --active
property:set
Set a property on a file.
obsidian property:set name=category value=work file="My Note"
# With type (auto-inferred if not specified)
obsidian property:set name=priority value=high file="Task" type=text
# List type
obsidian property:set name=tags value="work,urgent" file="Note" type=list
# Number type
obsidian property:set name=wordcount value=1500 file="Article" type=number
# Checkbox
obsidian property:set name=reviewed value=true file="Document" type=checkbox
# Date
obsidian property:set name=deadline value=2026-03-01 file="Task" type=date
property:read
Get a property value from a file.
obsidian property:read name=category file="My Note"
# By path
obsidian property:read name=priority path="Tasks/urgent.md"
property:remove
Delete a property from a file.
obsidian property:remove name=draft file="Article"
# By path
obsidian property:remove name=status path="Archive/old.md"
Templates
templates
List all templates in vault.
obsidian templates
# Count
obsidian templates --total
template:read
Read template content (useful for understanding what template will insert).
obsidian template:read name="Daily Note"
# Resolve variables
obsidian template:read name="Daily Note" --resolve title="2026-02-28"
template:insert
Insert template into active file.
obsidian template:insert name="Daily Note"
Bookmarks
bookmarks
List all bookmarks.
obsidian bookmarks
# Count
obsidian bookmarks --total
# Verbose (show types)
obsidian bookmarks --verbose
# JSON format
obsidian bookmarks format=json
bookmark
Add a bookmark.
# Bookmark a file
obsidian bookmark file="Journal/2026-02-28.md"
# Bookmark a section
obsidian bookmark file="Project Overview" subpath="Goals"
# Bookmark a folder
obsidian bookmark folder="Archive"
# Bookmark a search
obsidian bookmark search="TODO"
# Bookmark a URL
obsidian bookmark url="https://example.com" title="My Site"
Bases (Database-like Tables)
bases
List all base files in vault.
obsidian bases
base:views
List views in a base.
obsidian base:views file="Contacts"
# By path
obsidian base:views path="Databases/Projects.md"
base:query
Query a base and return filtered results.
# Query a view
obsidian base:query file="Contacts" view="Active"
# JSON output
obsidian base:query file="Projects" view="2026" format=json
# CSV output
obsidian base:query file="Contacts" view="All" format=csv
base:create
Create a new record in a base.
obsidian base:create file="Contacts" view="All" name="John Doe" email="john@example.com"
# With initial content
obsidian base:create file="Projects" view="Active" name="Project X" content="Details..."
# Open after creating
obsidian base:create file="Tasks" view="Backlog" name="Task 1" --open
Publishing
publish:status
Check what files have unpublished changes.
obsidian publish:status
# New files only
obsidian publish:status --new
# Changed files
obsidian publish:status --changed
# Deleted files
obsidian publish:status --deleted
# Count
obsidian publish:status --total
publish:add
Publish files to Obsidian Publish.
# Publish specific file
obsidian publish:add file="Project Overview"
# Publish all changed
obsidian publish:add --changed
publish:remove
Unpublish a file.
obsidian publish:remove file="Archived Note"
# By path
obsidian publish:remove path="Archive/old.md"
publish:list
List published files.
obsidian publish:list
# Count
obsidian publish:list --total
publish:site
Show Publish site info.
obsidian publish:site
publish:open
Open published file in browser.
obsidian publish:open file="My Article"
Sync & Version History
sync:status
Check sync status.
obsidian sync:status
sync
Pause or resume sync.
obsidian sync off # Pause sync
obsidian sync on # Resume sync
sync:history
List version history for a file in sync.
obsidian sync:history file="My Note"
# Count versions
obsidian sync:history file="My Note" --total
sync:read
Read a specific sync version.
obsidian sync:read file="My Note" version=5
sync:restore
Restore a file to a previous sync version.
obsidian sync:restore file="My Note" version=3
sync:deleted
List files deleted in sync.
obsidian sync:deleted
# Count
obsidian sync:deleted --total
sync:open
Open sync history UI.
obsidian sync:open file="My Note"
history
List local file history versions.
obsidian history file="My Note"
# By path
obsidian history path="Journal/2026-02-28.md"
history:read
Read a local history version.
obsidian history:read file="My Note" version=2
history:restore
Restore from local history.
obsidian history:restore file="My Note" version=1
diff
Compare local and sync versions.
obsidian diff file="My Note"
# Diff specific versions
obsidian diff file="My Note" from=1 to=5
# Filter by source
obsidian diff file="My Note" filter=local
obsidian diff file="My Note" filter=sync
Plugins
plugins
List all installed plugins.
obsidian plugins
# Core plugins only
obsidian plugins filter=core
# Community plugins
obsidian plugins filter=community
# Include versions
obsidian plugins --versions
# JSON format
obsidian plugins format=json
plugins:enabled
List enabled plugins.
obsidian plugins:enabled
# By type
obsidian plugins:enabled filter=core
plugin
Get info about a plugin.
obsidian plugin id=dataview
plugin:enable
Enable a plugin.
obsidian plugin:enable id=dataview
plugin:disable
Disable a plugin.
obsidian plugin:disable id=templater
plugin:install
Install a community plugin.
# Install and enable
obsidian plugin:install id=obsidian-git --enable
# Just install
obsidian plugin:install id=dataview
plugin:uninstall
Remove a plugin.
obsidian plugin:uninstall id=templater
plugin:reload
Reload a plugin (development use).
obsidian plugin:reload id=my-plugin
plugins:restrict
Toggle restricted mode.
obsidian plugins:restrict on # Enable restricted mode
obsidian plugins:restrict off # Disable restricted mode
Themes
themes
List installed themes.
obsidian themes
# Include versions
obsidian themes --versions
theme
Get current theme or info about a theme.
obsidian theme # Show active theme
obsidian theme name=Obsidian # Info about a theme
theme:set
Set active theme.
obsidian theme:set name=Obsidian
# Back to default
obsidian theme:set name=""
theme:install
Install community theme.
obsidian theme:install name="Minimal" --enable
# Just install
obsidian theme:install name="Things"
theme:uninstall
Remove theme.
obsidian theme:uninstall name="Minimal"
Snippets (CSS)
snippets
List CSS snippets.
obsidian snippets
snippets:enabled
List enabled snippets.
obsidian snippets:enabled
snippet:enable
Enable a CSS snippet.
obsidian snippet:enable name="hide-metadatablock"
snippet:disable
Disable a CSS snippet.
obsidian snippet:disable name="custom-colors"
Commands & Hotkeys
commands
List all available Obsidian command IDs.
obsidian commands
# Filter by prefix
obsidian commands filter=editor
command
Execute an Obsidian command.
obsidian command id=editor:save-file
hotkeys
List hotkeys (keyboard shortcuts).
obsidian hotkeys
# Verbose (show if custom or default)
obsidian hotkeys --verbose
# Include all (even commands without hotkeys)
obsidian hotkeys --all
# Count
obsidian hotkeys --total
hotkey
Get hotkey for a specific command.
obsidian hotkey id=editor:save-file --verbose
Workspaces
workspaces
List saved workspaces.
obsidian workspaces
# Count
obsidian workspaces --total
workspace
Show workspace tree.
obsidian workspace
# Include workspace item IDs
obsidian workspace --ids
workspace:save
Save current layout as a workspace.
obsidian workspace:save name="Writing"
obsidian workspace:save name="Development"
workspace:load
Load a saved workspace.
obsidian workspace:load name="Writing"
workspace:delete
Delete a saved workspace.
obsidian workspace:delete name="Old Workspace"
Tabs & Windows
tabs
List open tabs.
obsidian tabs
# Include tab IDs
obsidian tabs --ids
tab:open
Open a new tab.
obsidian tab:open file="Journal/2026-02-28.md"
# Specific group
obsidian tab:open group=main-group file="Note"
# View type
obsidian tab:open view=search
Utility & Navigation
open
Open a file in editor (same as open in File Operations).
obsidian open file="Note"
random
Open a random note.
obsidian random
# From folder
obsidian random folder="Journal"
# In new tab
obsidian random --newtab
random:read
Read a random note.
obsidian random:read
# From folder
obsidian random:read folder="Ideas"
recents
List recently opened files.
obsidian recents
# Count
obsidian recents --total
outline
Show headings in a file.
obsidian outline file="Project Plan"
# Tree format (default)
obsidian outline file="Project Plan" format=tree
# Markdown format
obsidian outline file="Project Plan" format=md
# JSON format
obsidian outline file="Project Plan" format=json
# Count only
obsidian outline file="Project Plan" --total
reload
Reload the vault.
obsidian reload
restart
Restart Obsidian completely.
obsidian restart
version
Show Obsidian version.
obsidian version
Developer Tools
dev:screenshot
Take a screenshot of Obsidian UI.
obsidian dev:screenshot path=screenshot.png
dev:console
Show captured console messages.
obsidian dev:console
# Filter by level
obsidian dev:console level=error
# Clear buffer
obsidian dev:console --clear
# Limit output
obsidian dev:console limit=20
dev:errors
Show captured errors.
obsidian dev:errors
# Clear
obsidian dev:errors --clear
dev:debug
Attach/detach Chrome DevTools debugger.
obsidian dev:debug on # Attach
obsidian dev:debug off # Detach
dev:dom
Query DOM elements.
# Find elements
obsidian dev:dom selector=".cm-editor"
# Get text
obsidian dev:dom selector=".status-bar" --text
# Count matches
obsidian dev:dom selector="button" --total
# Get attribute
obsidian dev:dom selector="a.link" attr=href
# Get CSS property
obsidian dev:dom selector=".title" css=color
dev:css
Inspect CSS with source locations.
obsidian dev:css selector=".heading"
# Filter by property
obsidian dev:css selector=".text" prop=color
dev:cdp
Run Chrome DevTools Protocol command.
obsidian dev:cdp method=Page.printToPDF params='{"path":"output.pdf"}'
dev:mobile
Toggle mobile emulation.
obsidian dev:mobile on # Enable
obsidian dev:mobile off # Disable
devtools
Toggle Electron dev tools.
obsidian devtools
eval
Execute JavaScript in Obsidian context.
obsidian eval code='app.vault.getMarkdownFiles().length'
# Get custom object
obsidian eval code='app.workspace.activeEditor?.file?.name'
Common Patterns for GOBI Vault
Reading Daily Notes
# Today's journal
obsidian read file="Journal"
# Specific date
obsidian read path="Journal/2026-02-28.md"
Appending to Journal
obsidian append file="Journal" content="\n## Reflection\n[Your thoughts]"
Finding Todos
# All incomplete tasks
obsidian tasks --todo
# TODOs in projects
obsidian search query="TODO" path="Projects"
Getting File Properties
# Read specific property
obsidian property:read name=tags file="Article"
# All properties on a file
obsidian properties file="My Note"
Searching Your Vault
# Find by keyword
obsidian search query="machine learning" limit=10
# In specific folder
obsidian search query="meeting" path="Work"
# Case-sensitive
obsidian search query="MyClass" --case
Managing Projects
# List all project files
obsidian files folder="Projects"
# Get project outline
obsidian outline file="Project X"
# Search project issues
obsidian search query="BUG:" path="Projects/ProjectX"
Working with Tags
# All tags and their counts
obsidian tags --counts
# Files with tag
obsidian tag name=important --verbose
# Tags in article
obsidian tags file="Article"
Discovering Options
Every command has built-in help. Use obsidian help to learn more:
# List all commands
obsidian help
# Help for specific command
obsidian help read
obsidian help search
obsidian help property:set
# Short help (in command output)
obsidian <command>
Quality Checklist
Before using obsidian CLI commands:
- Obsidian is running and responding
- Correct vault targeted (if using
vault=parameter) - File name or path is correct
- Use
file=for name-based lookup - Use
path=for exact vault-root paths
- Use
- Parameters quoted if containing spaces
- Output format appropriate (json/tsv/csv available for most commands)
- Understand the difference between metadata (properties/tags) and content
Error Handling
Common Issues
"Obsidian is not running"
- Solution: Start Obsidian before running CLI commands. The CLI requires IPC connection.
"Vault not found"
- Solution: Use
obsidian vaultsto list available vaults, then specifyvault="Name"
"File not found" (with file= parameter)
- Solution: Verify file exists with
obsidian files. Consider usingpath=instead for exact match.
"Permission denied"
- Solution: Ensure you have read/write permissions in Obsidian vault folder and plugins are not interfering.
Debug Commands
# Check vault status
obsidian vault
# List all files
obsidian files --total
# Test search
obsidian search query="test" limit=1
# Check version
obsidian version
Next Steps: Run obsidian help to explore specific commands, or use pattern examples above for GOBI vault operations.
Didn't find tool you were looking for?