Agent Skills: Obsidian CLI Skill

>-

UncategorizedID: jykim/claude-obsidian-skills/obsidian-cli

Install this agent skill to your local

pnpm dlx add-skill https://github.com/jykim/claude-obsidian-skills/tree/HEAD/obsidian-cli

Skill Files

Browse the full folder contents for obsidian-cli.

Download Skill

Loading file tree…

obsidian-cli/SKILL.md

Skill Metadata

Name
obsidian-cli
Description
>-

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
  • 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

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" not name=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
  • [ ] 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 vaults to list available vaults, then specify vault="Name"

"File not found" (with file= parameter)

  • Solution: Verify file exists with obsidian files. Consider using path= 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.