From mz-knowledge
ALWAYS invoke when working with Obsidian Bases (.base files), database views, filters, formulas, or the Bases query language. Triggers: .base file, Bases view, filter formula, vault database.
npx claudepluginhub doctormozg/claude-pipelines --plugin mz-knowledgeThis skill is limited to using the following tools:
Obsidian Bases is a native database/spreadsheet feature introduced in Obsidian 1.x. A `.base` file is a YAML document that defines filtered, formula-enriched, grouped views over vault notes. This skill provides authoritative Bases syntax — filters, formulas, property namespaces, view types, and summaries — so edits to `.base` files produce valid, working queries.
Guides Next.js Cache Components and Partial Prerendering (PPR): 'use cache' directives, cacheLife(), cacheTag(), revalidateTag() for caching, invalidation, static/dynamic optimization. Auto-activates on cacheComponents: true.
Edits, creates, cleans, and formats spreadsheet files (.xlsx, .xlsm, .csv, .tsv) with zero formula errors, professional styling, and financial model standards like color coding.
Share bugs, ideas, or general feedback.
Obsidian Bases is a native database/spreadsheet feature introduced in Obsidian 1.x. A .base file is a YAML document that defines filtered, formula-enriched, grouped views over vault notes. This skill provides authoritative Bases syntax — filters, formulas, property namespaces, view types, and summaries — so edits to .base files produce valid, working queries.
Invoke when the user mentions .base files, Bases views, filter formulas, vault-level databases, or asks to build a query that lists/groups/summarizes notes across the vault.
TABLE, LIST, WHERE syntax, or JavaScript views) — different query language, not Bases.file.hasTag, file.inFolder, frontmatter property comparisons, or compound and/or/not blocks.table, cards, list, or map; list the columns/fields; add formulas for any computed values.Duration, not a Number. Always chain .days / .hours / .minutes before feeding into numeric functions or display.File structure. A .base file is valid YAML with these optional top-level keys: filters, formulas, properties, summaries, views.
Filters.
filters: "file.hasTag('project')"
filters:
and:
- "file.hasTag('project')"
- "file.inFolder('02 - Areas')"
filters:
not: "file.hasTag('archived')"
Filter functions: file.hasTag(tag), file.hasLink(note), file.inFolder(path), .matches(regex). Logical operators inside strings: &&, ||, !.
Property namespaces.
propertyName (direct, unqualified).file.name, file.basename, file.path, file.folder, file.ext, file.size, file.ctime, file.mtime, file.tags, file.links, file.backlinks, file.embeds, file.properties.formula.formulaName.this resolves to the current note in main content, the embed host inside an embed, and the sidebar target when viewed in the sidebar.Formulas.
formulas:
age: "date.now() - file.ctime"
daysSinceModified: "(date.now() - file.mtime).days"
Duration pitfall: date.now() - file.mtime returns a Duration. Access .days, .hours, .minutes, etc., before passing to numeric functions, rounding, or comparisons against numbers.
Views.
views:
- type: table
name: "All Notes"
properties: [file.name, status, file.mtime]
sort: [{property: file.mtime, direction: desc}]
groupBy: status
View types: table, cards, list, map.
Summaries.
summaries:
status:
formula: count
Built-in summary formulas: Average, Min, Max, Sum, Range, Median, Stddev, Earliest, Latest, Checked, Unchecked, Empty, Filled, Unique, Count.
Embedding.
![[MyBase.base]] embeds the full base.![[MyBase.base#View Name]] embeds a specific named view.YAML quoting. When a formula string contains double quotes, wrap the string in single quotes:
formulas:
label: 'if(status == "done", "done", "open")'
Reference: grep references/functions-reference.md for formula function signatures by return type (Date, Duration, String, Number, Boolean, List, File). Do not load the full file — grep for the function name or category you need.
N/A — reference skill, not discipline.
(date.now() - file.mtime) directly as a number — must access .days / .hours / etc. Duration is not a Number.TABLE, FROM, WHERE, SORT) — that is Dataview, not Bases. Bases uses YAML with filter functions.tag: (singular frontmatter-style) inside a filter expression instead of file.hasTag() — filter context needs the function call form.file. prefix (e.g., file.status) — frontmatter properties are unqualified. file. is reserved for file metadata.To confirm the skill was applied correctly, output a sample .base snippet that lists all notes with tag project, sorted by file.mtime descending, showing name and status columns. The snippet should parse as valid YAML and use only the namespaces and functions documented above.