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.

install
source · Clone the upstream repo
git clone https://github.com/jaydeland/Tony
Claude Code · Install into ~/.claude/skills/
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"
manifest: .claude/skills/obsidian/skill.md
source content

Obsidian 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 (

/Users/jasondeland/dev/Jason
), work-notes/work (
/Users/jasondeland/dev/work-notes/work
), work-notes/notes (
/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

  1. Open Obsidian → Settings → General → Command line interface
  2. Enable the toggle
  3. Follow the registration prompt
  4. 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

TypeExample ValueUse Case
text
"Some text"
General text
list
["item1","item2"]
Multiple values
tags
"pkm,notes"
Tag-like values
number
3
Numeric values
checkbox
true/false
Boolean
date
2026-04-01
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

FormatCommand ExampleBest Use
json
format=json
Scripts, jq, AI pipelines
csv
format=csv
Spreadsheets, data analysis
md
format=md
Readable output, pasting
paths
format=paths
CLI chains with xargs
yaml
format=yaml
Config, frontmatter
tree
format=tree
Folder visualization
tsv
format=tsv
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

KeyAction
↑/↓
Navigate file list
Enter
Open file in Obsidian
/
Search by name
n
New note
d
Delete (with confirmation)
r
Rename file
Tab
Autocomplete
Ctrl+R
Reverse history search
Ctrl+L
Clear screen
q
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