From 4e43a03f8ca53875af50844332dcfd44a57256c4 Mon Sep 17 00:00:00 2001 From: pablo-mano Date: Tue, 3 Mar 2026 22:57:21 +0100 Subject: [PATCH] Add 6 new command groups and expand existing sections Adds CSS Snippets, Commands & Hotkeys, Obsidian Bases, History, Workspace & Tabs, and Diff sections to command-reference.md. Expands existing sections with missing commands (search:context, daily:path, random, rename, bookmark add, plugins:restrict, theme management, dev DOM/CSS/CDP tools, restart). Documents all 8 output format options. Updates SKILL.md command table and count to 130+. Bumps version to 1.2.0. Co-Authored-By: Claude Sonnet 4.6 --- .claude-plugin/plugin.json | 2 +- .../obsidian-cli/.claude-plugin/plugin.json | 2 +- .../obsidian-cli/skills/obsidian-cli/SKILL.md | 38 ++- .../references/command-reference.md | 227 +++++++++++++++++- skills/obsidian-cli/SKILL.md | 38 ++- .../references/command-reference.md | 227 +++++++++++++++++- 6 files changed, 496 insertions(+), 38 deletions(-) diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json index 76af942..ce6bf7b 100644 --- a/.claude-plugin/plugin.json +++ b/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "name": "obsidian-cli", "description": "Interact with Obsidian vaults using the official Obsidian CLI (v1.12+). Read, create, append, search, and manage notes, daily notes, properties, tags, tasks, bookmarks, templates, themes, sync, plugins, and links — all from the terminal.", - "version": "1.1.0", + "version": "1.2.0", "author": { "name": "pablo-mano" }, diff --git a/plugins/obsidian-cli/.claude-plugin/plugin.json b/plugins/obsidian-cli/.claude-plugin/plugin.json index 76af942..ce6bf7b 100644 --- a/plugins/obsidian-cli/.claude-plugin/plugin.json +++ b/plugins/obsidian-cli/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "name": "obsidian-cli", "description": "Interact with Obsidian vaults using the official Obsidian CLI (v1.12+). Read, create, append, search, and manage notes, daily notes, properties, tags, tasks, bookmarks, templates, themes, sync, plugins, and links — all from the terminal.", - "version": "1.1.0", + "version": "1.2.0", "author": { "name": "pablo-mano" }, diff --git a/plugins/obsidian-cli/skills/obsidian-cli/SKILL.md b/plugins/obsidian-cli/skills/obsidian-cli/SKILL.md index 23a4da6..0af77ee 100644 --- a/plugins/obsidian-cli/skills/obsidian-cli/SKILL.md +++ b/plugins/obsidian-cli/skills/obsidian-cli/SKILL.md @@ -55,25 +55,31 @@ If omitted, the CLI targets the most recently active vault. ## Command Overview -The CLI provides **100+ commands** across these groups: +The CLI provides **130+ commands** across these groups: | Group | Key Commands | Purpose | |---|---|---| -| **files** | `read`, `create`, `append`, `prepend`, `move`, `delete`, `files`, `folders`, `file` | Note CRUD and file discovery | -| **daily** | `daily`, `daily:read`, `daily:append`, `daily:prepend` | Daily note operations | -| **search** | `search` | Full-text vault search with scoping and JSON output | +| **files** | `read`, `create`, `append`, `prepend`, `move`, `rename`, `delete`, `files`, `folders`, `file`, `random` | Note CRUD and file discovery | +| **daily** | `daily`, `daily:read`, `daily:append`, `daily:prepend`, `daily:path` | Daily note operations | +| **search** | `search`, `search:context` | Full-text search; `search:context` returns matching lines | | **properties** | `properties`, `property:read`, `property:set`, `property:remove`, `aliases` | Frontmatter/metadata management | | **tags** | `tags`, `tag` | Tag listing, counts, and filtering | | **tasks** | `tasks`, `task` | Task querying, filtering, and toggling | | **links** | `backlinks`, `links`, `unresolved`, `orphans`, `deadends` | Graph and link analysis | -| **bookmarks** | `bookmarks` | Bookmark management | +| **bookmarks** | `bookmarks`, `bookmark` | List and add bookmarks | | **templates** | `templates`, `template:read`, `template:insert` | Template listing, rendering, insertion | -| **plugins** | `plugins`, `plugin:enable`, `plugin:disable`, `plugin:install`, `plugin:uninstall`, `plugin:reload` | Plugin management | +| **plugins** | `plugins`, `plugin`, `plugin:enable`, `plugin:disable`, `plugin:install`, `plugin:uninstall`, `plugins:restrict` | Plugin management | | **sync** | `sync`, `sync:status`, `sync:history`, `sync:read`, `sync:restore`, `sync:deleted` | Obsidian Sync operations | -| **themes** | `themes`, `themes versions` | Theme management | -| **dev** | `dev:screenshot`, `eval`, `dev:debug`, `dev:console`, `dev:errors` | Developer/debugging tools | -| **vault** | `vault`, `vaults`, `version` | Vault info and metadata | -| **other** | `outline`, `wordcount`, `recents`, `reload` | Utility commands | +| **themes** | `themes`, `theme`, `theme:set`, `theme:install`, `theme:uninstall` | Theme management | +| **snippets** | `snippets`, `snippets:enabled`, `snippet:enable`, `snippet:disable` | CSS snippet management | +| **commands** | `commands`, `command`, `hotkeys`, `hotkey` | Execute Obsidian commands by ID; inspect hotkeys | +| **bases** | `bases`, `base:query`, `base:views`, `base:create` | Obsidian Bases (v1.12+ database feature) | +| **history** | `history`, `history:list`, `history:read`, `history:restore` | File version recovery (File Recovery plugin) | +| **workspace** | `workspace`, `tabs`, `tab:open` | Workspace layout and tab management | +| **diff** | `diff` | Compare local vs sync file versions | +| **dev** | `eval`, `dev:screenshot`, `dev:debug`, `dev:console`, `dev:errors`, `dev:css`, `dev:dom`, `devtools` | Developer/debugging tools | +| **vault** | `vault`, `vaults`, `version`, `reload`, `restart` | Vault info and app control | +| **other** | `outline`, `wordcount`, `recents` | Utility commands | ## Quick Reference — Most Common Commands @@ -200,6 +206,18 @@ obsidian sync:history path="important.md" # Version history obsidian sync:restore path="important.md" version=3 # Rollback ``` +### Execute Obsidian Commands + +```bash +# Find a command ID, then execute it +obsidian commands | grep "graph" +obsidian command id="graph:open" + +# Open settings, trigger a plugin action +obsidian command id="app:open-settings" +obsidian command id="dataview:dataview-force-refresh-views" +``` + ## Tips 1. **Paths are vault-relative** — use `folder/note.md`, not absolute filesystem paths. diff --git a/plugins/obsidian-cli/skills/obsidian-cli/references/command-reference.md b/plugins/obsidian-cli/skills/obsidian-cli/references/command-reference.md index b1f4678..543e4e4 100644 --- a/plugins/obsidian-cli/skills/obsidian-cli/references/command-reference.md +++ b/plugins/obsidian-cli/skills/obsidian-cli/references/command-reference.md @@ -22,8 +22,14 @@ All parameters use `key=value` syntax. Quote values containing spaces: `content= 10. [Plugins](#plugins) 11. [Sync](#sync) 12. [Themes](#themes) -13. [Developer](#developer) -14. [Vault & System](#vault--system) +13. [CSS Snippets](#css-snippets) +14. [Commands & Hotkeys](#commands--hotkeys) +15. [Obsidian Bases](#obsidian-bases) +16. [History](#history) +17. [Workspace & Tabs](#workspace--tabs) +18. [Diff](#diff) +19. [Developer](#developer) +20. [Vault & System](#vault--system) --- @@ -87,6 +93,22 @@ obsidian folders # List all folders obsidian file path="folder/note.md" # File info (size, created, modified dates) ``` +### Random Notes + +```bash +obsidian random # Open a random note in Obsidian +obsidian random:read # Print content of a random note to stdout +``` + +### Renaming + +```bash +obsidian rename path="folder/note.md" name="new-name" +``` + +- `name=` is the new filename only (no path, no `.md` extension). +- Use `move` when you also want to change the folder. + --- ## Daily Notes @@ -98,6 +120,7 @@ obsidian daily # Open today's daily note in Obsidian obsidian daily:read # Print today's daily note content to stdout obsidian daily:append content="text" # Append content to today's note obsidian daily:prepend content="text" # Prepend content (after frontmatter) +obsidian daily:path # Print vault-relative path of today's note ``` **Notes:** @@ -128,6 +151,25 @@ obsidian search query="text" case # Case-sensitive search - `matches` — Flag accepted by the CLI but does not return match context/snippets in v1.12 - `case` — Enable case-sensitive matching +### Search with Context + +```bash +obsidian search:context query="search text" +obsidian search:context query="text" path="folder" limit=10 +obsidian search:context query="text" case +obsidian search:context query="text" format=json +``` + +Returns matching lines with surrounding context (not just file paths). Useful when you need to see the actual content that matched rather than just file paths. + +### Open Search View + +```bash +obsidian search:open query="search text" +``` + +Opens the Obsidian search panel in the UI with the given query. + --- ## Properties @@ -234,11 +276,14 @@ obsidian deadends # Notes with no outgoing links Manage Obsidian bookmarks (requires Bookmarks core plugin). ```bash -obsidian bookmarks # List all bookmarks +obsidian bookmarks # List all bookmarks +obsidian bookmark file="folder/note.md" # Bookmark a note +obsidian bookmark file="folder/note.md" subpath="#Heading" # Bookmark a heading +obsidian bookmark folder="projects" # Bookmark a folder +obsidian bookmark search="query text" title="My Search" # Bookmark a search +obsidian bookmark url="https://example.com" title="Link" # Bookmark a URL ``` -Bookmarks commands let you view and manage bookmarked notes, searches, and groups. Use `obsidian bookmarks --help` for all available subcommands. - --- ## Templates @@ -269,6 +314,10 @@ Manage community and core plugins. obsidian plugins # List all plugins (core + community) obsidian plugins:enabled # Only enabled plugins obsidian plugins versions # Plugins with version numbers (community only) +obsidian plugins:restrict # Show restricted mode status +obsidian plugins:restrict on # Enable restricted mode (disables community plugins) +obsidian plugins:restrict off # Disable restricted mode +obsidian plugin id="dataview" # Get info about a specific plugin obsidian plugin:enable id="canvas" # Enable a plugin obsidian plugin:disable id="canvas" # Disable a plugin obsidian plugin:install id="dataview" # Install from community plugins @@ -293,6 +342,7 @@ obsidian sync:history path="note.md" # Version history for a file obsidian sync:read path="note.md" version=3 # Read a specific version obsidian sync:restore path="note.md" version=3 # Restore a previous version obsidian sync:deleted # List files deleted via sync +obsidian sync:open # Open the Sync history view in the UI ``` --- @@ -302,8 +352,116 @@ obsidian sync:deleted # List files deleted via sync Manage appearance themes. ```bash -obsidian themes # List installed themes -obsidian themes versions # List installed themes with version numbers +obsidian themes # List installed themes +obsidian themes versions # List installed themes with version numbers +obsidian theme # Show the currently active theme +obsidian theme name="Minimal" # Get details about a specific theme +obsidian theme:set name="Minimal" # Switch to a theme +obsidian theme:set name="" # Switch back to default theme +obsidian theme:install name="Minimal" # Install a community theme +obsidian theme:install name="Minimal" enable # Install and activate immediately +obsidian theme:uninstall name="Minimal" # Uninstall a theme +``` + +--- + +## CSS Snippets + +Manage custom CSS snippet files (snippets live in `.obsidian/snippets/`). + +```bash +obsidian snippets # List all installed CSS snippets +obsidian snippets:enabled # List only enabled snippets +obsidian snippet:enable name="my-style" # Enable a snippet +obsidian snippet:disable name="my-style" # Disable a snippet +``` + +--- + +## Commands & Hotkeys + +Execute any Obsidian command by its ID, and inspect hotkey bindings. + +```bash +obsidian commands # List all available command IDs +obsidian command id="app:reload" # Execute a command by ID +obsidian command id="editor:toggle-bold" # Example: toggle bold in active editor +obsidian hotkeys # List all hotkeys (tab-separated: id \t keybinding) +obsidian hotkey id="app:open-settings" # Get hotkey for a specific command +obsidian hotkey id="app:open-settings" verbose # Show if custom or default +``` + +**Typical workflow — find and run a command:** + +```bash +obsidian commands | grep "canvas" # Find canvas-related command IDs +obsidian command id="canvas:new-file" # Execute the matched command +``` + +**Getting plugin command IDs:** + +```bash +obsidian commands | grep "dataview" # List all Dataview plugin commands +``` + +--- + +## Obsidian Bases + +Obsidian Bases (v1.12+) is a built-in database feature. Base files (`.base`) store structured data and support multiple views. + +```bash +obsidian bases # List all .base files in vault +obsidian base:query file="tasks" format=json # Query default view of a base +obsidian base:query file="tasks" view="Kanban" # Query a specific view +obsidian base:query path="folder/tasks.base" format=csv # Query by path +obsidian base:views file="tasks" # List all views in a base file +obsidian base:create file="tasks" title="Buy milk" # Add an item to a base +``` + +**Supported output formats for `base:query`:** `json` (default), `csv`, `tsv`, `md`, `paths` + +--- + +## History + +File version history (built-in to Obsidian, separate from Sync). Requires the File Recovery core plugin. + +```bash +obsidian history:list # List all files that have history +obsidian history path="folder/note.md" # List versions of a specific file +obsidian history:read path="folder/note.md" # Read the latest saved version +obsidian history:read path="folder/note.md" version=3 # Read a specific version +obsidian history:restore path="folder/note.md" version=3 # Restore a version +obsidian history:open path="folder/note.md" # Open file recovery UI for a file +``` + +> **Note:** History is distinct from [Sync version history](#sync). History uses Obsidian's built-in File Recovery snapshots; Sync history uses Obsidian Sync cloud versions. + +--- + +## Workspace & Tabs + +Inspect and manage the Obsidian workspace layout and open tabs. + +```bash +obsidian workspace # Show the full workspace tree +obsidian tabs # List all open tabs (flat list) +obsidian tab:open file="folder/note.md" # Open a file in a new tab +obsidian tab:open view="graph" # Open a view type in a new tab +``` + +--- + +## Diff + +Compare local and sync versions of a file. + +```bash +obsidian diff path="folder/note.md" # List available versions (local + sync) +obsidian diff path="folder/note.md" from=1 to=2 # Diff two specific versions +obsidian diff path="folder/note.md" filter=local # Show only local versions +obsidian diff path="folder/note.md" filter=sync # Show only sync versions ``` --- @@ -340,6 +498,38 @@ obsidian dev:errors # Recent error messages > **Note:** `dev:console` will return an error unless `dev:debug on` has been run first in the current session. +### DOM Inspection + +```bash +obsidian dev:dom selector=".view-content" # Get outerHTML of first match +obsidian dev:dom selector=".view-content" all # Get all matches +obsidian dev:dom selector=".view-content" text # Get text content +obsidian dev:dom selector=".view-content" total # Count matching elements +obsidian dev:dom selector=".view-content" attr=class # Get an attribute value +obsidian dev:dom selector=".view-content" css=color # Get a CSS property value +``` + +### CSS Inspection + +```bash +obsidian dev:css selector=".view-content" # Inspect CSS with source locations +obsidian dev:css selector=".view-content" prop=color # Filter by CSS property name +``` + +### Chrome DevTools Protocol + +```bash +obsidian devtools # Toggle Electron DevTools panel +obsidian dev:cdp method="Runtime.evaluate" params='{"expression":"1+1"}' # Run a CDP command +``` + +### Mobile Emulation + +```bash +obsidian dev:mobile on # Enable mobile emulation +obsidian dev:mobile off # Disable mobile emulation +``` + --- ## Vault & System @@ -359,13 +549,31 @@ obsidian outline path="note.md" # Heading structure of a note obsidian wordcount path="note.md" # Word and character count obsidian recents # Recently opened files obsidian reload # Reload the vault (re-index) +obsidian restart # Restart the Obsidian app ``` --- ## Output Formatting & Piping -The CLI outputs plain text by default, ideal for piping into Unix tools: +The CLI outputs plain text by default, ideal for piping into Unix tools. + +### Supported `format=` values + +| Format | Description | Best for | +|---|---|---| +| `text` | Plain text (default) | Piping to grep/awk/sed | +| `json` | JSON array or object | Processing with jq, AI agents | +| `csv` | Comma-separated values | Spreadsheet import | +| `tsv` | Tab-separated values | Shell parsing with cut/awk | +| `yaml` | YAML output | Config-style processing | +| `md` | Markdown table | Embedding results in notes | +| `paths` | One path per line | Batch file operations | +| `tree` | Tree view | Visual hierarchy | + +Not all formats are supported by every command. Use `text` or `json` when in doubt. + +### Examples ```bash # Count notes in a folder @@ -381,6 +589,9 @@ done # format=json returns an array of file path strings: ["folder/note.md", ...] obsidian search query="meeting" format=json | jq '.[]' +# Query a base as CSV +obsidian base:query file="tasks" format=csv + # Filter console errors (requires dev:debug on first) obsidian dev:debug on obsidian dev:console limit=50 | grep -i error diff --git a/skills/obsidian-cli/SKILL.md b/skills/obsidian-cli/SKILL.md index 23a4da6..0af77ee 100644 --- a/skills/obsidian-cli/SKILL.md +++ b/skills/obsidian-cli/SKILL.md @@ -55,25 +55,31 @@ If omitted, the CLI targets the most recently active vault. ## Command Overview -The CLI provides **100+ commands** across these groups: +The CLI provides **130+ commands** across these groups: | Group | Key Commands | Purpose | |---|---|---| -| **files** | `read`, `create`, `append`, `prepend`, `move`, `delete`, `files`, `folders`, `file` | Note CRUD and file discovery | -| **daily** | `daily`, `daily:read`, `daily:append`, `daily:prepend` | Daily note operations | -| **search** | `search` | Full-text vault search with scoping and JSON output | +| **files** | `read`, `create`, `append`, `prepend`, `move`, `rename`, `delete`, `files`, `folders`, `file`, `random` | Note CRUD and file discovery | +| **daily** | `daily`, `daily:read`, `daily:append`, `daily:prepend`, `daily:path` | Daily note operations | +| **search** | `search`, `search:context` | Full-text search; `search:context` returns matching lines | | **properties** | `properties`, `property:read`, `property:set`, `property:remove`, `aliases` | Frontmatter/metadata management | | **tags** | `tags`, `tag` | Tag listing, counts, and filtering | | **tasks** | `tasks`, `task` | Task querying, filtering, and toggling | | **links** | `backlinks`, `links`, `unresolved`, `orphans`, `deadends` | Graph and link analysis | -| **bookmarks** | `bookmarks` | Bookmark management | +| **bookmarks** | `bookmarks`, `bookmark` | List and add bookmarks | | **templates** | `templates`, `template:read`, `template:insert` | Template listing, rendering, insertion | -| **plugins** | `plugins`, `plugin:enable`, `plugin:disable`, `plugin:install`, `plugin:uninstall`, `plugin:reload` | Plugin management | +| **plugins** | `plugins`, `plugin`, `plugin:enable`, `plugin:disable`, `plugin:install`, `plugin:uninstall`, `plugins:restrict` | Plugin management | | **sync** | `sync`, `sync:status`, `sync:history`, `sync:read`, `sync:restore`, `sync:deleted` | Obsidian Sync operations | -| **themes** | `themes`, `themes versions` | Theme management | -| **dev** | `dev:screenshot`, `eval`, `dev:debug`, `dev:console`, `dev:errors` | Developer/debugging tools | -| **vault** | `vault`, `vaults`, `version` | Vault info and metadata | -| **other** | `outline`, `wordcount`, `recents`, `reload` | Utility commands | +| **themes** | `themes`, `theme`, `theme:set`, `theme:install`, `theme:uninstall` | Theme management | +| **snippets** | `snippets`, `snippets:enabled`, `snippet:enable`, `snippet:disable` | CSS snippet management | +| **commands** | `commands`, `command`, `hotkeys`, `hotkey` | Execute Obsidian commands by ID; inspect hotkeys | +| **bases** | `bases`, `base:query`, `base:views`, `base:create` | Obsidian Bases (v1.12+ database feature) | +| **history** | `history`, `history:list`, `history:read`, `history:restore` | File version recovery (File Recovery plugin) | +| **workspace** | `workspace`, `tabs`, `tab:open` | Workspace layout and tab management | +| **diff** | `diff` | Compare local vs sync file versions | +| **dev** | `eval`, `dev:screenshot`, `dev:debug`, `dev:console`, `dev:errors`, `dev:css`, `dev:dom`, `devtools` | Developer/debugging tools | +| **vault** | `vault`, `vaults`, `version`, `reload`, `restart` | Vault info and app control | +| **other** | `outline`, `wordcount`, `recents` | Utility commands | ## Quick Reference — Most Common Commands @@ -200,6 +206,18 @@ obsidian sync:history path="important.md" # Version history obsidian sync:restore path="important.md" version=3 # Rollback ``` +### Execute Obsidian Commands + +```bash +# Find a command ID, then execute it +obsidian commands | grep "graph" +obsidian command id="graph:open" + +# Open settings, trigger a plugin action +obsidian command id="app:open-settings" +obsidian command id="dataview:dataview-force-refresh-views" +``` + ## Tips 1. **Paths are vault-relative** — use `folder/note.md`, not absolute filesystem paths. diff --git a/skills/obsidian-cli/references/command-reference.md b/skills/obsidian-cli/references/command-reference.md index b1f4678..543e4e4 100644 --- a/skills/obsidian-cli/references/command-reference.md +++ b/skills/obsidian-cli/references/command-reference.md @@ -22,8 +22,14 @@ All parameters use `key=value` syntax. Quote values containing spaces: `content= 10. [Plugins](#plugins) 11. [Sync](#sync) 12. [Themes](#themes) -13. [Developer](#developer) -14. [Vault & System](#vault--system) +13. [CSS Snippets](#css-snippets) +14. [Commands & Hotkeys](#commands--hotkeys) +15. [Obsidian Bases](#obsidian-bases) +16. [History](#history) +17. [Workspace & Tabs](#workspace--tabs) +18. [Diff](#diff) +19. [Developer](#developer) +20. [Vault & System](#vault--system) --- @@ -87,6 +93,22 @@ obsidian folders # List all folders obsidian file path="folder/note.md" # File info (size, created, modified dates) ``` +### Random Notes + +```bash +obsidian random # Open a random note in Obsidian +obsidian random:read # Print content of a random note to stdout +``` + +### Renaming + +```bash +obsidian rename path="folder/note.md" name="new-name" +``` + +- `name=` is the new filename only (no path, no `.md` extension). +- Use `move` when you also want to change the folder. + --- ## Daily Notes @@ -98,6 +120,7 @@ obsidian daily # Open today's daily note in Obsidian obsidian daily:read # Print today's daily note content to stdout obsidian daily:append content="text" # Append content to today's note obsidian daily:prepend content="text" # Prepend content (after frontmatter) +obsidian daily:path # Print vault-relative path of today's note ``` **Notes:** @@ -128,6 +151,25 @@ obsidian search query="text" case # Case-sensitive search - `matches` — Flag accepted by the CLI but does not return match context/snippets in v1.12 - `case` — Enable case-sensitive matching +### Search with Context + +```bash +obsidian search:context query="search text" +obsidian search:context query="text" path="folder" limit=10 +obsidian search:context query="text" case +obsidian search:context query="text" format=json +``` + +Returns matching lines with surrounding context (not just file paths). Useful when you need to see the actual content that matched rather than just file paths. + +### Open Search View + +```bash +obsidian search:open query="search text" +``` + +Opens the Obsidian search panel in the UI with the given query. + --- ## Properties @@ -234,11 +276,14 @@ obsidian deadends # Notes with no outgoing links Manage Obsidian bookmarks (requires Bookmarks core plugin). ```bash -obsidian bookmarks # List all bookmarks +obsidian bookmarks # List all bookmarks +obsidian bookmark file="folder/note.md" # Bookmark a note +obsidian bookmark file="folder/note.md" subpath="#Heading" # Bookmark a heading +obsidian bookmark folder="projects" # Bookmark a folder +obsidian bookmark search="query text" title="My Search" # Bookmark a search +obsidian bookmark url="https://example.com" title="Link" # Bookmark a URL ``` -Bookmarks commands let you view and manage bookmarked notes, searches, and groups. Use `obsidian bookmarks --help` for all available subcommands. - --- ## Templates @@ -269,6 +314,10 @@ Manage community and core plugins. obsidian plugins # List all plugins (core + community) obsidian plugins:enabled # Only enabled plugins obsidian plugins versions # Plugins with version numbers (community only) +obsidian plugins:restrict # Show restricted mode status +obsidian plugins:restrict on # Enable restricted mode (disables community plugins) +obsidian plugins:restrict off # Disable restricted mode +obsidian plugin id="dataview" # Get info about a specific plugin obsidian plugin:enable id="canvas" # Enable a plugin obsidian plugin:disable id="canvas" # Disable a plugin obsidian plugin:install id="dataview" # Install from community plugins @@ -293,6 +342,7 @@ obsidian sync:history path="note.md" # Version history for a file obsidian sync:read path="note.md" version=3 # Read a specific version obsidian sync:restore path="note.md" version=3 # Restore a previous version obsidian sync:deleted # List files deleted via sync +obsidian sync:open # Open the Sync history view in the UI ``` --- @@ -302,8 +352,116 @@ obsidian sync:deleted # List files deleted via sync Manage appearance themes. ```bash -obsidian themes # List installed themes -obsidian themes versions # List installed themes with version numbers +obsidian themes # List installed themes +obsidian themes versions # List installed themes with version numbers +obsidian theme # Show the currently active theme +obsidian theme name="Minimal" # Get details about a specific theme +obsidian theme:set name="Minimal" # Switch to a theme +obsidian theme:set name="" # Switch back to default theme +obsidian theme:install name="Minimal" # Install a community theme +obsidian theme:install name="Minimal" enable # Install and activate immediately +obsidian theme:uninstall name="Minimal" # Uninstall a theme +``` + +--- + +## CSS Snippets + +Manage custom CSS snippet files (snippets live in `.obsidian/snippets/`). + +```bash +obsidian snippets # List all installed CSS snippets +obsidian snippets:enabled # List only enabled snippets +obsidian snippet:enable name="my-style" # Enable a snippet +obsidian snippet:disable name="my-style" # Disable a snippet +``` + +--- + +## Commands & Hotkeys + +Execute any Obsidian command by its ID, and inspect hotkey bindings. + +```bash +obsidian commands # List all available command IDs +obsidian command id="app:reload" # Execute a command by ID +obsidian command id="editor:toggle-bold" # Example: toggle bold in active editor +obsidian hotkeys # List all hotkeys (tab-separated: id \t keybinding) +obsidian hotkey id="app:open-settings" # Get hotkey for a specific command +obsidian hotkey id="app:open-settings" verbose # Show if custom or default +``` + +**Typical workflow — find and run a command:** + +```bash +obsidian commands | grep "canvas" # Find canvas-related command IDs +obsidian command id="canvas:new-file" # Execute the matched command +``` + +**Getting plugin command IDs:** + +```bash +obsidian commands | grep "dataview" # List all Dataview plugin commands +``` + +--- + +## Obsidian Bases + +Obsidian Bases (v1.12+) is a built-in database feature. Base files (`.base`) store structured data and support multiple views. + +```bash +obsidian bases # List all .base files in vault +obsidian base:query file="tasks" format=json # Query default view of a base +obsidian base:query file="tasks" view="Kanban" # Query a specific view +obsidian base:query path="folder/tasks.base" format=csv # Query by path +obsidian base:views file="tasks" # List all views in a base file +obsidian base:create file="tasks" title="Buy milk" # Add an item to a base +``` + +**Supported output formats for `base:query`:** `json` (default), `csv`, `tsv`, `md`, `paths` + +--- + +## History + +File version history (built-in to Obsidian, separate from Sync). Requires the File Recovery core plugin. + +```bash +obsidian history:list # List all files that have history +obsidian history path="folder/note.md" # List versions of a specific file +obsidian history:read path="folder/note.md" # Read the latest saved version +obsidian history:read path="folder/note.md" version=3 # Read a specific version +obsidian history:restore path="folder/note.md" version=3 # Restore a version +obsidian history:open path="folder/note.md" # Open file recovery UI for a file +``` + +> **Note:** History is distinct from [Sync version history](#sync). History uses Obsidian's built-in File Recovery snapshots; Sync history uses Obsidian Sync cloud versions. + +--- + +## Workspace & Tabs + +Inspect and manage the Obsidian workspace layout and open tabs. + +```bash +obsidian workspace # Show the full workspace tree +obsidian tabs # List all open tabs (flat list) +obsidian tab:open file="folder/note.md" # Open a file in a new tab +obsidian tab:open view="graph" # Open a view type in a new tab +``` + +--- + +## Diff + +Compare local and sync versions of a file. + +```bash +obsidian diff path="folder/note.md" # List available versions (local + sync) +obsidian diff path="folder/note.md" from=1 to=2 # Diff two specific versions +obsidian diff path="folder/note.md" filter=local # Show only local versions +obsidian diff path="folder/note.md" filter=sync # Show only sync versions ``` --- @@ -340,6 +498,38 @@ obsidian dev:errors # Recent error messages > **Note:** `dev:console` will return an error unless `dev:debug on` has been run first in the current session. +### DOM Inspection + +```bash +obsidian dev:dom selector=".view-content" # Get outerHTML of first match +obsidian dev:dom selector=".view-content" all # Get all matches +obsidian dev:dom selector=".view-content" text # Get text content +obsidian dev:dom selector=".view-content" total # Count matching elements +obsidian dev:dom selector=".view-content" attr=class # Get an attribute value +obsidian dev:dom selector=".view-content" css=color # Get a CSS property value +``` + +### CSS Inspection + +```bash +obsidian dev:css selector=".view-content" # Inspect CSS with source locations +obsidian dev:css selector=".view-content" prop=color # Filter by CSS property name +``` + +### Chrome DevTools Protocol + +```bash +obsidian devtools # Toggle Electron DevTools panel +obsidian dev:cdp method="Runtime.evaluate" params='{"expression":"1+1"}' # Run a CDP command +``` + +### Mobile Emulation + +```bash +obsidian dev:mobile on # Enable mobile emulation +obsidian dev:mobile off # Disable mobile emulation +``` + --- ## Vault & System @@ -359,13 +549,31 @@ obsidian outline path="note.md" # Heading structure of a note obsidian wordcount path="note.md" # Word and character count obsidian recents # Recently opened files obsidian reload # Reload the vault (re-index) +obsidian restart # Restart the Obsidian app ``` --- ## Output Formatting & Piping -The CLI outputs plain text by default, ideal for piping into Unix tools: +The CLI outputs plain text by default, ideal for piping into Unix tools. + +### Supported `format=` values + +| Format | Description | Best for | +|---|---|---| +| `text` | Plain text (default) | Piping to grep/awk/sed | +| `json` | JSON array or object | Processing with jq, AI agents | +| `csv` | Comma-separated values | Spreadsheet import | +| `tsv` | Tab-separated values | Shell parsing with cut/awk | +| `yaml` | YAML output | Config-style processing | +| `md` | Markdown table | Embedding results in notes | +| `paths` | One path per line | Batch file operations | +| `tree` | Tree view | Visual hierarchy | + +Not all formats are supported by every command. Use `text` or `json` when in doubt. + +### Examples ```bash # Count notes in a folder @@ -381,6 +589,9 @@ done # format=json returns an array of file path strings: ["folder/note.md", ...] obsidian search query="meeting" format=json | jq '.[]' +# Query a base as CSV +obsidian base:query file="tasks" format=csv + # Filter console errors (requires dev:debug on first) obsidian dev:debug on obsidian dev:console limit=50 | grep -i error