Obsidian CLI Integration

SkillWeb & browsing

Obsidian vault integration via official CLI. Use when: capturing dev artifacts to Obsidian vault, searching vault for context, appending to daily note, managing tasks in vault. Not for: general note-taking without Obsidian (use regular files), browsing Obsidian docs (use agent-browser). Output: vault search results, captured notes, task updates.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the Obsidian CLI Integration skill

What this skill tells your AI

The instructions your AI receives, as published by sd0xdev/sd0x-harness in skills/obsidian-cli/SKILL.md and read by ahel’s review.

Trigger

  • Keywords: obsidian, vault, daily note, capture to vault, search vault, obsidian task

When NOT to Use

  • Obsidian is not installed or CLI is not enabled
  • User wants to edit markdown files directly (just use Read/Write)
  • User wants to browse Obsidian docs (use agent-browser)
  • User wants general task management without Obsidian

Prerequisites

  • Obsidian v1.12+ with CLI enabled (Settings > General > Command line interface)
  • Obsidian desktop app must be running (CLI uses IPC)

Workflow

/obsidian-cli [intent] [args]
     │
     ▼
 obsidian-preflight.sh --check
     │
     ├─ FAIL → Report issue + remediation
     │
     └─ OK → Resolve vault
              │
              ▼
         obsidian-exec.sh <intent> [args]
              │
              ├─ context → search vault, return results
              ├─ capture → write note/append to file
              ├─ daily   → append to daily note
              └─ task    → add/query tasks

Scripts

ScriptPurposeInvocation
obsidian-preflight.shDoctor + vault resolve + configbash scripts/run-skill.sh obsidian-cli obsidian-preflight.sh [--check|--vault <id>|--print-env]
obsidian-exec.shSafe intent execution with timeoutbash scripts/run-skill.sh obsidian-cli obsidian-exec.sh <intent> [args]

Preflight

# Check CLI + app + IPC readiness
bash scripts/run-skill.sh obsidian-cli obsidian-preflight.sh --check

# Set default vault
bash scripts/run-skill.sh obsidian-cli obsidian-preflight.sh --vault "My Vault"

# Print resolved env (for debugging)
bash scripts/run-skill.sh obsidian-cli obsidian-preflight.sh --print-env

Output lines:

STATUS=ok|error
VAULT=<resolved-vault-name>
OBSIDIAN_VERSION=<version>
ERROR=<message if STATUS=error>

Exec Intents

IntentArgsCLI Commands Used
context--query <q> [--limit N]obsidian search query= limit=
capture--file <path> --text <content>obsidian read path=, obsidian create path= content=, obsidian append path= content=
daily--text <content>obsidian daily:append content=
task--add <text> or --listobsidian daily:append content=, obsidian tasks daily
# Search vault for context
bash scripts/run-skill.sh obsidian-cli obsidian-exec.sh context --query "auth middleware"

# Capture a decision record
bash scripts/run-skill.sh obsidian-cli obsidian-exec.sh capture --file "dev/decisions/2026-02-28-auth.md" --text "..."

# Append to daily note
bash scripts/run-skill.sh obsidian-cli obsidian-exec.sh daily --text "- Implemented auth middleware refactor"

# Add a task
bash scripts/run-skill.sh obsidian-cli obsidian-exec.sh task --add "Review PR #42 auth changes"

Vault Resolution Policy

Deterministic precedence (first match wins):

  1. --vault <name> explicit argument
  2. OBSIDIAN_VAULT environment variable
  3. ~/.sd0x/obsidian-cli.env persisted default
  4. CLI-discovered active vault

Verification

  • obsidian-preflight.sh --check outputs STATUS=ok
  • Vault resolution returns correct vault name
  • Each intent produces expected CLI output
  • Timeout handles IPC hang gracefully (exit 124)

References

  • references/integration-patterns.md — read when planning how to integrate Obsidian into dev workflow
  • references/troubleshooting.md — read when preflight fails or commands time out

Examples

# First-time setup: check readiness and set default vault
/obsidian-cli --check
/obsidian-cli --vault "Dev Notes"

# During development: search for related notes
/obsidian-cli context --query "rate limiting implementation"

# After making a decision: capture it
/obsidian-cli capture --file "decisions/2026-02-28-rate-limit.md" --text "Decided to use sliding window..."

# End of session: log what was done
/obsidian-cli daily --text "- Completed rate limiting feature for API gateway"

Signals

GitHub stars
188
Forks
24
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
obsidian-cli-sd0xdev
Source
github.com/sd0xdev/sd0x-harness