agentleFS
manazoid4manazoid4/maz-works-knowledge-vault/skills/obsidian-bases/SKILL.md

obsidian-bases

Skill0 starsChanged 3 months agoMITView on GitHub

Create and edit Obsidian Bases (.base files): Obsidian's native database layer for dynamic tables, card views, list views, filters, formulas, and summaries over vault notes. Triggers on: create a base, add a base file, obsidian bases, base view, filter notes, formula, database view, dynamic table, task tracker base, reading list base.

80 other projects use a version of this, 2 of them edited.

Adopted by

Most recently taken up by

Used with

Projects with it also use obsidian-cli, knap and 9 more.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • jykimSkill

    obsidian-cli

    Interact with Obsidian using the official CLI to read, search, create, and manage notes, daily notes, tasks, properties, and more. Use when the user wants to query or manipulate vault content via the obsidian command.

    Also in 48 projects that use this

  • lucasmaher-hashSkill

    knap

    Render Markdown from templates and structured data using Knap CLI. Use when the user asks to apply a Knap template, turn JSON or CSV data into notes, batch-generate Markdown files, or format Defuddle output into a note.

    Also in 4 projects that use this

  • BCS1037Skill

    mermaid-visualizer

    Transform text content into professional Mermaid diagrams for presentations and documentation. Use when users ask to visualize concepts, create flowcharts, or make diagrams from text. Supports process flows, system architectures, comparisons, mindmaps, and more with built-in syntax error prevention.

    Also in 5 projects that use this

  • pedronauckSkill

    alex-hormozi-pitch

    Create irresistible offers and pitches using Alex Hormozi's methodology from $100M Offers. Guides through value equation, guarantee frameworks, pricing psychology, and creating offers "too good not to take" for any product or service.

    Also in 3 projects that use this

  • dqtx760Skill

    create-project

    Scaffold a complete, runnable project from scratch with proper structure and best practices. Use when building new apps, games, tools, scripts, or any project from zero.

    Also in 4 projects that use this

  • az9713Skill

    vault-health

    Audit vault health: unresolved links, orphan notes, dead-end files, missing frontmatter, structural gaps. Produces an actionable report note with prioritized fix suggestions. Use when wanting to clean up, organize, or assess the current state of the vault.

    Also in 3 projects that use this

The file

We split this skill into the rules it gives an agent

5 rules. 0 are common, 0 are distinctive, and 5 are very specific to this project.

  • 0

    Common

    Most of the 78 edited versions we read keep these.

  • 0

    Distinctive

    This author's own choices. Worth a look.

  • 5

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Do not use from: or where:: those are Dataview syntax, not Obsidian Bases

    line 290
  2. Very specific:

    Do not use sort: at the root level: sorting is per-view via order: and groupBy:

    line 291
  3. Very specific:

    Do not put .base files outside the vault: they only render inside Obsidian

    line 292
  4. Very specific:

    Do not reference formula.X in order: without defining X in formulas:

    line 293
  5. Very specific:

    When working on this skill, apply the 10-principle loop.

    line 299

“Common” is measured: kept by at least 6 in 10 of the 78 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

obsidian-bases: Obsidian's Database Layer

Obsidian Bases (launched 2025) turns vault notes into queryable, dynamic views. Tables, cards, lists, maps. Defined in .base files. No plugin required; it is a core Obsidian feature.

Substrate preference (v1.7+): This skill is a self-contained fallback. Prefer kepano/obsidian-skills as the authoritative substrate — its obsidian-bases skill is the canonical reference for Bases YAML, formulas, and view definitions. If that separate skill is available, use it. The reference below keeps Maz Works Knowledge Vault functional when kepano's marketplace is not installed. Install: claude plugin marketplace add kepano/obsidian-skills. Official Bases docs: https://help.obsidian.md/bases/syntax


File Format

.base files contain valid YAML. The root keys are filters, formulas, properties, summaries, and views.

# Global filters: apply to ALL views
filters:
  and:
    - file.hasTag("wiki")
    - 'status != "archived"'

# Computed properties
formulas:
  age_days: '(now() - file.ctime).days.round(0)'
  status_icon: 'if(status == "mature", "✅", "🔄")'

# Display name overrides for properties panel
properties:
  status:
    displayName: "Status"
  formula.age_days:
    displayName: "Age (days)"

# One or more views
views:
  - type: table
    name: "All Pages"
    order:
      - file.name
      - type
      - status
      - updated
      - formula.age_days

Filters

Filters select which notes appear. Applied globally or per-view.

# Single string filter
filters: 'status == "current"'

# AND: all must be true
filters:
  and:
    - 'status != "archived"'
    - file.hasTag("wiki")

# OR: any can be true
filters:
  or:
    - file.hasTag("concept")
    - file.hasTag("entity")

# NOT: exclude matches
filters:
  not:
    - file.inFolder("wiki/meta")

# Nested
filters:
  and:
    - file.inFolder("wiki/")
    - or:
        - 'type == "concept"'
        - 'type == "entity"'

Filter operators

== != > < >= <=

Useful filter functions

FunctionExample
file.hasTag("x")Notes with tag x
file.inFolder("path/")Notes in folder
file.hasLink("Note")Notes linking to Note

Properties

Three types:

  • Note properties: from frontmatter: status, type, updated
  • File properties: metadata: file.name, file.mtime, file.size, file.ctime, file.tags, file.folder
  • Formula properties: computed: formula.age_days

Formulas

Defined in formulas:. Referenced as formula.name in order: and properties:.

formulas:
  # Days since created
  age_days: '(now() - file.ctime).days.round(0)'

  # Days until a date property
  days_until: 'if(due_date, (date(due_date) - today()).days, "")'

  # Conditional label
  status_icon: 'if(status == "mature", "✅", if(status == "developing", "🔄", "🌱"))'

  # Word count estimate
  word_est: '(file.size / 5).round(0)'

Key rule: Subtracting two dates returns a Duration. Not a number. Always access .days first:

# CORRECT
age: '(now() - file.ctime).days'

# WRONG: crashes
age: '(now() - file.ctime).round(0)'

Always guard nullable properties with if():

# CORRECT
days_left: 'if(due_date, (date(due_date) - today()).days, "")'

View Types

Table

views:
  - type: table
    name: "Wiki Index"
    limit: 100
    order:
      - file.name
      - type
      - status
      - updated
    groupBy:
      property: type
      direction: ASC

Cards

views:
  - type: cards
    name: "Gallery"
    order:
      - file.name
      - tags
      - status

List

views:
  - type: list
    name: "Quick List"
    order:
      - file.name
      - status

Wiki Vault Templates

Wiki content dashboard (all non-meta pages)

filters:
  and:
    - file.inFolder("wiki/")
    - not:
        - file.inFolder("wiki/meta")

formulas:
  age: '(now() - file.ctime).days.round(0)'

properties:
  formula.age:
    displayName: "Age (days)"

views:
  - type: table
    name: "All Wiki Pages"
    order:
      - file.name
      - type
      - status
      - updated
      - formula.age
    groupBy:
      property: type
      direction: ASC

Entity index (people, orgs, repos)

filters:
  and:
    - file.inFolder("wiki/entities/")
    - 'file.ext == "md"'

views:
  - type: table
    name: "Entities"
    order:
      - file.name
      - entity_type
      - status
      - updated
    groupBy:
      property: entity_type
      direction: ASC

Recent ingests

filters:
  and:
    - file.inFolder("wiki/sources/")

views:
  - type: table
    name: "Sources"
    order:
      - file.name
      - source_type
      - created
      - status
    groupBy:
      property: source_type
      direction: ASC

Embedding in Notes

![[MyBase.base]]

![[MyBase.base#View Name]]

Where to Save

Store .base files in wiki/meta/ for vault dashboards:

  • wiki/meta/dashboard.base: main content view
  • wiki/meta/entities.base: entity tracker
  • wiki/meta/sources.base: ingestion log

YAML Quoting Rules

  • Formulas with double quotes → wrap in single quotes: 'if(done, "Yes", "No")'
  • Strings with colons or special chars → wrap in double quotes: "Status: Active"
  • Unquoted strings with : break YAML parsing

What Not to Do

  • Do not use from: or where:: those are Dataview syntax, not Obsidian Bases
  • Do not use sort: at the root level: sorting is per-view via order: and groupBy:
  • Do not put .base files outside the vault: they only render inside Obsidian
  • Do not reference formula.X in order: without defining X in formulas:

How to think (10-principle mapping)

When working on this skill, apply the 10-principle loop. See skills/think/SKILL.md for the canonical framework.

#PrincipleApplication here
1OBSERVE (ext)The .base YAML the user is composing — read it carefully before suggesting changes.
2OBSERVE (int)Am I documenting yesterday's spec or today's? Bases evolves fast post-GA.
3LISTENThe user's specific Bases use-case (dashboard, filter chain, computed property).
4THINKWhich filter operators, formula syntax, view types apply? Validate against the current spec.
5CONNECT (lat)How do Bases relate to Dataview queries? Properties? Canvas overlays? Map the deltas.
6CONNECT (sys)Obsidian Bases is post-1.10 GA; substrate-defer to kepano/obsidian-skills when present.
7FEELExamples that actually parse and render. Pseudo-syntax wastes the user.
8ACCEPTBases spec evolves; some features in this doc may have changed. Keep the version note current.
9CREATESchema docs + worked examples that render in the user's actual Obsidian version.
10GROWAs Bases features ship, refresh the reference. Track upstream releases.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.