Obsidian Vault Search

SkillSearch

Searches an Obsidian vault intelligently — combines CLI search, frontmatter filtering, content grep, and wikilink traversal. Goes beyond keyword search to find notes by property, by link, by folder, and by content. Activates on "find in vault", "search vault", "which note has", "where did I write about", or when looking for specific notes in Obsidian.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the Obsidian Vault Search skill

What this skill tells your AI

The instructions your AI receives, as published by elliotjlt/claude-skill-potions in skills/obsidian-vault-search/SKILL.md and read by ahel’s review.

When To Activate

Do NOT trigger for:

  • Searching code repositories (use zero-in)
  • Web search (different skill entirely)
  • Single file content search (just read the file)

Instructions

Step 1: Classify the Search

RequestSearch TypeMethod
"Find note about X"Content searchgrep + frontmatter
"All meetings with Sarah"Property searchfrontmatter scan
"Notes tagged #project"Tag searchfrontmatter scan
"What links to [[Note]]"Backlink searchwikilink grep
"Notes in Projects/ folder"Folder searchfind
"Recent notes about X"Combinedcontent + date sort
"Everything related to X"Graph searchlinks + content

Match the search method to the request. Don't grep the whole vault for a property-based question.

Step 2: Run the Appropriate Search

<search_methods>

Content search — find notes mentioning a term:

# Basic content search
grep -rl "search term" "$VAULT_PATH" --include="*.md" | head -20

# With context (shows surrounding lines)
grep -rn "search term" "$VAULT_PATH" --include="*.md" -C 2 | head -50

# Case insensitive
grep -ril "search term" "$VAULT_PATH" --include="*.md"

Property search — find notes with specific frontmatter:

# Find by type
grep -rl "^type: meeting" "$VAULT_PATH" --include="*.md"

# Find by status
grep -rl "^status: active" "$VAULT_PATH" --include="*.md"

# Find by tag in frontmatter
grep -rl "tags:" "$VAULT_PATH" --include="*.md" | \
  xargs grep -l "project-name"

# Find by attendee
grep -rl "attendees:" "$VAULT_PATH" --include="*.md" | \
  xargs grep -l "Sarah"

# Combined: active meetings
grep -rl "^type: meeting" "$VAULT_PATH" --include="*.md" | \
  xargs grep -l "^status: active"

Tag search — find notes with specific tags:

# Inline tags
grep -rl "#tag-name" "$VAULT_PATH" --include="*.md"

# Frontmatter tags
grep -rl "  - tag-name" "$VAULT_PATH" --include="*.md"

# Both
grep -rl "#tag-name\|  - tag-name" "$VAULT_PATH" --include="*.md"

Backlink search — find notes that link to a specific note:

# Find all notes linking to [[Note Name]]
grep -rl "\[\[Note Name" "$VAULT_PATH" --include="*.md"

# Find links with aliases
grep -rl "\[\[Note Name|" "$VAULT_PATH" --include="*.md"

Folder search — find notes in a specific location:

find "$VAULT_PATH/Projects/project-name" -name "*.md" | sort

Date-range search — find notes by date:

# Notes modified in last 7 days
find "$VAULT_PATH" -name "*.md" -mtime -7 | sort

# Notes with date property in range
grep -rl "^date: 2026-02" "$VAULT_PATH" --include="*.md"

CLI search (if available):

# Official CLI
obsidian search query="search term" limit=20

# Yakitrak CLI
obsidian-cli search-content "search term"

</search_methods>

Step 3: Rank and Present Results

  1. Deduplicate — same note from multiple matches
  2. Sort by relevance:
    • Title match > heading match > body match
    • Recent notes > older notes
    • Exact match > partial match
  3. Extract context — show WHY each result matched
  4. Show frontmatter — type, status, date for each result
# For each result, extract useful metadata
for file in $RESULTS; do
  echo "---"
  echo "File: $file"
  # Get frontmatter type and status
  head -10 "$file" | grep "^type:\|^status:\|^date:"
  # Get the match context
  grep -n "search term" "$file" | head -3
done

Step 4: Offer Follow-Up Actions

  • "Open [[Note Name]] to read it?"
  • "Want to see notes that link to this one?"
  • "Should I create a base view for this query?"
  • "Want to add this to today's daily note?"

Output Format

## Vault Search: "query"

**Found:** X notes

### Results

1. **[[Note Title]]** — Notes/note-title.md
   Type: note | Status: active | Date: 2026-02-10
   > ...matching context...

2. **[[Another Note]]** — Projects/project/another-note.md
   Type: meeting | Status: active | Date: 2026-02-08
   > ...matching context...

### Related
- [[Linked Note 1]] (linked from result #1)
- [[Linked Note 2]] (linked from result #2)

Want to open any of these, or refine the search?

NEVER

  • Dump raw grep output without processing
  • Search the entire vault without narrowing scope first
  • Return more than 20 results without asking to narrow
  • Search without indicating what was searched and how
  • Open or modify notes during a search (search is read-only)

ALWAYS

  • Classify the search type before running commands
  • Use the most targeted search method for the request
  • Show frontmatter metadata alongside results
  • Deduplicate results
  • Offer follow-up actions
  • Suggest narrowing if too many results (>20)

Example

User: "Find all my meeting notes about the API project"

Vault Search: "meeting notes about API project"

Search: type == meeting AND (content contains "API" OR project == "api")

Found: 4 notes

1. [[2026-02-10 API Design Review]] — Projects/api/meetings/2026-02-10-api-design-review.md
   Type: meeting | Status: active | Date: 2026-02-10
   > Discussed rate limiting approach and endpoint contracts

2. [[2026-02-05 API Sprint Planning]] — Projects/api/meetings/2026-02-05-api-sprint-planning.md
   Type: meeting | Status: active | Date: 2026-02-05
   > Sprint goals: auth middleware, rate limiting, documentation

3. [[2026-01-28 API Kickoff]] — Projects/api/meetings/2026-01-28-api-kickoff.md
   Type: meeting | Status: completed | Date: 2026-01-28
   > Initial scope: REST API for mobile app

4. [[2026-01-20 API Requirements]] — Projects/api/meetings/2026-01-20-api-requirements.md
   Type: meeting | Status: completed | Date: 2026-01-20
   > Requirements gathering with product team

Related notes:
- [[api-design]] (linked from 3 meetings)
- [[api-rate-limiting]] (linked from #1, #2)

Want to open any of these?

Signals

GitHub stars
62
Forks
2
Last commit
Feb 2026
Advanced
Catalog kind
skill
Gateway key
obsidian-vault-search
Source
github.com/elliotjlt/claude-skill-potions