
obsidian-skills 测试怎么写从 0 验证 3 类产物【免费下载链接】obsidian-skillsAgent skills for Obsidian. Teach your agent to use Obsidian CLI and open formats including Markdown, Bases, JSON Canvas.项目地址: https://gitcode.com/GitHub_Trending/ob/obsidian-skillsobsidian-skills 给 AI 代理装了 5 个 Obsidian 技能写 Markdown、建 Bases、画 Canvas、调 CLI、抓网页。它的产物全是文件和命令输出所以 obsidian-skills 测试可以做得很具体验产物而不是验技能。下面只讲最短路径十分钟搭环境、三类产物怎么查、五个最容易翻车的点。 先跑起来obsidian-skills 测试环境怎么搭一共三步。先拿到代码git clone https://gitcode.com/GitHub_Trending/ob/obsidian-skills再建一个空文件夹用 Obsidian 打开当成 vault这个文件夹就是你的测试库。然后准备三份样例产物一篇带 frontmatter、维基链接、标注框的笔记一个.base文件一个.canvas文件。样例可以直接抄 skills/obsidian-bases/SKILL.md 和 skills/json-canvas/references/EXAMPLES.md 里的完整例子。cli 技能依赖一个正在运行的 Obsidian所以先跑obsidian help确认命令可用跑不通的话后面所有 CLI 测试都没法进行。用到 defuddle 的话再执行npm install -g defuddle。 按产物验证而不是按技能背用例5 个技能表面不同产物只有三类。每类定死验证点用例自然就出来了。生成文本Markdown 语法怎么验skills/obsidian-markdown/SKILL.md 的产物是.md文件。判断标准就一条在 Obsidian 阅读视图打开看到什么就该是什么样。拿三个例子练手输入frontmatter 里写title和两个tags。预期属性面板显示这两项没有红色报错。判定属性面板显示无效或转灰就是引号或缩进出错。输入[[Note Name#Heading]]。预期点击跳转到对应标题。判定点不动是链接语法问题目标笔记不存在则是另一回事那是断链。输入 [!warning]标注框加行内公式$e^{i\pi}10$。预期标注框渲染出带边框的块公式正常显示。判定看到原文说明语法不对原文正确但渲染怪去查插件设置。没有 Obsidian 在手边时可以做粗验frontmatter 必须由第二个---闭合维基链接双括号必须成对。这一步能拦住大部分低级错误。结构化数据Bases 的 YAML 和 canvas 节点怎么验证.base和.canvas都能当数据解析是最适合写脚本的一类。canvas 先说。skills/json-canvas/SKILL.md 里自带一份 Validation Checklist挑最值钱的三条输入一个 3 节点 2 边的 canvas。预期所有 ID 都是 16 位十六进制且全文件唯一节点和边的 ID 放在一起数。判定解析 JSON收集全部id数量和去重数量对不上就有重复。输入一条fromNode指向不存在节点的边。预期canvas 打开但这条边消失或报错。判定拿边上的fromNode/toNode对节点的id做集合差剩下的就是悬空引用。输入text 节点里手打了换行。预期画面出现字面的\n两个字符。判定JSON 里换行应该写\n写成\\n就会被原样渲染。Bases 是 YAML 文件检查分两步先用 YAML 解析器整体解析一遍。症状displayName: Status: Active这种含冒号没加引号的字符串会直接解析失败。修法外层套双引号。再交叉引用views和order里出现的每个formula.X必须在formulas段有同名键。这条最阴险——它不报错只是那一列静默消失。命令行为输入输出怎么断言skills/obsidian-cli/SKILL.md 和 skills/defuddle/SKILL.md 跑的是命令。断言就三件事退出码是不是 0、输出符不符合预期、副作用落在哪。输入obsidian create nameTest Note content# Hello silent。预期vault 里多出文件窗口不跳转。判定cat文件比对内容同时看退出码。输入obsidian property:set namestatus valuedone fileTest Note。预期frontmatter 里出现status: done。判定grep 一下没出现就先查file参数有没有解析到笔记它按维基链接方式解析只给名字就行。输入defuddle parse url --md。预期纯 Markdown导航和广告块被剥掉。判定人工确认标题层级完整、没有残留 HTML 大块defuddle parse url -p title应单行输出页面标题。⚠️ 最容易翻车的五个故障模式按出现频率排重复节点 ID。症状canvas 能打开但一个节点盖住另一个。定位ID 要求 16 位十六进制手写或复制旧节点很容易撞号跑一次去重计数就能发现。悬空边引用。症状边不显示或打开时报错。定位悬空的那个 ID 通常是编辑残留节点删了边没删集合差一算就露出来。公式不合法。症状Bases 某列为空或整个视图不渲染。定位先查formula.X有没有定义再查 Duration两个日期相减得到的是 Duration 类型要先取.days再调.round()直接 round 就报错。特殊字符转义。两处重灾区JSON 文本节点的\\n会渲染成字面字符YAML 里含:、#、{的字符串必须加引号。症状都是渲染出来了但不像肉眼难找解析器秒抓。环境权限。obsidian CLI 要求 Obsidian 处于打开状态没打开时命令静默返回空defuddle 遇到拿不到的页面也是空输出。定位先跑obsidian help和defuddle parse url -p domain确认环境活着再谈语法。什么时候该上自动化分三步走。先手动把三类产物各验一轮确认判定标准本身没写错。同一个检查重复跑过三次就把它写成脚本——canvas 的 ID 查重、YAML 解析都是纯文件操作不依赖 Obsidian最容易脚本化。脚本本地稳定后再挂到 CI。cli 和 defuddle 依赖 Obsidian 实例或网络留在本地半自动跑就行别硬塞进 CI。最小 CI 配置长这样验证脚本放进scripts/目录即可name: validate-skills on: [push] jobs: check: runs-on: ubuntu-latest steps: - uses: actions/checkoutv4 - run: python scripts/validate_canvas.py vault/**/*.canvas - run: python scripts/validate_base.py vault/**/*.base✅ 上手清单克隆仓库建一个测试 vault 并用 Obsidian 打开准备三份样例产物一篇笔记、一个.base、一个.canvas跑obsidian help确认 CLI 可用阅读视图过目笔记frontmatter、维基链接、标注框解析 canvas JSONID 唯一、边引用全部存在.base过一遍 YAML 解析器确认每个formula.X都有定义obsidian create和property:set各跑一次确认文件和属性都变了defuddle 的--md输出与-p title/description/domain三个字段各验一次三件事现在就能做先建三份样例产物手动验完一轮再谈用例把 skills/json-canvas/SKILL.md 里的验证清单先脚本化它最机械也最抓错命令跑不通时先查环境再查语法顺序别反。【免费下载链接】obsidian-skillsAgent skills for Obsidian. Teach your agent to use Obsidian CLI and open formats including Markdown, Bases, JSON Canvas.项目地址: https://gitcode.com/GitHub_Trending/ob/obsidian-skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考