Webobsidian
xnohat/webobsidian
Read, write, search, and manage notes in a WebObsidian vault through its Agent REST API (/api/v1).
Control Obsidian from the terminal using the obsidian CLI. An agent skill from kv0906/pm-kit.
$ npx skills add kv0906/pm-kit --skill obsidian-cli -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install kv0906/pm-kit obsidian-cli --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/kv0906/pm-kit.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/obsidian-cli .claude/skills/obsidian-cli && 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 "obsidian-cli" agent skill from https://github.com/kv0906/pm-kit/tree/main/.claude/skills/obsidian-cli into .claude/skills/obsidian-cli/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "obsidian-cli", 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/kv0906/pm-kit/tree/main/.claude/skills/obsidian-cliType 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 kv0906/pm-kit --skill obsidian-cli -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install kv0906/pm-kit obsidian-cli --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/kv0906/pm-kit.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/obsidian-cli .agents/skills/obsidian-cli && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "obsidian-cli" agent skill from https://github.com/kv0906/pm-kit/tree/main/.claude/skills/obsidian-cli into .agents/skills/obsidian-cli/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "obsidian-cli", 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 kv0906/pm-kit --skill obsidian-cli -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install kv0906/pm-kit obsidian-cli --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/kv0906/pm-kit.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/obsidian-cli .cursor/skills/obsidian-cli && 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 "obsidian-cli" agent skill from https://github.com/kv0906/pm-kit/tree/main/.claude/skills/obsidian-cli into .cursor/skills/obsidian-cli/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "obsidian-cli", 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/kv0906/pm-kit.git --path .claude/skills/obsidian-cli--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 kv0906/pm-kit --skill obsidian-cli -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install kv0906/pm-kit obsidian-cli --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/kv0906/pm-kit.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/obsidian-cli .gemini/skills/obsidian-cli && 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 "obsidian-cli" agent skill from https://github.com/kv0906/pm-kit/tree/main/.claude/skills/obsidian-cli into .gemini/skills/obsidian-cli/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "obsidian-cli", 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 kv0906/pm-kit obsidian-cliInstalls 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 kv0906/pm-kit --skill obsidian-cli -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/kv0906/pm-kit.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/obsidian-cli .github/skills/obsidian-cli && 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 "obsidian-cli" agent skill from https://github.com/kv0906/pm-kit/tree/main/.claude/skills/obsidian-cli into .github/skills/obsidian-cli/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "obsidian-cli", 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 kv0906/pm-kit --skill obsidian-cli -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install kv0906/pm-kit obsidian-cli --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/kv0906/pm-kit.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/obsidian-cli .opencode/skills/obsidian-cli && 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 "obsidian-cli" agent skill from https://github.com/kv0906/pm-kit/tree/main/.claude/skills/obsidian-cli into .opencode/skills/obsidian-cli/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "obsidian-cli", 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.
obsidian-cliControl Obsidian from the terminal using the obsidian CLI. An agent skill from kv0906/pm-kit.
Obsidian CLI is an agent skill from kv0906/pm-kit. Control Obsidian from the terminal using the obsidian CLI. Use when the agent needs to open notes, search the vault inside Obsidian, append/prepend content to the active file, create notes from templates, manage properties, check backlinks/orphans, query Bases, or interact with the running Obsidian app. Requires Obsidian 1.12+ running.
Its SKILL.md is about 2.3k 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. It works with Obsidian. The repository describes itself as: AI-augmented PM workspace for Coding Agents — daily standups, decisions, blockers, docs, and sprint reviews as markdown skills. The licence is MIT.
Read from SKILL.md and the folder at commit 2cb5d9f. 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.
No scripts in the folder and no shell commands in SKILL.md (its code samples are bash).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Obsidian CLI loads about 2.3k tokens when it runs. Until then it costs about 88 tokens; SKILL.md has 275 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 kv0906/pm-kit at commit 2cb5d9f, republished under its MIT licence (© kv0906). 275 words, ~2,278 tokens.
.claude/skills/obsidian-cli/SKILL.md (or your agent's skills folder).Control the running Obsidian app from the terminal. Supplementary tool alongside Read/Write/Edit, Glob, Grep, QMD, and Neo4j.
_templates/Applications/Obsidian.app/Contents/MacOS (in ~/.zprofile)The CLI outputs Loading updated app package... to stdout on every invocation. Always filter with grep -v:
obsidian orphans total 2>/dev/null | grep -v "Loading updated" # correct — clean output
obsidian orphans total # noisy output in agent contextShorthand for all examples below: 2>/dev/null | grep -v "Loading updated" is abbreviated as 2>/dev/null for readability, but always include the full filter in practice.
| Scenario | Use CLI | Use File Tools |
|---|---|---|
| Open a note in Obsidian UI | obsidian open | No equivalent |
| Read/write file content | Either works | Prefer Read/Write/Edit |
| Search vault content | obsidian search | Prefer Grep/QMD |
| Open today's daily note in Obsidian | obsidian daily | No equivalent |
| Append task to daily note | obsidian daily:append | Either |
| Create note from template | obsidian create template=X | Manual template apply |
| Check backlinks/orphans/unresolved | obsidian backlinks/orphans | Manual grep |
| Set/read properties (frontmatter) | obsidian property:set | Edit tool |
| Query a Base view | obsidian base:query | No equivalent |
| Execute Obsidian commands | obsidian command | No equivalent |
Rule of thumb: CLI for Obsidian-app-specific actions (open files, trigger commands, query Bases, graph relationships). File tools for direct file manipulation.
# Quick vault health stats (supplement Python/Neo4j checks)
obsidian unresolved verbose 2>/dev/null | grep -v "Loading updated"
obsidian orphans total 2>/dev/null | grep -v "Loading updated"
obsidian deadends total 2>/dev/null | grep -v "Loading updated"# Fast append to daily note (no file path needed)
obsidian daily:append content="- [ ] Review TPM progress" silent 2>/dev/null
# Atomic frontmatter update
obsidian property:set name=status value=shipped path="prd/xmarket/checkout.md" 2>/dev/null
# Template-based note creation
obsidian create name="New PRD" template=prd silent 2>/dev/null
# Surface created note in Obsidian
obsidian open path="decisions/xmarket/2026-02-11-payment-provider.md" newtab 2>/dev/null# Backlinks via Obsidian's graph (alternative to Neo4j)
obsidian backlinks file=Note 2>/dev/null
# Quick text search (alternative to QMD)
obsidian search query="payment provider" 2>/dev/null# Phase 0: Ensure daily note visible in Obsidian
obsidian daily silent 2>/dev/null
# Phase 3: Quick health stats
obsidian unresolved total 2>/dev/null
obsidian orphans total 2>/dev/null
# Phase 5: Surface daily note
obsidian open path="daily/2026-02-11.md" 2>/dev/null# Auto-detects vault from CWD
obsidian daily 2>/dev/null
# Target specific vault
obsidian vault=Notes daily 2>/dev/null
# By name (wikilink resolution)
obsidian read file=Recipe 2>/dev/null
# By exact path
obsidian read path="prd/xmarket/checkout.md" 2>/dev/nullobsidian daily 2>/dev/null # Open today's daily note
obsidian daily:read 2>/dev/null # Read daily note contents
obsidian daily:append content="- [ ] Task" 2>/dev/null # Append to daily note
obsidian daily:prepend content="## Morning" 2>/dev/null # Prepend after frontmatter
obsidian daily:append content="text" silent 2>/dev/null # Append without openingobsidian files 2>/dev/null # List all files
obsidian files folder=prd 2>/dev/null # List files in folder
obsidian files ext=md total 2>/dev/null # Count .md files
obsidian open file=Note 2>/dev/null # Open a file
obsidian open file=Note newtab 2>/dev/null # Open in new tab
obsidian create name="New Note" 2>/dev/null # Create file
obsidian create name=Note template=prd 2>/dev/null # Create from template
obsidian create name=Note content="text" silent overwrite 2>/dev/null
obsidian read file=Note 2>/dev/null # Read file contents
obsidian append file=Note content="new line" 2>/dev/null
obsidian prepend file=Note content="top line" 2>/dev/null
obsidian move file=Note to="archive/" 2>/dev/null
obsidian delete file=Note 2>/dev/null # Trash (recoverable)obsidian search query="meeting notes" 2>/dev/null # Search vault
obsidian search query="TODO" path=daily 2>/dev/null # Search in folder
obsidian search query="bug" total 2>/dev/null # Count matches
obsidian search query="fix" matches 2>/dev/null # Show match context
obsidian search query="test" format=json 2>/dev/null # JSON outputobsidian backlinks file=Note 2>/dev/null # Backlinks to a file
obsidian backlinks file=Note counts 2>/dev/null # With link counts
obsidian links file=Note 2>/dev/null # Outgoing links from a file
obsidian unresolved 2>/dev/null # Broken/unresolved links
obsidian unresolved verbose 2>/dev/null # Include source files
obsidian orphans 2>/dev/null # Files with no incoming links
obsidian orphans total 2>/dev/null # Count orphans
obsidian deadends 2>/dev/null # Files with no outgoing linksobsidian properties file=Note 2>/dev/null # List properties
obsidian properties all counts 2>/dev/null # All vault properties
obsidian property:read name=status file=Note 2>/dev/null # Read a property
obsidian property:set name=status value=done file=Note 2>/dev/null # Set a property
obsidian property:set name=tags value="[a,b]" type=list file=Note 2>/dev/null
obsidian property:remove name=old_prop file=Note 2>/dev/nullobsidian tags all counts 2>/dev/null # All tags with counts
obsidian tags file=Note 2>/dev/null # Tags in a file
obsidian tag name=project verbose 2>/dev/null # Tag info with file listobsidian tasks 2>/dev/null # Tasks in active file
obsidian tasks daily 2>/dev/null # Tasks from daily note
obsidian tasks daily todo 2>/dev/null # Incomplete daily tasks
obsidian tasks all todo 2>/dev/null # All incomplete tasks
obsidian task daily line=3 toggle 2>/dev/null # Toggle a daily taskobsidian bases 2>/dev/null # List all .base files
obsidian base:query file=MyBase format=json 2>/dev/null # Query base
obsidian base:query file=MyBase view=TableView format=csv 2>/dev/nullobsidian templates 2>/dev/null # List templates
obsidian template:read name=prd 2>/dev/null # Read template
obsidian template:insert name=prd 2>/dev/null # Insert into active fileobsidian tabs 2>/dev/null # List open tabs
obsidian workspace 2>/dev/null # Show workspace tree
obsidian workspace:load name=Writing 2>/dev/null # Load workspaceobsidian commands 2>/dev/null # List all command IDs
obsidian command id=editor:toggle-bold 2>/dev/null # Execute a commandobsidian daily:append content="- [ ] Review TPM progress" silent 2>/dev/nullobsidian orphans total 2>/dev/null
obsidian unresolved verbose 2>/dev/null
obsidian deadends total 2>/dev/nullobsidian open path="prd/tpm/private-market-mvp-phases.md" 2>/dev/nullobsidian tag name=xmarket verbose 2>/dev/nullobsidian base:query file=Projects format=json 2>/dev/null© kv0906, 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 .claude/skills/obsidian-cli of kv0906/pm-kit.
Open the folder on GitHubat commit 2cb5d9f
Obsidian CLI 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 |
|---|---|---|---|---|---|---|
| Obsidian CLI this skillkv0906/pm-kit | 138 | — | ~2.3k | Automated safety check: Pass | MIT | |
| Webobsidianxnohat/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 |
xnohat/webobsidian
Read, write, search, and manage notes in a WebObsidian vault through its Agent REST API (/api/v1).
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.
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".
kv0906/pm-kit
Transform text content into professional Mermaid diagrams for presentations and documentation.
kv0906/pm-kit
This skill should be used when the user asks to "set up gws", "install Google Workspace CLI", "connect Gmail to Claude", "manage Google Drive from terminal", "send email from CLI", "check my…
kv0906/pm-kit
Jira integration via acli CLI. An agent skill from kv0906/pm-kit.
kv0906/pm-kit
Professional Excalidraw diagram generation expert that creates complete, valid .excalidraw.json files based on user descriptions.
kv0906/pm-kit
Fast vault Q&A — quick lookups, decision history, blocker status, doc search.
kv0906/pm-kit
Flag a blocker with severity, owner, and due date. An agent skill from kv0906/pm-kit.
Works with
Categories
Control Obsidian from the terminal using the obsidian CLI. An agent skill from kv0906/pm-kit. Obsidian CLI is an agent skill from kv0906/pm-kit. Control Obsidian from the terminal using the obsidian CLI.
Obsidian CLI fits situations like: the agent needs to open notes; search the vault inside Obsidian; append/prepend content to the active file; create notes from templates.
Run `npx skills add kv0906/pm-kit --skill obsidian-cli -a claude-code`. Or copy the skill folder (.claude/skills/obsidian-cli in kv0906/pm-kit) into .claude/skills/obsidian-cli in your project. Claude Code loads it when a task matches its description.
Run `npx skills add kv0906/pm-kit --skill obsidian-cli -a codex`. Or copy the skill folder (.claude/skills/obsidian-cli in kv0906/pm-kit) into .agents/skills/obsidian-cli 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 kv0906/pm-kit --skill obsidian-cli -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/obsidian-cli, .gemini/skills/obsidian-cli, .github/skills/obsidian-cli and .opencode/skills/obsidian-cli in your project.
SKILL.md names no scripts, command-line tools or credentials: Obsidian CLI is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. 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.
Obsidian CLI 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.3k tokens (SKILL.md is roughly 9.1k 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 Obsidian CLI: Webobsidian (xnohat/webobsidian, 268 stars), Obsidian Layout Adjustment (Ar9av/obsidian-wiki, 3.5k stars), Conducty Context (robertbarclayy/conducty, 176 stars) and Compress (iurykrieger/claude-bedrock, 105 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
kv0906 (a GitHub user) maintains it in kv0906/pm-kit, which has 138 GitHub stars. The repository holds 26 skills in this directory. The repository was last updated on June 29, 2026.
Source: kv0906/pm-kit on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.