obsidian-cli
Skill138 starsChanged 7 months agoMITView on GitHub
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.
Files
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" # correct — clean output
obsidian orphans total # noisy output in agent contextShorthand 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
# Quick vault health stats (supplement Python/Neo4j 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
# Fast append to daily note (no file path needed)
obsidian daily:append content="- [ ] Review TPM progress" silent 2>/dev/null
# Atomic frontmatter update
obsidian property:set name=status value=shipped path="prd/xmarket/checkout.md" 2>/dev/null
# Template-based note creation
obsidian create name="New PRD" template=prd silent 2>/dev/null
# Surface created note in Obsidian
obsidian open path="decisions/xmarket/2026-02-11-payment-provider.md" newtab 2>/dev/nullScout — Fallback Search
# Backlinks via Obsidian's graph (alternative to Neo4j)
obsidian backlinks file=Note 2>/dev/null
# Quick text search (alternative to QMD)
obsidian search query="payment provider" 2>/dev/nullToday — Workflow Touchpoints
# Phase 0: Ensure daily note visible in Obsidian
obsidian daily silent 2>/dev/null
# Phase 3: Quick health stats
obsidian unresolved total 2>/dev/null
obsidian orphans total 2>/dev/null
# Phase 5: Surface daily note
obsidian open path="daily/2026-02-11.md" 2>/dev/nullCommand Reference
Vault & File Targeting
# Auto-detects vault from CWD
obsidian daily 2>/dev/null
# Target specific vault
obsidian vault=Notes daily 2>/dev/null
# By name (wikilink resolution)
obsidian read file=Recipe 2>/dev/null
# By exact path
obsidian read path="prd/xmarket/checkout.md" 2>/dev/nullDaily Notes
obsidian daily 2>/dev/null # Open today's daily note
obsidian daily:read 2>/dev/null # Read daily note contents
obsidian daily:append content="- [ ] Task" 2>/dev/null # Append to daily note
obsidian daily:prepend content="## Morning" 2>/dev/null # Prepend after frontmatter
obsidian daily:append content="text" silent 2>/dev/null # Append without openingFiles & Folders
obsidian files 2>/dev/null # List all files
obsidian files folder=prd 2>/dev/null # List files in folder
obsidian files ext=md total 2>/dev/null # Count .md files
obsidian open file=Note 2>/dev/null # Open a file
obsidian open file=Note newtab 2>/dev/null # Open in new tab
obsidian create name="New Note" 2>/dev/null # Create file
obsidian create name=Note template=prd 2>/dev/null # Create from template
obsidian create name=Note content="text" silent overwrite 2>/dev/null
obsidian read file=Note 2>/dev/null # Read file contents
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 # Trash (recoverable)Search
obsidian search query="meeting notes" 2>/dev/null # Search vault
obsidian search query="TODO" path=daily 2>/dev/null # Search in folder
obsidian search query="bug" total 2>/dev/null # Count matches
obsidian search query="fix" matches 2>/dev/null # Show match context
obsidian search query="test" format=json 2>/dev/null # JSON outputLinks & Graph
obsidian backlinks file=Note 2>/dev/null # Backlinks to a file
obsidian backlinks file=Note counts 2>/dev/null # With link counts
obsidian links file=Note 2>/dev/null # Outgoing links from a file
obsidian unresolved 2>/dev/null # Broken/unresolved links
obsidian unresolved verbose 2>/dev/null # Include source files
obsidian orphans 2>/dev/null # Files with no incoming links
obsidian orphans total 2>/dev/null # Count orphans
obsidian deadends 2>/dev/null # Files with no outgoing linksProperties (Frontmatter)
obsidian properties file=Note 2>/dev/null # List properties
obsidian properties all counts 2>/dev/null # All vault properties
obsidian property:read name=status file=Note 2>/dev/null # Read a property
obsidian property:set name=status value=done file=Note 2>/dev/null # Set a property
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/nullTags
obsidian tags all counts 2>/dev/null # All tags with counts
obsidian tags file=Note 2>/dev/null # Tags in a file
obsidian tag name=project verbose 2>/dev/null # Tag info with file listTasks
obsidian tasks 2>/dev/null # Tasks in active file
obsidian tasks daily 2>/dev/null # Tasks from daily note
obsidian tasks daily todo 2>/dev/null # Incomplete daily tasks
obsidian tasks all todo 2>/dev/null # All incomplete tasks
obsidian task daily line=3 toggle 2>/dev/null # Toggle a daily taskBases
obsidian bases 2>/dev/null # List all .base files
obsidian base:query file=MyBase format=json 2>/dev/null # Query base
obsidian base:query file=MyBase view=TableView format=csv 2>/dev/nullTemplates
obsidian templates 2>/dev/null # List templates
obsidian template:read name=prd 2>/dev/null # Read template
obsidian template:insert name=prd 2>/dev/null # Insert into active fileWorkspace & Tabs
obsidian tabs 2>/dev/null # List open tabs
obsidian workspace 2>/dev/null # Show workspace tree
obsidian workspace:load name=Writing 2>/dev/null # Load workspaceCommands
obsidian commands 2>/dev/null # List all command IDs
obsidian command id=editor:toggle-bold 2>/dev/null # Execute a commandCommon Patterns for This Vault
Quick daily task capture
obsidian daily:append content="- [ ] Review TPM progress" silent 2>/dev/nullCheck vault health via CLI
obsidian orphans total 2>/dev/null
obsidian unresolved verbose 2>/dev/null
obsidian deadends total 2>/dev/nullOpen a PRD in Obsidian
obsidian open path="prd/tpm/private-market-mvp-phases.md" 2>/dev/nullFind all notes tagged with a project
obsidian tag name=xmarket verbose 2>/dev/nullQuery a Base for structured data
obsidian base:query file=Projects format=json 2>/dev/nullOther versions84 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 84
- kepano/obsidian-skills★ 49ksame name
- breferrari/obsidian-mind★ 5.4ksame name
- Atmosphere/atmosphere★ 3.8ksame name
- pedronauck/skills★ 641same name
- allenhutchison/obsidian-gemini★ 529same name
- sd0xdev/sd0x-dev-flow★ 192same name
- sd0xdev/sd0x-harness★ 192same name
- edrickleong/obsidian-calendar-bases★ 186same name
- benoror/obsidianos_work★ 166same name
- songzhuozhu/obsidian-llm-wiki★ 121same name
74 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
Used alongsideProjects with it also use defuddle, knap and 6 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
HK-hubSkilldefuddle
Extract clean markdown content from web pages using Defuddle CLI, removing clutter and navigation to save tokens. Use instead of WebFetch when the user provides a URL to read or analyze, for online documentation, articles, blog posts, or any standard web page.
Also in 34 projects that use this
lucasmaher-hashSkillknap
Render Markdown from templates and structured data using Knap CLI. Use when the user asks to apply a Knap template, turn JSON or CSV data into notes, batch-generate Markdown files, or format Defuddle output into a note.
Also in 4 projects that use this
0xHoneyJarSkillqmd
Local markdown search engine for knowledge bases, notes, and documentation. Combines BM25 full-text search, vector semantic search, and LLM re-ranking. Use when searching through markdown notes, retrieving documents, or managing knowledge collections.
Also in 5 projects that use this
MicrosoftSkillwiki-ingest
Use when an operation issue asks you to ingest a captured source from `raw/` into the LLM Wiki, or when the user explicitly says "ingest <slug>". The issue body will name a file under `raw/` (e.g. `raw/karpathy-llm-wiki.md`) and ask for durable wiki pages. Do not invoke this skill for Paperclip activity bundles — those use `paperclip-distill` instead.
Also in 4 projects that use this
huangqianqian120Skillfirecrawl
网页数据抓取工具,用于 AI 应用。将网页转换为 Markdown 或结构化 JSON 数据。支持抓取、爬取、搜索等功能。适用于需要获取网页内容的 AI Agent 场景。
Also in 3 projects that use this
Lazily01Skillagent-reach
给 AI Agent "眼睛",让它能看到整个互联网。支持搜索、读网页、提取字幕、读 RSS 等。
Also in 3 projects that use this
In this repository41 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- .github/copilot-instructions.mdCopilot instructions
- askSkill
- blockSkill
- dailySkill
- decideSkill
- discoverSkill
- docSkill
- docxSkill
- excalidraw-generatorSkill
- explainSkill
- gwsSkill
- healthSkill
- helpSkill
- inboxSkill
- interviewSkill
- jiraSkill
- journeySkill
- json-canvasSkill
- linearSkill
- meetSkill
- mermaid-visualizerSkill
- notionSkill
- obsidian-basesSkill
- obsidian-markdownSkill
- onboardSkill
- pdfSkill
- pptxSkill
- previewSkill
- prioritizeSkill
- progressSkill
- pushSkill
- reportSkill
- show-meSkill
- skill-creatorSkill
- todaySkill
- updateSkill
- vault-opsSkill
- weeklySkill
- xlsxSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
Reviews can't be read right now.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

