Tony obsidian
Use the official Obsidian CLI (obsidian.md/cli) to manage your vault from the terminal. Use this skill when working with Obsidian notes, managing vault files, searching content, handling daily notes, manipulating YAML properties, managing tags, backlinks, tasks, plugins, themes, and Obsidian Publish. Requires Obsidian v1.12+ with the CLI enabled. The Obsidian app must be running for commands to work.
git clone https://github.com/jaydeland/Tony
T=$(mktemp -d) && git clone --depth=1 https://github.com/jaydeland/Tony "$T" && mkdir -p ~/.claude/skills && cp -r "$T/.claude/skills/obsidian" ~/.claude/skills/jaydeland-tony-obsidian && rm -rf "$T"
.claude/skills/obsidian/skill.mdObsidian CLI — Complete Vault Management Skill
Purpose: Master the official Obsidian CLI for managing vaults, notes, search, daily notes, properties, tags, links, tasks, plugins, themes, and automation from the terminal.
Requirements: Obsidian v1.12.4+ with CLI enabled (Settings → General → Command line interface). The Obsidian app must be running for commands to work.
Vaults Available: Jason (
), work-notes/work (/Users/jasondeland/dev/Jason), work-notes/notes (/Users/jasondeland/dev/work-notes/work)/Users/jasondeland/dev/work-notes/notes/notes
Quick Reference
obsidian --version # Check CLI version (v0.5.1) obsidian --help # Show general help # Vault targeting (if not using default vault) obsidian vault=vaultName command ... # Target specific vault # Common commands obsidian daily # Open today's daily note obsidian files # List all files obsidian search query="topic" # Search vault obsidian create name="New Note" # Create note obsidian tags # List all tags
1. Setup & Configuration
Enable CLI
- Open Obsidian → Settings → General → Command line interface
- Enable the toggle
- Follow the registration prompt
- Verify:
obsidian --version
PATH Configuration (macOS)
# If 'obsidian: command not found', add to PATH: echo 'export PATH="$PATH:/Applications/Obsidian.app/Contents/MacOS"' >> ~/.zshrc source ~/.zshrc # Or create a symlink: sudo ln -s /Applications/Obsidian.app/Contents/MacOS/Obsidian /usr/local/bin/obsidian
Vault Configuration
# Obsidian stores vault configs in: ~/Library/Application\ Support/obsidian/obsidian.json # Target a specific vault by name (for multi-vault users) obsidian vault=Jason search query="meeting" # Target by path obsidian vault=/Users/jasondeland/dev/work-notes/work search query="project"
2. Files & Folders
List Files
obsidian files # List all files (default vault) obsidian files folder=Projects/Active # List files in folder obsidian files folder=Bible format=paths # Output paths only obsidian files total # Count total notes obsidian folders # List all folders obsidian folders format=tree # Hierarchy view
Read Files
obsidian read file="Note Name" # Read by wikilink name obsidian read path="Folder/Note.md" # Read by exact path obsidian read file="Meeting Notes" format=json # JSON output
Create Files
obsidian create name="New Note" # Basic note obsidian create name="New Note" content="# Hello" # With content obsidian create name="Script" template="YouTube" # From template obsidian create name="Draft" --overwrite # Overwrite existing obsidian create name="Silent Note" --silent # No output obsidian create name="Project" content="# Project\n\n## Tasks\n- [ ] Item 1" # Multiline
Modify Files
obsidian append file="Note" content="More content here" obsidian append file="Note" content="\n## Added Section" # Newline first obsidian append file="Note" content="Log: $(date)" --inline # No trailing newline obsidian prepend file="Note" content="# Prepended"
Move & Rename
obsidian move file="Old Name" to=Archive/ # Move to folder obsidian move file="Note" to="New Name" # Rename obsidian move file="Note" to=Archive/New.md # Move and rename # Note: Wikilinks across vault are automatically updated
Delete Files
obsidian delete file="Note" # Move to Obsidian trash obsidian delete file="Note" --permanent # Permanent delete
3. Search
Full-Text Search
obsidian search query="meeting notes" # Basic search obsidian search query="second brain" format=json # JSON output obsidian search query="project" format=paths # Paths only obsidian search query="meeting" limit=10 # Limit results obsidian search query="meeting" format=md # Markdown format
Filtered Search (Tags & Properties)
obsidian search query="[tag:publish]" # By tag obsidian search query="[tag:done]" # By tag obsidian search query="[status:active]" # By property obsidian search query="[priority:>3]" # Numeric comparison obsidian search query="[type:meeting]" # By type property obsidian search query="[due:2026-03-20]" # By date property
Open Search in Obsidian
obsidian search:open query="review" # Open results in app obsidian search:open query="[tag:reading]" # With filter
4. Daily Notes
Open & Read Daily Notes
obsidian daily # Open today's daily note obsidian daily:read # Read today's content obsidian daily:read --copy # Copy to clipboard obsidian daily:open date=2026-03-19 # Specific date obsidian daily:path # Return file path
Append/Prepend to Daily Notes
obsidian daily:append content="- [ ] New task" obsidian daily:append content="## Morning journal entry" obsidian daily:prepend content="## Morning" obsidian daily:append content="Meeting at 10am" date=2026-03-19
Daily Note Templates
# Assuming you have a daily template configured in Obsidian settings obsidian daily # Opens with template obsidian daily:append content="- [ ] Review: $(date '+%Y-%m-%d')"
5. Properties (YAML Frontmatter)
Read Properties
obsidian properties file="Note" # All properties obsidian property:read file="Note" key=status # Single property
Set Properties
obsidian property:set file="Note" status=active obsidian property:set file="Note" tags="pkm,obsidian" type=tags obsidian property:set file="Note" priority=3 type=number obsidian property:set file="Note" due=2026-04-01 type=date obsidian property:set file="Note" type=checkbox obsidian property:set file="Note" project="My Project" type=text
Remove Properties
obsidian property:remove file="Note" key=draft obsidian property:remove file="Note" key=priority
Property Types
| Type | Example Value | Use Case |
|---|---|---|
| | General text |
| | Multiple values |
| | Tag-like values |
| | Numeric values |
| | Boolean |
| | Date values |
6. Tags
List & Query Tags
obsidian tags # All tags (alphabetical) obsidian tags sort=count # Sort by frequency obsidian tags sort=count limit=20 # Top 20 tags obsidian tag tagname=pkm # Notes with #pkm obsidian tag tagname="tag with spaces" # Quoted tag
Tag Operations
obsidian tags:rename old=meeting new=meetings # Rename tag (all notes) obsidian tags:rename old=meeting new=meetings vault=work-notes
7. Links & Backlinks
Outgoing Links
obsidian links file="Note" # Files this note links to obsidian links file="Note" format=json # JSON output
Backlinks
obsidian backlinks file="Note" # Notes linking to this note obsidian backlinks file="Meeting Notes" format=json
Unresolved & Orphan Links
obsidian unresolved # Broken [[links]] obsidian orphans # Unlinked notes (no backlinks)
8. Tasks
List & Create Tasks
obsidian tasks # All tasks (from Tasks plugin) obsidian tasks daily # Today's tasks only obsidian tasks format=json # JSON for scripts obsidian task:create content="Write report" # Create task obsidian task:create content="Review PR" tags="work" # With tags obsidian task:create content="Meeting" due=2026-03-20
Task Operations
obsidian task:complete task=task-id # Mark complete obsidian task:todo task=task-id # Mark as todo obsidian task toggle task=task-id # Toggle status
9. Aliases
Manage Aliases
obsidian aliases file="Note" # List aliases obsidian alias:add file="Note" alias="Short Name" obsidian alias:remove file="Note" alias="Short Name"
10. Templates
Read & Insert Templates
obsidian templates # List templates obsidian template:read name="Daily" # Read template content obsidian template:insert name="Meeting" # Insert (copies to clipboard)
11. Vault & History
Vault Info
obsidian vault # Current vault info obsidian vaults # List all vaults obsidian vault:open vault=work-notes # Open vault in Obsidian
File History
obsidian history file="Note" # Version history obsidian diff file="Note" version=2 # Diff vs current obsidian history:restore file="Note" version=3 # Restore version
12. Sync & Publish (Obsidian Sync/Publish Required)
Obsidian Sync
obsidian sync:status # Sync status obsidian sync:history file="Note" # Sync history obsidian sync:read file="Note" version=5 # Read sync version obsidian sync:restore file="Note" version=3 # Restore from sync
Obsidian Publish
obsidian publish:list # List published notes obsidian publish:status # Site status obsidian publish:add file="Note" # Publish note obsidian publish:remove file="Outdated" # Unpublish obsidian publish:site # Open publish site
13. Plugins & Themes
Plugin Management
obsidian plugins # List installed plugins obsidian plugin:enable id=dataview # Enable plugin obsidian plugin:disable id=calendar # Disable plugin obsidian plugin:reload id=my-plugin # Reload plugin (dev workflow) obsidian plugin:install id=obsidian-plantuml # Install from community
Theme Management
obsidian themes # List available themes obsidian theme:set name="Minimal" # Set theme obsidian theme:install name="Obsidian Nord" # Install theme obsidian theme:uninstall name="Blue Topaz" # Uninstall theme obsidian snippets # List CSS snippets
14. Developer Commands
Debug & Inspect
obsidian devtools # Open devtools obsidian dev:debug # Debug info obsidian dev:errors # Show errors obsidian dev:console limit=50 level=error # Console logs obsidian dev:css selector=".markdown-preview-view" obsidian dev:dom # DOM inspection obsidian dev:screenshot path=~/Desktop/vault.png
Eval (JavaScript)
obsidian eval code="app.vault.getFiles().length" obsidian eval code="Object.keys(app.plugins.plugins).join(', ')" obsidian eval code="app.metadataCache.getFileCache(app.vault.getAbstractFileByPath('Note.md'))"
15. Output Formats
| Format | Command Example | Best Use |
|---|---|---|
| | Scripts, jq, AI pipelines |
| | Spreadsheets, data analysis |
| | Readable output, pasting |
| | CLI chains with xargs |
| | Config, frontmatter |
| | Folder visualization |
| | awk/cut processing |
Format Examples
obsidian search query="meeting" format=json | jq '.[].path' obsidian files format=paths | xargs wc -l obsidian tags format=csv > tags.csv obsidian folders format=tree
16. TUI Mode
Launch the interactive terminal UI for browsing and quick commands:
obsidian # No arguments launches TUI
TUI Navigation
| Key | Action |
|---|---|
| Navigate file list |
| Open file in Obsidian |
| Search by name |
| New note |
| Delete (with confirmation) |
| Rename file |
| Autocomplete |
| Reverse history search |
| Clear screen |
| Quit |
17. Common Workflows
Daily Review Workflow
# Open and append to daily note obsidian daily obsidian daily:append content="- [ ] Review yesterday's tasks" obsidian daily:append content="## What went well" obsidian daily:append content="## Improvement areas" # Review tasks obsidian tasks daily obsidian tasks format=json | jq '.[] | select(.status == "pending")'
Knowledge Capture Workflow
# Quick capture obsidian create name="Inbox/$(date '+%Y-%m-%d-%H%M')" content="# $(date '+%Y-%m-%d')\n\n" obsidian append file="Inbox" content="Source: " obsidian tag tagname=inbox # Search and link obsidian search query="topic" format=json | jq '.[].path' obsidian backlinks file="Current Note"
Weekly Review Workflow
# Get vault stats obsidian files total obsidian tags sort=count limit=10 obsidian tasks format=json | jq '[.[] | select(.due <= "2026-03-23")]' # Find untagged notes obsidian search query="untagged" format=json # Archive old notes obsidian move file="2025/Week 52" to=Archive/2025/
Property-Based Project Management
# Set project properties obsidian property:set file="Project Alpha" status=active type=text obsidian property:set file="Project Alpha" priority=1 type=number obsidian property:set file="Project Alpha" tags="work,project" type=tags # Find all active projects obsidian search query="[status=active]" format=json | jq '.' # Update project status obsidian property:set file="Project Alpha" status=completed
AI Integration Workflow
# Search vault for context obsidian search query="[tag:reference]" format=json > context.json obsidian tags sort=count limit=20 format=json > top_tags.json # Create note from AI output obsidian create name="AI Research/$(date '+%Y%m%d')" content="$(cat ai_output.md)" obsidian property:set file="AI Research/20260319" tags="ai,research" type=tags
18. Tips & Tricks
Boolean Flags
--silent # Suppress confirmation/output --overwrite # Replace existing content --inline # No trailing newline --copy # Copy to clipboard --permanent # Skip trash
Multiline Content
# Use \n for newlines, \t for tabs obsidian create name="Note" content="# Title\n\n## Section\n\nBody text" # Or use shell quoting obsidian create name="Note" content="# Title ## Section Body text"
Vault Specification
# Target specific vault (first parameter) obsidian vault=Jason search query="meeting" obsidian vault="work-notes" files total # Non-default vault paths obsidian vault=/Users/jasondeland/dev/work-notes/work search query="project"
Command Chaining
# With jq obsidian search query="[tag:project]" format=json | jq '.[] | {name: .name, path: .path}' # With xargs obsidian files format=paths | xargs -I {} sh -c 'echo "=== {} ===" && obsidian read path="{}"' # With grep obsidian search query="meeting" format=paths | grep -i weekly
Quick Command Reference
# Files obsidian files obsidian files folder= obsidian files total obsidian read file= obsidian read path= obsidian create name= obsidian append file= obsidian move file= obsidian delete file= # Search obsidian search query= obsidian search:open query= # Daily Notes obsidian daily obsidian daily:read obsidian daily:append obsidian daily:path # Properties obsidian properties file= obsidian property:set file= obsidian property:remove obsidian property:read file= # Tags obsidian tags obsidian tag tagname= obsidian tags:rename # Links obsidian links file= obsidian backlinks file= obsidian unresolved # Tasks obsidian tasks obsidian task:create obsidian task:complete # Vault obsidian vault obsidian vaults obsidian vault:open obsidian folders obsidian folders format=tree # Sync & Publish obsidian sync:status obsidian publish:list obsidian publish:add # Plugins & Themes obsidian plugins obsidian plugin:enable obsidian theme:set # Developer obsidian eval code= obsidian dev:screenshot
Troubleshooting
"command not found: obsidian"
# macOS: Add to PATH echo 'export PATH="$PATH:/Applications/Obsidian.app/Contents/MacOS"' >> ~/.zshrc source ~/.zshrc # Verify installation ls -la /Applications/Obsidian.app/Contents/MacOS/Obsidian
"No vault found" or wrong vault
# Specify vault explicitly obsidian vault=VaultName command ... # Check available vaults cat ~/Library/Application\ Support/obsidian/obsidian.json
Commands fail silently
# Remove --silent flag to see output obsidian create name="Test" # Without --silent # Check Obsidian is running # The CLI requires the Obsidian app to be running
Enable verbose output
obsidian -b command ... # --verbose for debug info