1仕組みと動作原理
単一の SKILL.md ではなく、Obsidian の媒体タイプごとに役割分担された 6 つの並行 skill のコレクションです。3 つのオープン形式(Markdown、Bases、Canvas)に各 1 つ、vault 操作、ウェブ抽出、テンプレートレンダリングに各 1 つが割り当てられています。
"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."
実装方式として Obsidian のフォーマット仕様を SKILL.md 内にインライン展開しています。モデルが「自由な発想」でノートを書くのではなく、skill 内に示されたスキーマ、演算子表、ピットフォール説明に従って妥当なファイルを生成します。
Base files use the `.base` extension and contain valid YAML.
各フォーマット系 skill はワークフローの末尾に「検証」を組み込んでおり、生成して完了とするのではなく、構造や参照の整合性をモデル自身にセルフチェックさせます。
**Validate**: Confirm all IDs are unique and all edge references resolve to existing nodes
vault 操作はファイルシステムを直接変更するのではなく、公式の Obsidian CLI を介して行われます。そのため、起動中の Obsidian インスタンスに対して作用します。
Use the `obsidian` CLI to interact with a running Obsidian instance. Requires Obsidian to be open.
CLI の引数・フラグ構文が明示的に規定されており(値の取得は k=v、裸のフラグは真偽値、複数行は \n と \t)、モデルの適当な引数組み立てによる誤操作を抑制しています。
**Parameters** take a value with `=`. Quote values with spaces:
2 つの外部単一目的 CLI をワークフローに組み込んでいます。defuddle はウェブページをクリーンな Markdown に抽出し、knap はテンプレートを使って JSON/CSV をノートに一括レンダリングし、両者をパイプラインで連携できます。
defuddle parse https://example.com/article --md --json \ | knap render template.md --data - -o note.md
書き込み系操作には明示的な「上書きには承認が必要」という規約があり、既存ノートのサイレントな破損を防ぎます。
Existing files require `--overwrite`, including during a dry run.
配布形態はクロスホスト対応のプラグイン/スキルパッケージです。README では Claude Code(/plugin marketplace)、npx skills、Codex(~/.codex/skills)、OpenCode(~/.opencode/skills)の 4 つの配置パスを案内し、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`.
2コア機能
3外部依存関係
| 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 规范与仓库(文档引用) |
4推奨統制措置と判定根拠
- scripts/: ローカルスクリプトまたはコマンドの実行: リポジトリ内に実行可能アセットはありません(管理下の 13 ファイルに .sh/.py/.js/.mjs は含まれません)。実行時に呼び出されるのは外部 CLI です: obsidian / defuddle
- 网络端点: 外部ネットワークアクセスの宣言: defuddle parse <url>: ユーザーが指定した任意のウェブページを取得して本文を抽出します(本 skill 本来の用途であり、送信先=ユーザーが提供した URL)。
- 本地工作目录: ファイルの読み書きと成果物の出力: obsidian create / append / property:set / daily:append により対象 vault のノートを直接書き換えます(silent 実行に対応)。
5二重目の独立検証
- [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 实现』。
6結論
e2fbc06a174fb6bf…