Obsidian base author
Skill 21noises/agent-skills/plugins/obsidian/skills/obsidian-base-author
Agent Skills 的插件市场(Claude Code marketplace):市场登记若干插件,每个插件自带若干通用格式的 skill,也可脱离市场手动装进任意支持 Agent Skills 的 Agent。目前主要是操作 Obsidian vault 的 obsidian 插件。
npx -y skills add 21noises/agent-skills --skill obsidian-base-authorAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
编写与修改 Obsidian Bases(`.base` 文件),为笔记建立数据库式视图,含筛选、公式、属性显示名、汇总与单个视图的布局。当前工作目录本身就是一个 Obsidian vault。当用户要新建或改动 `.base`,要给笔记做表格、卡片、列表视图,要做阅读清单、索引、仪表盘这类需求时走本 skill。它内置了 Bases 语法、函数的完整参考,以及本仓库约定的命名与单视图规则。触发示例:「给我的任务建一个表格视图」「做一个阅读清单的卡片视图」「按文件夹和标签筛出笔记列成表格」「改一下这个 base 的筛选条件」。
SKILL.md
6.7 KB, as published. Nobody here has run it
你要把一个组织需求落成一份合法、可被 Obsidian 正确渲染的 .base 文件。你不需要判断问题能不能用 base 回答、该不该为它新建 base,你要做的只是想尽一切办法创建符合查询需求的 base 文件。
前置条件
Obsidian 1.12.7 及以上,并已启用 CLI:Settings → General → Command line interface(一次性注册后会生成 obsidian 命令)。若命令报「command not found」,说明 CLI 尚未注册,请如实报告,不要改用其他工具绕开。
命令依赖 Obsidian 应用运行,但不必手动先开;首条命令会自动把它启动起来,可能略有延迟。
关键约定
- 一个
.base文件只放一个视图。 需要第二个视图就新建第二个文件。 - 文件名主体等于视图的
name字段,由「功能词加视图类型词」连写组成。 视图类型词取常用三种的中文说法(表格、卡片、列表),紧跟在功能词之后,不加点号也不加任何分隔符。例如把阅读清单做成卡片视图,存成阅读清单卡片.base,name也写「阅读清单卡片」。这样跑obsidian bases看一眼文件名就能同时认出视图的功能与类型。
由这两条推出的简化:因为只有一个视图,全局 filters 与视图级 filters 的区分失去意义,两者求值时按 AND 拼接。筛选统一写在全局 filters,单个 views 条目只管呈现,即 order、groupBy、limit、视图级 summaries,结构最干净。
工作流
- 先列出已有 base。 跑
obsidian bases列出 vault 里全部.base文件,确认目标文件名不与现有文件冲突。新建的.base一律写到 vault 根的bases目录下。这一步强制,不可跳过。 - 确认数据集与布局。 明确这一个视图要呈现哪些笔记,可按标签、文件夹、属性、日期、文件类型圈定,以及用哪种布局,可选
table、cards、list、map。 - 写
filters(统一放全局)。 用比较运算符与函数表达筛选。注意file.hasTag连带命中嵌套标签,file.inFolder连带命中子文件夹。详见references/filters-and-operators.md与references/properties-and-this.md。 - 按需写
formulas。 计算列写在这里。可能缺失的属性一律用if(prop, ...)做空值保护;两个日期相减得到的是毫秒数,类型为 number,求天数要除以86400000,小时除3600000、周除604800000,结果是数字可直接.round(),没有.days这类字段;公式间引用不得成环。详见references/type-system.md与references/functions-index.md。 - 写
properties与summaries。properties配显示名,summaries定义自定义汇总。默认汇总有 Average、Sum、Median、Earliest、Checked、Unique 等,见references/views-and-summaries.md。 - 组装那唯一的
views条目。name与文件名主体一致,填order定要显示的属性顺序、sort定行的排序,以及groupBy、limit、视图级summaries。凡是要「最近 N 篇」「某序在前」的,必须写sort,只写limit是按默认顺序截断,拿不到想要的那批。视图细节见references/views-and-summaries.md。 - 校验后写入 vault。 必须是合法 YAML;含双引号的公式整体用单引号包裹;含特殊字符的字符串加引号;
order与properties里每个formula.X都要在formulas有定义。引号规则见references/quoting-rules.md,逐项校验见references/validation-checklist.md,具体错误模式见references/下pitfall-开头的各页。 - 自检渲染结果。 跑
obsidian base:query path=bases/<文件名>.base format=md,路径即第 7 步写入的那个,看视图是否真的产出预期行。单视图无须传view=。纯写文件无法预览,这一步是唯一的事实校验。- backlinks 与 properties 引发的豁免。 若自检结果与预期不符,而这个 base 的筛选、公式或
order用到了file.backlinks或file.properties,先怀疑是这两者不随 vault 自动刷新、CLI 读到陈旧索引所致,而不是 base 文件本身有错。判据是:把对这两个属性的依赖排除后,base 在 YAML 语法与查询逻辑上都成立。满足时不要反复改 base 去追这个假错误,把这次不符判为豁免,如实告诉用户自检受索引刷新限制无法确认,并引导用户自己在 Obsidian 里打开这个.base文件查看,应用内是实时数据,以应用内结果为准。
- backlinks 与 properties 引发的豁免。 若自检结果与预期不符,而这个 base 的筛选、公式或
参考文档导航
正文细节全部下沉到 references/,按需求查下表打开对应页面:
| 需求 | 看哪一页 |
|---|---|
| 整体 YAML 形状与五大区块 | references/base-file-schema.md |
| 写筛选条件、运算符 | references/filters-and-operators.md |
属性引用、file 属性表、this | references/properties-and-this.md |
| 类型、日期算术、日期相减得毫秒数 | references/type-system.md |
| 找某个函数(速查签名) | references/functions-index.md |
| 某函数的参数语义与示例 | references/functions-detail.md |
| 视图配置、汇总、默认 summary | references/views-and-summaries.md |
| 引号该用单双引号 | references/quoting-rules.md |
| 写入前逐项校验 | references/validation-checklist.md |
| 字符串含特殊字符报 YAML 错 | references/pitfall-unquoted-special-chars.md |
| 双引号公式报 YAML 错 | references/pitfall-nested-quotes.md |
| 日期相减算不出天数 | references/pitfall-date-subtraction-no-days.md |
| 属性为空时公式崩 | references/pitfall-missing-null-guard.md |
formula.X 静默失效 | references/pitfall-undefined-formula-reference.md |
| 进行中任务表格范例 | references/example-tasks-in-progress.md |
| 阅读清单卡片范例 | references/example-reading-list.md |
| 日记索引表格范例 | references/example-daily-note-index.md |