关于 obsidian-skill
用于在任务依赖 Obsidian 正在运行的应用、索引、设置或命令注册表时操作 Obsidian CLI 的技能。它指导如何查找 CLI、指定目标知识库,并为会话保护及敏感操作设定限制。
主要功能
- 01查找并验证 CLI 可执行文件
- 02精确指定知识库与路径
- 03读取、写入、搜索并检查元数据
- 04查阅当前版本帮助与参考指南
- 05保护活动会话并限制敏感操作
适用场景
- 01在知识库中搜索或读取笔记
- 02向指定笔记追加内容
- 03检查笔记属性或反向链接
- 04确认已安装版本支持的命令
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ gmickel/ obsidian-skill --skill obsidian-skill安装后在 Claude Code 中输入/obsidian-skill确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
metadata.jsonLICENSEREADME.md.github/FUNDING.ymlreferences/daily-tasks-templates.mdsearch-metadata.mdnote-operations.mdvault-management.md详细介绍
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 unavailable" >&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 unavailable" }
& $OBSIDIAN_CLI version
如果探测失败,请让用户打开兼容版本的 Obsidian,启用 设置 > 通用 > 命令行界面,完成注册,然后重启终端。未经用户明确同意,不要安装 Obsidian、更改 PATH 或注册 CLI。
在所有参考示例中,使用已定位的可执行文件替代 obsidian:
"$OBSIDIAN_CLI" vaults
"$OBSIDIAN_CLI" help search
精确指定目标库
已知目标库时,请使用 vault="<name-or-id>"。切勿在此技能中嵌入个人库名称或机器路径。
"$OBSIDIAN_CLI" vault="<vault-name>" search query="project deadline" format=json
"$OBSIDIAN_CLI" vault="<vault-name>" backlinks path="Projects/Plan.md" format=json
使用 path= 指定精确的库内相对路径。只有在需要 Obsidian 的维基链接式名称解析时才使用 file=。包含空格或 shell 特殊字符的值需加引号。依赖当前版本未显示的语法前,请先查看实时帮助:
"$OBSIDIAN_CLI" help <command>
核心操作
# Read and write
"$OBSIDIAN_CLI" vault="<vault-name>" read path="Projects/Roadmap.md"
"$OBSIDIAN_CLI" vault="<vault-name>" append path="Journal.md" content="- New entry"
# Search and metadata
"$OBSIDIAN_CLI" vault="<vault-name>" search query="API" limit=10 format=json
"$OBSIDIAN_CLI" vault="<vault-name>" properties path="Projects/Roadmap.md"
# Configured daily note and indexed tasks
"$OBSIDIAN_CLI" vault="<vault-name>" daily:append content="- 2pm: Call" silent
"$OBSIDIAN_CLI" vault="<vault-name>" tasks all todo
# Live workspace
"$OBSIDIAN_CLI" vault="<vault-name>" tabs ids
"$OBSIDIAN_CLI" vault="<vault-name>" workspace ids
保持宿主会话
绝不要在 Agent 会话中重新加载或重启 Obsidian 应用/窗口。绝不要重新加载、禁用或卸载承载当前 Agent 会话的插件。避免执行效果相同的命令、JavaScript 或开发者工具操作。这些操作可能会终止会话并丢弃正在进行的工作。
永久删除、从本地历史记录或 Sync 恢复、发布或取消发布、安装或移除插件/主题、更改受限模式,或执行会修改数据的 JavaScript/开发者调用前,必须获得用户明确同意。优先选择可逆操作。命令参考介绍的是功能,不代表授权执行更改。
参考指南
只阅读与任务相关的指南。将指南示例中的 obsidian 视为已定位的 $OBSIDIAN_CLI 可执行文件,并在目标已知时添加 vault="<name-or-id>"。
| 任务 | 参考资料 |
|---|---|
| 笔记操作、大纲、字数统计、唯一笔记 | references/note-operations.md |
| 搜索、标签、属性、反向链接、孤立项、未解析链接 | references/search-metadata.md |
| 每日笔记、任务、模板 | references/daily-tasks-templates.md |
| 库、工作区、书签、插件、主题、Sync、Publish、Bases、开发者工具 | references/vault-management.md |