About obsidian-bases
obsidian-bases is a skill for creating and editing Obsidian `.base` files. It is intended for users building database-like note views with filters, formulas, summaries, and card or table layouts.
Key features
- 01Create and edit `.base` files
- 02Configure filters and formulas
- 03Build summary views
- 04Display cards or tables
- 05Validate configurations in Obsidian
Use cases
- 01Creating a task-tracking view
- 02Organizing a reading list
- 03Indexing daily notes
- 04Checking formulas and filters in a Base
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ sickn33/ agentic-awesome-skills --skill obsidian-basesAfter installing, type/obsidian-basesin Claude Code to confirm it loaded.
Bundled filesreferences/FUNCTIONS_REFERENCE.mdreferences/detailed-guide.md
Details
From the project READMEObsidian Bases Skill
Detailed Guide
Read the detailed guide before executing this skill. It retains the complete procedure and reference material. Treat its safety, prerequisites, and validation requirements as mandatory. For focused work, load the relevant sections; for end-to-end work, read the guide completely.
When to Use
- Use when creating or editing
.basefiles in Obsidian. - Use for database-like note views with filters, formulas, summaries, or cards/tables.
- Use when the user asks about Obsidian Bases specifically.
Complete Examples
Task Tracker Base
filters:
and:
- file.hasTag("task")
- 'file.ext == "md"'
formulas:
days_until_due: 'if(due, (date(due) - today()).days, "")'
is_overdue: 'if(due, date(due) < today() && status != "done", false)'
priority_label: 'if(priority == 1, "🔴 High", if(priority == 2, "🟡 Medium", "🟢 Low"))'
properties:
status:
displayName: Status
formula.days_until_due:
displayName: "Days Until Due"
formula.priority_label:
displayName: Priority
views:
- type: table
name: "Active Tasks"
filters:
and:
- 'status != "done"'
order:
- file.name
- status
- formula.priority_label
- due
- formula.days_until_due
groupBy:
property: status
direction: ASC
summaries:
formula.days_until_due: Average
- type: table
name: "Completed"
filters:
and:
- 'status == "done"'
order:
- file.name
- completed_date
Reading List Base
filters:
or:
- file.hasTag("book")
- file.hasTag("article")
formulas:
reading_time: 'if(pages, (pages * 2).toString() + " min", "")'
status_icon: 'if(status == "reading", "📖", if(status == "done", "✅", "📚"))'
year_read: 'if(finished_date, date(finished_date).year, "")'
properties:
author:
displayName: Author
formula.status_icon:
displayName: ""
formula.reading_time:
displayName: "Est. Time"
views:
- type: cards
name: "Library"
order:
- cover
- file.name
- author
- formula.status_icon
filters:
not:
- 'status == "dropped"'
- type: table
name: "Reading List"
filters:
and:
- 'status == "to-read"'
order:
- file.name
- author
- pages
- formula.reading_time
Daily Notes Index
filters:
and:
- file.inFolder("Daily Notes")
- '/^\d{4}-\d{2}-\d{2}$/.matches(file.basename)'
formulas:
word_estimate: '(file.size / 5).round(0)'
day_of_week: 'date(file.basename).format("dddd")'
properties:
formula.day_of_week:
displayName: "Day"
formula.word_estimate:
displayName: "~Words"
views:
- type: table
name: "Recent Notes"
limit: 30
order:
- file.name
- formula.day_of_week
- formula.word_estimate
- file.mtime
Limitations
- Use this skill only when the task clearly matches the scope described above.
- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.
- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.
Scope and data limitations
Use a copy or preview before replacing an existing Base. Global filters select data for a view; they are not access controls, and a view limit is not a retention or privacy boundary. YAML parsing alone does not validate the Obsidian expression language or plugin availability. Match view types/functions to the installed version and verify representative missing, zero, malformed and timezone-sensitive dates in Obsidian. The reading-time and byte-based word estimates are rough display heuristics, not measured counts. Escape untrusted strings before rendering HTML and avoid remote images/URLs for private notes without approval. A Base configures presentation and formulas; it does not enforce required fields or database constraints.