mcpField
O
obsidian-bases

obsidian-bases

github.com/agricidaniel生产力16.0k499 次安装1 周前更新
代码仓库

关于 obsidian-bases

obsidian-bases 是用于解答 Obsidian Bases 设计与语法问题,并处理 `.base` 编辑请求的技能。它提供精简的 YAML 参考;编辑须经预览和检查,再通过事务应用。

主要功能

  1. 01只读设计与语法指导
  2. 02精简的 `.base` YAML 参考
  3. 03筛选器、公式和视图指导
  4. 04通过审核事务编辑

适用场景

  1. 01为笔记集合设计筛选条件
  2. 02构建公式和视图布局
  3. 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/ 目录。

工作流

  1. 检查有代表性的笔记属性和任何现有的 .base 文件。

  2. 定义能筛选出目标笔记的最小筛选条件。

  3. 仅为必须计算的值添加公式。

  4. 选择视图和显示顺序。不要假设用户的 Obsidian 版本或已安装插件支持某种视图类型或选项。

  5. 验证 YAML、表达式引号、属性名称、公式引用和空值处理。

  6. 在进行更改前,预览完整文件和预期结果集。

  7. 如果用户要求编辑,请阅读 operation-transactions.md, 将 .base 文件保留在 wiki/ 下,并构建一个 claude-obsidian.transaction.v1 bundle,其中 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"
    
  8. 将静态验证与 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。

评论

支持 Markdown