{
  "schemaVersion": "1.0",
  "item": {
    "slug": "obsidian-cli",
    "name": "Obsidian CLI",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/adolago/obsidian-cli",
    "canonicalUrl": "https://clawhub.ai/adolago/obsidian-cli",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/obsidian-cli",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=obsidian-cli",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/obsidian-cli"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/obsidian-cli",
    "agentPageUrl": "https://openagent3.xyz/skills/obsidian-cli/agent",
    "manifestUrl": "https://openagent3.xyz/skills/obsidian-cli/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/obsidian-cli/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Obsidian CLI (Official, v1.12+)",
        "body": "The official Obsidian CLI connects to a running Obsidian instance via IPC.\nRequires Obsidian 1.12+ with CLI enabled in Settings > General."
      },
      {
        "title": "Prerequisites",
        "body": "Obsidian 1.12+ installed and running\nCLI enabled: Settings > General > Enable CLI\nThe obsidian binary must be in your PATH\n\nImportant: Obsidian must be running for CLI commands to work. The CLI communicates\nwith the running instance via IPC."
      },
      {
        "title": "Platform Notes",
        "body": "macOS/Windows: The Obsidian installer typically places the CLI binary in PATH automatically.\nLinux: You may need a wrapper script to avoid Electron flag injection that breaks CLI arg parsing. Ensure your wrapper is in PATH before the system obsidian binary. If running as a service, ensure PrivateTmp=false for IPC to work."
      },
      {
        "title": "Basics",
        "body": "obsidian version                            # Show Obsidian version\nobsidian help                               # List all available commands\nobsidian vault                              # Show vault info (name, path, files, size)\nobsidian vault info=name                    # Just vault name\nobsidian vault info=path                    # Just vault path\nobsidian reload                             # Reload the vault\nobsidian restart                            # Restart the app"
      },
      {
        "title": "Daily Notes",
        "body": "obsidian daily                              # Open today's daily note\nobsidian daily silent                       # Open without focusing\nobsidian daily:read                         # Read daily note contents\nobsidian daily:append content=\"- [ ] Task\"  # Append to daily note\nobsidian daily:prepend content=\"# Header\"   # Prepend to daily note\nobsidian daily paneType=tab                 # Open in new tab (tab|split|window)"
      },
      {
        "title": "Files",
        "body": "obsidian read file=Recipe                   # Read by name (wikilink resolution)\nobsidian read path=\"Work/notes.md\"          # Read by exact path\nobsidian file file=Recipe                   # Show file info (path, size, dates)\nobsidian create name=Note content=\"Hello\"   # Create a new note\nobsidian create name=Note template=Travel   # Create from template\nobsidian create path=\"Work/note.md\" content=\"text\"  # Create at exact path\nobsidian create name=Note overwrite         # Overwrite if exists\nobsidian create name=Note silent newtab     # Create silently in new tab\nobsidian open file=Recipe                   # Open in Obsidian\nobsidian open file=Recipe newtab            # Open in new tab\nobsidian delete file=Old                    # Delete (to trash)\nobsidian delete file=Old permanent          # Delete permanently\nobsidian move file=Old to=\"Archive/Old.md\"  # Move/rename (include .md in target)\nobsidian append file=Log content=\"Entry\"    # Append to file\nobsidian append file=Log content=\"text\" inline  # Append inline (no newline)\nobsidian prepend file=Log content=\"Header\"  # Prepend to file\nobsidian unique name=\"Meeting\" content=\"notes\"  # Create note with unique timestamp\nobsidian wordcount file=Note                # Word and character count\nobsidian wordcount file=Note words          # Words only\nobsidian wordcount file=Note characters     # Characters only\nobsidian random                             # Open a random note\nobsidian random:read                        # Read a random note\nobsidian random folder=\"Work\"               # Random note from folder\nobsidian recents                            # List recently opened files\nobsidian recents total                      # Count of recent files"
      },
      {
        "title": "Search",
        "body": "obsidian search query=\"meeting notes\"               # Search vault\nobsidian search query=\"TODO\" matches                 # Show match context\nobsidian search query=\"project\" path=\"Work\" limit=10 # Scoped search\nobsidian search query=\"test\" format=json             # JSON output\nobsidian search query=\"Bug\" case                     # Case-sensitive search\nobsidian search query=\"error\" total                  # Count matches only\nobsidian search:open query=\"TODO\"                    # Open search view in Obsidian"
      },
      {
        "title": "Tasks",
        "body": "obsidian tasks daily                        # Tasks from daily note\nobsidian tasks daily todo                   # Incomplete daily tasks\nobsidian tasks daily done                   # Completed daily tasks\nobsidian tasks all todo                     # All incomplete tasks in vault\nobsidian tasks file=Recipe done             # Completed tasks in file\nobsidian tasks verbose                      # Tasks with file paths + line numbers\nobsidian tasks total                        # Count of tasks\nobsidian tasks status=\"/\"                   # Tasks with custom status character\nobsidian task daily line=3 toggle           # Toggle task completion\nobsidian task daily line=3 done             # Mark task done\nobsidian task daily line=3 todo             # Mark task incomplete\nobsidian task ref=\"Work/todo.md:5\" toggle   # Toggle by file:line reference\nobsidian task daily line=3 status=\"/\"       # Set custom status"
      },
      {
        "title": "Tags & Properties",
        "body": "# Tags\nobsidian tags all counts                    # All tags with counts\nobsidian tags all counts sort=count         # Sorted by frequency\nobsidian tags file=Note                     # Tags in specific file\nobsidian tags total                         # Total tag count\nobsidian tag name=project verbose           # Tag details with file list\nobsidian tag name=project total             # Count of files with tag\n\n# Properties (frontmatter)\nobsidian properties all counts              # All properties with counts\nobsidian properties all counts sort=count   # Sorted by frequency\nobsidian properties file=Note               # Properties of specific file\nobsidian properties name=status             # Files with specific property\nobsidian properties format=yaml             # YAML output\nobsidian properties format=tsv              # TSV output\nobsidian property:read name=status file=Note       # Read a property value\nobsidian property:set name=status value=done file=Note  # Set a property\nobsidian property:set name=due value=\"2026-03-01\" type=date file=Note  # Set with type\nobsidian property:remove name=status file=Note     # Remove a property\n\n# Aliases\nobsidian aliases                            # List all aliases in vault\nobsidian aliases all                        # Include files without aliases\nobsidian aliases file=Note                  # Aliases for specific file\nobsidian aliases total                      # Count of aliases\nobsidian aliases verbose                    # With file paths"
      },
      {
        "title": "Links & Structure",
        "body": "obsidian backlinks file=Note                # Files linking to Note\nobsidian backlinks file=Note counts         # With link counts\nobsidian backlinks file=Note total          # Count of backlinks\nobsidian links file=Note                    # Outgoing links from Note\nobsidian links file=Note total              # Count of outgoing links\nobsidian orphans                            # Files with no incoming links\nobsidian orphans total                      # Count of orphans\nobsidian orphans all                        # Include non-markdown files\nobsidian deadends                           # Files with no outgoing links\nobsidian deadends total                     # Count of deadends\nobsidian unresolved                         # Broken/unresolved links\nobsidian unresolved total                   # Count of unresolved\nobsidian unresolved counts                  # With reference counts\nobsidian unresolved verbose                 # With source file details\nobsidian outline file=Note                  # Headings tree\nobsidian outline file=Note format=md        # Headings as markdown\nobsidian outline file=Note total            # Count of headings"
      },
      {
        "title": "Vault Info",
        "body": "obsidian files total                        # File count\nobsidian files folder=\"Work\" ext=md         # Filter by folder and extension\nobsidian folders                            # List all folders\nobsidian folders total                      # Folder count\nobsidian folders folder=\"Work\"              # Subfolders of path\nobsidian folder path=\"Work\" info=size       # Folder size in bytes\nobsidian folder path=\"Work\" info=files      # File count in folder\nobsidian folder path=\"Work\" info=folders    # Subfolder count"
      },
      {
        "title": "Bookmarks",
        "body": "obsidian bookmarks                          # List all bookmarks\nobsidian bookmarks total                    # Count of bookmarks\nobsidian bookmarks verbose                  # With details\nobsidian bookmark file=\"Work/note.md\"       # Bookmark a file\nobsidian bookmark file=\"note.md\" subpath=\"#heading\"  # Bookmark a heading\nobsidian bookmark folder=\"Work\"             # Bookmark a folder\nobsidian bookmark search=\"TODO\"             # Bookmark a search query\nobsidian bookmark url=\"https://example.com\" title=\"Example\"  # Bookmark a URL"
      },
      {
        "title": "Bases (Database Views)",
        "body": "obsidian bases                              # List all base files\nobsidian base:views                         # List views in current base\nobsidian base:query file=MyBase             # Query base, default format\nobsidian base:query file=MyBase format=json # JSON output\nobsidian base:query file=MyBase format=csv  # CSV output\nobsidian base:query file=MyBase format=tsv  # TSV output\nobsidian base:query file=MyBase format=md   # Markdown table\nobsidian base:query file=MyBase format=paths  # Just file paths\nobsidian base:query file=MyBase view=\"View Name\"  # Query specific view\nobsidian base:create name=\"New Item\"        # Create item in current base view\nobsidian base:create content=\"text\" silent  # Create silently"
      },
      {
        "title": "Templates",
        "body": "obsidian templates                          # List available templates\nobsidian templates total                    # Count of templates\nobsidian template:read name=Daily           # Read template content\nobsidian template:read name=Daily resolve   # Read with variables resolved\nobsidian template:read name=Daily resolve title=\"My Note\"  # Resolve with title\nobsidian template:insert name=Daily         # Insert template into active file"
      },
      {
        "title": "Commands & Hotkeys",
        "body": "obsidian commands                           # List all command IDs\nobsidian commands filter=\"editor\"           # Filter by prefix\nobsidian command id=app:open-settings       # Execute a command\nobsidian hotkeys                            # List assigned hotkeys\nobsidian hotkeys all                        # Include unassigned\nobsidian hotkeys total                      # Count of hotkeys\nobsidian hotkeys verbose                    # With command details\nobsidian hotkey id=app:open-settings        # Hotkey for specific command\nobsidian hotkey id=app:open-settings verbose # With full details"
      },
      {
        "title": "Tabs & Workspaces",
        "body": "# Tabs\nobsidian tabs                               # List open tabs\nobsidian tabs ids                           # With tab IDs\nobsidian tab:open                           # Open new empty tab\nobsidian tab:open file=\"Work/note.md\"       # Open file in new tab\nobsidian tab:open group=2                   # Open in specific tab group\n\n# Workspaces\nobsidian workspaces                         # List saved workspaces\nobsidian workspaces total                   # Count of workspaces\nobsidian workspace                          # Show current workspace tree\nobsidian workspace ids                      # With element IDs\nobsidian workspace:save name=\"coding\"       # Save current layout\nobsidian workspace:load name=\"coding\"       # Load saved workspace\nobsidian workspace:delete name=\"old\"        # Delete saved workspace"
      },
      {
        "title": "History & Diff (File Recovery)",
        "body": "obsidian history file=Note                  # List version history for file\nobsidian history:list                       # List all files with history\nobsidian history:read file=Note             # Read latest history version\nobsidian history:read file=Note version=3   # Read specific version\nobsidian history:restore file=Note version=3  # Restore a version\nobsidian history:open file=Note             # Open file recovery UI\nobsidian diff file=Note                     # List/diff local versions\nobsidian diff file=Note from=1 to=3         # Diff between versions\nobsidian diff file=Note filter=local        # Local versions only\nobsidian diff file=Note filter=sync         # Sync versions only"
      },
      {
        "title": "Sync (Obsidian Sync)",
        "body": "obsidian sync:status                        # Show sync status\nobsidian sync on                            # Resume sync\nobsidian sync off                           # Pause sync\nobsidian sync:history file=Note             # Sync version history\nobsidian sync:history file=Note total       # Count of sync versions\nobsidian sync:read file=Note version=2      # Read a sync version\nobsidian sync:restore file=Note version=2   # Restore a sync version\nobsidian sync:deleted                       # List files deleted in sync\nobsidian sync:deleted total                 # Count of deleted files\nobsidian sync:open file=Note               # Open sync history UI"
      },
      {
        "title": "Publish (Obsidian Publish)",
        "body": "obsidian publish:site                       # Show publish site info\nobsidian publish:status                     # List all publish changes\nobsidian publish:status new                 # New files to publish\nobsidian publish:status changed             # Changed files\nobsidian publish:status deleted             # Deleted files\nobsidian publish:status total               # Count of changes\nobsidian publish:list                       # List published files\nobsidian publish:list total                 # Count of published files\nobsidian publish:add file=Note              # Publish a file\nobsidian publish:add changed                # Publish all changed files\nobsidian publish:remove file=Note           # Unpublish a file\nobsidian publish:open file=Note             # Open on published site"
      },
      {
        "title": "Themes & CSS Snippets",
        "body": "# Themes\nobsidian theme                              # Show active theme\nobsidian theme name=\"Minimal\"               # Get theme info\nobsidian themes                             # List installed themes\nobsidian themes versions                    # With version numbers\nobsidian theme:set name=\"Minimal\"           # Set active theme\nobsidian theme:install name=\"Minimal\"       # Install community theme\nobsidian theme:install name=\"Minimal\" enable  # Install and activate\nobsidian theme:uninstall name=\"Minimal\"     # Uninstall theme\n\n# CSS Snippets\nobsidian snippets                           # List installed snippets\nobsidian snippets:enabled                   # List enabled snippets\nobsidian snippet:enable name=\"custom\"       # Enable a snippet\nobsidian snippet:disable name=\"custom\"      # Disable a snippet"
      },
      {
        "title": "Plugins",
        "body": "obsidian plugins                            # List all installed\nobsidian plugins filter=core                # Core plugins only\nobsidian plugins filter=community           # Community plugins only\nobsidian plugins versions                   # With version numbers\nobsidian plugins:enabled                    # List enabled plugins\nobsidian plugins:enabled filter=community versions  # Enabled community with versions\nobsidian plugins:restrict                   # Check restricted mode status\nobsidian plugins:restrict on                # Enable restricted mode\nobsidian plugins:restrict off               # Disable restricted mode\nobsidian plugin id=dataview                 # Get plugin info\nobsidian plugin:enable id=dataview          # Enable plugin\nobsidian plugin:disable id=dataview         # Disable plugin\nobsidian plugin:install id=dataview         # Install community plugin\nobsidian plugin:install id=dataview enable  # Install and enable\nobsidian plugin:uninstall id=dataview       # Uninstall community plugin\nobsidian plugin:reload id=my-plugin         # Reload plugin (dev)"
      },
      {
        "title": "Web Viewer",
        "body": "obsidian web url=\"https://example.com\"      # Open URL in web viewer\nobsidian web url=\"https://example.com\" newtab  # Open in new tab"
      },
      {
        "title": "Developer Tools",
        "body": "# JavaScript evaluation\nobsidian eval code=\"app.vault.getFiles().length\"  # Run JS in Obsidian context\n\n# Screenshots\nobsidian dev:screenshot                     # Screenshot to default path\nobsidian dev:screenshot path=screenshot.png # Screenshot to file\n\n# DevTools\nobsidian devtools                           # Toggle Electron devtools\n\n# Console & Errors (requires dev:debug on)\nobsidian dev:debug on                       # Attach CDP debugger (required for console)\nobsidian dev:debug off                      # Detach debugger\nobsidian dev:console                        # Show captured console messages\nobsidian dev:console limit=10               # Last 10 messages\nobsidian dev:console level=error            # Filter by level (log|warn|error|info|debug)\nobsidian dev:console clear                  # Clear captured messages\nobsidian dev:errors                         # Show captured JS errors\nobsidian dev:errors clear                   # Clear errors\n\n# DOM inspection\nobsidian dev:dom selector=\".workspace\"      # Query DOM elements\nobsidian dev:dom selector=\".nav-file\" total # Count matching elements\nobsidian dev:dom selector=\".nav-file\" text  # Get text content\nobsidian dev:dom selector=\".nav-file\" inner # Get innerHTML\nobsidian dev:dom selector=\".nav-file\" all   # All matches\nobsidian dev:dom selector=\"h1\" attr=class   # Get attribute\nobsidian dev:dom selector=\"h1\" css=color    # Get CSS property\n\n# CSS inspection\nobsidian dev:css selector=\".workspace\"      # Inspect CSS with source locations\nobsidian dev:css selector=\".workspace\" prop=background  # Specific property\n\n# Chrome DevTools Protocol\nobsidian dev:cdp method=\"Page.getLayoutMetrics\"  # Raw CDP command\nobsidian dev:cdp method=\"Runtime.evaluate\" params='{\"expression\":\"1+1\"}'\n\n# Mobile emulation\nobsidian dev:mobile on                      # Enable mobile emulation\nobsidian dev:mobile off                     # Disable mobile emulation"
      },
      {
        "title": "Multi-Vault",
        "body": "obsidian vaults                             # List known vaults\nobsidian vaults verbose                     # With paths\nobsidian vaults total                       # Count of vaults\nobsidian vault=Notes daily                  # Target specific vault\nobsidian vault=Notes search query=\"test\"    # Search in specific vault"
      },
      {
        "title": "Parameter Syntax",
        "body": "param=value for parameters (quote spaces: content=\"Hello world\")\nBare words for flags: obsidian tasks daily todo verbose\nMultiline: use \\n for newline, \\t for tab\nfile=<name> resolves like wikilinks (name only, no path/extension needed)\npath=<path> requires exact path from vault root\nvault=<name> must be the FIRST parameter to target a specific vault"
      },
      {
        "title": "Targeting Vaults",
        "body": "If CWD is inside a vault, that vault is used\nOtherwise, the active vault is used\nUse vault=<name> as FIRST parameter to target a specific vault"
      },
      {
        "title": "Troubleshooting",
        "body": "\"Cannot connect\": Ensure Obsidian is running and CLI is enabled in Settings > General.\n\"Command not found\": Ensure the obsidian binary is in your PATH.\nLinux IPC issues: If running headless or as a service, ensure the IPC socket is accessible (no PrivateTmp, correct user context).\nElectron flag conflicts (Linux): Use a wrapper script that omits electron-flags.conf for CLI invocations."
      },
      {
        "title": "Notes",
        "body": "CLI connects to running Obsidian via IPC singleton lock\nFor non-interactive use (scripts/cron), ensure Obsidian is running first\nmove requires the full target path including .md extension\nfolders can be slow on large vaults (19k+ files)\ndev:console requires dev:debug on to be run first"
      }
    ],
    "body": "Obsidian CLI (Official, v1.12+)\n\nThe official Obsidian CLI connects to a running Obsidian instance via IPC. Requires Obsidian 1.12+ with CLI enabled in Settings > General.\n\nPrerequisites\nObsidian 1.12+ installed and running\nCLI enabled: Settings > General > Enable CLI\nThe obsidian binary must be in your PATH\n\nImportant: Obsidian must be running for CLI commands to work. The CLI communicates with the running instance via IPC.\n\nPlatform Notes\nmacOS/Windows: The Obsidian installer typically places the CLI binary in PATH automatically.\nLinux: You may need a wrapper script to avoid Electron flag injection that breaks CLI arg parsing. Ensure your wrapper is in PATH before the system obsidian binary. If running as a service, ensure PrivateTmp=false for IPC to work.\nComplete Command Reference\nBasics\nobsidian version                            # Show Obsidian version\nobsidian help                               # List all available commands\nobsidian vault                              # Show vault info (name, path, files, size)\nobsidian vault info=name                    # Just vault name\nobsidian vault info=path                    # Just vault path\nobsidian reload                             # Reload the vault\nobsidian restart                            # Restart the app\n\nDaily Notes\nobsidian daily                              # Open today's daily note\nobsidian daily silent                       # Open without focusing\nobsidian daily:read                         # Read daily note contents\nobsidian daily:append content=\"- [ ] Task\"  # Append to daily note\nobsidian daily:prepend content=\"# Header\"   # Prepend to daily note\nobsidian daily paneType=tab                 # Open in new tab (tab|split|window)\n\nFiles\nobsidian read file=Recipe                   # Read by name (wikilink resolution)\nobsidian read path=\"Work/notes.md\"          # Read by exact path\nobsidian file file=Recipe                   # Show file info (path, size, dates)\nobsidian create name=Note content=\"Hello\"   # Create a new note\nobsidian create name=Note template=Travel   # Create from template\nobsidian create path=\"Work/note.md\" content=\"text\"  # Create at exact path\nobsidian create name=Note overwrite         # Overwrite if exists\nobsidian create name=Note silent newtab     # Create silently in new tab\nobsidian open file=Recipe                   # Open in Obsidian\nobsidian open file=Recipe newtab            # Open in new tab\nobsidian delete file=Old                    # Delete (to trash)\nobsidian delete file=Old permanent          # Delete permanently\nobsidian move file=Old to=\"Archive/Old.md\"  # Move/rename (include .md in target)\nobsidian append file=Log content=\"Entry\"    # Append to file\nobsidian append file=Log content=\"text\" inline  # Append inline (no newline)\nobsidian prepend file=Log content=\"Header\"  # Prepend to file\nobsidian unique name=\"Meeting\" content=\"notes\"  # Create note with unique timestamp\nobsidian wordcount file=Note                # Word and character count\nobsidian wordcount file=Note words          # Words only\nobsidian wordcount file=Note characters     # Characters only\nobsidian random                             # Open a random note\nobsidian random:read                        # Read a random note\nobsidian random folder=\"Work\"               # Random note from folder\nobsidian recents                            # List recently opened files\nobsidian recents total                      # Count of recent files\n\nSearch\nobsidian search query=\"meeting notes\"               # Search vault\nobsidian search query=\"TODO\" matches                 # Show match context\nobsidian search query=\"project\" path=\"Work\" limit=10 # Scoped search\nobsidian search query=\"test\" format=json             # JSON output\nobsidian search query=\"Bug\" case                     # Case-sensitive search\nobsidian search query=\"error\" total                  # Count matches only\nobsidian search:open query=\"TODO\"                    # Open search view in Obsidian\n\nTasks\nobsidian tasks daily                        # Tasks from daily note\nobsidian tasks daily todo                   # Incomplete daily tasks\nobsidian tasks daily done                   # Completed daily tasks\nobsidian tasks all todo                     # All incomplete tasks in vault\nobsidian tasks file=Recipe done             # Completed tasks in file\nobsidian tasks verbose                      # Tasks with file paths + line numbers\nobsidian tasks total                        # Count of tasks\nobsidian tasks status=\"/\"                   # Tasks with custom status character\nobsidian task daily line=3 toggle           # Toggle task completion\nobsidian task daily line=3 done             # Mark task done\nobsidian task daily line=3 todo             # Mark task incomplete\nobsidian task ref=\"Work/todo.md:5\" toggle   # Toggle by file:line reference\nobsidian task daily line=3 status=\"/\"       # Set custom status\n\nTags & Properties\n# Tags\nobsidian tags all counts                    # All tags with counts\nobsidian tags all counts sort=count         # Sorted by frequency\nobsidian tags file=Note                     # Tags in specific file\nobsidian tags total                         # Total tag count\nobsidian tag name=project verbose           # Tag details with file list\nobsidian tag name=project total             # Count of files with tag\n\n# Properties (frontmatter)\nobsidian properties all counts              # All properties with counts\nobsidian properties all counts sort=count   # Sorted by frequency\nobsidian properties file=Note               # Properties of specific file\nobsidian properties name=status             # Files with specific property\nobsidian properties format=yaml             # YAML output\nobsidian properties format=tsv              # TSV output\nobsidian property:read name=status file=Note       # Read a property value\nobsidian property:set name=status value=done file=Note  # Set a property\nobsidian property:set name=due value=\"2026-03-01\" type=date file=Note  # Set with type\nobsidian property:remove name=status file=Note     # Remove a property\n\n# Aliases\nobsidian aliases                            # List all aliases in vault\nobsidian aliases all                        # Include files without aliases\nobsidian aliases file=Note                  # Aliases for specific file\nobsidian aliases total                      # Count of aliases\nobsidian aliases verbose                    # With file paths\n\nLinks & Structure\nobsidian backlinks file=Note                # Files linking to Note\nobsidian backlinks file=Note counts         # With link counts\nobsidian backlinks file=Note total          # Count of backlinks\nobsidian links file=Note                    # Outgoing links from Note\nobsidian links file=Note total              # Count of outgoing links\nobsidian orphans                            # Files with no incoming links\nobsidian orphans total                      # Count of orphans\nobsidian orphans all                        # Include non-markdown files\nobsidian deadends                           # Files with no outgoing links\nobsidian deadends total                     # Count of deadends\nobsidian unresolved                         # Broken/unresolved links\nobsidian unresolved total                   # Count of unresolved\nobsidian unresolved counts                  # With reference counts\nobsidian unresolved verbose                 # With source file details\nobsidian outline file=Note                  # Headings tree\nobsidian outline file=Note format=md        # Headings as markdown\nobsidian outline file=Note total            # Count of headings\n\nVault Info\nobsidian files total                        # File count\nobsidian files folder=\"Work\" ext=md         # Filter by folder and extension\nobsidian folders                            # List all folders\nobsidian folders total                      # Folder count\nobsidian folders folder=\"Work\"              # Subfolders of path\nobsidian folder path=\"Work\" info=size       # Folder size in bytes\nobsidian folder path=\"Work\" info=files      # File count in folder\nobsidian folder path=\"Work\" info=folders    # Subfolder count\n\nBookmarks\nobsidian bookmarks                          # List all bookmarks\nobsidian bookmarks total                    # Count of bookmarks\nobsidian bookmarks verbose                  # With details\nobsidian bookmark file=\"Work/note.md\"       # Bookmark a file\nobsidian bookmark file=\"note.md\" subpath=\"#heading\"  # Bookmark a heading\nobsidian bookmark folder=\"Work\"             # Bookmark a folder\nobsidian bookmark search=\"TODO\"             # Bookmark a search query\nobsidian bookmark url=\"https://example.com\" title=\"Example\"  # Bookmark a URL\n\nBases (Database Views)\nobsidian bases                              # List all base files\nobsidian base:views                         # List views in current base\nobsidian base:query file=MyBase             # Query base, default format\nobsidian base:query file=MyBase format=json # JSON output\nobsidian base:query file=MyBase format=csv  # CSV output\nobsidian base:query file=MyBase format=tsv  # TSV output\nobsidian base:query file=MyBase format=md   # Markdown table\nobsidian base:query file=MyBase format=paths  # Just file paths\nobsidian base:query file=MyBase view=\"View Name\"  # Query specific view\nobsidian base:create name=\"New Item\"        # Create item in current base view\nobsidian base:create content=\"text\" silent  # Create silently\n\nTemplates\nobsidian templates                          # List available templates\nobsidian templates total                    # Count of templates\nobsidian template:read name=Daily           # Read template content\nobsidian template:read name=Daily resolve   # Read with variables resolved\nobsidian template:read name=Daily resolve title=\"My Note\"  # Resolve with title\nobsidian template:insert name=Daily         # Insert template into active file\n\nCommands & Hotkeys\nobsidian commands                           # List all command IDs\nobsidian commands filter=\"editor\"           # Filter by prefix\nobsidian command id=app:open-settings       # Execute a command\nobsidian hotkeys                            # List assigned hotkeys\nobsidian hotkeys all                        # Include unassigned\nobsidian hotkeys total                      # Count of hotkeys\nobsidian hotkeys verbose                    # With command details\nobsidian hotkey id=app:open-settings        # Hotkey for specific command\nobsidian hotkey id=app:open-settings verbose # With full details\n\nTabs & Workspaces\n# Tabs\nobsidian tabs                               # List open tabs\nobsidian tabs ids                           # With tab IDs\nobsidian tab:open                           # Open new empty tab\nobsidian tab:open file=\"Work/note.md\"       # Open file in new tab\nobsidian tab:open group=2                   # Open in specific tab group\n\n# Workspaces\nobsidian workspaces                         # List saved workspaces\nobsidian workspaces total                   # Count of workspaces\nobsidian workspace                          # Show current workspace tree\nobsidian workspace ids                      # With element IDs\nobsidian workspace:save name=\"coding\"       # Save current layout\nobsidian workspace:load name=\"coding\"       # Load saved workspace\nobsidian workspace:delete name=\"old\"        # Delete saved workspace\n\nHistory & Diff (File Recovery)\nobsidian history file=Note                  # List version history for file\nobsidian history:list                       # List all files with history\nobsidian history:read file=Note             # Read latest history version\nobsidian history:read file=Note version=3   # Read specific version\nobsidian history:restore file=Note version=3  # Restore a version\nobsidian history:open file=Note             # Open file recovery UI\nobsidian diff file=Note                     # List/diff local versions\nobsidian diff file=Note from=1 to=3         # Diff between versions\nobsidian diff file=Note filter=local        # Local versions only\nobsidian diff file=Note filter=sync         # Sync versions only\n\nSync (Obsidian Sync)\nobsidian sync:status                        # Show sync status\nobsidian sync on                            # Resume sync\nobsidian sync off                           # Pause sync\nobsidian sync:history file=Note             # Sync version history\nobsidian sync:history file=Note total       # Count of sync versions\nobsidian sync:read file=Note version=2      # Read a sync version\nobsidian sync:restore file=Note version=2   # Restore a sync version\nobsidian sync:deleted                       # List files deleted in sync\nobsidian sync:deleted total                 # Count of deleted files\nobsidian sync:open file=Note               # Open sync history UI\n\nPublish (Obsidian Publish)\nobsidian publish:site                       # Show publish site info\nobsidian publish:status                     # List all publish changes\nobsidian publish:status new                 # New files to publish\nobsidian publish:status changed             # Changed files\nobsidian publish:status deleted             # Deleted files\nobsidian publish:status total               # Count of changes\nobsidian publish:list                       # List published files\nobsidian publish:list total                 # Count of published files\nobsidian publish:add file=Note              # Publish a file\nobsidian publish:add changed                # Publish all changed files\nobsidian publish:remove file=Note           # Unpublish a file\nobsidian publish:open file=Note             # Open on published site\n\nThemes & CSS Snippets\n# Themes\nobsidian theme                              # Show active theme\nobsidian theme name=\"Minimal\"               # Get theme info\nobsidian themes                             # List installed themes\nobsidian themes versions                    # With version numbers\nobsidian theme:set name=\"Minimal\"           # Set active theme\nobsidian theme:install name=\"Minimal\"       # Install community theme\nobsidian theme:install name=\"Minimal\" enable  # Install and activate\nobsidian theme:uninstall name=\"Minimal\"     # Uninstall theme\n\n# CSS Snippets\nobsidian snippets                           # List installed snippets\nobsidian snippets:enabled                   # List enabled snippets\nobsidian snippet:enable name=\"custom\"       # Enable a snippet\nobsidian snippet:disable name=\"custom\"      # Disable a snippet\n\nPlugins\nobsidian plugins                            # List all installed\nobsidian plugins filter=core                # Core plugins only\nobsidian plugins filter=community           # Community plugins only\nobsidian plugins versions                   # With version numbers\nobsidian plugins:enabled                    # List enabled plugins\nobsidian plugins:enabled filter=community versions  # Enabled community with versions\nobsidian plugins:restrict                   # Check restricted mode status\nobsidian plugins:restrict on                # Enable restricted mode\nobsidian plugins:restrict off               # Disable restricted mode\nobsidian plugin id=dataview                 # Get plugin info\nobsidian plugin:enable id=dataview          # Enable plugin\nobsidian plugin:disable id=dataview         # Disable plugin\nobsidian plugin:install id=dataview         # Install community plugin\nobsidian plugin:install id=dataview enable  # Install and enable\nobsidian plugin:uninstall id=dataview       # Uninstall community plugin\nobsidian plugin:reload id=my-plugin         # Reload plugin (dev)\n\nWeb Viewer\nobsidian web url=\"https://example.com\"      # Open URL in web viewer\nobsidian web url=\"https://example.com\" newtab  # Open in new tab\n\nDeveloper Tools\n# JavaScript evaluation\nobsidian eval code=\"app.vault.getFiles().length\"  # Run JS in Obsidian context\n\n# Screenshots\nobsidian dev:screenshot                     # Screenshot to default path\nobsidian dev:screenshot path=screenshot.png # Screenshot to file\n\n# DevTools\nobsidian devtools                           # Toggle Electron devtools\n\n# Console & Errors (requires dev:debug on)\nobsidian dev:debug on                       # Attach CDP debugger (required for console)\nobsidian dev:debug off                      # Detach debugger\nobsidian dev:console                        # Show captured console messages\nobsidian dev:console limit=10               # Last 10 messages\nobsidian dev:console level=error            # Filter by level (log|warn|error|info|debug)\nobsidian dev:console clear                  # Clear captured messages\nobsidian dev:errors                         # Show captured JS errors\nobsidian dev:errors clear                   # Clear errors\n\n# DOM inspection\nobsidian dev:dom selector=\".workspace\"      # Query DOM elements\nobsidian dev:dom selector=\".nav-file\" total # Count matching elements\nobsidian dev:dom selector=\".nav-file\" text  # Get text content\nobsidian dev:dom selector=\".nav-file\" inner # Get innerHTML\nobsidian dev:dom selector=\".nav-file\" all   # All matches\nobsidian dev:dom selector=\"h1\" attr=class   # Get attribute\nobsidian dev:dom selector=\"h1\" css=color    # Get CSS property\n\n# CSS inspection\nobsidian dev:css selector=\".workspace\"      # Inspect CSS with source locations\nobsidian dev:css selector=\".workspace\" prop=background  # Specific property\n\n# Chrome DevTools Protocol\nobsidian dev:cdp method=\"Page.getLayoutMetrics\"  # Raw CDP command\nobsidian dev:cdp method=\"Runtime.evaluate\" params='{\"expression\":\"1+1\"}'\n\n# Mobile emulation\nobsidian dev:mobile on                      # Enable mobile emulation\nobsidian dev:mobile off                     # Disable mobile emulation\n\nMulti-Vault\nobsidian vaults                             # List known vaults\nobsidian vaults verbose                     # With paths\nobsidian vaults total                       # Count of vaults\nobsidian vault=Notes daily                  # Target specific vault\nobsidian vault=Notes search query=\"test\"    # Search in specific vault\n\nParameter Syntax\nparam=value for parameters (quote spaces: content=\"Hello world\")\nBare words for flags: obsidian tasks daily todo verbose\nMultiline: use \\n for newline, \\t for tab\nfile=<name> resolves like wikilinks (name only, no path/extension needed)\npath=<path> requires exact path from vault root\nvault=<name> must be the FIRST parameter to target a specific vault\nTargeting Vaults\nIf CWD is inside a vault, that vault is used\nOtherwise, the active vault is used\nUse vault=<name> as FIRST parameter to target a specific vault\nTroubleshooting\n\"Cannot connect\": Ensure Obsidian is running and CLI is enabled in Settings > General.\n\"Command not found\": Ensure the obsidian binary is in your PATH.\nLinux IPC issues: If running headless or as a service, ensure the IPC socket is accessible (no PrivateTmp, correct user context).\nElectron flag conflicts (Linux): Use a wrapper script that omits electron-flags.conf for CLI invocations.\nNotes\nCLI connects to running Obsidian via IPC singleton lock\nFor non-interactive use (scripts/cron), ensure Obsidian is running first\nmove requires the full target path including .md extension\nfolders can be slow on large vaults (19k+ files)\ndev:console requires dev:debug on to be run first"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/adolago/obsidian-cli",
    "publisherUrl": "https://clawhub.ai/adolago/obsidian-cli",
    "owner": "adolago",
    "version": "2.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/obsidian-cli",
    "downloadUrl": "https://openagent3.xyz/downloads/obsidian-cli",
    "agentUrl": "https://openagent3.xyz/skills/obsidian-cli/agent",
    "manifestUrl": "https://openagent3.xyz/skills/obsidian-cli/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/obsidian-cli/agent.md"
  }
}