skills/obsidian/SKILL.md
Automate Obsidian vaults with obsidian-cli
npx skillsauth add jcsaaddupuy/badrobots obsidianInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Obsidian vault = a normal folder on disk.
Vault structure (typical)
*.md (plain text Markdown; edit with any editor).obsidian/ (workspace + plugin settings; usually don't touch from scripts)*.canvas (JSON)Obsidian desktop tracks vaults here (source of truth):
~/Library/Application Support/obsidian/obsidian.jsonobsidian-cli resolves vaults from that file; vault name is typically the folder name (path suffix).
Fast "what vault is active / where are the notes?"
obsidian-cli print-default --path-only~/Library/Application Support/obsidian/obsidian.json and use the vault entry with "open": true.Example (bash):
# Get active vault path from config
VAULT_PATH=$(jq -r '.vaults[] | select(.open==true) | .path' ~/Library/Application\ Support/obsidian/obsidian.json)
echo "Active vault: $VAULT_PATH"
Notes
~/Documents, work/personal, etc.). Don't guess; read config.print-default.For simple operations, work directly with .md files in the vault. Obsidian auto-detects changes.
Create a note:
VAULT_PATH="/path/to/vault"
echo "Note content" > "$VAULT_PATH/Folder/NewNote.md"
Daily notes pattern:
Most vaults use Daily/YYYY-MM-DD.md format:
# Create today's daily note
TODAY=$(date +%Y-%m-%d)
echo "# $TODAY" > "$VAULT_PATH/Daily/$TODAY.md"
List notes in a folder:
# Find all markdown files
find "$VAULT_PATH/Daily" -name "*.md" -type f | sort
# List most recent daily notes
ls -lt "$VAULT_PATH/Daily"/*.md | head -10
Read note content:
cat "$VAULT_PATH/Daily/2026-02-17.md"
Pick a default vault (once):
obsidian-cli set-default "<vault-folder-name>"obsidian-cli print-default / obsidian-cli print-default --path-onlySearch
obsidian-cli search "query" (note names)obsidian-cli search-content "query" (inside notes; shows snippets + lines)Create
obsidian-cli create "Folder/New note" --content "..." --openobsidian://…) working (Obsidian installed)..something/...) via URI; Obsidian may refuse.Move/rename (safe refactor)
obsidian-cli move "old/path/note" "new/path/note"[[wikilinks]] and common Markdown links across the vault (this is the main win vs mv).Delete
obsidian-cli delete "path/note"Prefer direct edits when appropriate: open the .md file and change it; Obsidian will pick it up.
development
DuckDB patterns for JSON/JSONL analysis, array unnesting, and common gotchas. Use when querying JSON files, nested data, or encountering "UNNEST not supported here" errors.
development
Mealie recipe manager API: recipes, shopping lists, meal plans. Requires MEALIE_BASE_URL and MEALIE_API_KEY.
business
TimeWarrior time tracking: start/stop intervals, query durations by tag or issue, compute totals for issue tracker time reporting
development
Bookmark manager for saving, searching, and annotating web content. Use when: (1) saving a webpage for later reference, (2) searching previously saved bookmarks, (3) adding highlights/annotations to saved content, (4) user asks to 'bookmark this' or 'save this article'. Requires READECK_BASE_URL and READECK_API_KEY environment variables.