What Are Obsidian Base Files and How to Edit Them

Obsidian Base files are YAML-based database definitions that use the .base extension to render dynamic views—such as tables, cards, lists, or maps—of your vault notes directly within Obsidian.

Obsidian Base files, maintained in the kepano/obsidian-skills repository, transform static YAML configurations into interactive database interfaces. These files act as queryable views that filter, calculate, and display your notes based on front-matter properties and file metadata without requiring external database software.

Understanding Obsidian Base File Structure

According to the source specification in skills/obsidian-bases/SKILL.md, every Base file is composed of five top-level YAML sections that define how your vault data is filtered and presented.

Filters

The filters section applies global criteria to determine which notes belong to the Base. Filters can be simple strings or recursive boolean objects using and, or, and not operators to create complex selection logic.

Formulas

The formulas section defines named computed properties using JavaScript-like expressions. These calculations are evaluated against each note and referenced as formula.<name> throughout the Base file. The global functions available include date(), now(), if(), file(), and link(), with the complete reference documented in skills/obsidian-bases/references/FUNCTIONS_REFERENCE.md.

Properties

The properties section assigns human-readable labels and optional icons to front-matter fields, file metadata, or formula results. This mapping improves the display names of raw database columns in your rendered views.

Summaries

The summaries section declares custom aggregate formulas such as Average or Sum that appear in view footers. These calculations provide at-a-glance statistics for your filtered datasets across the entire Base.

Views

The views section contains one or more view definitions that control visual presentation. Each view declares a type (table, cards, list, or map), along with optional parameters for name, view-specific filters, order, groupBy, limit, and summaries as implemented in kepano/obsidian-skills.

Core Concepts and Keywords

When editing Obsidian Base files, three property types are available for use in filters and formulas.

File-properties such as file.name, file.tags, and file.mtime are automatically available for every note. Note-properties come directly from a note's front-matter, such as author or status. Formula-properties must be defined under the formulas section and referenced using the formula.<name> syntax.

The this keyword resolves contextually: it points to the Base file itself when the Base is embedded in another note, otherwise it references the active note currently open in Obsidian.

How to Edit Obsidian Base Files

Editing a Base file requires modifying the underlying YAML structure in any text editor or directly within Obsidian.

Create a new file with the .base extension in your vault root or any folder. Define your global filters to establish the dataset, then add formulas for computed columns. Configure properties to clean up display labels, and finally build your views array to specify how the data should render.

When embedding a Base inside a regular markdown note, use standard Obsidian embed syntax:

![[MyBase.base]]

![[MyBase.base#View Name]]

The first syntax renders the default view, while the second targets a specific named view using the hash identifier.

Practical Code Examples

Task Management Base

This minimal example from the kepano/obsidian-skills documentation creates a table tracking active tasks:

filters:
  and:
    - file.hasTag("task")
    - 'file.ext == "md"'

formulas:
  days_until_due: 'if(due, (date(due) - today()).days, "")'

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

views:
  - type: table
    name: "Active Tasks"
    order:
      - file.name
      - status
      - formula.days_until_due
    filters:
      and:
        - 'status != "done"'
    summaries:
      formula.days_until_due: Average

Reading List with Card View

This configuration generates a card gallery for books and articles:

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", "✅", "📚"))'

properties:
  author:
    displayName: Author
  formula.status_icon:
    displayName: ""

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

Daily Notes Index

This example indexes daily notes with calculated word estimates:

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

Essential Reference Files

The kepano/obsidian-skills repository provides three critical files for working with Base files:

Summary

  • Obsidian Base files use the .base extension and contain YAML definitions that render as dynamic database views inside Obsidian.
  • Five core sections comprise every Base: filters for note selection, formulas for computed properties, properties for display labels, summaries for aggregates, and views for visual presentation.
  • Property types include automatic file-metadata (file.name), front-matter fields, and calculated formula results referenced via formula.<name>.
  • Reference documentation in skills/obsidian-bases/SKILL.md and FUNCTIONS_REFERENCE.md provides the complete syntax specification and function library.

Frequently Asked Questions

What file extension do Obsidian Base files use?

Obsidian Base files use the .base extension. When you open a file with this extension in Obsidian, the YAML content is automatically parsed and rendered as an interactive database view rather than raw text.

How do I reference calculated values in a Base file?

Calculated values defined in the formulas section are referenced using the syntax formula.<name>. For example, a formula named days_until_due is accessed as formula.days_until_due in view configurations, property definitions, or other formulas.

Where are the global functions for filters and formulas defined?

Global functions such as date(), now(), if(), and file() are defined in the reference file located at skills/obsidian-bases/references/FUNCTIONS_REFERENCE.md within the kepano/obsidian-skills repository. These functions are available for use throughout your Base file definitions.

Can I embed a Base view inside a regular Obsidian note?

Yes. Use standard Obsidian embed syntax with double brackets: ![[MyBase.base]] renders the default view, while ![[MyBase.base#View Name]] renders a specific named view defined in the Base file's views array.

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →