diff --git a/README.md b/README.md index 2549f40..902e52f 100644 --- a/README.md +++ b/README.md @@ -13,22 +13,30 @@ A skill for AI coding agents that enables full control of [Obsidian](https://obs Once installed, your AI agent will know how to interact with Obsidian vaults through the official CLI — reading, creating, and editing notes; managing daily notes; running full-text search; querying tasks, tags, links, and properties; managing plugins and sync; and running developer tools. -Covers **100+ commands** across all major areas: +Covers **130+ commands** across all major areas: | Area | Commands | |---|---| -| **Files** | `read`, `create`, `append`, `prepend`, `move`, `delete`, `files`, `folders` | -| **Daily Notes** | `daily`, `daily:read`, `daily:append`, `daily:prepend` | -| **Search** | `search` with scoping, limits, JSON output | -| **Properties** | `properties`, `property:read`, `property:set`, `property:remove` | +| **Files** | `read`, `create`, `append`, `prepend`, `move`, `rename`, `delete`, `files`, `folders`, `file`, `random` | +| **Daily Notes** | `daily`, `daily:read`, `daily:append`, `daily:prepend`, `daily:path` | +| **Search** | `search`, `search:context` with scoping, limits, JSON output | +| **Properties** | `properties`, `property:read`, `property:set`, `property:remove`, `aliases` | | **Tags** | `tags`, `tag` with counts and filtering | | **Tasks** | `tasks`, `task` — query, filter, toggle | | **Links** | `backlinks`, `links`, `unresolved`, `orphans`, `deadends` | +| **Bookmarks** | `bookmarks`, `bookmark` | | **Templates** | `templates`, `template:read`, `template:insert` | -| **Plugins** | `plugins`, `plugin:enable/disable/install/reload` | -| **Sync** | `sync`, `sync:status`, `sync:history`, `sync:restore` | -| **Developer** | `eval`, `dev:screenshot`, `dev:console`, `dev:errors` | -| **Vault** | `vault`, `vaults`, `version`, `recents`, `outline`, `wordcount` | +| **Plugins** | `plugins`, `plugin`, `plugin:enable/disable/install/uninstall`, `plugins:restrict` | +| **Sync** | `sync`, `sync:status`, `sync:history`, `sync:read`, `sync:restore`, `sync:deleted` | +| **Themes** | `themes`, `theme`, `theme:set`, `theme:install/uninstall` | +| **Snippets** | `snippets`, `snippets:enabled`, `snippet:enable/disable` | +| **Commands** | `commands`, `command`, `hotkeys`, `hotkey` | +| **Bases** | `bases`, `base:query`, `base:views`, `base:create` | +| **History** | `history`, `history:list`, `history:read`, `history:restore` | +| **Workspace** | `workspace`, `tabs`, `tab:open` | +| **Diff** | `diff` | +| **Developer** | `eval`, `dev:screenshot`, `dev:debug`, `dev:console`, `dev:errors`, `dev:css`, `dev:dom`, `devtools` | +| **Vault** | `vault`, `vaults`, `version`, `reload`, `restart`, `recents`, `outline`, `wordcount` | --- @@ -292,6 +300,10 @@ See [`skills/obsidian-cli/references/command-reference.md`](skills/obsidian-cli/ | Wrong vault targeted | Multi-vault ambiguity | Pass vault name as the first argument: `obsidian "My Vault" ...` | | IPC socket not found (Linux) | `PrivateTmp=true` in systemd unit | Set `PrivateTmp=false` | | Snap confinement errors | Snap restricts IPC | Use the `.deb` package instead | +| Multi-vault `"Name" command` fails | Vault name matching issue | Omit vault name; switch vault manually in Obsidian UI | +| `property:set` list value is a string | CLI stores value as-is | Edit frontmatter directly or use `eval` to call Obsidian API | +| Colon+params exit 127 (missing `.com`) | Outdated installer — `Obsidian.com` absent | Reinstall from [obsidian.md/download](https://obsidian.md/download) | +| Colon+params exit 127 (Git Bash / MSYS2) | Bash resolves `obsidian` to `.exe` not `.com` | Create `~/bin/obsidian` wrapper: `#!/bin/bash` + `/c/path/to/Obsidian.com "$@"`, add `export PATH="$HOME/bin:$PATH"` to `~/.bashrc` | --- diff --git a/eval/eval_set.json b/eval/eval_set.json index 44d646c..3fca2a2 100644 --- a/eval/eval_set.json +++ b/eval/eval_set.json @@ -39,6 +39,46 @@ "query": "move everything in my Inbox/ folder to Archive/2026/ and update the daily note with a log entry", "should_trigger": true }, + { + "query": "check the sync history for my important.md and restore the version from two days ago", + "should_trigger": true + }, + { + "query": "list all my bookmarks in obsidian", + "should_trigger": true + }, + { + "query": "run obsidian eval to count how many markdown files have a 'status' property set to 'done'", + "should_trigger": true + }, + { + "query": "find all notes in my vault that link to projects/q1-review.md", + "should_trigger": true + }, + { + "query": "take a screenshot of my current obsidian view and save it to screenshots/", + "should_trigger": true + }, + { + "query": "show me all tags in my vault sorted by how often they're used", + "should_trigger": true + }, + { + "query": "query my Obsidian Bases 'Tasks' view and show all entries where priority is high", + "should_trigger": true + }, + { + "query": "what notes have i opened recently in obsidian?", + "should_trigger": true + }, + { + "query": "delete my scratch/temp-ideas.md note permanently", + "should_trigger": true + }, + { + "query": "rename my 'Meeting 2026-02-28.md' note to 'Sprint Retro 2026-02-28.md'", + "should_trigger": true + }, { "query": "how do i change the accent color in obsidian? i want something more muted than the default purple", "should_trigger": false @@ -78,5 +118,25 @@ { "query": "i'm writing a python script to parse markdown files from my notes folder and extract all the headings into a CSV — what's the best library for this?", "should_trigger": false + }, + { + "query": "how does obsidian's graph view work? i want to understand what the clusters represent", + "should_trigger": false + }, + { + "query": "is there a way to publish my obsidian vault publicly? what are the options?", + "should_trigger": false + }, + { + "query": "how do i configure a hotkey in obsidian to run a specific command from the command palette?", + "should_trigger": false + }, + { + "query": "explain what the 'unresolved links' section in obsidian's graph view means", + "should_trigger": false + }, + { + "query": "how do i use templater plugin variables like {{date}} in obsidian?", + "should_trigger": false } -] \ No newline at end of file +] diff --git a/skills/obsidian-cli/SKILL.md b/skills/obsidian-cli/SKILL.md index 27b6c8b..9cede33 100644 --- a/skills/obsidian-cli/SKILL.md +++ b/skills/obsidian-cli/SKILL.md @@ -1,5 +1,6 @@ --- name: obsidian-cli +version: "1.3.0" description: > Use this skill whenever the user wants Claude to directly interact with their Obsidian vault — reading a note or daily note, writing or appending content, @@ -8,10 +9,37 @@ description: > has no way to access vault data or execute vault operations. Treat any request that implies "go into my vault and do X" as a trigger — the user is asking Claude to act, not to explain. Also trigger for vault automation, CLI scripting, or cron-based - workflows involving Obsidian. Skip for pure conceptual questions: how Obsidian's GUI - works, navigating settings menus, theme or plugin installation via the UI, or general - Dataview query syntax — anything where the user needs an explanation rather than - Claude performing a vault operation. + workflows involving Obsidian, managing sync history, querying Bases, restoring file + versions via history, managing bookmarks, or running JavaScript against the Obsidian + API. Skip for pure conceptual questions: how Obsidian's GUI works, navigating settings + menus, theme or plugin installation via the UI, iCloud/third-party sync conflicts, + general Dataview query syntax, keyboard shortcuts, or parsing vault files with external + scripts — anything where the user needs an explanation rather than Claude performing a + vault operation. +triggers: + - "obsidian" + - "vault" + - "daily note" + - "obsidian cli" + - "note" + - "append to" + - "prepend to" + - "search my vault" + - "create a note" + - "read note" + - "move note" + - "rename note" + - "delete note" + - "tasks in obsidian" + - "open tasks" + - "backlinks" + - "orphaned notes" + - "broken links" + - "frontmatter" + - "properties" + - "sync history" + - "obsidian bases" + - "file history" --- # Obsidian CLI