Install both Obsidian skills packages: kepano/obsidian-skills for correct Obsidian syntax, and claude-obsidian if you also want a workflow that turns sources into cited notes and guards every write when you use Obsidian with Claude Code. They are not rivals. claude-obsidian’s own skills tell the agent to use kepano’s for syntax when both are present, and if you only need notes with wikilinks and callouts, .base views and .canvas boards, kepano’s repository is enough on its own.
| Mod | Type | Stars | Last push | Licence | Scan | Tokens | Works with |
|---|---|---|---|---|---|---|---|
| obsidian-markdownkepano/obsidian-skills | Skill | 51k | 1mo ago | MIT | A | 71 | Claude Code |
| claude-obsidianAgriciDaniel/claude-obsidian | Plugin | 16k | 11d ago | MIT | A | — | Claude Code |
Install
npx agentmods add skills/kepano/obsidian-skills/obsidian-markdown/plugin marketplace add AgriciDaniel/claude-obsidian/plugin install claude-obsidianEach name opens the mod's page: the scan, the token cost and every other way to install it.
Six skills against fifteen
Steph Ango’s repository has 6 skills and no code. Every file in it is Markdown, a JSON manifest or the licence. Three skills cover formats, and obsidian-markdown handles only what Obsidian adds to Markdown, treating headings, lists and tables as known. The other three wrap command-line tools: the Obsidian CLI, Defuddle for turning web pages into clean Markdown, and Knap for rendering notes from JSON or CSV.
The claude obsidian plugin, AgriciDaniel/claude-obsidian, ships 15 skills and 3 agents on top of a Python core. You put a paper or a transcript into inbox/, and the agent writes linked notes that point back to the source. You can then query the vault, save an answer as a note and run a health check for dead links. New notes are filed by one of four methods (Generic, LYT, PARA or Zettelkasten).
Its obsidian-markdown skill calls itself a compact fallback and says to prefer kepano’s skill when installed. Its canvas skill says the same about kepano’s json-canvas but keeps the write for itself, and the README names kepano/obsidian-skills as its syntax reference.
Hashes, journals and checklists
With kepano’s skills the agent writes the file directly. The canvas skill tells it to check that every edge points at a node that exists, and the Bases skill lists the usual mistakes, like unquoted YAML characters and mismatched quotes in formulas. Nothing stops a bad write except the agent following those steps.
AgriciDaniel’s plugin takes the opposite route. Before a change, Claude records a SHA-256 hash of every note it will touch. The change goes in as one transaction, applied only with the approval hash of the reviewed plan. If you edit the same note in Obsidian meanwhile, the hash no longer matches and the write stops with a conflict. A journal lets transaction recover roll back a write cut off halfway. Its three agents are read-only, so the transaction core is the only thing that writes.
The README states the limits. Its write lock coordinates only local writers that cooperate with it, other devices and external editors do not share it, and it tells you to keep backups if you sync Canvas or Base files. When the vault choice is unclear, it exits without writing.
Runtimes each one needs
Kepano’s format skills need nothing. obsidian-cli requires the Obsidian app to be open, and it writes too: it sets properties, reloads plugins under development and runs JavaScript inside the app. Defuddle needs npm install -g defuddle, and Knap needs its own CLI and Node.js 20 or later.
Python 3.11 or newer is what claude-obsidian needs, with Obsidian only for viewing. On native Windows it is read-only, so writing needs WSL. Its search is a BM25 index built on the standard library, with optional reranking through a local Ollama and a default model of roughly 958 MB that is never downloaded automatically.
PDF and EPUB files get metadata, a hash and a size, with no text extraction yet. Web pages and YouTube links become a plan you approve, and fetching them needs a separate runner. Its own defuddle skill only plans a capture.
Setting up Obsidian with Claude Code
Kepano’s package installs with /plugin marketplace add kepano/obsidian-skills and /plugin install obsidian@obsidian-skills, or by copying the repository into a .claude folder at the root of your vault. claude-obsidian installs with claude plugin marketplace add AgriciDaniel/claude-obsidian and claude plugin install claude-obsidian@agricidaniel-claude-obsidian. You then start Claude Code in the vault folder and run /claude-obsidian:wiki, which shows a preview before it sets anything up. Removing the plugin never removes your vault.
Do you need an Obsidian MCP server?
mcp-obsidian talks to Obsidian through the Local REST API community plugin. You install that plugin, copy its API key into OBSIDIAN_API_KEY and keep Obsidian running. The README lists 7 tools, but the server registers 15, among them writes and a delete that refuses to run unless confirm is true. Its HTTP client has verify_ssl set to False by default, so it does not check the plugin’s certificate. It pins the mcp SDK below 2.0, because the README says 2.x crashes it at import.
Such servers come last in claude-obsidian’s transport notes, which put direct file reads first and the Obsidian CLI second, read-only, and an MCP adapter only with your approval, with vault changes still going through its transaction.
Context cost, hooks and versions
In context, claude-obsidian’s 15 skill descriptions and 3 agent descriptions weigh against kepano’s 6, and its descriptions run long because they list trigger phrases. Kepano’s heaviest single read is obsidian-bases: its SKILL.md is 499 lines, and it links a separate functions reference on top.
Two hooks come with claude-obsidian, on SessionStart and Stop. The first adds nothing unless you set CLAUDE_OBSIDIAN_SESSION_CONTEXT=1. The second speaks only when a recovery is needed, and neither writes to the vault.
At these commits kepano’s plugin is version 1.0.1, claude-obsidian 3.0.1 and mcp-obsidian 0.2.2, all MIT. Both skill packages also install in Codex and OpenCode. If you are upgrading claude-obsidian from 3.0.0, the plugin had a different name in that release, and the README tells you to install it again under the current one.
Sources
kepano/obsidian-skills at 3ccff53
README.md · .claude-plugin/plugin.json · LICENSE · skills/obsidian-cli/SKILL.md · skills/defuddle/SKILL.md · skills/knap/SKILL.md · skills/json-canvas/SKILL.md · skills/obsidian-bases/SKILL.md · skills/obsidian-markdown/SKILL.md
AgriciDaniel/claude-obsidian at 2e54556
README.md · .claude-plugin/plugin.json · hooks/hooks.json · hooks/README.md · skills/obsidian-markdown/SKILL.md · skills/canvas/SKILL.md · skills/wiki-retrieve/SKILL.md · skills/wiki-cli/SKILL.md · skills/wiki/references/mcp-setup.md · scripts/rerank.py · docs/windows-wsl.md
MarkusPfundstein/mcp-obsidian at 5ee0b84
README.md · pyproject.toml · src/mcp_obsidian/server.py · src/mcp_obsidian/tools.py · src/mcp_obsidian/obsidian.py · LICENSE
More comparisons
UI UX Pro Max skill, Impeccable or Taste Skill
A local style database, a 62-rule detector on each edit, and a website kit with its own headless checker.
Andrej Karpathy skill: four rules in a CLAUDE.md, nothing that enforces them
Four rules in a 358-word file, no hooks, next to Superpowers and TDD Guard.
Humanizer skill, Stop Slop and No AI Slop
Humanizer is a 5,219-word file read on every use; Stop Slop a 361-word list of bans.
Marketing skills for Claude Code: four packs compared
Four packs: one turns off TLS checks, one needs your API key, one hooks every Bash.
Figma MCP servers: which ones read, which ones edit
Framelink only reads a frame; Talk to Figma and Figma Console edit it. Figma's own: 6 calls/mo.
Playwright MCP vs Chrome DevTools MCP
Playwright MCP also runs Firefox and WebKit. Chrome DevTools MCP traces Chrome and reports stats.