Agent skill
obsidian
This skill should be used when working with Obsidian, a personal knowledge management and note-taking application. Use when the user wants to manage notes, search the vault, create or edit files, manage tasks, handle daily notes, work with tags/properties/links, or control Obsidian itself via the CLI.
Install this agent skill to your Project
npx add-skill https://github.com/lordhamster-dev/dotfiles/tree/main/crush/skills/obsidian
SKILL.md
Overview
Obsidian CLI (obsidian) is a command-line interface that communicates with a running Obsidian instance to manage vaults, notes, tasks, bookmarks, plugins, themes, and more. All operations require Obsidian to be running.
Command Syntax
obsidian <command> [options]
Options are passed as key=value pairs (quote values with spaces: name="My Note"). Use \n for newline, \t for tab in content values.
Vault targeting: Add vault=<name> to any command to target a specific vault.
File resolution:
file=<name>resolves by note name (like wikilinks), searches entire vaultpath=<path>is exact path relative to vault root (e.g.,folder/note.md)- Most commands default to the active file when omitted
Command Categories
Vault & File Management
# Vault info
obsidian vault
obsidian vault info=name
obsidian vault info=path
obsidian vault info=files
obsidian vaults
obsidian vaults verbose
# List files and folders
obsidian files
obsidian files folder=Projects ext=md
obsidian files total
obsidian folders
obsidian folders folder=Projects
# File info
obsidian file file="My Note"
obsidian file path=folder/note.md
# Create, open, move, rename, delete
obsidian create name="New Note" content="# Title\nContent here"
obsidian create name="New Note" template="Daily Template" open
obsidian open file="My Note" newtab
obsidian move file="Old Name" to=Archive/
obsidian rename file="Old Name" name="New Name"
obsidian delete file="My Note"
obsidian delete path=folder/note.md permanent
Reading & Writing Content
# Read note content
obsidian read file="My Note"
obsidian read path=Projects/todo.md
# Append / prepend content
obsidian append file="My Note" content="New line of content"
obsidian append file="Journal" content="- [ ] Task item" inline
obsidian prepend file="My Note" content="# Header\n"
# Word count
obsidian wordcount file="My Note"
obsidian wordcount file="My Note" words
obsidian wordcount file="My Note" characters
Daily Notes
obsidian daily # Open today's daily note
obsidian daily paneType=tab
obsidian daily:path # Get path to today's daily note
obsidian daily:read # Read today's daily note
obsidian daily:append content="- [ ] Task for today"
obsidian daily:prepend content="## Morning\n"
Search
obsidian search query="meeting notes"
obsidian search query="TODO" path=Projects limit=20
obsidian search query="keyword" case total
obsidian search query="term" format=json
# Search with surrounding context lines
obsidian search:context query="important decision"
obsidian search:context query="bug" path=Dev format=json
# Open search panel in Obsidian
obsidian search:open query="my query"
Tasks
# List tasks
obsidian tasks
obsidian tasks todo
obsidian tasks done
obsidian tasks file="My Note"
obsidian tasks path=Projects/todo.md verbose
obsidian tasks format=json
obsidian tasks daily # Tasks from today's daily note
# Toggle / update a task (ref format: path:line)
obsidian task ref="Projects/todo.md:5" toggle
obsidian task ref="Projects/todo.md:5" done
obsidian task ref="Projects/todo.md:5" todo
obsidian task file="todo" line=5 toggle
obsidian task file="todo" line=5 status="/" # Custom status char
Tags & Properties
# Tags
obsidian tags
obsidian tags counts sort=count
obsidian tags file="My Note"
obsidian tag name="project" verbose # Files using this tag
# Properties (frontmatter)
obsidian properties
obsidian properties file="My Note"
obsidian properties counts sort=count format=json
# Read / set / remove a specific property
obsidian property:read name="status" file="My Note"
obsidian property:set name="status" value="done" file="My Note"
obsidian property:set name="priority" value="high" type=text file="My Note"
obsidian property:set name="count" value="3" type=number file="My Note"
obsidian property:set name="done" value="true" type=checkbox file="My Note"
obsidian property:set name="due" value="2025-12-31" type=date file="My Note"
obsidian property:remove name="status" file="My Note"
Links & Graph
obsidian links file="My Note" # Outgoing links
obsidian links file="My Note" total
obsidian backlinks file="My Note" # Incoming links
obsidian backlinks file="My Note" counts format=json
obsidian aliases # All aliases in vault
obsidian aliases file="My Note" verbose
obsidian unresolved # Broken/unresolved links
obsidian orphans # Notes with no incoming links
obsidian deadends # Notes with no outgoing links
Outline & Structure
obsidian outline file="My Note"
obsidian outline file="My Note" format=json
obsidian outline file="My Note" format=md total
Bookmarks
obsidian bookmarks
obsidian bookmarks verbose format=json
obsidian bookmark file=Projects/todo.md title="Project Tasks"
obsidian bookmark search="query" title="My Search"
obsidian bookmark url="https://example.com" title="Reference"
History & Diff (Sync)
obsidian history file="My Note"
obsidian history:list
obsidian history:read file="My Note" version=2
obsidian history:restore file="My Note" version=2
obsidian diff file="My Note"
obsidian diff file="My Note" from=1 to=3
Recents & Random
obsidian recents
obsidian recents total
obsidian random # Open a random note
obsidian random folder=Projects newtab
obsidian random:read # Read content of a random note
Plugins & Themes
# Plugins
obsidian plugins
obsidian plugins filter=community versions format=json
obsidian plugins:enabled
obsidian plugin id=dataview
obsidian plugin:enable id=dataview
obsidian plugin:disable id=dataview
obsidian plugin:install id=dataview enable
obsidian plugin:uninstall id=dataview
obsidian plugin:reload id=dataview # For developers
obsidian plugins:restrict on # Enable restricted mode
obsidian plugins:restrict off
# Themes
obsidian themes
obsidian themes versions
obsidian theme # Show active theme
obsidian theme name="Minimal"
obsidian theme:set name="Minimal"
obsidian theme:set name="" # Reset to default
obsidian theme:install name="Minimal" enable
obsidian theme:uninstall name="Minimal"
# CSS Snippets
obsidian snippets
obsidian snippets:enabled
obsidian snippet:enable name="my-snippet"
obsidian snippet:disable name="my-snippet"
Commands & Hotkeys
obsidian commands
obsidian commands filter=editor
obsidian command id="editor:toggle-bold"
obsidian hotkeys
obsidian hotkeys all verbose format=json
obsidian hotkey id="editor:toggle-bold" verbose
Workspaces & Tabs
obsidian workspaces
obsidian workspace
obsidian workspace:save name="My Layout"
obsidian workspace:load name="My Layout"
obsidian workspace:delete name="My Layout"
obsidian tabs
obsidian tabs ids
obsidian tab:open file=Projects/todo.md
Bases (Database views)
obsidian bases
obsidian base:views file="My Base"
obsidian base:query file="My Base" view="Table" format=md
obsidian base:create file="My Base" view="Table" name="New Item"
App Control
obsidian version
obsidian reload # Reload vault
obsidian restart # Restart Obsidian
obsidian web url="https://example.com" newtab
Common Workflows
Create a note from a template and append content
obsidian create name="Meeting 2025-01-15" template="Meeting Template" open
obsidian append file="Meeting 2025-01-15" content="## Notes\n- Discussed roadmap"
Find all incomplete tasks across vault, then complete one
obsidian tasks todo verbose
obsidian task ref="Projects/todo.md:12" done
Search for notes and read the best match
obsidian search query="project kickoff" format=json
obsidian read file="Project Kickoff"
Bulk-tag notes via property:set
obsidian property:set name="status" value="active" type=text file="My Project"
Add to today's daily note
obsidian daily:append content="- [ ] Review PR #42"
obsidian daily:read
Explore vault structure
obsidian vault
obsidian files total
obsidian folders
obsidian tags counts sort=count
obsidian orphans
obsidian deadends
Output Formats
Most list commands support format=json|tsv|csv (default: tsv). Use format=json when piping to other tools or when structured data is needed. Add total to return just the count.
Tips
- Obsidian must be running for CLI commands to work.
file=<name>uses fuzzy/wikilink-style resolution — preferpath=<path>for precision.- Use
\nincontent=to insert real newlines. - Chain multiple commands to build workflows (read → modify → append).
- Use
vault=<name>when multiple vaults are open to avoid ambiguity. obsidian help <command>shows detailed help for any specific command.
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
git-commit-master
按照 Conventional Commits 规范执行高质量的 git 提交,处理暂存、消息生成及钩子修复。
scaffold-exercises
Create exercise directory structures with sections, problems, solutions, and explainers that pass linting. Use when user wants to scaffold exercises, create exercise stubs, or set up a new course section.
handoff
Compact the current conversation into a handoff document for another agent to pick up.
git-guardrails-claude-code
Set up Claude Code hooks to block dangerous git commands (push, reset --hard, clean, branch -D, etc.) before they execute. Use when user wants to prevent destructive git operations, add git safety hooks, or block git push/reset in Claude Code.
obsidian-vault
Search, create, and manage notes in the Obsidian vault with wikilinks and index notes. Use when user wants to find, create, or organize notes in Obsidian.
edit-article
Edit and improve articles by restructuring sections, improving clarity, and tightening prose. Use when user wants to edit, revise, or improve an article draft.
Didn't find tool you were looking for?