tools/obsidian-cli/SKILL.md
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.
npx skillsauth add letta-ai/skills obsidian-cliInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
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).
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
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
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)
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
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
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
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
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
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
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
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
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
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
obsidian daily:append content="
## Reports
- [[reports/2026-02-10-morning|Morning Report]]
"
obsidian create path="reports/morning-report" content="# Morning Report"
obsidian daily:append content="- [[reports/morning-report|Morning Report]]"
obsidian property:set path="note.md" name="status" value="draft"
obsidian property:set path="note.md" name="date" value="2026-02-10"
insider and cli set to true in global config (~/.config/obsidian/obsidian.json on Linux, ~/Library/Application Support/obsidian/obsidian.json on macOS)Use deb package (not snap - snap confinement breaks CLI IPC). Run under xvfb. See references/headless-setup.md for config transfer details.
Use vault="Vault Name" parameter: obsidian vault="Notes" daily:read
key=value, not positional. Quote values with spaces: content="hello world"format=json on search and other commandsDISPLAY=:5 obsidian <command> on headless Linux2>/dev/null or greptesting
Navigates archived ChatGPT or Claude-style conversation exports and a MemFS reference archive on demand. Use when recalling what a past assistant knew, searching old conversations, rendering specific chats, seeding reference memory from export sidecars, or mining historical context without doing a full import.
testing
Migrates deprecated Letta Filesystem folders/files to MemFS using markdown document corpora, chunking, local lexical search, and QMD semantic search via the memfs-search skill. Use when replacing folders.files.upload, working with PDFs or document QA, or emulating open_file, grep_file, and search_file behavior.
data-ai
Configures Letta agent compaction settings and custom summarization prompts. Use when a user asks to change an agent's compaction prompt, improve summaries after context eviction, tune sliding-window or all-message compaction, or design companion/coding-agent continuity summaries.
development
Semantic search over agent memory files. Use when you need to find conceptually related memory blocks, discover forgotten reference files, check what you already know before creating new memory, or search beyond exact keyword matching. Currently supports QMD (local, no API keys).