| name | obsidian-cli |
| description | Control Obsidian from the terminal using the `obsidian` CLI. Use when the agent needs to open notes, search the vault inside Obsidian, append/prepend content to the active file, create notes from templates, manage properties, check backlinks/orphans, query Bases, or interact with the running Obsidian app. Requires Obsidian 1.12+ running. |
Obsidian CLI Skill
Control the running Obsidian app from the terminal. Supplementary tool alongside Read/Write/Edit, Glob, Grep, QMD, and Neo4j.
Prerequisites
- Obsidian 1.12+ running (early access, Catalyst license)
- CLI registered: Settings > General > Command line interface
- Templates plugin: Settings > Core Plugins > Templates > Template folder →
_templates
- PATH:
/Applications/Obsidian.app/Contents/MacOS (in ~/.zprofile)
Important: Noisy Output
The CLI outputs Loading updated app package... to stdout on every invocation. Always filter with grep -v:
obsidian orphans total 2>/dev/null | grep -v "Loading updated"
obsidian orphans total
Shorthand for all examples below: 2>/dev/null | grep -v "Loading updated" is abbreviated as 2>/dev/null for readability, but always include the full filter in practice.
When to Use CLI vs File Tools
| Scenario | Use CLI | Use File Tools |
|---|
| Open a note in Obsidian UI | obsidian open | No equivalent |
| Read/write file content | Either works | Prefer Read/Write/Edit |
| Search vault content | obsidian search | Prefer Grep/QMD |
| Open today's daily note in Obsidian | obsidian daily | No equivalent |
| Append task to daily note | obsidian daily:append | Either |
| Create note from template | obsidian create template=X | Manual template apply |
| Check backlinks/orphans/unresolved | obsidian backlinks/orphans | Manual grep |
| Set/read properties (frontmatter) | obsidian property:set | Edit tool |
| Query a Base view | obsidian base:query | No equivalent |
| Execute Obsidian commands | obsidian command | No equivalent |
Rule of thumb: CLI for Obsidian-app-specific actions (open files, trigger commands, query Bases, graph relationships). File tools for direct file manipulation.
Agent Integration Patterns
Keeper — Supplementary Health Checks
obsidian unresolved verbose 2>/dev/null | grep -v "Loading updated"
obsidian orphans total 2>/dev/null | grep -v "Loading updated"
obsidian deadends total 2>/dev/null | grep -v "Loading updated"
Scribe — Quick Capture
obsidian daily:append content="- [ ] Review TPM progress" silent 2>/dev/null
obsidian property:set name=status value=shipped path="prd/xmarket/checkout.md" 2>/dev/null
obsidian create name="New PRD" template=prd silent 2>/dev/null
obsidian open path="decisions/xmarket/2026-02-11-payment-provider.md" newtab 2>/dev/null
Scout — Fallback Search
obsidian backlinks file=Note 2>/dev/null
obsidian search query="payment provider" 2>/dev/null
Today — Workflow Touchpoints
obsidian daily silent 2>/dev/null
obsidian unresolved total 2>/dev/null
obsidian orphans total 2>/dev/null
obsidian open path="daily/2026-02-11.md" 2>/dev/null
Command Reference
Vault & File Targeting
obsidian daily 2>/dev/null
obsidian vault=Notes daily 2>/dev/null
obsidian read file=Recipe 2>/dev/null
obsidian read path="prd/xmarket/checkout.md" 2>/dev/null
Daily Notes
obsidian daily 2>/dev/null
obsidian daily:read 2>/dev/null
obsidian daily:append content="- [ ] Task" 2>/dev/null
obsidian daily:prepend content="## Morning" 2>/dev/null
obsidian daily:append content="text" silent 2>/dev/null
Files & Folders
obsidian files 2>/dev/null
obsidian files folder=prd 2>/dev/null
obsidian files ext=md total 2>/dev/null
obsidian open file=Note 2>/dev/null
obsidian open file=Note newtab 2>/dev/null
obsidian create name="New Note" 2>/dev/null
obsidian create name=Note template=prd 2>/dev/null
obsidian create name=Note content="text" silent overwrite 2>/dev/null
obsidian read file=Note 2>/dev/null
obsidian append file=Note content="new line" 2>/dev/null
obsidian prepend file=Note content="top line" 2>/dev/null
obsidian move file=Note to="archive/" 2>/dev/null
obsidian delete file=Note 2>/dev/null
Search
obsidian search query="meeting notes" 2>/dev/null
obsidian search query="TODO" path=daily 2>/dev/null
obsidian search query="bug" total 2>/dev/null
obsidian search query="fix" matches 2>/dev/null
obsidian search query="test" format=json 2>/dev/null
Links & Graph
obsidian backlinks file=Note 2>/dev/null
obsidian backlinks file=Note counts 2>/dev/null
obsidian links file=Note 2>/dev/null
obsidian unresolved 2>/dev/null
obsidian unresolved verbose 2>/dev/null
obsidian orphans 2>/dev/null
obsidian orphans total 2>/dev/null
obsidian deadends 2>/dev/null
Properties (Frontmatter)
obsidian properties file=Note 2>/dev/null
obsidian properties all counts 2>/dev/null
obsidian property:read name=status file=Note 2>/dev/null
obsidian property:set name=status value=done file=Note 2>/dev/null
obsidian property:set name=tags value="[a,b]" type=list file=Note 2>/dev/null
obsidian property:remove name=old_prop file=Note 2>/dev/null
Tags
obsidian tags all counts 2>/dev/null
obsidian tags file=Note 2>/dev/null
obsidian tag name=project verbose 2>/dev/null
Tasks
obsidian tasks 2>/dev/null
obsidian tasks daily 2>/dev/null
obsidian tasks daily todo 2>/dev/null
obsidian tasks all todo 2>/dev/null
obsidian task daily line=3 toggle 2>/dev/null
Bases
obsidian bases 2>/dev/null
obsidian base:query file=MyBase format=json 2>/dev/null
obsidian base:query file=MyBase view=TableView format=csv 2>/dev/null
Templates
obsidian templates 2>/dev/null
obsidian template:read name=prd 2>/dev/null
obsidian template:insert name=prd 2>/dev/null
Workspace & Tabs
obsidian tabs 2>/dev/null
obsidian workspace 2>/dev/null
obsidian workspace:load name=Writing 2>/dev/null
Commands
obsidian commands 2>/dev/null
obsidian command id=editor:toggle-bold 2>/dev/null
Common Patterns for This Vault
Quick daily task capture
obsidian daily:append content="- [ ] Review TPM progress" silent 2>/dev/null
Check vault health via CLI
obsidian orphans total 2>/dev/null
obsidian unresolved verbose 2>/dev/null
obsidian deadends total 2>/dev/null
Open a PRD in Obsidian
obsidian open path="prd/tpm/private-market-mvp-phases.md" 2>/dev/null
Find all notes tagged with a project
obsidian tag name=xmarket verbose 2>/dev/null
Query a Base for structured data
obsidian base:query file=Projects format=json 2>/dev/null