| name | obsidian-cli |
| description | Use the Obsidian CLI to manage knowledge in an Obsidian vault — daily notes, search, tasks, tags, link graph analysis, properties, templates, and file operations. This skill should be used when the user asks to interact with their Obsidian vault, manage daily notes, search notes, manage tasks, explore tags or backlinks, set properties, use templates, or perform vault maintenance. |
| allowed-tools | Bash, Read, Glob, Grep |
Obsidian CLI — Knowledge Management Skill
Use the obsidian CLI to interact with a running Obsidian instance from the terminal. The CLI connects to the running app and provides access to Obsidian-native capabilities: search indexing, the link graph, template variable resolution, frontmatter-aware property management, and task checkbox semantics.
Prerequisites
- Obsidian 1.12+ must be running (CLI connects to the running instance)
- CLI enabled: Settings > General > Enable "Command line interface"
- Binary:
/Applications/Obsidian.app/Contents/MacOS/obsidian (added to PATH via ~/.zprofile)
If the CLI returns connection errors, ask the user to ensure Obsidian is running.
When to Use CLI vs. Native Tools
Use the Obsidian CLI for:
| Capability | Why CLI wins |
|---|
| Search | Uses Obsidian's indexed search — faster, respects aliases and tags |
| Backlinks / orphans / deadends | Requires Obsidian's link graph |
| Tasks | Checkbox semantics — toggle, done, todo, custom status characters |
| Properties | Frontmatter-aware — typed values (date, list, checkbox, number) |
| Templates | Variable resolution ({{date}}, {{time}}, {{title}}) |
| Daily notes | Respects daily note plugin settings (folder, format, template) |
| Outline / word count | Parsed heading tree, accurate word counts |
| Version history | Access Obsidian's file recovery and sync history |
Use native tools (Read, Write, Grep, Glob) for:
- Bulk file reads or multi-file edits
- Regex-based content search across many files
- File creation without templates
- Structural code or markdown changes
- Reading file contents when you need line numbers for Edit tool
Combine both when appropriate — e.g., use CLI search to find relevant files, then Read to inspect and Edit to modify.
Syntax Conventions
obsidian <command> [parameter=value ...] [flags ...]
- Parameters take values:
parameter=value or parameter="value with spaces"
- Flags are boolean switches with no value:
silent, overwrite, total, verbose
- Multiline content: use
\n for newline, \t for tab
- Vault targeting:
vault=<name> must be the first parameter: obsidian vault=Notes daily
- File targeting:
file=<name> resolves like wikilinks (name without path/extension); path=<path> requires exact path from vault root
- Copy output: add
--copy to any command to copy output to clipboard
- Output formats: many commands support
format=json|text|csv|tsv|md|yaml|paths
Command Reference
Daily Notes
| Command | Description |
|---|
daily | Open today's daily note (creates if needed) |
daily:read | Read daily note contents |
daily:append content=<text> | Append content to daily note |
daily:prepend content=<text> | Prepend content to daily note |
Flags: paneType=tab|split|window, inline, silent
obsidian daily:read
obsidian daily:append content="- [ ] Review pull requests"
obsidian daily:prepend content="## Morning Tasks" inline
Search & Discovery
| Command | Description |
|---|
search query=<text> | Search vault using Obsidian's index |
tags | List tags (default: active file) |
tag name=<tag> | Get tag info and usage |
backlinks | List backlinks to a file |
links | List outgoing links from a file |
orphans | Files with no incoming links |
deadends | Files with no outgoing links |
unresolved | Unresolved (broken) wikilinks in vault |
Search parameters: path=<folder>, limit=<n>, format=text|json, total, matches, case
Tags parameters: file=<name>, path=<path>, sort=count, all, total, counts
Link commands parameters: file=<name>, path=<path>, counts, total, verbose
obsidian search query="meeting notes" path=Work limit=10
obsidian tags all counts sort=count
obsidian backlinks file="Project Alpha"
obsidian unresolved verbose
obsidian orphans
Reading & Writing
| Command | Description |
|---|
read file=<name> | Read file contents |
create name=<name> | Create a new file |
append file=<name> content=<text> | Append content to file |
prepend file=<name> content=<text> | Prepend content after frontmatter |
open file=<name> | Open file in Obsidian |
Create parameters: path=<path>, content=<text>, template=<name>, overwrite, silent, newtab
obsidian create name="Trip to Paris" path=Travel template=Travel
obsidian append file="Meeting Notes" content="\n## Action Items\n- [ ] Follow up with team"
obsidian read path="Projects/Alpha/status.md"
Task Management
| Command | Description |
|---|
tasks | List tasks in vault or file |
task | Show or update a specific task |
Tasks parameters: file=<name>, path=<path>, status="<char>", all, daily, total, done, todo, verbose
Task parameters: ref=<path:line>, file=<name>, path=<path>, line=<n>, status="<char>", toggle, daily, done, todo
obsidian tasks daily todo
obsidian tasks done
obsidian tasks file="Sprint 12" total
obsidian tasks verbose
obsidian task ref="Recipe.md:8" toggle
obsidian task daily line=3 done
obsidian task file=Recipe line=8 status=-
obsidian tasks 'status=?'
Properties (Frontmatter)
| Command | Description |
|---|
properties | List properties for a file or vault |
property:set name=<n> value=<v> | Set a frontmatter property |
property:read name=<n> | Read a property value |
property:remove name=<n> | Remove a property |
aliases | List aliases for a file or vault |
Properties parameters: file=<name>, path=<path>, name=<name>, sort=count, format=yaml|tsv, all, total, counts
Property:set parameters: type=text|list|number|checkbox|date|datetime, file=<name>, path=<path>
obsidian properties all counts sort=count
obsidian property:set file="Project Alpha" name=status value=active type=text
obsidian property:set file="Meeting" name=date value=2026-02-13 type=date
obsidian property:read file="Project Alpha" name=status
obsidian property:remove file="Old Note" name=deprecated-field
Templates
| Command | Description |
|---|
templates | List available templates |
template:read name=<template> | Read template content |
template:insert name=<template> | Insert template into active file |
Template:read flags: title=<title>, resolve (processes {{date}}, {{time}}, {{title}})
obsidian templates
obsidian template:read name=Meeting resolve title="Sprint Planning"
obsidian create name="Weekly Review" path=Reviews template="Weekly Review"
File & Folder Info
| Command | Description |
|---|
file file=<name> | Show file metadata |
files | List files in vault |
folder path=<path> | Show folder info |
folders | List folders in vault |
outline | Show heading tree for a file |
wordcount | Count words and characters |
Files parameters: folder=<path>, ext=<extension>, total
Folder parameters: info=files|folders|size
Outline parameters: file=<name>, path=<path>, format=tree|md, total
Wordcount parameters: file=<name>, path=<path>, words, characters
obsidian files folder=Projects ext=md
obsidian outline file="Architecture Doc" format=tree
obsidian wordcount file="Draft Post"
obsidian folder path=Attachments info=size
Vault Maintenance
| Command | Description |
|---|
move file=<name> to=<path> | Move or rename a file |
delete file=<name> | Delete a file (to trash by default) |
bookmarks | List bookmarks |
bookmark file=<path> | Add a bookmark |
Move parameters: path=<path>
Delete flags: permanent
Bookmark parameters: subpath=<subpath>, folder=<path>, search=<query>, url=<url>, title=<title>
obsidian move file="Old Note" to="Archive/Old Note.md"
obsidian delete file="Scratch"
obsidian bookmark file="Projects/Alpha/README.md" title="Alpha Project"
Version History
| Command | Description |
|---|
diff | List or compare file versions |
history file=<name> | List local history versions |
history:list | List all files with local history |
history:read file=<name> version=<n> | Read a specific version |
history:restore file=<name> version=<n> | Restore a version |
Diff parameters: file=<name>, path=<path>, from=<n>, to=<n>, filter=local|sync
obsidian diff file=Recipe from=1
obsidian diff file=Recipe from=2 to=1
obsidian history file="Important Doc"
obsidian history:read file="Important Doc" version=2
obsidian history:restore file="Important Doc" version=3
Vault Info
| Command | Description |
|---|
vault | Show current vault info |
vaults | List known vaults |
vault info=name | Show just vault name |
vault info=path | Show vault path |
obsidian vault
obsidian vault info=name
Common Patterns
Daily Task Review
obsidian tasks daily
obsidian tasks todo
obsidian task daily line=5 done
Orphan Cleanup
obsidian orphans
obsidian backlinks file="Orphan Note"
obsidian move file="Orphan Note" to="Archive/Orphan Note.md"
Link Health Audit
obsidian unresolved verbose
obsidian deadends
obsidian backlinks file="Hub Note" counts
obsidian links file="Hub Note"
Tag Inventory
obsidian tags all counts sort=count
obsidian tag name=project-alpha verbose
Template-Based Note Creation
obsidian templates
obsidian create name="Client Meeting 2026-02-13" path=Meetings template=Meeting
obsidian append file="Client Meeting 2026-02-13" content="\n## Notes\n- Discussed timeline"