关于 obsidian-bases
obsidian-bases 是用于解答 Obsidian Bases 设计与语法问题,并处理 `.base` 编辑请求的技能。它提供精简的 YAML 参考;编辑须经预览和检查,再通过事务应用。
主要功能
- 01只读设计与语法指导
- 02精简的 `.base` YAML 参考
- 03筛选器、公式和视图指导
- 04通过审核事务编辑
适用场景
- 01为笔记集合设计筛选条件
- 02构建公式和视图布局
- 03审核 `.base` 文件编辑请求
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ agricidaniel/ claude-obsidian --skill obsidian-bases安装后在 Claude Code 中输入/obsidian-bases确认已加载。
详细介绍
Obsidian Bases
将此内容用作精简的工作流和备用语法参考。对于详细字段或与版本相关的字段和函数,请优先使用单独安装的 kepano/obsidian-skills obsidian-bases 技能,然后参考当前的官方 Bases 语法。
以只读方式回答设计和语法问题。若用户要求编辑 .base 文件,请解析用户的库,并使用一次经过检查的事务;切勿直接写入文件。
从此技能自身的位置解析已安装的产品根目录,而不是从库或当前工作目录解析:
PRODUCT_ROOT=/absolute/path/to/installed/claude-obsidian
CORE="$PRODUCT_ROOT/scripts/claude-obsidian.py"
test -f "$CORE"
此文件中的每个 ../wiki/references/ 链接都以相同方式解析:相对于 $PRODUCT_ROOT 下此技能自身所在的目录,而不是相对于所选库的 wiki/ 目录。
工作流
-
检查有代表性的笔记属性和任何现有的
.base文件。 -
定义能筛选出目标笔记的最小筛选条件。
-
仅为必须计算的值添加公式。
-
选择视图和显示顺序。不要假设用户的 Obsidian 版本或已安装插件支持某种视图类型或选项。
-
验证 YAML、表达式引号、属性名称、公式引用和空值处理。
-
在进行更改前,预览完整文件和预期结果集。
-
如果用户要求编辑,请阅读 operation-transactions.md, 将
.base文件保留在wiki/下,并构建一个claude-obsidian.transaction.v1bundle,其中operation_type: base。 检查该 bundle,然后仅在审核后将APPROVAL_SHA256设置为返回的approval_sha256,并应用一次:python3 "$CORE" transaction inspect "$BUNDLE" --vault "$VAULT" python3 "$CORE" transaction apply "$BUNDLE" --vault "$VAULT" \ --approved-plan-sha256 "$APPROVAL_SHA256" -
将静态验证与 Obsidian 原生渲染分开记录。如果无法在本地验证应用行为,请遵循 一致性流程。切勿将未经观察的输出标注为已测试。
版本界限
于 2026-10-17 根据官方视图文档核查。 表格和卡片需要 1.9+,列表需要 1.10+,原生看板需要 1.14+。地图需要 Maps 插件。这些是文档记载的最低版本,并非此软件包离线测试所用的版本。对于较旧的应用,请保留普通表格作为备用方案。保留现有的未知视图字段。
精简架构
.base 文件使用 YAML。常见的顶层键包括 filters、formulas、properties、summaries 和 views。
filters:
and:
- file.inFolder("wiki")
- 'status != "archived"'
formulas:
status_label: 'if(status == "mature", "Ready", "Review")'
properties:
status:
displayName: "Status"
views:
- type: table
name: "Wiki pages"
order:
- file.name
- type
- status
- updated
- formula.status_label
全局筛选条件适用于每个视图。视图也可以定义自己的 filters。
递归筛选对象在每一层都使用 and、or 或 not 之一。
filters:
or:
- file.hasTag("concept")
- and:
- file.hasTag("source")
- 'status == "active"'
按名称使用笔记属性,使用 file.name、file.path、
file.folder、file.ext、file.ctime、file.mtime 或 file.tags 表示文件元数据,并使用 formula.<name> 表示计算属性。
公式和 YAML 规则
- 包含运算符、冒号或嵌套字符串引号的表达式要加引号。
- 使用
if()保护可能为空的属性。 - 关于日期减法,当前来源的描述存在冲突。请将下面日期部分的示例视为未经验证的兼容性候选方案,并在依赖输出前测试用户支持的应用版本。
- 在视图或属性显示配置中引用
formula.<name>前,先定义每个formula.<name>。 - 不要将仅供 Dataview 使用的键(例如
from或where)移植到 Base 中。 - 如果所选笔记中不存在某个属性,不要凭空添加;除非说明生成的列将为空。
日期运算需要原生证据
截至 2026-10-17 查阅的帮助语法 仍将日期差描述为毫秒。官方 1.9.3 更新日志 描述了 Duration,固定版本的上游技能也使用 Duration 字段。 审查所用提交中的 API 类型 所记录的摘录中不包含 Duration 定义,因此不会引用它们来支持上述任一说法。 本次更新中没有原生应用观察结果能解决这一分歧。
以下保留的毫秒表达式可用于单独测试, 但不代表兼容性保证:
formulas:
age_days: '((now() - file.ctime) / 86400000).round(0)'
days_until: 'if(due_date, ((date(due_date) - today()) / 86400000).round(0), "")'
使用一天、多个月、负值和缺失值进行比较,测试直接相减/相除、Duration 的 day 字段,以及显式的
number(date) 相减。使用 native-conformance.md 记录应用版本、时区、表达式、实际值/类型和错误。
在完成检查前,不要改写现有公式,也不要断言任何候选方案正确。
其他视图
卡片和列表示例:
views:
- type: cards
name: "Reading list"
order:
- file.name
- author
- status
- type: list
name: "Quick list"
order:
- file.name
- status
对于 Obsidian 1.14 及以上版本,可按现有的可写入笔记属性对看板分组:
filters:
and:
- file.inFolder("wiki")
- 'file.ext == "md"'
views:
- type: kanban
name: "Page status"
groupBy:
property: note.status
direction: ASC
groupOrder:
- seed
- developing
- mature
- evergreen
- null
order:
- file.name
- status
groupOrder 按显示顺序列出可见分组。若缺少 groupOrder,
则会按 groupBy 的排序显示所有分组;空列表则会隐藏所有分组。
null 会包含缺少分组值的页面。添加空分组不会创建笔记。原生卡片移动操作可以更改笔记属性,按
file.folder 分组也可以移动文件;Agent 仍必须使用经过审查的事务来修改库内容。
公式或其他只读文件属性不适合用于可编辑的状态看板。参见看板视图。
在 Markdown 笔记中嵌入 Base 或指定视图:
![[Dashboard.base]]
![[Dashboard.base#Wiki pages]]
应用编辑后,报告操作 ID、确切的更改路径、已执行的验证,以及仍需在 Obsidian 中渲染检查的内容。不要 提交 Git。