Refactor high-complexity React components in Dify frontend. Use when `pnpm analyze-component...
npx skills add totallyGreg/claude-mp --skill "obsidian-pkm-manager"
Install specific skill from multi-skill repository
# Description
Expert guidance for managing Obsidian-based Personal Knowledge Management (PKM) systems. This skill should be used when organizing, optimizing, or evolving note-taking workflows in Obsidian, including template creation with Templater, relationship management with Bases, vault structure analysis, frontmatter design, and metadata strategies. Particularly useful for creating automatic note organization systems, temporal rollup structures (daily to yearly), and maintaining job-agnostic organizational patterns.
# SKILL.md
name: obsidian-pkm-manager
description: Expert guidance for managing Obsidian-based Personal Knowledge Management (PKM) systems. This skill should be used when organizing, optimizing, or evolving note-taking workflows in Obsidian, including template creation with Templater, relationship management with Bases, vault structure analysis, frontmatter design, and metadata strategies. Particularly useful for creating automatic note organization systems, temporal rollup structures (daily to yearly), and maintaining job-agnostic organizational patterns.
metadata:
version: "1.0.0"
Obsidian PKM Manager
Overview
Provide expert guidance for organizing and evolving Obsidian-based Personal Knowledge Management systems. Help users create efficient workflows for quick note capture with automatic organization through metadata, templates, and relationship queries.
Core PKM Principles
When working with PKM systems, prioritize these principles:
-
Quick Capture, Smart Organization - Notes should be created quickly with minimal friction. Organization happens automatically through metadata and queries, not manual filing.
-
Metadata Over Folders - Use frontmatter properties and Bases queries to create dynamic structure rather than rigid folder hierarchies. Folders are for major grouping only (e.g., separating work from personal, or archiving old companies).
-
Automatic Aggregation - Design systems where notes automatically appear in relevant views through shared metadata (aliases, tags, properties) rather than manual linking.
-
Progressive Disclosure - Daily notes roll up to weekly, weekly to monthly, monthly to quarterly, quarterly to yearly. Each level provides increasing abstraction while preserving detail through embedded queries.
-
Job-Agnostic Structure - Work-related notes should be organized to allow easy archiving when changing jobs while maintaining searchability and relationship integrity.
When to Use This Skill
Use this skill when users ask for help with:
- Organizing or reorganizing their Obsidian vault structure
- Creating or improving Templater templates
- Designing frontmatter schemas and metadata strategies
- Building Bases queries and relationship views
- Setting up temporal rollup systems (daily β weekly β monthly)
- Analyzing vault consistency and suggesting improvements
- Migrating from Dataview to Bases
- Understanding Excalibrain metadata requirements
- Creating automatic note categorization systems
- Designing job-agnostic work note structures
Core Capabilities
1. Vault Analysis and Recommendations
When asked to analyze a vault or suggest improvements:
- Understand Current Structure
- Ask about their folder organization philosophy
- Review existing templates to understand their note types
- Identify metadata patterns in use
-
Check for .base files and understand their queries
-
Analyze for Issues
-
Use
scripts/analyze_vault.pyto find:- Untagged notes
- Orphaned files (no links in or out)
- Inconsistent frontmatter patterns
- Duplicate or similar note titles
- Missing temporal links (daily notes without week/month references)
-
Provide Actionable Recommendations
- Suggest specific frontmatter improvements
- Recommend Bases queries for automatic organization
- Identify opportunities for template consolidation
- Propose folder structure refinements based on their workflow
2. Template Creation with Templater
When helping create or improve templates:
Key Templater Patterns:
// Prompt user for input
const value = await tp.system.prompt("Question?", defaultValue);
// Rename current file
await tp.file.rename(newName);
// Move file to folder
await tp.file.move("folder/path/" + fileName);
// Get date in specific format
tp.date.now("YYYY-MM-DD", offset, reference, referenceFormat)
// Include another template
tp.file.include("[[Template Name]]")
// Set cursor position
tp.file.cursor(1)
// Focus editor
app.workspace.activeLeaf.view.editor?.focus();
Template Structure Best Practices:
- File Movement Logic - Templates should:
- Prompt for essential information first
- Rename the file based on user input
- Move to the appropriate folder automatically
-
Use consistent naming patterns
-
Frontmatter Design
- Include
aliasesfor alternative names/abbreviations - Add
tagsfor categorical organization - Set
date createdanddate modifiedfor temporal tracking - Add relationship properties for Bases queries
-
Use
fileClassfor broad categorization -
Dynamic Content
- Embed Bases views using
![[BaseName.base#ViewName]] - Include reusable template fragments
- Position cursor at natural starting point
Example: Meeting Note Template Pattern
<%*
const meetingTitle = await tp.system.prompt("Meeting title?", tp.file.title);
const customer = await tp.system.suggester(
(item) => item,
["Customer A", "Customer B", "Customer C"]
);
const projectFolder = "700 Notes/Work Notes/";
await tp.file.move(projectFolder + tp.date.now("YYYY-MM-DD") + " " + meetingTitle);
-%>
---
title: <% meetingTitle %>
date: <% tp.file.creation_date() %>
customer: [[<% customer %>]]
tags: [meeting, work]
aliases:
- <% tp.date.now("YYYY-MM-DD") %> <% meetingTitle %>
---
# <% meetingTitle %>
Customer: [[<% customer %>]]
Date: <% tp.date.now("YYYY-MM-DD") %>
## Notes
<% tp.file.cursor(1) %>
## Action Items
- [ ]
![[Notes.base#Related Files]]
See references/templater-patterns.md for more examples and advanced patterns.
3. Bases Query Design
Bases is the preferred method for creating dynamic relationships (replacing Dataview inline queries).
Core Bases Concepts:
- Properties - Define which file properties to display (e.g.,
file.name,file.tags,note.summary) - Formulas - Calculated values (e.g.,
file.backlinks.map(value.asFile())) - Views - Tables with filters, sorting, and column configuration
- Filters - Query logic to select notes (e.g.,
file.tags.contains("term"))
Common Bases Patterns:
See references/bases-patterns.md for detailed examples including:
- Automatic alias aggregation (showing all terms with same abbreviation)
- Temporal queries (all notes from this week/month)
- Relationship views (all meetings for a customer)
- File type filtering and organization
Creating a New .base File:
Use templates from assets/base-templates/ as starting points:
- related-files.base - Generic backlinks view
- temporal-rollup.base - Daily β weekly β monthly queries
- terminology.base - Alias-based aggregation
- customer-notes.base - Work note organization
4. Frontmatter Schema Design
When designing or improving frontmatter schemas:
Essential Fields:
- title - Clear, human-readable title
- aliases - Alternative names, abbreviations, dates
- tags - Categorical organization (use / for hierarchy)
- date created / date modified - Temporal tracking
Relationship Fields:
- Use for Bases queries
- Link to related notes: customer: [[Customer Name]]
- Multiple links: projects: [[[Project A]], [[Project B]]]
- Temporal hierarchy: Week, Month, Quarter, Year
Semantic Fields (for Excalibrain):
- parent - Parent concept/category
- child - Sub-concepts
- left-friend - Related concepts (same category)
- right-friend - Related concepts (different category)
See references/excalibrain-metadata.md for complete semantic field documentation.
Field Consistency:
- Use consistent field names across templates
- Document your schema in vault's "System Guide" note
- Validate with scripts/validate_frontmatter.py
5. Temporal Rollup Systems
Creating automatic aggregation from daily β weekly β monthly β quarterly β yearly:
Design Pattern:
Each level embeds summaries from the level below using Bases queries or dataviewjs:
## Weekly Thoughts
![[Logs.base#This Week]]
### Distilled Thoughts
[Manual reflection on the week]
Key Implementation Details:
- Temporal Links in Frontmatter
- Daily notes link to: Week, Month, Quarter, Year
- Weekly notes link to: Month, Quarter, Year
-
Monthly notes link to: Quarter, Year
-
Query Patterns
- Filter by date range:
where date >= startOf('week') - Filter by linked property:
where Week == [[2025-W50]] -
Sort by date for chronological display
-
Reflection Sections
- Each level has both automated rollup AND manual reflection
- Wins/Challenges/Improvements pattern works well
- Embed specific sections from lower levels:
![[2025-12-15#Key Events]]
See existing templates for patterns:
- 910 File Templates/π New Day.md
- 910 File Templates/π New Week.md
- 910 File Templates/π
New Month.md
6. Job-Agnostic Work Organization
For organizing work notes that survive job changes:
Recommended Structure:
700 Notes/
βββ Companies/ # Company profiles (persist across jobs)
β βββ CustomerName.md # Company info, relationships, history
βββ CurrentJob Notes/ # All notes for current employment
β βββ Customers/ # Customer project notes
β βββ Meetings/ # Meeting notes
β βββ Projects/ # Project documentation
β βββ People/ # Colleague notes
βββ ArchivedJob Notes/ # Previous employment (read-only)
βββ 2020-2023 PreviousCompany/
Key Principles:
- Separation - Keep company profiles separate from job-specific notes
- Linking - Meeting notes link to company profiles:
customer: [[CompanyName]] - Archiving - When changing jobs, rename folder to indicate dates
- Metadata - Use consistent
employerfield in frontmatter for filtering
Template Updates:
When changing jobs, update templates to point to new work folder:
- Search for hardcoded folder paths (e.g., "700 Notes/PAN Notes/")
- Replace with new company name
- Consider using Templater suggester for multi-employer scenarios
7. Vault System Documentation
Each vault should maintain a "System Guide" that documents:
- Current folder structure and philosophy
- Active metadata schema (all properties in use)
- Template inventory and usage
- Bases queries and their purposes
- Conventions (naming, tagging, linking)
- Migration history (e.g., Dataview β Bases transition)
Location Recommendation: 900 πTemplates/PKM-System-Guide.md
Update Triggers:
- New template created
- Frontmatter schema changes
- Folder structure reorganization
- New organizational pattern adopted
The skill can help create this guide by analyzing the vault and documenting current patterns.
Workflow: Creating a New Template
When a user wants to create a new template:
- Understand the Use Case
- What type of note is this?
- What information needs to be captured?
- Where should it be stored?
-
What relationships does it have?
-
Design the Frontmatter
- Required fields: title, aliases, tags, dates
- Relationship fields for Bases queries
- Semantic fields if using Excalibrain
-
Type-specific fields (e.g.,
customer,summary,priority) -
Write Templater Logic
- Prompts for essential information
- File renaming logic
- Auto-movement to correct folder
-
Dynamic alias generation
-
Add Content Structure
- Embed relevant Bases views
- Include common headings
- Add template fragments if needed
-
Set cursor position
-
Create or Update Bases Query
- Does this note type need a new .base file?
- Should it appear in existing queries?
-
Update filters to include new tags/properties
-
Test and Iterate
- Create a test note with the template
- Verify auto-movement and renaming
- Check that Bases queries display correctly
- Refine based on actual usage
Workflow: Analyzing and Improving Vault Organization
When a user wants to improve their vault:
- Understand Current State
- Ask about their organizational philosophy
- Review folder structure
- Examine representative templates
-
Check existing Bases queries
-
Run Analysis
- Use
scripts/analyze_vault.pyfor automated checks - Review git status for frequently modified areas
-
Look for patterns in note creation
-
Identify Pain Points
- Where is manual work happening that could be automated?
- Are notes hard to find or categorize?
- Is the structure fighting their workflow?
-
Are there inconsistencies in metadata?
-
Propose Improvements
- Specific frontmatter additions
- New or updated Bases queries
- Template consolidation or creation
- Folder structure adjustments
-
Workflow simplifications
-
Implement Incrementally
- Start with highest-impact changes
- Update templates first
- Add new Bases queries
- Migrate existing notes gradually
- Document changes in System Guide
Resources
scripts/
analyze_vault.py- Analyze vault for common issues (untagged notes, orphans, inconsistencies)validate_frontmatter.py- Check frontmatter against schema
references/
templater-patterns.md- Common Templater code patterns and examplesbases-patterns.md- Example Bases queries for various use casesexcalibrain-metadata.md- Excalibrain semantic relationship mappingfolder-structures.md- Example vault organizations for different workflows
assets/
base-templates/- Starting .base files for common scenariosrelated-files.basetemporal-rollup.baseterminology.basecustomer-notes.basetemplater-snippets/- Reusable Templater code blocks
Best Practices
- Start Simple - Don't over-engineer. Add complexity only when needed.
- Metadata is Key - Good frontmatter enables automatic organization.
- Test Templates - Always create test notes to verify template behavior.
- Document Conventions - Maintain a System Guide in the vault.
- Incremental Migration - When changing patterns, migrate gradually.
- Leverage Aliases - They enable powerful automatic aggregation.
- Embed Bases Views - Bring organization to notes, not notes to folders.
- Temporal Hierarchy - Day β Week β Month β Quarter β Year creates reviewable history.
Common Anti-Patterns to Avoid
- Manual Filing - Don't rely on users to remember folder structures.
- Rigid Hierarchies - Folders should be broad categories, not detailed organization.
- Duplicate Information - Use queries and embeds instead of copying content.
- Hardcoded Paths - Make templates adaptable for job changes or reorganization.
- Inline Metadata - Bases doesn't support dataview inline fields; use frontmatter.
- Ignoring Relationships - Design for how notes connect, not just how they're filed.
Examples
Example 1: User wants meeting notes to link to customers
Question to Ask:
"Do you have a Customer/Company template already? Should meeting notes link to a company profile or directly to project notes?"
Recommendation:
Create two-level structure:
1. Company profile in 700 Notes/Companies/ (persistent)
2. Meeting note in 700 Notes/Work Notes/Meetings/ (job-specific)
Meeting frontmatter includes:
customer: [[CompanyName]]
project: [[ProjectName]]
Company profile embeds:
![[Notes.base#Company Meetings]]
Where Notes.base has a view filtering for customer == [[this.file.name]]
Example 2: User has inconsistent tagging
Run Analysis:
python3 scripts/analyze_vault.py /path/to/vault --check-tags
Findings:
- 47 notes use #meeting, 23 use #meetings
- 15 notes in "Meetings" folder have no tag
- Tag hierarchy inconsistent: some use work/meeting, others meeting/work
Recommendation:
1. Standardize on #meeting (singular)
2. Update templates to use consistent tag
3. Use Bases filter: file.folder.contains("Meetings") OR file.tags.contains("meeting")
4. Document convention in System Guide
Example 3: User wants to create abbreviation/term system
Review Existing Pattern:
User has working system where:
- Abbreviation notes in 700 Notes/Terminology/
- Each term that shares abbreviation has it in aliases
- Bases query shows all terms with matching alias
Enhancement:
Create template that:
1. Prompts for abbreviation
2. Creates note named for abbreviation
3. Embeds Bases view: ![[Terminology.base#Terms with Context]]
4. Bases filter: aliases == [[this.file.name]]
This automatically aggregates all terms sharing that abbreviation.
When working with users, ask questions to understand their workflow before making recommendations. Every PKM system is personal, so solutions should fit their thinking patterns, not impose a rigid structure.
# Supported AI Coding Agents
This skill is compatible with the SKILL.md standard and works with all major AI coding agents:
Learn more about the SKILL.md standard and how to use these skills with your preferred AI coding agent.