obsidian · nousresearch — Claude Code skill: notes and setup
This skill lets an agent read, search, create, and edit notes in an Obsidian vault. Use it when you want to handle Markdown files and links between notes through file tools.
npx skills add NousResearch/hermes-agent --skill obsidian -a claude-codeWhat obsidian does
The skill works with an Obsidian vault through file tools. It can read notes, search filenames or note contents, create files, append text, make focused edits, and add links in the [[Note Name]] format. Use *.md to search Markdown notes.
Resolve the vault to an absolute path before using file tools. The skill uses OBSIDIAN_VAULT_PATH when available and otherwise gives ~/Documents/Obsidian Vault as the fallback. File tools do not expand shell variables, so a path containing $OBSIDIAN_VAULT_PATH must be resolved first. Check the path before reading or writing.
Create a note with write_file and its full Markdown content. For a focused edit, use patch with stable surrounding text; an append with patch replaces the anchor together with the added content. When there is no stable context for an append, the skill allows terminal as an option.
What it helps with
- find Markdown notes by filename
- search note contents for a term
- read a note from its absolute path
- create a note with links to related notes
- add a section to an existing note
Example prompts for the agent
- Search my vault for Markdown notes that mention `read_file`.
- Create `Project Plan.md` and link it to the existing note with `[[Note Name]]`.
- Read the note at this absolute path and add a section after its heading.
How to install obsidian
1Skills CLI (Vercel)
npx skills add NousResearch/hermes-agent --skill obsidian -a claude-code2Manually: put the files in place
~/.claude/skills/obsidian/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/obsidian/
1Skills CLI (Vercel)
npx skills add NousResearch/hermes-agent --skill obsidian -a codex2Manually: put the files in place
.agents/skills/obsidian/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add NousResearch/hermes-agent --skill obsidian -a cursor2Manually: put the files in place
.cursor/skills/obsidian/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install NousResearch/hermes-agent obsidian2Manually: put the files in place
.github/skills/obsidian/SKILL.md1Skills CLI (Vercel)
npx skills add NousResearch/hermes-agent --skill obsidian -a gemini-cli2Platform CLI
gemini skills install https://github.com/NousResearch/hermes-agent --path skills/note-taking/obsidianManually: put the files in place
.devin/skills/obsidian/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add NousResearch/hermes-agent --skill obsidian -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
From the same set42
The whole set →Other versions of obsidian
Similar
Questions about obsidian
How do I install obsidian in Claude Code?
Run npx skills add NousResearch/hermes-agent --skill obsidian -a claude-code. The skill file is at ~/.claude/skills/obsidian/SKILL.md.
What does the obsidian skill do?
It lets an agent read and search vault notes, create Markdown files, and edit existing notes. Related notes can be connected with [[Note Name]] links.
How should I set the Obsidian vault path?
Set OBSIDIAN_VAULT_PATH. If it is unset, the skill gives ~/Documents/Obsidian Vault as the fallback. Resolve the path to an absolute path before passing it to file tools.
Source text
SKILL.md · MIT
---
name: obsidian
description: Read, search, create, and edit notes in the Obsidian vault.
version: 1.0.0
author: Teknium (teknium1), Hermes Agent
license: MIT
platforms: [linux, macos, windows]
metadata:
hermes:
tags: [Obsidian, Notes, Markdown, Vault]
related_skills: []
---
# Obsidian Vault
Use this skill for filesystem-first Obsidian vault work: reading notes, listing notes, searching note files, creating notes, appending content, and adding wikilinks.
## Vault path
Use a known or resolved vault path before calling file tools.
The documented vault-path convention is the `OBSIDIAN_VAULT_PATH` environment variable, for example from `${HERMES_HOME:-~/.hermes}/.env`. If it is unset, use `~/Documents/Obsidian Vault`.
File tools do not expand shell variables. Do not pass paths containing `$OBSIDIAN_VAULT_PATH` to `read_file`, `write_file`, `patch`, or `search_files`; resolve the vault path first and pass a concrete absolute path. Vault paths may contain spaces, which is another reason to prefer file tools over shell commands.
If the vault path is unknown, `terminal` is acceptable for resolving `OBSIDIAN_VAULT_PATH` or checking whether the fallback path exists. Once the path is known, switch back to file tools.
## Read a note
Use `read_file` with the resolved absolute path to the note. Prefer this over `cat` because it provides line numbers and pagination.
## List notes
Use `search_files` with `target: "files"` and the resolved vault path. Prefer this over `find` or `ls`.
- To list all markdown notes, use `pattern: "*.md"` under the vault path.
- To list a subfolder, search under that subfolder's absolute path.
## Search
Use `search_files` for both filename and content searches. Prefer this over `grep`, `find`, or `ls`.
- For filenames, use `search_files` with `target: "files"` and a filename `pattern`.
- For note contents, use `search_files` with `target: "content"`, the content regex as `pattern`, and `file_glob: "*.md"` when you want to restrict matches to markdown notes.
## Create a note
Use `write_file` with the resolved absolute path and the full markdown content. Prefer this over shell heredocs or `echo` because it avoids shell quoting issues and returns structured results.
## Append to a note
Prefer a native file-tool workflow when it is not awkward:
- Read the target note with `read_file`.
- Use `patch` for an anchored append when there is stable context, such as adding a section after an existing heading or appending before a known trailing block.
- Use `write_file` when rewriting the whole note is clearer than constructing a fragile patch.
For an anchored append with `patch`, replace the anchor with the anchor plus the new content.
For a simple append with no stable context, `terminal` is acceptable if it is the clearest safe option.
## Targeted edits
Use `patch` for focused note changes when the current content gives you stable context. Prefer this over shell text rewriting.
## Wikilinks
Obsidian links notes with `[[Note Name]]` syntax. When creating notes, use these to link related content.
© Teknium (teknium1), Hermes Agent · MIT · NousResearch/hermes-agent