Use when working with the user's Obsidian vault (Main Vault) — creating notes, managing bookmarks, projects, areas, or any vault organisation tasks.
This skill depends on the official obsidian-cli skill from kepano/obsidian-skills. If it is not installed, ask the user to install it:
/plugin marketplace add kepano/obsidian-skills
/plugin install obsidian@obsidian-skills
First verify the Obsidian CLI is accessible and the vault is reachable:
obsidian vault info=name
If this fails or returns unexpected output, stop and ask the user to ensure Obsidian is running with the correct vault open before proceeding.
Then read CLAUDE.md at the vault root for conventions:
obsidian read path="CLAUDE.md"
If the user refers to something without naming it explicitly — "this note", "what I'm looking at", "the current one" — check the active file first:
obsidian file
This is also useful as context when a request seems ambiguous. If the user sounds like they're talking about something new or unfamiliar, checking the active file may reveal what they mean before asking for clarification.
CLAUDE.md is a living document. If conventions change during a session — new metadata fields, structural decisions, new areas — update it to reflect them.
However, the vault may have drifted from the conventions in CLAUDE.md by accident rather than intent. Before updating CLAUDE.md to match what you observe in the vault, check with the user:
The goal is for CLAUDE.md to reflect intentional conventions, not just the current state of the vault.
The obsidian binary communicates with the running Obsidian app via XPC. This requires access to macOS system services that are always blocked by the sandbox. Always run obsidian commands with dangerouslyDisableSandbox: true — do not wait for a failure before doing so.
The vault name is Main Vault. Commands target the most recently focused vault by default. Use vault="Main Vault" explicitly if multiple vaults may be open.
When creating or appending notes with multi-line content — especially content containing backticks, wikilinks, YAML, or code blocks — use a quoted heredoc to prevent shell interpretation:
obsidian create path="folder/Note Title.md" silent content="$(cat << 'EOF'
---