
Obsidian Bases
FreeStreamline your Obsidian database workflows with ease.
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 source1. Install with the skills CLI
npx skills add agricidaniel/claude-obsidian/obsidian-bases --agent claude-code2. 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 agricidanielObsidian 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
-
Inspect representative note properties and any existing
.basefile. -
Define the smallest filter that selects the intended notes.
-
Add formulas only for values that must be computed.
-
Choose views and display order. Do not assume a view type or option is supported by the user's Obsidian version or installed plugins.
-
Validate YAML, expression quoting, property names, formula references, and null handling.
-
Preview the complete file and expected result set before a mutation.
-
If an edit was requested, read operation-transactions.md, keep the
.basefile underwiki/, and build oneclaude-obsidian.transaction.v1bundle withoperation_type: base. Inspect it, then setAPPROVAL_SHA256to the returnedapproval_sha256only after review and apply once:python3 "$CORE" transaction inspect "$BUNDLE" --vault "$VAULT" python3 "$CORE" transaction apply "$BUNDLE" --vault "$VAULT" \ --approved-plan-sha256 "$APPROVAL_SHA256" -
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
86400000before 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
fromorwhereinto 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
Napkin
Collaborate visually with Copilot using an interactive whiteboard.
Mode Creator
Custom note-taking modes for claude-mem.
Google Meet Assistant
Join, transcribe, and interact in Google Meet calls.
Memory Keeper
Organize lessons learned into reusable knowledge.
Meeting Minutes
Generate concise, actionable meeting minutes effortlessly.
Brag Sheet
Transform your work into impactful statements for reviews.
