$npx -y skills add pablo-mano/Obsidian-CLI-skill --skill obsidian-cliUse this skill whenever the user wants Claude to directly interact with their Obsidian vault — reading a note or daily note, writing or appending content, searching vault contents, counting or listing notes, managing tasks, moving or renaming files, finding orphaned notes or brok
| 1 | # Obsidian CLI |
| 2 | |
| 3 | The official Obsidian CLI (released in v1.12, February 2026) lets you control every aspect of Obsidian from the terminal. It communicates with a running Obsidian desktop instance via IPC. |
| 4 | |
| 5 | > Read `references/command-reference.md` when you need specific flags, output formats, or |
| 6 | > subcommands for any command group. It covers all 130+ commands with full parameter tables |
| 7 | > and has a table of contents at the top. |
| 8 | |
| 9 | ## Prerequisites |
| 10 | |
| 11 | | Requirement | Details | |
| 12 | |---|---| |
| 13 | | Obsidian Desktop | **v1.12.0+** | |
| 14 | | CLI enabled | Settings → Command line interface → Toggle ON | |
| 15 | | Obsidian running | The desktop app **must be running** for CLI to work (IPC) | |
| 16 | |
| 17 | ### Platform Notes |
| 18 | |
| 19 | - **macOS / Linux**: The `obsidian` binary is registered in PATH automatically when you enable CLI in settings. |
| 20 | - **Windows**: Requires an `Obsidian.com` redirector file placed alongside `Obsidian.exe`. **Must run with normal user privileges** — admin terminals produce silent failures. |
| 21 | - If colon subcommands (`property:set`, `daily:append`, etc.) with parameters return exit 127, check that `Obsidian.com` exists alongside `Obsidian.exe`. If missing, you have an outdated installer — download the latest from [obsidian.md/download](https://obsidian.md/download) and reinstall. |
| 22 | - **Git Bash / MSYS2 users**: Bash resolves `obsidian` to `Obsidian.exe` (GUI) instead of `Obsidian.com` (CLI), causing colon+params to fail with exit 127 even when `Obsidian.com` is present. Create a wrapper script — see Troubleshooting. |
| 23 | - **Headless Linux**: Use the `.deb` package (not snap). Run under `xvfb`. Prefix commands with `DISPLAY=:5` (or your xvfb display number). Ensure `PrivateTmp=false` if running as a service. |
| 24 | |
| 25 | ## Syntax |
| 26 | |
| 27 | All parameters use **`key=value`** syntax. Quote values containing spaces. |
| 28 | |
| 29 | ```bash |
| 30 | obsidian <command> [subcommand] [key=value ...] [flags] |
| 31 | ``` |
| 32 | |
| 33 | ### Multi-Vault |
| 34 | |
| 35 | Target a specific vault by making it the **first argument**: |
| 36 | |
| 37 | ```bash |
| 38 | obsidian "My Vault" daily:read |
| 39 | obsidian "Work Notes" search query="meeting" |
| 40 | ``` |
| 41 | |
| 42 | If omitted, the CLI targets the most recently active vault. |
| 43 | |
| 44 | ## Command Overview |
| 45 | |
| 46 | The CLI provides **130+ commands** across these groups: |
| 47 | |
| 48 | | Group | Key Commands | Purpose | |
| 49 | |---|---|---| |
| 50 | | **files** | `read`, `create`, `append`, `prepend`, `move`, `rename`, `delete`, `files`, `folders`, `file`, `random` | Note CRUD and file discovery | |
| 51 | | **daily** | `daily`, `daily:read`, `daily:append`, `daily:prepend`, `daily:path` | Daily note operations | |
| 52 | | **search** | `search`, `search:context` | Full-text search; `search:context` returns matching lines | |
| 53 | | **properties** | `properties`, `property:read`, `property:set`, `property:remove`, `aliases` | Frontmatter/metadata management | |
| 54 | | **tags** | `tags`, `tag` | Tag listing, counts, and filtering | |
| 55 | | **tasks** | `tasks`, `task` | Task querying, filtering, and toggling | |
| 56 | | **links** | `backlinks`, `links`, `unresolved`, `orphans`, `deadends` | Graph and link analysis | |
| 57 | | **bookmarks** | `bookmarks`, `bookmark` | List and add bookmarks | |
| 58 | | **templates** | `templates`, `template:read`, `template:insert` | Template listing, rendering, insertion | |
| 59 | | **plugins** | `plugins`, `plugin`, `plugin:enable`, `plugin:disable`, `plugin:install`, `plugin:uninstall`, `plugins:restrict` | Plugin management | |
| 60 | | **sync** | `sync`, `sync:status`, `sync:history`, `sync:read`, `sync:restore`, `sync:deleted` | Obsidian Sync operations | |
| 61 | | **themes** | `themes`, `theme`, `theme:set`, `theme:install`, `theme:uninstall` | Theme management | |
| 62 | | **snippets** | `snippets`, `snippets:enabled`, `snippet:enable`, `snippet:disable` | CSS snippet management | |
| 63 | | **commands** | `commands`, `command`, `hotkeys`, `hotkey` | Execute Obsidian commands by ID; inspect hotkeys | |
| 64 | | **bases** | `bases`, `base:query`, `base:views`, `base:create` | Obsidian Bases (v1.12+ database feature) | |
| 65 | | **history** | `history`, `history:list`, `history:read`, `history:restore` | File version recovery (File Recovery plugin) | |
| 66 | | **workspace** | `workspace`, `tabs`, `tab:open` | Workspace layout and tab management | |
| 67 | | **diff** | `diff` | Comp |