Agent skill
obsidian-cli
Work with Obsidian vaults using the official Obsidian CLI. Read, create, append, search, and manage notes, daily notes, properties, tags, tasks, sync, and more from the terminal. Use when the user mentions Obsidian, notes, vault, daily notes, or when working with markdown knowledge bases. Requires Obsidian desktop app running with CLI enabled in Settings > General.
Install this agent skill to your Project
npx add-skill https://github.com/letta-ai/skills/tree/main/tools/obsidian-cli
SKILL.md
Obsidian CLI
Official Obsidian CLI for terminal vault operations. Requires Obsidian running (headless via xvfb works) with CLI enabled and insider/early access mode.
All parameters use key=value syntax: obsidian read path="folder/note.md". On headless Linux, prefix with DISPLAY=:5 (or whatever your xvfb display is).
Core Commands
Daily Notes
obsidian daily # Open today's daily note
obsidian daily:read # Print today's note content
obsidian daily:append content="text" # Append to today's note
obsidian daily:prepend content="text" # Prepend to today's note
Reading and Writing Files
obsidian read path="folder/note.md" # Read note
obsidian create path="folder/note" content="# Title" # Create note (path without .md)
obsidian create path="folder/note" template="templatename" # Create from template
obsidian append path="folder/note.md" content="text" # Append to note
obsidian prepend path="folder/note.md" content="text" # Prepend to note
obsidian move path="old/note.md" name="new-name" # Move/rename
obsidian delete path="folder/note.md" # Delete (to trash)
obsidian delete path="folder/note.md" permanent # Permanent delete
File Discovery
obsidian files # List all files
obsidian files ext=md # Only markdown files
obsidian files folder="subfolder" # Files in specific folder
obsidian files total # Just the count
obsidian folders # List all folders
obsidian file path="folder/note.md" # File info (size, dates)
Search
obsidian search query="search text" # Search vault
obsidian search query="text" path="folder" limit=10 # Scoped search
obsidian search query="text" format=json # JSON output
obsidian search query="text" matches # Show match context
obsidian search query="text" case # Case-sensitive
Links and Graph
obsidian backlinks path="note.md" # Backlinks to a note
obsidian backlinks path="note.md" counts # With link counts
obsidian links path="note.md" # Outgoing links (requires plugin)
obsidian unresolved # Unresolved [[links]]
obsidian orphans # Notes with no links in or out
obsidian deadends # Notes with no outgoing links
Properties (Frontmatter)
obsidian properties path="note.md" # All properties
obsidian property:read path="note.md" name="status" # Read one property
obsidian property:set path="note.md" name="status" value="draft" # Set property
obsidian property:remove path="note.md" name="status" # Remove property
obsidian aliases path="note.md" # List aliases
Tags
obsidian tags # All tags
obsidian tags counts sort=count # Tags sorted by frequency
obsidian tags path="note.md" # Tags in specific file
obsidian tag name="tagname" # Notes with specific tag
Tasks
obsidian tasks # All incomplete tasks
obsidian tasks all # All tasks (done + todo)
obsidian tasks done # Only completed tasks
obsidian tasks path="note.md" # Tasks in specific file
obsidian tasks daily # Tasks in today's daily note
obsidian task path="note.md" line=5 toggle # Toggle task status
Sync
obsidian sync # Show sync status
obsidian sync on # Resume sync
obsidian sync off # Pause sync
obsidian sync:status # Detailed status
obsidian sync:history path="note.md" # Version history
obsidian sync:read path="note.md" version=3 # Read specific version
obsidian sync:restore path="note.md" version=3 # Restore version
obsidian sync:deleted # Deleted files in sync
Templates
obsidian templates # List templates
obsidian template:read name="weekly-review" # Read template content
obsidian template:read name="weekly-review" resolve title="My Note" # Render with variables
obsidian template:insert name="weekly-review" # Insert into active file
Other Useful Commands
obsidian vault # Vault info (name, path, file count, size)
obsidian vaults # List all known vaults
obsidian outline path="note.md" # Heading structure
obsidian wordcount path="note.md" # Word/character count
obsidian recents # Recently opened files
obsidian version # Obsidian version
obsidian reload # Reload vault
Plugins
obsidian plugins # List all plugins
obsidian plugins:enabled # List enabled plugins
obsidian plugin:enable id="canvas" # Enable plugin
obsidian plugin:disable id="canvas" # Disable plugin
obsidian plugin:install id="name" # Install from community
obsidian plugin:reload id="name" # Reload plugin
Developer Commands
obsidian dev:screenshot path="screenshot.png" # Screenshot
obsidian eval code="app.vault.getFiles().length" # Run JS in Obsidian
obsidian dev:console limit=20 # Recent console output
obsidian dev:errors # Recent errors
Common Agent Patterns
Append to Daily Note with Linking
obsidian daily:append content="
## Reports
- [[reports/2026-02-10-morning|Morning Report]]
"
Create Note and Cross-Link
obsidian create path="reports/morning-report" content="# Morning Report"
obsidian daily:append content="- [[reports/morning-report|Morning Report]]"
Set Properties Programmatically
obsidian property:set path="note.md" name="status" value="draft"
obsidian property:set path="note.md" name="date" value="2026-02-10"
Setup
Requirements
- Obsidian desktop app installed and running (v1.12.0+ with insider/early access)
- CLI enabled: Settings > General > CLI toggle
insiderandcliset totruein global config (~/.config/obsidian/obsidian.jsonon Linux,~/Library/Application Support/obsidian/obsidian.jsonon macOS)
Headless Linux
Use deb package (not snap - snap confinement breaks CLI IPC). Run under xvfb. See references/headless-setup.md for config transfer details.
Multi-Vault
Use vault="Vault Name" parameter: obsidian vault="Notes" daily:read
Tips
- Parameter syntax: Always
key=value, not positional. Quote values with spaces:content="hello world" - Pipe-friendly: Plain text output, works with grep/awk/jq
- JSON output:
format=jsonon search and other commands - Headless prefix:
DISPLAY=:5 obsidian <command>on headless Linux - Paths are vault-relative, not filesystem-relative
- Stderr noise: GPU errors on headless are harmless, filter with
2>/dev/nullor grep
Didn't find tool you were looking for?