Confirm successful installation by checking the skill directory location:
.cursor/skills/obsidian-bases
Restart Cursor to activate obsidian-bases. Access via /obsidian-bases in your agent's command palette.
β
Security Notice
We perform automated surface-level scans (Gen AI Scanner, Socket, Snyk) during installation. These checks detect common vulnerabilities but do not guarantee complete security. Always review skill source code and verify the publisher's reputation before production use.
Skills execute code in your environment. Always review source, verify the publisher, and test in isolation before production.
Create the file: Create a .base file in the vault with valid YAML content
Define scope: Add filters to select which notes appear (by tag, folder, property, or date)
Add formulas (optional): Define computed properties in the formulas section
Configure views: Add one or more views (table, cards, list, or map) with order specifying which properties to display
Validate: Verify the file is valid YAML with no syntax errors. Check that all referenced properties and formulas exist. Common issues: unquoted strings containing special YAML characters, mismatched quotes in formula expressions, referencing formula.X without defining X in formulas
Test in Obsidian: Open the .base file in Obsidian to confirm the view renders correctly. If it shows a YAML error, check quoting rules below
Schema
Base files use the .base extension and contain valid YAML.
# Global filters apply to ALL views in the basefilters:# Can be a single filter string# OR a recursive filter object with and/or/notand:[]or:[]not:[]# Define formula properties that can be used across all viewsformulas:formula_name:'expression'# Configure display names and settings for propertiesproperties:property_name:displayName:"Display Name"formula.formula_name:displayName:"Formula Display Name"file.ext:displayName:"Extension"# Define custom summary formulassummaries:custom_summary_name:'values.mean().round(3)'# Define one or more viewsviews:-type: table | cards | list | map
name:"View Name"limit:10# Optional: limit resultsgroupBy:# Optional: group resultsproperty: property_name
direction: ASC | DESC
filters:# View-specific filtersand:[]order:# Properties to display in order- file.name
- property_name
- formula.formula_name
summaries:# Map properties to summary formulasproperty_name: Average
Filter Syntax
Filters narrow down results. They can be applied globally or per-view.
Filter Structure
# Single filterfilters:'status == "done"'# AND - all conditions must be truefilters:and:-'status == "done"'-'priority > 3'# OR - any condition can be truefilters:or:-'file.hasTag("book")'-'file.hasTag("article")'# NOT - exclude matching itemsfilters:not:-'file.hasTag("archived")'# Nested filtersfilters:or:- file.hasTag("tag")
-and:- file.hasTag("book")
- file.hasLink("Textbook")
-not:- file.hasTag("book")
- file.inFolder("Required Reading")
Filter Operators
Operator
Description
==
equals
!=
not equal
>
greater than
<
less than
>=
greater than or equal
<=
less than or equal
&&
logical and
||
logical or
!
logical not
Properties
Three Types of Properties
Note properties - From frontmatter: note.author or just author
File properties - File metadata: file.name, file.mtime, etc.
Formula properties - Computed values: formula.my_formula
File Properties Reference
Property
Type
Description
file.name
String
File name
file.basename
String
File name without extension
file.path
String
Full path to file
file.folder
String
Parent folder path
file.ext
String
File extension
file.size
Number
File size in bytes
file.ctime
Date
Created time
file.mtime
Date
Modified time
file.tags
List
All tags in file
file.links
List
Internal links in file
file.backlinks
List
Files linking to this file
file.embeds
List
Embeds in the note
file.properties
Object
All frontmatter properties
The this Keyword
In main content area: refers to the base file itself
When embedded: refers to the embedding file
In sidebar: refers to the active file in main content
Formula Syntax
Formulas compute values from properties. Defined in the formulas section.
formulas:# Simple arithmetictotal:"price * quantity"# Conditional logicstatus_icon:'if(done, "β ", "β³")'# String formattingformatted_price:'if(price, price.toFixed(2) + " dollars")'# Date formattingcreated:'file.ctime.format("YYYY-MM-DD")'# Calculate days since created (use .days for Duration)days_old:'(now() - file.ctime).days'# Calculate days until due datedays_until_due:'if(due_date, (date(due_date) - today()).days, "")'
Key Functions
Most commonly used functions. For the complete reference of all types (Date, String, Number, List, File, Link, Object, RegExp), see FUNCTIONS_REFERENCE.md.
Function
Signature
Description
date()
date(string): date
Parse string to date (YYYY-MM-DD HH:mm:ss)
now()
now(): date
Current date and time
today()
today(): date
Current date (time = 00:00:00)
if()
if(condition, trueResult, falseResult?)
Conditional
duration()
duration(string): duration
Parse duration string
file()
file(path): file
Get file object
link()
link(path, display?): Link
Create a link
Duration Type
When subtracting two dates, the result is a Duration type (not a number).
IMPORTANT: Duration does NOT support .round(), .floor(), .ceil() directly. Access a numeric field first (like .days), then apply number functions.
# CORRECT: Calculate days between dates"(date(due_date) - today()).days" # Returns number of days"(now() - file.ctime).days" # Days since created"(date(due_date) - today()).days.round(0)" # Rounded days# WRONG - will cause error:# "((date(due) - today()) / 86400000).round(0)" # Duration doesn't support division then round
Date Arithmetic
# Duration units: y/year/years, M/month/months, d/day/days,# w/week/weeks, h/hour/hours, m/minute/minutes, s/second/seconds"now() + \"1 day\"" # Tomorrow"today() + \"7d\"" # A week from today"now() - file.ctime" # Returns Duration"(now() - file.ctime).days" # Get days as number
View Types
Table View
views:-type: table
name:"My Table"order:- file.name
- status
- due_date
summaries:price: Sum
count: Average
βΊAccess to product documentation and roadmap tools (Jira, Notion, etc.)
βΊUnderstanding of product management frameworks (RICE, Jobs-to-be-Done, etc.)
βΊStakeholder contact information and communication channels
Time Estimate
30-60 minutes to see productivity improvements
Steps
1Install product management skill
2Start with user story generation for known feature
3Progress to competitive analysis: research 2-3 competitors
4Use for roadmap prioritization: apply RICE/ICE scoring
5Draft stakeholder communications and refine based on feedback
6Build template library for recurring PM tasks
7Share effective prompts with product team
Common Pitfalls
β Not validating competitive researchβverify facts before sharing
β Accepting user stories without involving engineering team
β Over-relying on frameworks without qualitative judgment
β Not customizing outputs to company culture and communication style
β Skipping stakeholder validation of generated requirements
Best Practices
β Do
+Validate research and competitive analysis with real data
+Collaborate with engineering when generating technical requirements
+Customize frameworks and templates to your company context
+Use skill for first drafts, refine with stakeholder input
+Document successful prompt patterns for PM tasks
+Combine AI efficiency with human judgment and intuition
β Don't
βDon't publish competitive analysis without fact-checking
βDon't finalize user stories without engineering review
βDon't make prioritization decisions solely on AI scoring
βDon't skip customer validation of generated requirements
βDon't ignore company-specific context and culture
π‘ Pro Tips
β Provide context: company goals, constraints, customer feedback
β Ask for alternatives: 'Show 3 ways to prioritize this roadmap'
β Request stakeholder-specific formatting: 'Executive summary vs. engineering spec'
β Use skill for 70% generation + 30% customization to company needs
When to Use This
β Use when
Use for user story writing, competitive research, roadmap prioritization, stakeholder communication, and PRD drafting. Best for reducing repetitive documentation and research work.
β Avoid when
Avoid for strategic product vision (requires deep customer empathy), pricing decisions (needs market and financial expertise), or when face-to-face customer discovery is more valuable than speed.
Learning Path
1Basic: user stories, feature specs, status updates