Create and edit Obsidian Bases (.base files) with views, filters, formulas, and summaries. Use when working with .base files, creating database-like views of notes, or when the user mentions Bases, table views, card views, filters, or formulas in Obsidian.
No setup needed. Let our cloud agents run this skill for you.
Select Provider
Select Model
Claude Sonnet 4.5
$0.20/task
Best for coding tasks
No setup required
Obsidian Bases Skill
This skill enables skills-compatible agents to create and edit valid Obsidian Bases (.base files) including views, filters, formulas, and all related configurations.
Overview
Obsidian Bases are YAML-based files that define dynamic views of notes in an Obsidian vault. A Base file can contain multiple views, global filters, formulas, property configurations, and custom summaries.
File Format
Base files use the .base extension and contain valid YAML. They can also be embedded in Markdown code blocks.
Complete Schema
# Global filters apply to ALL views in the basefilters: # Can be a single filter string # OR a recursive filter object with and/or/not and: [] or: [] not: []# Define formula properties that can be used across all viewsformulas: formula_name: 'expression'# Configure display names and settings for propertiesproperties: property_name: displayName: "Display Name" formula.formula_name: displayName: "Formula Display Name" file.ext: displayName
Filter Syntax
Filters narrow down results. They can be applied globally or per-view.
Filter Structure
# Single filterfilters: 'status == "done"'# AND - all conditions must be truefilters: and: - 'status == "done"' - 'priority > 3'# OR - any condition can be truefilters: or: - 'file.hasTag("book")' - 'file.hasTag("article")'# NOT - exclude matching itemsfilters
Filter Operators
Operator
Description
==
equals
!=
not equal
>
greater than
<
less than
>=
greater than or equal
<=
less than or equal
&&
Properties
Three Types of Properties
Note properties - From frontmatter: note.author or just author
File properties - File metadata: file.name, file.mtime, etc.
Formula properties - Computed values: formula.my_formula
File Properties Reference
Property
Type
Description
file.name
String
File name
file.basename
String
File name without extension
file.path
String
Full path to file
file.folder
String
Parent folder path
file.ext
String
The this Keyword
In main content area: refers to the base file itself
When embedded: refers to the embedding file
In sidebar: refers to the active file in main content
Formula Syntax
Formulas compute values from properties. Defined in the formulas section.
formulas: # Simple arithmetic total: "price * quantity" # Conditional logic status_icon: 'if(done, "✅", "⏳")' # String formatting formatted_price: 'if(price, price.toFixed(2) + " dollars")' # Date formatting created: 'file.ctime.format("YYYY-MM-DD")' # Calculate days since created (use .days for Duration) days_old: '(now() - file.ctime).days' # Calculate days until due date
When subtracting two dates, the result is a Duration type (not a number). Duration has its own properties and methods.
Duration Fields:
Field
Type
Description
duration.days
Number
Total days in duration
duration.hours
Number
Total hours in duration
duration.minutes
Number
Total minutes in duration
duration.seconds
Number
Total seconds in duration
duration.milliseconds
Number
IMPORTANT: Duration does NOT support .round(), .floor(), .ceil() directly. You must access a numeric field first (like .days), then apply number functions.
# CORRECT: Calculate days between dates"(date(due_date) - today()).days" # Returns number of days"(now() - file.ctime).days" # Days since created# CORRECT: Round the numeric result if needed"(date(due_date) - today()).days.round(0)" # Rounded days"(now() - file.ctime).hours.round(0)" # Rounded hours# WRONG - will cause error:# "((date(due) - today()) / 86400000).round(0)" # Duration doesn't support division then round