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.
Executes Obsidian CLI commands to read/write notes, search vaults, manage tasks/files, detect orphans/broken links, handle sync/history. Activates on vault operation requests.