Files
gh-nathanvale-side-quest-ma…/commands/search.md
2025-11-30 08:42:13 +08:00

162 lines
3.9 KiB
Markdown

---
description: $ARGUMENTS - Search Obsidian vault with PARA-aware context
allowed-tools: mcp__MCP_DOCKER__obsidian_simple_search, mcp__MCP_DOCKER__obsidian_complex_search, mcp__MCP_DOCKER__obsidian_get_file_contents, mcp__MCP_DOCKER__obsidian_list_files_in_dir, mcp__MCP_DOCKER__obsidian_patch_content, AskUserQuestion
---
# Search Second Brain
You search the user's Obsidian vault with PARA-aware context.
## Input
Search query: **$ARGUMENTS**
## Search Strategy
### 1. Parse Query Intent
Determine search type:
- **By content**: General text search
- **By type**: "projects about X", "resources for Y"
- **By status**: "active projects", "inbox items"
- **By area**: "everything related to [area]"
- **By date**: "created this week", "due soon"
### 2. Execute Search
**Content Search**:
```
mcp__MCP_DOCKER__obsidian_simple_search
query: [search terms]
context_length: 150
```
**Folder-Specific Search**:
```
mcp__MCP_DOCKER__obsidian_list_files_in_dir
dirpath: [01_Projects|02_Areas|03_Resources|04_Archive]
```
Then filter/search within results.
**Complex Search (JsonLogic)**:
```
mcp__MCP_DOCKER__obsidian_complex_search
query: {"and": [
{"glob": ["01_Projects/**/*.md", {"var": "path"}]},
{"in": ["active", {"var": "content"}]}
]}
```
### 3. Present Results
```markdown
## Search Results: "[query]"
Found X results across your vault:
### Projects (X)
- [[Project 1]] - [brief context]
- [[Project 2]] - [brief context]
### Areas (X)
- [[Area 1]] - [brief context]
### Resources (X)
- [[Resource 1]] - [brief context]
### Archive (X)
- [[Archived Item]] - [brief context]
---
**Refine search?**
- `/para:search [query] in:projects` - Search only projects
- `/para:search [query] status:active` - Only active items
- `/para:search [query] area:[[Area Name]]` - By area
```
## Search Modifiers
| Modifier | Example | Description |
|----------|---------|-------------|
| `in:projects` | `meeting in:projects` | Search only 01_Projects/ |
| `in:areas` | `health in:areas` | Search only 02_Areas/ |
| `in:resources` | `typescript in:resources` | Search only 03_Resources/ |
| `in:inbox` | `urgent in:inbox` | Search only 00_Inbox/ |
| `status:active` | `api status:active` | Only active items |
| `status:completed` | `auth status:completed` | Only completed items |
| `area:[[X]]` | `task area:[[Work]]` | Items linked to area |
| `created:today` | `notes created:today` | Created today |
| `created:week` | `ideas created:week` | Created this week |
## Common Searches
**Find all active projects**:
```
/para:search status:active in:projects
```
**Find resources about a topic**:
```
/para:search typescript in:resources
```
**Find items in an area**:
```
/para:search area:[[Health & Fitness]]
```
**Find inbox items needing processing**:
```
/para:search in:inbox
```
**Find recently created notes**:
```
/para:search created:week
```
## No Results?
If search returns nothing:
1. Suggest alternative search terms
2. Check if content might be in a different PARA category
3. Offer to create a new note with this topic
---
## Lazy Migration: Validate Notes on Read
When user selects a note to view details, validate its frontmatter.
**See**: [_shared/validate-note.md](_shared/validate-note.md) for schemas.
### After Reading a Note
1. Parse frontmatter and check `type:` field
2. Compare against schema for that type
3. If missing required fields, show:
```markdown
### ⚠️ Note needs update
**[[Note Title]]** is missing required fields:
- `areas` - Which area(s) does this relate to?
- `reviewed` - Last review date
**Update now?** This takes 10 seconds.
```
4. If user agrees:
- Use `AskUserQuestion` to gather missing values
- Use `obsidian_patch_content` to update frontmatter
- Confirm update complete
5. Continue with original search results
### Skip Validation If
- Note was reviewed in last 7 days (`reviewed` field is recent)
- User previously declined to update this note in session