Obsidian Layout Adjustment
Ar9av/obsidian-wiki
Adjust the user's Obsidian visual layout with CSS snippets. An agent skill from Ar9av/obsidian-wiki.
Read, write, search, and manage notes in a WebObsidian vault through its Agent REST API (/api/v1).
$ npx skills add xnohat/webobsidian --skill webobsidian -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install xnohat/webobsidian webobsidian --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/xnohat/webobsidian.git skills-src && mkdir -p .claude/skills && cp -r skills-src/docs/agent-skill/webobsidian .claude/skills/webobsidian && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "webobsidian" agent skill from https://github.com/xnohat/webobsidian/tree/main/docs/agent-skill/webobsidian into .claude/skills/webobsidian/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "webobsidian", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/xnohat/webobsidian/tree/main/docs/agent-skill/webobsidianType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add xnohat/webobsidian --skill webobsidian -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install xnohat/webobsidian webobsidian --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/xnohat/webobsidian.git skills-src && mkdir -p .agents/skills && cp -r skills-src/docs/agent-skill/webobsidian .agents/skills/webobsidian && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "webobsidian" agent skill from https://github.com/xnohat/webobsidian/tree/main/docs/agent-skill/webobsidian into .agents/skills/webobsidian/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "webobsidian", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add xnohat/webobsidian --skill webobsidian -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install xnohat/webobsidian webobsidian --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/xnohat/webobsidian.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/docs/agent-skill/webobsidian .cursor/skills/webobsidian && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "webobsidian" agent skill from https://github.com/xnohat/webobsidian/tree/main/docs/agent-skill/webobsidian into .cursor/skills/webobsidian/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "webobsidian", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/xnohat/webobsidian.git --path docs/agent-skill/webobsidian--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add xnohat/webobsidian --skill webobsidian -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install xnohat/webobsidian webobsidian --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/xnohat/webobsidian.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/docs/agent-skill/webobsidian .gemini/skills/webobsidian && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "webobsidian" agent skill from https://github.com/xnohat/webobsidian/tree/main/docs/agent-skill/webobsidian into .gemini/skills/webobsidian/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "webobsidian", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install xnohat/webobsidian webobsidianInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add xnohat/webobsidian --skill webobsidian -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/xnohat/webobsidian.git skills-src && mkdir -p .github/skills && cp -r skills-src/docs/agent-skill/webobsidian .github/skills/webobsidian && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "webobsidian" agent skill from https://github.com/xnohat/webobsidian/tree/main/docs/agent-skill/webobsidian into .github/skills/webobsidian/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "webobsidian", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add xnohat/webobsidian --skill webobsidian -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install xnohat/webobsidian webobsidian --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/xnohat/webobsidian.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/docs/agent-skill/webobsidian .opencode/skills/webobsidian && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "webobsidian" agent skill from https://github.com/xnohat/webobsidian/tree/main/docs/agent-skill/webobsidian into .opencode/skills/webobsidian/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "webobsidian", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
webobsidianRead, write, search, and manage notes in a WebObsidian vault through its Agent REST API (/api/v1).
Webobsidian is an agent skill from xnohat/webobsidian. 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.
Its SKILL.md is about 2.1k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Marketing & SEO, covering Link building and REST APIs. It works with Obsidian. The repository describes itself as: Web based Obsidian Notes App. The licence is MIT.
3 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit c41967a. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
curlpython3From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use curl, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
API_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Webobsidian loads about 2.1k tokens when it runs. Until then it costs about 109 tokens; SKILL.md has 538 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from xnohat/webobsidian at commit c41967a, republished under its MIT licence (© xnohat). 538 words, ~2,057 tokens.
.claude/skills/webobsidian/SKILL.md (or your agent's skills folder).Operate a WebObsidian vault over its Agent REST
API at /api/v1. Everything is a plain HTTP call authenticated with an API key.
Credentials live in ~/.webobsidian/credentials.json:
{ "baseUrl": "https://your-webobsidian.example.com", "apiKey": "wok_xxxxxxxx" }Before the first request in a session, load them into shell variables:
BASE=$(python3 -c 'import json,os;print(json.load(open(os.path.expanduser("~/.webobsidian/credentials.json")))["baseUrl"].rstrip("/"))')
KEY=$(python3 -c 'import json,os;print(json.load(open(os.path.expanduser("~/.webobsidian/credentials.json")))["apiKey"])')If ~/.webobsidian/credentials.json does not exist or a call returns 401:
https://notes.example.com or
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_….mkdir -p ~/.webobsidian && chmod 700 ~/.webobsidian
cat > ~/.webobsidian/credentials.json <<JSON
{ "baseUrl": "<BASE_URL>", "apiKey": "<API_KEY>" }
JSON
chmod 600 ~/.webobsidian/credentials.jsonSecurity rules: never print, log, or commit the API key. Never write it into vault notes. If a command would expose it, redact it.
curl -s "$BASE/api/v1/health" # liveness, no auth
curl -s -H "X-API-Key: $KEY" "$BASE/api/v1/tags" | head # confirms the key worksSend the key as a header on every /api/v1 request (either form works):
X-API-Key: wok_xxx
Authorization: Bearer wok_xxxScopes 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.
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 |
# List 10 notes
curl -s -H "X-API-Key: $KEY" "$BASE/api/v1/notes?limit=10"
# Read a note (URL-encode the path's query value if it has spaces/slashes)
curl -s -H "X-API-Key: $KEY" "$BASE/api/v1/notes/Welcome.md"
# Create or overwrite a note
curl -s -X PUT -H "X-API-Key: $KEY" -H 'Content-Type: application/json' \
-d '{"content":"# Title\n\nBody written by the agent."}' \
"$BASE/api/v1/notes/Agent/Generated.md"
# Append to a note (creates it if missing)
curl -s -X PATCH -H "X-API-Key: $KEY" -H 'Content-Type: application/json' \
-d '{"append":"\n- another bullet"}' \
"$BASE/api/v1/notes/Agent/Generated.md"
# Delete a note (→ trash)
curl -s -X DELETE -H "X-API-Key: $KEY" "$BASE/api/v1/notes/Agent/Generated.md"
# Full-text search (fielded queries supported)
curl -s -G -H "X-API-Key: $KEY" "$BASE/api/v1/search" \
--data-urlencode "q=tag:idea graph" --data-urlencode "limit=5"
# Backlinks for a note
curl -s -G -H "X-API-Key: $KEY" "$BASE/api/v1/backlinks" --data-urlencode "path=Welcome.md"
# All tags with counts
curl -s -H "X-API-Key: $KEY" "$BASE/api/v1/tags"// GET /api/v1/notes/{path}
{ "path": "Welcome.md", "content": "...", "title": "Welcome",
"frontmatter": { "tags": ["welcome"] }, "tags": ["welcome"], "links": ["Notes/Ideas"] }
// GET /api/v1/search
{ "query": "graph", "hits": [
{ "path": "Notes/Ideas.md", "title": "Ideas", "score": 4.2, "tags": ["idea"], "snippet": "…" } ] }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.
At the very top of the note, between --- fences. Default keys: tags, aliases,
cssclasses. Preserve existing frontmatter on overwrite.
---
title: My Note
date: 2024-01-15
tags:
- project
- active
aliases:
- Alternative Name
---[[Note Name]] Link to a note
[[Note Name|Display Text]] Custom display text
[[Note Name#Heading]] Link to a heading
[[Note Name#^block-id]] Link to a block
[[#Heading in same note]] Same-note linkAppend ^block-id to a paragraph; for lists/quotes put the id on its own line after the block.
This paragraph can be linked to. ^my-block-id!)![[Note Name]] Embed a whole note
![[Note Name#Heading]] Embed one section
![[image.png]] Embed an image
![[image.png|300]] Embed with width
![[document.pdf#page=3]] Embed a PDF page> [!note]
> Basic callout.
> [!warning] Custom Title
> Callout with a custom title.
> [!faq]- Collapsed by default
> Foldable callout (`-` starts collapsed, `+` starts expanded).Common types: note, tip, info, warning, danger, success, failure, question,
example, quote, bug, abstract, todo.
#tag inline tag
#nested/tag hierarchical tagLetters, digits (not first char), _, -, /. Tags also go in frontmatter tags:.
- [ ] Pending task
- [x] Completed task==highlight== **bold** *italic*
Footnote[^1]. [^1]: Footnote text. Inline footnote.^[Inline text.]
Visible %%hidden inline comment%% text. $e^{i\pi}+1=0$ (inline math)$$\frac{a}{b} = c$$ (block math, KaTeX)
```mermaid
graph TD
A --> B
```PATCH append over PUT when only adding content, so you don't clobber a note..md extension.[[Other Note]]) instead of writing a bare name —
it keeps the graph and backlinks intact.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).404 on a note → wrong path/casing, or it's in .trash.429 → rate limited → wait and retry.© xnohat, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in docs/agent-skill/webobsidian of xnohat/webobsidian.
Open the folder on GitHubat commit c41967a
Webobsidian next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Webobsidian this skillxnohat/webobsidian | 268 | — | ~2.1k | Automated safety check: Pass | MIT | |
| Obsidian Layout AdjustmentAr9av/obsidian-wiki | 3.5k | — | ~2.5k | Automated safety check: Pass | MIT | |
| Conducty Contextrobertbarclayy/conducty | 176 | — | ~3.7k | Automated safety check: Pass | MIT | |
| Compressiurykrieger/claude-bedrock | 105 | 1 repos | ~9.9k | Automated safety check: Warn | MIT | |
| Obsidiansteipete/agent-scripts | 7.3k | — | ~916 | Automated safety check: Pass | MIT | |
| Obsidian Official CLIhashgraph-online/awesome-codex-plugins | 1.3k | — | ~2.2k | Automated safety check: Pass | Apache-2.0 |
Ar9av/obsidian-wiki
Adjust the user's Obsidian visual layout with CSS snippets. An agent skill from Ar9av/obsidian-wiki.
robertbarclayy/conducty
Ingest a project directory into the Obsidian vault as a linked context sub-graph — Architecture, Conventions, Invariants, Hotspots, Tests, Glossary, plus per-bounded-context module notes.
iurykrieger/claude-bedrock
Vault alignment engine. An agent skill from iurykrieger/claude-bedrock.
steipete/agent-scripts
Obsidian vault: search/read/write notes, backlinks, Bases, Canvas.
hashgraph-online/awesome-codex-plugins
A skill your agent uses when the user wants local Obsidian note or metadata work done primarily through documented official desktop obsidian CLI commands, with limited local vault filesystem support…
thoreinstein/gemini-obsidian
A skill your agent uses when the user wants to explore connections between notes, see what links to or from a note, or says "links", "backlinks", "connections", or "graph".
Works with
Read, write, search, and manage notes in a WebObsidian vault through its Agent REST API (/api/v1). Webobsidian is an agent skill from xnohat/webobsidian. Read, write, search, and manage notes in a WebObsidian vault through its Agent REST API (/api/v1).
Webobsidian fits situations like: the user asks to find; delete notes in their WebObsidian / Obsidian vault; run a vault search.
Run `npx skills add xnohat/webobsidian --skill webobsidian -a claude-code`. Or copy the skill folder (docs/agent-skill/webobsidian in xnohat/webobsidian) into .claude/skills/webobsidian in your project. Claude Code loads it when a task matches its description.
Run `npx skills add xnohat/webobsidian --skill webobsidian -a codex`. Or copy the skill folder (docs/agent-skill/webobsidian in xnohat/webobsidian) into .agents/skills/webobsidian in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add xnohat/webobsidian --skill webobsidian -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/webobsidian, .gemini/skills/webobsidian, .github/skills/webobsidian and .opencode/skills/webobsidian in your project.
Going by SKILL.md and its folder, Webobsidian needs the command-line tools its instructions call (curl and python3) and credentials named API_KEY. Our summary lists: Python 3; A credential in API_KEY.
SKILL.md contains no URLs. Its commands use curl, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Webobsidian is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.1k tokens (SKILL.md is roughly 8.2k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Webobsidian: Obsidian Layout Adjustment (Ar9av/obsidian-wiki, 3.5k stars), Conducty Context (robertbarclayy/conducty, 176 stars), Compress (iurykrieger/claude-bedrock, 105 stars) and Obsidian (steipete/agent-scripts, 7.3k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
xnohat (a GitHub user) maintains it in xnohat/webobsidian, which has 268 GitHub stars. The repository was last updated on June 27, 2026.
Source: xnohat/webobsidian on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.