--- name: orbites-obsidian-bases description: Create and edit Obsidian Bases (.base files) — database-like views with filters, formulas, and summaries. Use when working with .base files in OrbitOS. --- # OrbitOS: Obsidian Bases Reference Obsidian Bases are YAML files (`*.base`) that define dynamic views of notes. ## Schema ```yaml filters: # Global: single filter string, or and/or/not nesting formulas: # Computed properties (e.g., days_old: "((now() - file.ctime) / 86400000).round(0)") properties: # Display names summaries: # Custom summary formulas views: # Array of view definitions - type: table|cards|list|map name: "View Name" filters: # View-specific filters order: # Columns to display groupBy: # Group settings ``` ## Filter Syntax ```yaml # Simple filters: 'status == "done"' # AND filters: and: - 'status == "done"' - 'priority > 3' # OR, NOT, NESTED filters: or: - file.hasTag("tag") - and: - file.hasTag("book") - file.inFolder("Folder") ``` ## Built-in Properties - **File**: `file.name`, `file.basename`, `file.path`, `file.folder`, `file.ext`, `file.size`, `file.ctime`, `file.mtime`, `file.tags`, `file.links`, `file.backlinks` - **Frontmatter**: Any frontmatter key (e.g., `status`, `priority`) - **Formulas**: `formula.my_formula` ## Functions - **Global**: `date()`, `now()`, `today()`, `if()`, `min()`, `max()`, `link()` - **String**: `contains()`, `startsWith()`, `endsWith()`, `lower()`, `replace()`, `split()` - **Number**: `abs()`, `ceil()`, `floor()`, `round()`, `toFixed()` - **List**: `contains()`, `filter()`, `map()`, `reduce()`, `join()`, `sort()`, `unique()` - **File**: `hasLink()`, `hasTag()`, `hasProperty()`, `inFolder()` - **Date**: `format()`, `relative()`, arithmetic with durations