Claude Code Plugins

Community-maintained marketplace

Feedback

Query Obsidian vault using local HTTP API. Use when user asks about tasks, goals, experiments, journals, people, or any vault data.

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name obsidian-query
description Query Obsidian vault using local HTTP API. Use when user asks about tasks, goals, experiments, journals, people, or any vault data.

Obsidian Query Skill

Local HTTP API running on localhost:27180 for querying Obsidian vault data.

Usage

# Generic query: query.py <Base> [View]
python3 .claude/skills/obsidian-query/scripts/query.py Tasks
python3 .claude/skills/obsidian-query/scripts/query.py Tasks "By Project"
python3 .claude/skills/obsidian-query/scripts/query.py Goals "Every morning"
python3 .claude/skills/obsidian-query/scripts/query.py Journals "Weekly Review"
python3 .claude/skills/obsidian-query/scripts/query.py Experiments
python3 .claude/skills/obsidian-query/scripts/query.py People

# Utility commands
python3 .claude/skills/obsidian-query/scripts/query.py bases              # List all bases & views
python3 .claude/skills/obsidian-query/scripts/query.py backlinks <file>   # Who links here?
python3 .claude/skills/obsidian-query/scripts/query.py frontmatter <file> # Get metadata
python3 .claude/skills/obsidian-query/scripts/query.py status             # API health check

Discover Bases & Views

First, list available bases and their views:

python3 .claude/skills/obsidian-query/scripts/query.py bases

Output:

Goals: Current, Every morning, Every week, All
Journals: All Entries, Last 7 Days, Weekly Review
Tasks: Active Tasks, By Project, All Tasks

Then query any base with optional view:

query.py Tasks                  # All fields (auto-discovered)
query.py Tasks "Active Tasks"   # Fields from view's order config
query.py Tasks "By Project"     # Grouped by project

How It Works

The script reads view configuration from the API:

  • order - which fields to display (from view config)
  • groupBy - how to group entries (from view config)
  • If no view specified, auto-discovers all fields from entries

No hardcoded logic - all rendering driven by Base definition.

API Endpoints

GET /status                      # Health check
GET /bases                       # List all bases
GET /bases/:name                 # Query base (default view)
GET /bases/:name?view=ViewName   # Query base with specific view
GET /backlinks/:path             # Who links to this file?
GET /frontmatter/:path           # Get file metadata

Response Structure

{
  "base": "Templates/Bases/Tasks.base",
  "views": ["Active Tasks", "By Project", "All Tasks"],
  "activeView": "By Project",
  "groupBy": {"property": "project", "direction": "ASC"},
  "order": ["file", "status", "due"],
  "count": 8,
  "entries": [...]
}

When to Use

  • "what are my tasks?" → query.py Tasks
  • "tasks by project" → query.py Tasks "By Project"
  • "daily goals" / "morning goals" → query.py Goals "Every morning"
  • "weekly goals" → query.py Goals "Every week"
  • "weekly review" / "journals" → query.py Journals "Weekly Review"
  • "active experiments" → query.py Experiments
  • "who should I reconnect with?" → query.py People