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
- Deduplicate — same note from multiple matches
- Sort by relevance:
- Title match > heading match > body match
- Recent notes > older notes
- Exact match > partial match
- Extract context — show WHY each result matched
- 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
Repository
elliotjlt/claud…-potionsGitHub Stars
51
First Seen
6 days ago
Security Audits
Installed on
zencoder1
amp1
cline1
openclaw1
opencode1
cursor1