obsidian-skills
Create and edit Obsidian Flavored Markdown with wikilinks, embeds, callouts, properties, and other Obsidian-specific syntax. Use when working with .md files in Obsidian, or when the user mentions wikilinks, callouts, frontmatter, tags, embeds, or Obsidian notes.
1How It Works & Mechanism
It is not a single SKILL.md, but a collection of 6 parallel skills divided by Obsidian carrier types: one each for the three open formats (Markdown, Bases, Canvas), and one each for vault operations, web extraction, and template rendering.
"description": "Create and edit Obsidian vault files including Markdown, Bases, and Canvas. Use when working with .md, .base, or .canvas files in an Obsidian vault."
The implementation approach inlines Obsidian's format specifications directly into SKILL.md: instead of relying on the model's 'free improvisation' to write notes, it strictly follows the schemas, operator tables, and pitfall notes provided in the skills to generate valid files.
Base files use the `.base` extension and contain valid YAML.
Each format skill embeds 'validation' at the end of its workflow, requiring the model to self-check structural and reference integrity rather than treating generation as the final step.
**Validate**: Confirm all IDs are unique and all edge references resolve to existing nodes
Vault operations route through the official Obsidian CLI rather than modifying the filesystem directly—meaning it operates on an active, running Obsidian instance.
Use the `obsidian` CLI to interact with a running Obsidian instance. Requires Obsidian to be open.
The parameter/flag syntax of the CLI is explicitly defined (k=v for values, bare flags for booleans, \n and \t for multiline), reducing misoperations caused by arbitrary parameter hallucinations.
**Parameters** take a value with `=`. Quote values with spaces:
Two external single-purpose CLIs are integrated into the workflow: defuddle extracts clean Markdown from web pages, and knap batch-renders JSON/CSV into notes using templates, allowing the two to be chained via pipelines.
defuddle parse https://example.com/article --md --json \ | knap render template.md --data - -o note.md
Write operations follow an explicit 'overwrite requires authorization' contract to avoid silently destroying existing notes.
Existing files require `--overwrite`, including during a dry run.
It is distributed as a cross-host plugin/skill bundle: the README provides four deployment paths across Claude Code (/plugin marketplace), npx skills, Codex (~/.codex/skills), and OpenCode (~/.opencode/skills), advising a full repo clone rather than copying only skills/.
Do not copy only the inner `skills/` folder — clone the full repo so the directory structure is `~/.opencode/skills/obsidian-skills/skills/<skill-name>/SKILL.md`.
2Core Capabilities
3External Dependencies
| Kind | Dependency / Endpoint |
|---|---|
| cli | obsidian(官方 Obsidian CLI,需本机 Obsidian 处于运行状态) |
| cli | defuddle(npm 全局 CLI,网页正文抽取) |
| cli | knap(npm 全局 CLI,要求 Node.js 20+,模板渲染/批量生成) |
| network | 任意用户给定 URL(defuddle parse 会实际抓取该网页) |
| network | Obsidian 官方文档站(SKILL.md 中作为『最新命令清单』的指针,非运行时抓取) |
| network | JSON Canvas 规范与仓库(文档引用) |
4Recommended Governance & Evidence
- scripts/: Local script or command execution: No executable assets inside the repository (no .sh/.py/.js/.mjs among the 13 tracked files). External CLIs executed at runtime: obsidian / defuddle
- 网络端点: Declared external network access: defuddle parse <url>: Fetches arbitrary user-specified web pages and extracts main content (core purpose of this skill; destination = user-supplied URL).
- 本地工作目录: File read/write and artifact output: obsidian create / append / property:set / daily:append writes directly to target vault notes (supports silent operations)
5Second-Pass Verification
- [ok] skill.path 定位(任务表标『待定位』);合集条目指向哪个具体 skill — 本条目展示名『Obsidian Skills』对应的是 6 个 skill 的合集,仓库根无集合级 SKILL.md。skill.path 现指向其中的代表 skill:skills/obsidian-markdown —— 它是 README 技能表首项、覆盖面最广(Obsidian Flavored Markdown,含 wikilinks/embeds/callouts/properties),也是『Claude Skills for Obsidian 笔记与知识管理』这一展示描述的最直接载体。其余 5 个并列 skill 为:skills/obsidian-bases(.base)、skills/json-canvas(.canvas)、skills/obsidian-cli(官方 CLI)、skills/defuddle(网页正文抽取)、skills/knap(模板渲染/批量生成);本 JSON 的 capabilities 与 internal_assets 覆盖的是全部 6 个(逐条 evidence 均指向对应子目录),analysis 亦按合集口径书写。
- [discrepancy] 官方 description 取哪一份(集合无单一 frontmatter description) — 本条目代表的是一个 6-skill 集合,仓库内不存在『集合级 frontmatter description』。meta.official_desc 因此采用 .claude-plugin/plugin.json 的 description 原文(对集合范围的官方表述),并在字段内注明口径来源与『子 skill description 见别处』。6 个子 skill 的 frontmatter description 各自原文已逐条取证(例如 knap: 'Render Markdown templates from structured data using Knap CLI...'、defuddle: 'Extract clean markdown content from web pages using Defuddle CLI...'),未被改写或合并。
- [discrepancy] official_desc 取哪一份(合集无集合级 frontmatter description) — 合集在仓库根没有集合级 SKILL.md/frontmatter description(6 个 skill 各有自己的 description)。本条目 official_desc 采用代表 skill skills/obsidian-markdown 的 frontmatter description 逐字原文(与 skill.path 指向的具体 skill 一致,满足『official_desc = SKILL.md frontmatter 原文』的取证规则);集合级口径(.claude-plugin/plugin.json 的 'Create and edit Obsidian vault files including Markdown, Bases, and Canvas. Use when working with .md, .base, or .canvas files in an Obsidian vault.')已逐字记入 internal_assets 的 plugin.json 条目说明,不丢失信息。
- [ok] 『零脚本』结论的反例搜索 — 13 个受控文件的后缀全为 .md/.json;无 .sh/.py/.js/.mjs/.ts;仓库无 .github(无 CI 引入的第三方 action)。所有可执行动作均来自外部 CLI(obsidian/defuddle/knap),它们的代码不在本仓,本仓无法审。
- [ok] 『无凭证读取』是否漏网 — 对 api_key/API_KEY/token/secret/.env/os.environ/process.env/keychain 全仓扫描零命中。obsidian CLI 依赖的是本机 Obsidian 登录/本地会话,SKILL.md 未要求读取任何 key 或 cookie。
- [ok] 网络外发清单是否有遗漏 — 出现的 http(s) 串共 3 类:① help.obsidian.md(文档指针,SKILL.md 里作为『命令清单永远最新』的说明而非抓取指令);② jsoncanvas.org / github.com/obsidianmd/jsoncanvas(规范出处);③ defuddle 示例中的 https://example.com/article 与 knap 示例(示例数据 URL)。真正的运行时抓取只有 defuddle parse <用户 URL> 一条。
- [ok] obsidian eval 的定级是否过轻 — 重新核对:`obsidian eval code="app.vault.getFiles().length"` 确为 SKILL.md 中的示例,属官方 CLI 文档化子命令;本集合既不自行注入代码也不隐藏该能力,且其作用域是本机运行中的 Obsidian(用户自己的应用)。按六档范式,red 针对『安全降级/反反爬/任意代码执行面』的自造绕过;此处是官方 CLI 功能的常规使用,故维持 yellow 并在 scripts_executed 中显式点名,让读者知情。
- [ok] 写入门禁(--dry-run / --overwrite)是真实契约还是文档口号 — knap SKILL.md 原文明确 'Use `--dry-run` to validate and list output paths without writing files. Existing files require `--overwrite`, including during a dry run.' 与 'Duplicate output names within a batch are errors even with `--overwrite`.';`-o` 的行为也写明 '`-o` creates parent directories and overwrites the destination after rendering succeeds'。均为外部 CLI 的行为描述,本仓无代码可验,属『依赖第三方 CLI 实现』。
6Verdict & Scenarios
e2fbc06a174fb6bf…