tuongzaza/obsidian/webobsidian
Claude Code and agent skill by tuongzaza/obsidian
- community
Checking that the SKILL.md file is still in the repository.
Read, write, search, and manage notes in a WebObsidian vault through its Agent REST API (/api/v1). Use whenever the user asks to find, read, create, update, append to, or delete notes in their WebObsidian / Obsidian vault, list tags, get backlinks, or run a vault search. Credentials (base URL + API key) are stored in ~/.webobsidian/credentials.json; if missing, ask the user for them and save them before making requests.
Install
npx vskill@latest install tuongzaza/obsidian/webobsidianSKILL.md
WebObsidian Agent skill
Operate a WebObsidian vault over its Agent REST API at /api/v1. Everything is a plain HTTP call authenticated with an API key.
Credentials (read these first, every session)
Credentials live in `~/.webobsidian/credentials.json`:
Before the first request in a session, load them into shell variables:
If ~/.webobsidian/credentials.json does not exist or a call returns 401:
- Ask the user for their WebObsidian base URL (e.g.
https://notes.example.comor
http://host:8787) and their API key. They create the key in the app at Settings → API Keys (choose scopes read / write / search). Keys look like wok_….
- Save it (never echo the key back):
``bash mkdir -p ~/.webobsidian && chmod 700 ~/.webobsidian cat > ~/.webobsidian/credentials.json <<JSON { "baseUrl": "<BASE_URL>", "apiKey": "<API_KEY>" } JSON chmod 600 ~/.webobsidian/credentials.json ``
- Verify with the health + an authenticated call, then proceed.
Security rules: never print, log, or commit the API key. Never write it into vault notes. If a command would expose it, redact it.
Sanity check
Authentication
Send the key as a header on every /api/v1 request (either form works):
Scopes per key: read, write, search. A call outside the key's scope returns 403. Rate-limited (default 120 req/min/key) → 429 when exceeded; back off and retry.
Endpoint reference
All {path} values are vault-relative and must be URL-encoded (curl -G --data-urlencode for queries; encode /-containing paths in the URL path, e.g. Notes/Ideas.md → Notes%2FIdeas.md is accepted, plain Notes/Ideas.md also works).
| Method | Path | Scope | Description | |
|---|---|---|---|---|
| GET | /api/v1/health | – | Liveness check | |
| GET | /api/v1/notes?offset=&limit= | read | List markdown notes (paginated) | |
| GET | /api/v1/notes/{path} | read | Read a note + parsed metadata | |
| PUT | /api/v1/notes/{path} | write | Create / overwrite a note — body {"content":"..."} | |
| PATCH | /api/v1/notes/{path} | write | Append — body {"append":"..."} | |
| DELETE | /api/v1/notes/{path} | write | Move note to trash | |
| GET | /api/v1/search?q=&limit= | search | QMD search (fielded: tag:, path:, title:) | |
| GET | /api/v1/backlinks?path= | read | Notes linking to a path | |
| GET | /api/v1/tags | read | All tags with counts |
Recipes
Response shapes
Obsidian Flavored Markdown (write notes in this dialect)
The vault is a real Obsidian vault — the user also opens these files in the Obsidian app, so write Obsidian Flavored Markdown, not plain Markdown. Use [[wikilinks]] for links between vault notes (Obsidian tracks renames); use [text](url) only for external URLs.
Properties (YAML frontmatter)
At the very top of the note, between --- fences. Default keys: tags, aliases, cssclasses. Preserve existing frontmatter on overwrite.
Wikilinks (internal links)
Block references
Append ^block-id to a paragraph; for lists/quotes put the id on its own line after the block.
Embeds / transclusion (prefix a wikilink with !)
Callouts
Common types: note, tip, info, warning, danger, success, failure, question, example, quote, bug, abstract, todo.
Tags
Letters, digits (not first char), _, -, /. Tags also go in frontmatter tags:.
Tasks
Other syntax
graph TD A --> B
Editing rules
- Prefer `PATCH` append over
PUTwhen only adding content, so you don't clobber a note. - Read before you overwrite an existing note unless the user explicitly wants a fresh
replace; preserve its frontmatter and formatting.
- Paths are case-sensitive and notes must include the
.mdextension. - When you reference another note, link it (
[[Other Note]]) instead of writing a bare name —
it keeps the graph and backlinks intact.
Troubleshooting
401→ key missing/invalid → re-run the credentials flow above.403→ the key lacks the required scope → ask the user to create a key with the needed
scope (read/write/search).
404on a note → wrong path/casing, or it's in.trash.429→ rate limited → wait and retry.- Connection refused / TLS error → confirm the base URL and that the server is reachable.
Security
- Security scanPassed, 95 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingdocs/agent-skill/webobsidian/SKILL.md
Popularity
- Repository stars
- 83
- Repository forks
- 73
- 7-day trend score
- 22
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/tuongzaza/obsidian/webobsidian)