Obsidian CLI — Claude Code Skill
A skill for AI coding agents that enables full control of Obsidian vaults from the terminal using the official Obsidian CLI (v1.12+).
What This Skill Does
Once installed, your AI agent will know how to interact with Obsidian vaults through the official CLI — reading, creating, and editing notes; managing daily notes; running full-text search; querying tasks, tags, links, and properties; managing plugins and sync; and running developer tools.
Covers 130+ commands across all major areas:
| Area | Commands |
|---|---|
| Files | read, create, append, prepend, move, rename, delete, files, folders, file, random |
| Daily Notes | daily, daily:read, daily:append, daily:prepend, daily:path |
| Search | search, search:context with scoping, limits, JSON output |
| Properties | properties, property:read, property:set, property:remove, aliases |
| Tags | tags, tag with counts and filtering |
| Tasks | tasks, task — query, filter, toggle |
| Links | backlinks, links, unresolved, orphans, deadends |
| Bookmarks | bookmarks, bookmark |
| Templates | templates, template:read, template:insert |
| Plugins | plugins, plugin, plugin:enable/disable/install/uninstall, plugins:restrict |
| Sync | sync, sync:status, sync:history, sync:read, sync:restore, sync:deleted |
| Themes | themes, theme, theme:set, theme:install/uninstall |
| Snippets | snippets, snippets:enabled, snippet:enable/disable |
| Commands | commands, command, hotkeys, hotkey |
| Bases | bases, base:query, base:views, base:create |
| History | history, history:list, history:read, history:restore |
| Workspace | workspace, tabs, tab:open |
| Diff | diff |
| Developer | eval, dev:screenshot, dev:debug, dev:console, dev:errors, dev:css, dev:dom, devtools |
| Vault | vault, vaults, version, reload, restart, recents, outline, wordcount |
Invoking the Skill
The skill activates automatically when your request clearly involves Obsidian vault operations. For casual phrasing, you may need to invoke it explicitly:
| Method | Example |
|---|---|
| Natural language (usually works) | "add this to my daily note: …", "search my vault for X" |
| Explicit prefix (always works) | $obsidian-cli append to today's daily note: "…" |
| Strict mode (always active) | Enable in Claude Code settings so the skill is always loaded |
If Claude tries to answer a vault request without executing any commands, just say use obsidian-cli and it will retry with the skill active.
Prerequisites
Obsidian v1.12 is available to all users — no Early Access build or Catalyst license required.
| Requirement | Details |
|---|---|
| Obsidian Desktop | v1.12.0+ |
| CLI enabled | Settings → Command line interface → Toggle ON |
| Obsidian running | The desktop app must be running — the CLI communicates over IPC |
Platform notes
- macOS / Linux — the
obsidianbinary is added to PATH automatically when you enable CLI in settings. - Windows — requires an
Obsidian.comredirector file placed alongsideObsidian.exe. Must run from a normal-privilege terminal — admin terminals produce silent failures. - Headless Linux — use the
.debpackage (not snap). Run underxvfband prefix commands withDISPLAY=:5. SetPrivateTmp=falseif running as a systemd service.
Installation
Claude Code — Plugin (native)
Option A — Marketplace install (recommended):
/plugin marketplace add https://github.com/pablo-mano/Obsidian-CLI-skill
/plugin install obsidian-cli
Done — see Invoking the Skill above for how to activate it.
Option B — Direct plugin load:
- Clone this repository:
git clone https://github.com/pablo-mano/Obsidian-CLI-skill - Load the plugin with the
--plugin-dirflag:claude --plugin-dir ./Obsidian-CLI-skill
Option C — Persistent via settings.json:
Add to your project's .claude/settings.json:
{
"plugins": {
"obsidian-cli": {
"source": { "source": "github", "repo": "pablo-mano/Obsidian-CLI-skill" }
}
}
}
The
.claude-plugin/marketplace.jsonmanifest makes this repository compatible with Claude Code's marketplace system.
Cursor
Cursor has a native skills system (launched Feb 2026) that is directly compatible with the SKILL.md format — no rules file needed.
In a terminal:
git clone --depth 1 https://github.com/pablo-mano/Obsidian-CLI-skill /tmp/Obsidian-CLI-skill
mkdir -p ~/.cursor/skills
cp -r /tmp/Obsidian-CLI-skill/skills/obsidian-cli ~/.cursor/skills/obsidian-cli
rm -rf /tmp/Obsidian-CLI-skill
Cursor picks it up automatically — no restart needed.
Cortex Code
Option A — Remote install (recommended)
In a Cortex Code session, run:
/skill add https://github.com/pablo-mano/Obsidian-CLI-skill.git
Cortex Code clones the repo and caches the skill. Use /skill sync obsidian-cli to pull
updates later.
Option B — Project-local install
mkdir -p .cortex/skills/obsidian-cli
curl -sSL https://raw.githubusercontent.com/pablo-mano/Obsidian-CLI-skill/main/skills/obsidian-cli/SKILL.md \
-o .cortex/skills/obsidian-cli/SKILL.md
Or clone the repo and copy:
git clone https://github.com/pablo-mano/Obsidian-CLI-skill.git /tmp/obsidian-cli-skill
cp -r /tmp/obsidian-cli-skill/skills/obsidian-cli .cortex/skills/
Option C — User-level install
mkdir -p ~/.snowflake/cortex/skills/obsidian-cli
cp skills/obsidian-cli/SKILL.md ~/.snowflake/cortex/skills/obsidian-cli/
Verify
/skill list
You should see obsidian-cli in the output.
Invoke
Prefix requests with $obsidian-cli or just describe what you want — Cortex Code activates
the skill automatically when the context matches:
$obsidian-cli append to today's daily note: "Reviewed Snowflake PR #42"
GitHub Copilot (VS Code)
Copilot supports custom instructions via repository files:
Option A — Repository-wide (recommended):
- Create
.github/copilot-instructions.mdin your repo. - Paste the body of
SKILL.mdinto the file.
Option B — Path-scoped:
- Create
.github/instructions/obsidian-cli.instructions.md - Add frontmatter
applyTo: "**/*"then paste theSKILL.mdbody.
Windsurf
Windsurf uses a Rules system (.windsurf/rules/). Rules have a 12,000 character limit per file, so split the skill across two files:
- Create
.windsurf/rules/obsidian-cli.md— paste the body ofSKILL.md(everything after the---frontmatter). - Create
.windsurf/rules/obsidian-cli-reference.md— paste the contents ofskills/obsidian-cli/references/command-reference.md.
Set the activation mode to Always On or Model Decision in each file's frontmatter to control when the rules apply.
Nanoclaw
Nanoclaw loads skills from .claude/skills/ using the same SKILL.md format — directly compatible.
- Clone or download this repo
- Copy the skill folder into your Nanoclaw project:
cp -r Obsidian-CLI-skill /path/to/nanoclaw/.claude/skills/obsidian-cli - The skill is available as a slash command (
/obsidian-cli) or auto-triggers when you ask the agent to interact with Obsidian.
This is a knowledge skill — it adds Obsidian CLI awareness to the agent without modifying Nanoclaw's codebase.
Openclaw
Openclaw loads skills from the skills/ directory at the project root using the SKILL.md format — directly compatible.
- Clone or download this repo
- Copy the skill folder into Openclaw's skills directory:
cp -r Obsidian-CLI-skill /path/to/openclaw/skills/obsidian-cli - Restart the Openclaw agent — skills are discovered automatically.
Any Other LLM Agent or Assistant
SKILL.md is a plain Markdown document. For any agent that supports custom system prompts or instructions:
- Open the agent's system prompt / custom instructions settings.
- Paste the contents of
SKILL.md(with or without the YAML frontmatter — most agents accept either). - Optionally include
skills/obsidian-cli/references/command-reference.mdfor the complete command reference.
This works with any chat interface or coding agent that has a system prompt or custom instructions field.
Quick Examples
Append to today's daily note
obsidian daily:append content="- [ ] Review pull requests"
Search your vault and pipe to jq
obsidian search query="meeting notes" format=json | jq '.[].path'
Vault health check
obsidian files total # Total file count
obsidian tags counts sort=count # Most-used tags
obsidian tasks # All open tasks
obsidian orphans # Notes with no links
obsidian unresolved # Broken wikilinks
Create a note from a template with metadata
obsidian create path="projects/new-feature" template="project-template"
obsidian property:set path="projects/new-feature.md" name="status" value="planning"
obsidian property:set path="projects/new-feature.md" name="created" value="$(date -I)"
obsidian daily:append content="- Started [[projects/new-feature|New Feature]]"
Full Command Reference
See skills/obsidian-cli/references/command-reference.md for the complete reference covering all commands, parameters, flags, output formatting, multi-vault usage, and headless Linux setup.
Troubleshooting
| Problem | Cause | Fix |
|---|---|---|
| Empty output / hangs | Obsidian not running, or admin terminal (Windows) | Start Obsidian; use a normal-privilege terminal |
command not found |
CLI not registered in PATH | Re-enable CLI in Settings; restart terminal |
| Unicode errors | Bug fixed in v1.12.2+ | Update Obsidian |
| Wrong vault targeted | Multi-vault ambiguity | Pass vault name as the first argument: obsidian "My Vault" ... |
| IPC socket not found (Linux) | PrivateTmp=true in systemd unit |
Set PrivateTmp=false |
| Snap confinement errors | Snap restricts IPC | Use the .deb package instead |
Multi-vault "Name" command fails |
Vault name matching issue | Omit vault name; switch vault manually in Obsidian UI |
property:set list value is a string |
CLI stores value as-is | Edit frontmatter directly or use eval to call Obsidian API |
Colon+params exit 127 (missing .com) |
Outdated installer — Obsidian.com absent |
Reinstall from obsidian.md/download |
| Colon+params exit 127 (Git Bash / MSYS2) | Bash resolves obsidian to .exe not .com |
Create ~/bin/obsidian wrapper: #!/bin/bash + /c/path/to/Obsidian.com "$@", add export PATH="$HOME/bin:$PATH" to ~/.bashrc |
License
This skill is provided as-is for use with the Obsidian CLI. Obsidian v1.12+ is free for all users.