obsidian-bases
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.
By kepano · 73,296 installs
npx skills add kepano/obsidian-skills --skill obsidian-bases
Source repository · Upstream listing
Obsidian Bases Skill
Workflow
1. Create the file : Create a .base file in the vault with valid YAML content
2. Define scope : Add filters to select which notes appear (by tag, folder, property, or date)
3. Add formulas (optional): Define computed properties in the formulas section
4. Configure views : Add one or more views ( table , cards , list , or map ) with order specifying which properties to display
5. Validate : Verify the file is valid YAML with no syntax errors. Check that all referenced properties and formulas exist. Common issues: unquoted strings containing special YAML characters, mismatched quotes in formula expressions, referencing formula.X without defining X in formulas
6. Test in Obsidian : Open the .base file in Obsidian to confirm the view renders correctly. If it shows a YAML error, check quoting rules below
Schema
Base files use the .base extension and contain valid YAML.
Filter Syntax
Filters narrow down results. They can be applied globally or per view.
Filter Structure
Filter Operators
Operator Description
== equals
!= not equal
greater than
< less than
= greater than or equal
<= less than or equal
&& logical and
\ \ logical or
<code !</code logical not
Properties
Three Types of Properties
1. Note properties From frontmatter: note.author or just author
2. File properties File metadata: file.name , file.mtime , etc.
3. 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 File extension
file.size Number File size in bytes
file.ctime Date Created time
file.mtime Date Modified time
file.tags List All tags in file
file.links List Internal links in file
file.backlinks List Files linking to this file
file.embeds List Embeds in the note
file.properties Object All frontmatter properties
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.
Key Functions
Most commonly used functions. For the complete reference of all types (Date, String, Number, List, File, Link, Object, RegExp), see [FUNCTIONS REFERENCE.md](references/FUNCTIONS REFERENCE.md).
Function Signature Description
date() date(string): date Parse string to date ( YYYY MM DD HH:mm:ss )
now() now(): date Current date and time
today() today(): date Current date (time = 00:00:00)
if() if(condition, trueResult, falseResult?) Conditional
duration() duration(string): duration Parse duration string
file() file(path): file Get file object
link() link(path, display?): Link Create a link
Duration Type
When subtracting two dates, the result is a Duration type (not a number).
Duration Fields: duration.days , duration.hours , duration.minutes , duration.seconds , duration.milliseconds
IMPORTANT: Duration does NOT support .round() , .floor() , .ceil() directly. Access a numeric field first (like .days ), then apply number functions.
Date Arithmetic
View Types
Table View
Cards View
List View
Map View
Requires latitude/longitude properties and the Maps community plugin.
Default Summary Formulas
Name Input Type Description
Average Number Mathematical mean
Min Number Smallest number
Max Number Largest number
Sum Number Sum of all numbers
Range Number Max Min
Median Number Mathematical median
Stddev Number Standard deviation
Earliest Date Earliest date
Latest Date Latest date
Range Date Latest Earliest
Checked Boolean Count of true values
Unchecked Boolean Count of false values
Empty Any Count of empty values
Filled Any Count of non empty values
Unique Any Count of unique values
Complete Examples
Task Tracker Base
Reading List Base
Daily Notes Index
Embedding Bases
Embed in Markdown files:
YAML Quoting Rules
Use single quotes for formulas containing double quotes: 'if(done, "Yes", "No")'
Use double quotes for simple strings: "My View Name"
Escape nested quotes properly in complex expressions
Troubleshooting
YAML Syntax Errors
Unquoted special characters : Strings containing : , { , } , [ , ] , , , & , , , ? , , , < , , = , ! , % , @ , must be quoted.
Mismatched quotes in formulas : When a formula contains double quotes, wrap the entire formula in single quotes.
Common Formula Errors
Duration math without field access : Subtracting dates returns a Duration, not a number. Always access .days , .hours , etc.
Missing null checks : Properties may not exist on all notes. Use if() to guard.
Referencing undefined formulas : Ensure every formula.X in order or properties has a matching entry in formulas .
References
[Bases Syntax](https://help.obsidian.md/bases/syntax)
[Functions](https://help.obsidian.md/bases/functions)
[Views](https://help.obsidian.md/bases/views)
[Formulas](https://help.obsidian.md/formulas)
[Complete Functions Reference](references/FUNCTIONS REFERENCE.md)