From all-skills
Calls the Obsidian Local REST API for vault operations missing from MCP tools: move/rename notes, atomic PUT, active file ops, run commands, open notes, list tags, periodic-note CRUD.
How this skill is triggered — by the user, by Claude, or both
Slash command
/all-skills:obsidian-rest-apiThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
The connected `obsidian` MCP server exposes only a subset of the Obsidian
The connected obsidian MCP server exposes only a subset of the Obsidian
Local REST API
(plugin obsidian-local-rest-api). This skill provides the full API surface plus
an authenticated request wrapper, so a missing MCP method is called over HTTP
instead of being worked around with hacks (e.g. delete+recreate to rename a note).
Use the mcp__obsidian__* tools first for read, append, patch, delete, and search.
Fall back to this skill only for operations that have no MCP tool:
~/.claude.json) or OBSIDIAN_* env vars — no hardcoded secrets.references/api_reference.md),
with the header enums (Operation, Target-Type, Target-Scope), the custom
MOVE contract, and the search (JsonLogic/Dataview) formats.Call the wrapper scripts/olrapi.sh <METHOD> <path> [curl args...]:
S=scripts/olrapi.sh # adjust to the skill's install path
# rename/move a note (the most common reason to reach for this skill)
"$S" MOVE "/vault/Path/To/Old Name.md" -H 'Destination: Path/To/New Name.md'
# move into a folder, keeping the filename (trailing slash on Destination)
"$S" MOVE "/vault/Inbox/todo.md" -H 'Destination: Archive/'
# atomically overwrite a whole note
"$S" PUT "/vault/Path/Note.md" -H 'Content-Type: text/markdown' --data-binary @/tmp/body.md
# read a note as structured JSON (frontmatter + tags + stat)
"$S" GET "/vault/Path/Note.md" -H 'Accept: application/vnd.olrapi.note+json'
# list tags, run a command, open a note in the UI
"$S" GET /tags/
"$S" POST "/commands/editor:toggle-bold/"
"$S" POST "/open/Path/Note.md?newLeaf=true"
The wrapper prints <<HTTP nnn>> after the body. Success: 200/204.
On MOVE, 409 means the destination exists — add -H 'Allow-Overwrite: true' to force.
For non-trivial calls, load references/api_reference.md.
{filename} is vault-relative (no leading slash on the vault path).MOVE Destination header
(e.g. r%C3%A9sum%C3%A9.md). Destination rejects absolute (/…) paths.Target-Type (heading|block|frontmatter)
Target headers on GET/PATCH/POST.User: "Rename 3-Resources/Draft.md to 3-Resources/Final.md in my vault."
Output:
scripts/olrapi.sh MOVE "/vault/3-Resources/Draft.md" \
-H 'Destination: 3-Resources/Final.md'
# <<HTTP 204>> — moved, history preserved, internal links updated
scripts/olrapi.sh GET /openapi.yaml. GET / shows the plugin version.PUT over delete+recreate for whole-file overwrites — it is atomic and
keeps the file's identity.curl -k) and HTTP on 27123.npx claudepluginhub davepoon/buildwithclaude --plugin all-skillsWorks with Obsidian vaults (Markdown notes) via obsidian-cli: search, create, move/rename with link updates, delete notes, and resolve active vault config.
Manages Obsidian vaults using obsidian-cli: creates daily notes, moves/renames notes preserving [[wiki-links]], searches content, organizes notes with templates.
Interact with Obsidian vaults using the Obsidian CLI to read, create, search, and manage notes, tasks, properties, and more. Also supports plugin and theme development with commands to reload plugins, run JavaScript, capture errors, take screenshots, and inspect the DOM. Use when the user asks to interact with their Obsidian vault, manage notes, search vault content, perform vault operations from the command line, or develop and debug Obsidian plugins and themes.