Communitygithub.com

gmickel/obsidian-skill

適用於 Obsidian CLI(1.12 以上版本)的代理技能。可在 Obsidian 保管庫中讀取、建立、搜尋和整理筆記。

obsidian-skill 是什麼?

此技能為 AI 代理提供與 Obsidian CLI 互動的能力,專門用於需仰賴 Obsidian 應用程式本身的行為(如索引、設定、命令註冊或開發者執行環境),而非單純的檔案操作。它會先解析並驗證使用者系統上的 Obsidian CLI 可執行檔,避免與其他同名第三方工具混淆。技能核心在於支援精確的保管庫操作,包括讀取、寫入、全文搜尋、屬性管理、每日筆記及任務查詢等。使用時務必指定目標保管庫名稱或 ID,並保留使用者的會話狀態,禁止觸發可能中斷代理工作階段的操作(如重新載入或關閉 Obsidian)。針對較複雜的功能,此技能亦參照數個專門的參考指南,涵蓋筆記操作、搜尋與元資料、每日筆記/任務/模板,以及保管庫管理與開發工具。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add gmickel/obsidian-skill

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

Obsidian CLI

對於需要依賴 Obsidian 應用程式本身的行為(如索引、設定、命令註冊或開發者執行環境),請使用此 CLI。一般的檔案操作則使用標準的檔案系統工具。

解析與探測 CLI

切勿假設只存在一個可執行檔名稱。Obsidian 的註冊和打包方式會因平台與版本而異,且無關的第三方二進制檔可能使用相同名稱。僅在候選程式的 version 探測成功時,才選用它。

在 macOS/Linux 上:

resolve_obsidian_cli() {
  local candidate
  for candidate in \
    "${COPILOT_OBSIDIAN_CLI:-}" \
    /Applications/Obsidian.app/Contents/MacOS/obsidian-cli \
    "$(command -v obsidian 2>/dev/null || true)" \
    "$(command -v obsidian-cli 2>/dev/null || true)"
  do
    [[ -n "$candidate" && -x "$candidate" ]] || continue
    if "$candidate" version >/dev/null 2>&1; then
      printf '%s\n' "$candidate"
      return 0
    fi
  done
  return 1
}

OBSIDIAN_CLI=$(resolve_obsidian_cli) || {
  echo "Obsidian CLI 不可用" >&2
  exit 1
}
"$OBSIDIAN_CLI" version

在 PowerShell 上:

$candidates = @(
  $env:COPILOT_OBSIDIAN_CLI,
  (Get-Command obsidian -ErrorAction SilentlyContinue).Source,
  (Get-Command obsidian-cli -ErrorAction SilentlyContinue).Source
) | Where-Object { $_ }

$OBSIDIAN_CLI = $candidates | Where-Object {
  try { & $_ version *> $null; $LASTEXITCODE -eq 0 } catch { $false }
} | Select-Object -First 1

if (-not $OBSIDIAN_CLI) { throw "Obsidian CLI 不可用" }
& $OBSIDIAN_CLI version

如果探測失敗,請要求使用者開啟相容的 Obsidian 版本,啟用 設定 > 一般 > 命令列介面,完成註冊,然後重新啟動終端機。請勿在未經使用者明確同意下安裝 Obsidian、修改 PATH 或註冊 CLI。

在所有參考範例中,請使用已解析的可執行檔取代 obsidian:

"$OBSIDIAN_CLI" vaults
"$OBSIDIAN_CLI" help search

精確鎖定目標保管庫

只要知道目標,就應使用 vault="<名稱或ID>"。請勿在此技能中嵌入個人保管庫名稱或機器路徑。

"$OBSIDIAN_CLI" vault="<保管庫名稱>" search query="專案截止日" format=json
"$OBSIDIAN_CLI" vault="<保管庫名稱>" backlinks path="Projects/Plan.md" format=json

對於精確的保管庫相對路徑使用 path=。僅當需要 Obsidian 的 wiki 連結風格名稱解析時才使用 file=。請對包含空格或 Shell 特殊字元的值加上引號。在依賴某個語法前,請先檢視已安裝版本的即時說明:

"$OBSIDIAN_CLI" help <command>

核心操作

# 讀取與寫入
"$OBSIDIAN_CLI" vault="<保管庫名稱>" read path="Projects/Roadmap.md"
"$OBSIDIAN_CLI" vault="<保管庫名稱>" append path="Journal.md" content="- 新條目"

# 搜尋與元資料
"$OBSIDIAN_CLI" vault="<保管庫名稱>" search query="API" limit=10 format=json
"$OBSIDIAN_CLI" vault="<保管庫名稱>" properties path="Projects/Roadmap.md"

# 已設定的每日筆記與索引任務
"$OBSIDIAN_CLI" vault="<保管庫名稱>" daily:append content="- 下午2點:打電話" silent
"$OBSIDIAN_CLI" vault="<保管庫名稱>" tasks all todo

# 即時工作區
"$OBSIDIAN_CLI" vault="<保管庫名稱>" tabs ids
"$OBSIDIAN_CLI" vault="<保管庫名稱>" workspace ids

保留主機會話

切勿從代理工作階段重新載入或重新啟動 Obsidian 應用程式/視窗。切勿重新載入、停用或解除安裝託管目前代理工作階段的插件。避免執行等效的命令、JavaScript 或開發者工具操作。這些動作可能終止工作階段並遺失正在進行的工作。

在進行永久刪除、本機歷史記錄或 Sync 還原、發佈或取消發佈、安裝或移除插件/主題、變更限制模式,或執行會變更之 JavaScript/開發者呼叫前,需先取得使用者的明確意圖。優先使用可復原的操作。命令參考文件僅說明功能,並非授權進行變動。

參考指南

僅閱讀與該任務相關的指南。將其範例中的 obsidian 視為已解析的 $OBSIDIAN_CLI 可執行檔,並在已知目標時加入 vault="<名稱或ID>"。

任務參考文件
筆記操作、大綱、字數統計、唯一筆記references/note-operations.md
搜尋、標籤、屬性、反向連結、孤立筆記、未解析連結references/search-metadata.md
每日筆記、任務、範本references/daily-tasks-templates.md
保管庫、工作區、書籤、插件、主題、Sync、Publish、Bases、開發者工具references/vault-management.md

相關技能