New to Claude Skills? Learn how to install them →

agricidaniel on GitHub

Obsidian Bases

Free

Streamline your Obsidian database workflows with ease.

Get this skill

Free · Opens the source repo

What Obsidian Bases does

Obsidian Bases is a skill designed to facilitate the creation, editing, and validation of .base files within the Obsidian note-taking app. This skill provides a structured approach to managing database-like views in your vault, allowing you to define filters, formulas, properties, and various display options such as tables, cards, or lists. By using this skill, users can enhance their productivity and organization in Obsidian, making it easier to track tasks, manage reading lists, and summarize information effectively.

The workflow begins with inspecting existing note properties and representative .base files. Users can define precise filters to select the intended notes and add necessary formulas for computed values. This skill emphasizes the importance of validating YAML syntax, expression quoting, and property references before applying any changes. It ensures that users can preview the complete file and expected results before making any mutations, reducing the risk of errors.

Obsidian Bases is particularly useful for users who want to leverage the power of dynamic tables and custom views in their Obsidian vaults. Whether you're a developer managing project tasks or a researcher organizing literature, this skill provides the tools needed to create tailored views that suit your specific needs. Additionally, the skill supports a collaborative approach by allowing users to render the Base in Obsidian for verification of application-level behavior.

However, it's important to note that this skill is not a replacement for the official Obsidian Bases syntax documentation. It is intended as a compact workflow reference and should be used in conjunction with the official resources for detailed syntax and version-specific features. Users should also be aware that the skill does not directly write to .base files but instead guides users through the editing process, ensuring a controlled and validated approach to managing their data.

When to use it

Use this skill when you need to create or edit `.base` files for organizing notes in Obsidian with filters and dynamic views.

When not to use it

This skill is not suitable for users looking for direct file manipulation or those who do not require structured database-like views in Obsidian.

What you can build with it

Creating a Reading List

Use this skill to define a `.base` file that filters and displays your reading list with relevant properties and statuses.

Task Management

Implement a task tracker in Obsidian by utilizing filters and formulas to manage and visualize your tasks effectively.

Summarizing Research Notes

Organize and summarize your research notes dynamically, using the skill to create views that highlight key information and statuses.

How to install Obsidian Bases

View source

1. Install with the skills CLI

npx skills add agricidaniel/claude-obsidian/obsidian-bases --agent claude-code

2. Or install it manually

Download the skill folder and drop it into ~/.claude/skills/ for all projects, or .claude/skills/ to scope it to one repo. Restart Claude Code so it picks up the new skill.

Anthropic's agentic coding CLI, and the reference implementation of Agent Skills. Drop a skill folder into ~/.claude/skills and Claude Code loads it automatically whenever a task matches the skill's description. Claude Code docs

Inside SKILL.md

Written by agricidaniel

Obsidian Bases

Use this as a compact workflow and fallback syntax reference. Prefer a separately installed kepano/obsidian-skills obsidian-bases skill, then the current official Bases syntax, for detailed or version-sensitive fields and functions.

Answer design and syntax questions read-only. For a requested .base edit, resolve the user vault and use one inspected transaction; never write the file directly.

Resolve the installed product root from this skill's own location, not from the vault or current working directory:

PRODUCT_ROOT=/absolute/path/to/installed/claude-obsidian
CORE="$PRODUCT_ROOT/scripts/claude-obsidian.py"
test -f "$CORE"

Workflow

  1. Inspect representative note properties and any existing .base file.

  2. Define the smallest filter that selects the intended notes.

  3. Add formulas only for values that must be computed.

  4. Choose views and display order. Do not assume a view type or option is supported by the user's Obsidian version or installed plugins.

  5. Validate YAML, expression quoting, property names, formula references, and null handling.

  6. Preview the complete file and expected result set before a mutation.

  7. If an edit was requested, read operation-transactions.md, keep the .base file under wiki/, and build one claude-obsidian.transaction.v1 bundle with operation_type: base. Inspect it, then set APPROVAL_SHA256 to the returned approval_sha256 only after review and apply once:

    python3 "$CORE" transaction inspect "$BUNDLE" --vault "$VAULT"
    python3 "$CORE" transaction apply "$BUNDLE" --vault "$VAULT" \
      --approved-plan-sha256 "$APPROVAL_SHA256"
    
  8. Ask the user to render the Base in Obsidian when application-level behavior cannot be verified locally.

Compact schema

.base files are YAML. Common top-level keys are filters, formulas, properties, summaries, and views.

filters:
  and:
    - file.inFolder("wiki")
    - 'status != "archived"'

formulas:
  age_days: '((now() - file.ctime) / 86400000).round(0)'
  status_label: 'if(status == "mature", "Ready", "Review")'

properties:
  status:
    displayName: "Status"
  formula.age_days:
    displayName: "Age (days)"

views:
  - type: table
    name: "Wiki pages"
    order:
      - file.name
      - type
      - status
      - updated
      - formula.age_days

Global filters apply to every view. A view may also define its own filters. Recursive filter objects use one of and, or, or not at each level.

filters:
  or:
    - file.hasTag("concept")
    - and:
        - file.hasTag("source")
        - 'status == "active"'

Use note properties by name, file metadata as file.name, file.path, file.folder, file.ext, file.ctime, file.mtime, or file.tags, and computed properties as formula.<name>.

Formula and YAML rules

  • Quote expressions that contain operators, colons, or nested string quotes.
  • Guard nullable properties with if().
  • Subtracting two dates returns a millisecond number. Divide by 86400000 before rounding when a whole-day count is intended.
  • Define every formula.<name> before referencing it in a view or property display configuration.
  • Do not transplant Dataview-only keys such as from or where into a Base.
  • Do not invent properties absent from the selected notes without explaining that the resulting column will be empty.
formulas:
  days_until: 'if(due_date, ((date(due_date) - today()) / 86400000).round(0), "")'

Table, cards, and list views are common:

views:
  - type: cards
    name: "Reading list"
    order:
      - file.name
      - author
      - status
  - type: list
    name: "Quick list"
    order:
      - file.name
      - status

Embed a Base or one named view in a Markdown note:

![[Dashboard.base]]
![[Dashboard.base#Wiki pages]]

After an applied edit, report the operation ID, exact changed path, validation performed, and anything that still requires rendering in Obsidian. Do not commit Git.

Frequently asked questions about Obsidian Bases

Similar skills