
If you're scripting workflows around your Obsidian notes, this wraps obsidian-cli so Claude can search, create, move, and delete Markdown files in your vaults. The real win is safe refactoring: moving or renaming notes updates all the wikilinks and references across your vault, which raw file operations won't do. It reads Obsidian's config to find active vaults instead of hardcoding paths, and search-content gets you actual snippets with line numbers. Useful if you're building automation that needs to interact with your knowledge base without opening the app, or if you want Claude to help organize a messy vault. Just plain text manipulation with vault awareness.
$ npx -y skills add steipete/clawdis --skill obsidian --agent claude-codeInstalls into .claude/skills of the current project.
Use the official obsidian CLI for Obsidian vault work. Vault files are plain Markdown, so direct file edits are still fine when safer/faster.
obsidian registered on PATH.Check:
obsidian version
obsidian help
macOS registration creates /usr/local/bin/obsidian pointing at the app-bundled CLI. Linux registration copies the binary to ~/.local/bin/obsidian.
*.md..obsidian/; avoid editing unless asked.*.canvas JSON.vault="<name>" when ambiguous.Obsidian desktop tracks vaults here:
~/Library/Application Support/obsidian/obsidian.jsonobsidian <command> [name=value] [flag]
obsidian vault="Notes" search query="meeting notes" format=json
Parameter values with spaces need quotes. Add --copy to copy output where useful.
Open/read:
obsidian open file=Recipe
obsidian open path="Inbox/Idea.md" newtab
obsidian read
obsidian read file=Recipe
Search:
obsidian search query="TODO" matches
obsidian search query="status::active" format=json
obsidian search:open query="project notes"
Create/modify:
obsidian create name="New Note"
obsidian create path="Inbox/Idea.md" content="# Idea"
obsidian append file=Note content="New line"
obsidian prepend file=Note content="After frontmatter"
Move/delete:
obsidian move file=Note to=Archive/
obsidian move path="Inbox/Old.md" to="Projects/New.md"
obsidian delete file=Note
Daily/tasks:
obsidian daily
obsidian daily:read
obsidian daily:append content="- [ ] Review inbox"
obsidian tasks all todo
obsidian task file=Note line=8 done
Properties/links:
obsidian tags all counts
obsidian property:read file=Note name=status
obsidian property:set file=Note name=status value=done
obsidian backlinks file=Note
obsidian unresolved verbose counts
Developer/debug:
obsidian plugin:reload my-plugin
obsidian dev:errors
obsidian dev:screenshot file=shot.png
obsidian eval "app.vault.getFiles().length"
file=<name> uses Obsidian-style file resolution; path=<vault-relative.md> is exact.obsidian-cli unless user explicitly asks for it.Sponsors