# What Are Obsidian Base Files and How to Edit Them

> Discover Obsidian Base files, YAML definitions with the .base extension, for rendering dynamic vault note views like tables and maps within Obsidian. Learn how to edit them.

- Repository: [Steph Ango/obsidian-skills](https://github.com/kepano/obsidian-skills)
- Tags: how-to-guide
- Published: 2026-03-24

---

**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`](https://github.com/kepano/obsidian-skills/blob/main/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`](https://github.com/kepano/obsidian-skills/blob/main/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:

```markdown
![[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:

```yaml
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:

```yaml
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:

```yaml
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:

- **[`skills/obsidian-bases/SKILL.md`](https://github.com/kepano/obsidian-skills/blob/main/skills/obsidian-bases/SKILL.md)** contains the complete Base schema specification, filter syntax documentation, view type definitions, and troubleshooting guidance.
- **[`skills/obsidian-bases/references/FUNCTIONS_REFERENCE.md`](https://github.com/kepano/obsidian-skills/blob/main/skills/obsidian-bases/references/FUNCTIONS_REFERENCE.md)** lists all global functions usable within filters and formulas, including date manipulation and string utilities.
- **[`README.md`](https://github.com/kepano/obsidian-skills/blob/main/README.md)** provides installation instructions for the Obsidian Skills package and repository overview.

## 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`](https://github.com/kepano/obsidian-skills/blob/main/skills/obsidian-bases/SKILL.md) and [`FUNCTIONS_REFERENCE.md`](https://github.com/kepano/obsidian-skills/blob/main/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`](https://github.com/kepano/obsidian-skills/blob/main/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.