mcpField
O
obsidian-bases

obsidian-bases

github.com/sickn33生产力48.7k56 次安装1 天前更新
代码仓库

关于 obsidian-bases

obsidian-bases 是用于创建和编辑 Obsidian `.base` 文件的技能,适合构建类似数据库的笔记视图。它支持筛选、公式、摘要以及卡片或表格布局,并强调在 Obsidian 中验证配置。

主要功能

  1. 01创建和编辑 `.base` 文件
  2. 02配置筛选器与公式
  3. 03构建摘要视图
  4. 04以卡片或表格显示
  5. 05在 Obsidian 中验证配置

适用场景

  1. 01创建任务跟踪视图
  2. 02整理阅读清单
  3. 03为每日笔记建立索引
  4. 04检查 Base 中的公式和筛选器

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/sickn33/agentic-awesome-skills --skill obsidian-bases

安装后在 Claude Code 中输入/obsidian-bases确认已加载。

附带文件references/FUNCTIONS_REFERENCE.mdreferences/detailed-guide.md

详细介绍

Obsidian Bases 技能

详细指南

执行此技能前,请阅读详细指南。其中保留了完整流程和参考资料。请将其中的安全要求、前置条件和验证要求视为强制要求。针对特定任务,请加载相关章节;对于端到端任务,请完整阅读指南。

适用场景

  • 创建或编辑 Obsidian 中的 .base 文件时使用。
  • 创建包含筛选器、公式、摘要或卡片/表格的类数据库笔记视图时使用。
  • 用户专门询问 Obsidian Bases 时使用。

完整示例

任务跟踪器 Base
filters:
  and:
    - file.hasTag("task")
    - 'file.ext == "md"'

formulas:
  days_until_due: 'if(due, (date(due) - today()).days, "")'
  is_overdue: 'if(due, date(due) < today() && status != "done", false)'
  priority_label: 'if(priority == 1, "🔴 High", if(priority == 2, "🟡 Medium", "🟢 Low"))'

properties:
  status:
    displayName: Status
  formula.days_until_due:
    displayName: "Days Until Due"
  formula.priority_label:
    displayName: Priority

views:
  - type: table
    name: "Active Tasks"
    filters:
      and:
        - 'status != "done"'
    order:
      - file.name
      - status
      - formula.priority_label
      - due
      - formula.days_until_due
    groupBy:
      property: status
      direction: ASC
    summaries:
      formula.days_until_due: Average

  - type: table
    name: "Completed"
    filters:
      and:
        - 'status == "done"'
    order:
      - file.name
      - completed_date
阅读清单 Base
filters:
  or:
    - file.hasTag("book")
    - file.hasTag("article")

formulas:
  reading_time: 'if(pages, (pages * 2).toString() + " min", "")'
  status_icon: 'if(status == "reading", "📖", if(status == "done", "✅", "📚"))'
  year_read: 'if(finished_date, date(finished_date).year, "")'

properties:
  author:
    displayName: Author
  formula.status_icon:
    displayName: ""
  formula.reading_time:
    displayName: "Est. Time"

views:
  - type: cards
    name: "Library"
    order:
      - cover
      - file.name
      - author
      - formula.status_icon
    filters:
      not:
        - 'status == "dropped"'

  - type: table
    name: "Reading List"
    filters:
      and:
        - 'status == "to-read"'
    order:
      - file.name
      - author
      - pages
      - formula.reading_time
每日笔记索引
filters:
  and:
    - file.inFolder("Daily Notes")
    - '/^\d{4}-\d{2}-\d{2}$/.matches(file.basename)'

formulas:
  word_estimate: '(file.size / 5).round(0)'
  day_of_week: 'date(file.basename).format("dddd")'

properties:
  formula.day_of_week:
    displayName: "Day"
  formula.word_estimate:
    displayName: "~Words"

views:
  - type: table
    name: "Recent Notes"
    limit: 30
    order:
      - file.name
      - formula.day_of_week
      - formula.word_estimate
      - file.mtime

限制

  • 仅当任务明确符合上述范围时使用此技能。
  • 不要将输出视为环境特定验证、测试或专家审核的替代品。
  • 如果缺少必要的输入、权限、安全边界或成功标准,请停止并请求澄清。

范围和数据限制

替换现有 Base 前,请先使用副本或预览。全局筛选器用于为视图选择数据;它们不是访问控制,视图限制也不是数据保留或隐私边界。仅进行 YAML 解析无法验证 Obsidian 表达式语言或插件是否可用。请根据已安装的版本匹配视图类型和函数,并在 Obsidian 中验证有代表性的缺失、零值、格式错误和时区敏感日期。阅读时间和基于字节的词数估算只是粗略的显示启发式,并非实际计数。渲染 HTML 前,请对不可信字符串进行转义;未经批准,不要为私人笔记使用远程图片/URL。Base 用于配置展示和公式,不会强制要求字段或数据库约束。

评论

支持 Markdown