skills/elliotjlt/claude-skill-potions/obsidian-vault-search

obsidian-vault-search

SKILL.md

Obsidian Vault Search

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

Request Search Type Method
"Find note about X" Content search grep + frontmatter
"All meetings with Sarah" Property search frontmatter scan
"Notes tagged #project" Tag search frontmatter scan
"What links to [[Note]]" Backlink search wikilink grep
"Notes in Projects/ folder" Folder search find
"Recent notes about X" Combined content + date sort
"Everything related to X" Graph search links + 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?
Weekly Installs
1
GitHub Stars
51
First Seen
6 days ago
Installed on
zencoder1
amp1
cline1
openclaw1
opencode1
cursor1