$npx -y skills add adityahimaone/hermes-agent-rtk-caveman --skill obsidianRead, search, create, and organize notes across multiple Obsidian vaults. Supports smart vault/folder resolution from natural commands. Shorthand trigger: "obi" — treating any mention of "obi" the same as "obsidian". Use when user wants to save/create notes, organize by category/
| 1 | # Obsidian Multi-Vault Management |
| 2 | |
| 3 | Create, read, search, and organize notes across **any** Obsidian vault on the Mac. Default vault base path: `~/Documents/Obsidian/` |
| 4 | |
| 5 | ## Vault Structure |
| 6 | |
| 7 | ``` |
| 8 | ~/Documents/Obsidian/ |
| 9 | ├── CPNS-2026/ # CPNS exam prep (structured subfolders) |
| 10 | ├── Work/ # Work notes, meetings, projects |
| 11 | ├── Personal/ # Personal notes, ideas, journal |
| 12 | ├── Projects/ # Code projects, dev logs |
| 13 | └── Archive/ # Old/archived notes |
| 14 | ``` |
| 15 | |
| 16 | If a vault folder doesn't exist, create it automatically. |
| 17 | |
| 18 | ## Smart Path Resolution |
| 19 | |
| 20 | Parse user commands to determine vault → folder → filename: |
| 21 | |
| 22 | | User says | Resolves to | |
| 23 | |-----------|------------| |
| 24 | | "obi, catat email gw adityahimaone@gmail ke work → dummy email" | `Work/work/dummy-email.md` | |
| 25 | | "obi, save meeting notes project catalyst ke work → projects → catalyst" | `Work/projects/catalyst/meeting-notes.md` | |
| 26 | | "catat ini: gw punya 2 server" | `Personal/notes.md` (default) | |
| 27 | | "masukin ini ke CPNS" | `CPNS-2026/` (uses existing CPNS vault) | |
| 28 | | "obi, buat notes tentang React" | `Personal/react.md` | |
| 29 | | "save ke personal → ideas → startup ideas" | `Personal/ideas/startup-ideas.md` | |
| 30 | |
| 31 | **Rules:** |
| 32 | - First keyword after "ke/kepada/into" → vault name |
| 33 | - `→` or `ke` after vault → subfolder(s) |
| 34 | - Last meaningful phrase → note title (convert to kebab-case filename) |
| 35 | - Default vault: **Personal** if none specified |
| 36 | - Default folder: vault root if none specified |
| 37 | |
| 38 | ## File Naming |
| 39 | - Use **kebab-case** for filenames: `meeting-notes-2026-04-07.md` |
| 40 | - Use **spaces** in titles/frontmatter: `Meeting Notes 2026-04-07` |
| 41 | - If filename exists, append `-2`, `-3`, etc. |
| 42 | |
| 43 | ## Note Template |
| 44 | ```markdown |
| 45 | --- |
| 46 | type: general |
| 47 | tags: [tag1, tag2] |
| 48 | created: YYYY-MM-DD |
| 49 | updated: YYYY-MM-DD |
| 50 | vault: {{vault-name}} |
| 51 | --- |
| 52 | |
| 53 | # {{Title}} |
| 54 | |
| 55 | {{Content}} |
| 56 | |
| 57 | ## Notes |
| 58 | |
| 59 | ## Links |
| 60 | - [[Related Note]] |
| 61 | ``` |
| 62 | |
| 63 | ## Quick Commands |
| 64 | |
| 65 | ### Create |
| 66 | ```bash |
| 67 | # Path: ~/Documents/Obsidian/{{Vault}}/{{folder}}/{{filename}}.md |
| 68 | mkdir -p "$path" |
| 69 | cat > "$file" << 'EOF' |
| 70 | --- |
| 71 | type: general |
| 72 | tags: [...] |
| 73 | created: YYYY-MM-DD |
| 74 | --- |
| 75 | |
| 76 | # Title |
| 77 | |
| 78 | Content |
| 79 | EOF |
| 80 | ``` |
| 81 | |
| 82 | ### Search |
| 83 | ```bash |
| 84 | # Across all vaults |
| 85 | find ~/Documents/Obsidian -name "*.md" -type f | xargs grep -li "keyword" |
| 86 | |
| 87 | # Specific vault |
| 88 | grep -rli "keyword" ~/Documents/Obsidian/Work/ --include="*.md" |
| 89 | |
| 90 | # By filename |
| 91 | find ~/Documents/Obsidian -iname "*keyword*.md" |
| 92 | ``` |
| 93 | |
| 94 | ### List |
| 95 | ```bash |
| 96 | # All vaults |
| 97 | ls -d ~/Documents/Obsidian/*/ |
| 98 | |
| 99 | # Notes in a vault |
| 100 | find ~/Documents/Obsidian/Work -name "*.md" -type f | sort |
| 101 | |
| 102 | # Tree view |
| 103 | find ~/Documents/Obsidian/Work -type f -name "*.md" | sed 's|/Users/adityahimawan/Documents/Obsidian/Work/||' | sort |
| 104 | ``` |
| 105 | |
| 106 | ### Move/Rename |
| 107 | ```bash |
| 108 | mv "source" "destination" |
| 109 | ``` |
| 110 | |
| 111 | ### Delete |
| 112 | ```bash |
| 113 | rm "path/to/note.md" |
| 114 | ``` |
| 115 | |
| 116 | ## Obsidian Syntax Support |
| 117 | - **Wikilinks:** `[[Note Name]]` |
| 118 | - **Frontmatter:** YAML between `---` markers |
| 119 | - **Callouts:** `> [!info]`, `> [!warning]`, `> [!todo]` |
| 120 | - **Tasks:** `- [ ]`, `- [x]` |
| 121 | - **Code blocks:** Triple backticks with language |
| 122 | - **Tables:** Markdown tables |
| 123 | |
| 124 | ## Pitfalls |
| 125 | - **Filename conflicts:** Append `-2`, `-3` or ask user |
| 126 | - **Special chars:** Sanitize filenames (space→hyphen, remove symbols) |
| 127 | - **Vault not opened in Obsidian:** User may need "Open folder as vault" in app |
| 128 | - **Syncthing conflicts:** Mention `.sync-conflict` files if synced on Android |
| 129 | - **Auto-create folders:** Always `mkdir -p` before writing |
| 130 | - **Always confirm:** Show user the file path and a preview before declaring done |