Exhaustive multi-strategy codebase search using grep, ripgrep, find, and AST-aware tracing to locate implementations, references, dependencies, and usage patterns for a given symbol, pattern, or concept. Use when you need to find every occurrence of a function, type, config key, or concept across a project — especially when simple text search misses indirect references, re-exports, or dynamic usage.
Scanned 5/28/2026
Install via CLI
openskills install MeroZemory/oh-my-droid---
name: deepsearch
description: "Exhaustive multi-strategy codebase search using grep, ripgrep, find, and AST-aware tracing to locate implementations, references, dependencies, and usage patterns for a given symbol, pattern, or concept. Use when you need to find every occurrence of a function, type, config key, or concept across a project — especially when simple text search misses indirect references, re-exports, or dynamic usage."
---
# Deep Search
## Objective
Perform an exhaustive, multi-pass search of the codebase for the specified query, pattern, or concept. Go beyond naive text matching by combining literal search, regex patterns, structural analysis, and dependency tracing to produce a complete map of where and how the target appears.
## Phase 1 — Literal and Regex Search
Start broad. Run parallel searches to catch exact matches, variations, and related terms.
### Exact identifier search
```bash
# Case-sensitive exact match across the project (ripgrep)
rg --word-regexp 'FunctionName' --type-add 'src:*.{ts,tsx,js,jsx,py,go,rs,java}' -t src -n
# If ripgrep is unavailable, fall back to grep
grep -rn --include='*.ts' --include='*.tsx' 'FunctionName' src/
```
### Case-insensitive and partial matches
```bash
# Catch naming-convention variants (camelCase, snake_case, SCREAMING_CASE)
rg -in 'function.name|function_name|FUNCTION_NAME' --glob '!node_modules' --glob '!dist'
```
### Regex pattern search
```bash
# Find all call sites, including method calls and chained usage
rg 'functionName\s*\(' -n --glob '*.{ts,tsx,js,jsx}'
# Find type annotations, generic usage, and interface references
rg ':\s*FunctionName[<\s,\)]' -n --glob '*.{ts,tsx}'
# Find decorators or annotations referencing the target
rg '@FunctionName|@.*FunctionName' -n
```
### File and path search
```bash
# Find files whose name matches the concept
find . -type f \( -name '*function-name*' -o -name '*FunctionName*' \) -not -path '*/node_modules/*'
# Find config or manifest entries
rg 'function.name|functionName' -g '*.{json,yaml,yml,toml,ini,env}'
```
## Phase 2 — Structural and Dependency Tracing
Move beyond text matching to understand the dependency graph around the target.
### Import/export tracing
```bash
# Who imports this symbol?
rg "import.*FunctionName.*from" -n --glob '*.{ts,tsx,js,jsx}'
rg "from\s+['\"].*function-name['\"]" -n --glob '*.{ts,tsx,js,jsx}'
# Who re-exports it? (barrel files, index files)
rg "export.*FunctionName|export \* from.*function-name" -n --glob '*.{ts,tsx,js,jsx}'
# For Python
rg "from\s+\S+\s+import\s+.*FunctionName" -n --glob '*.py'
```
### Reverse dependency walk
For each file that contains the target, ask: "What imports this file?"
```bash
# Extract the module path from the file, then search for imports of that path
rg "from ['\"].*modules/target-module['\"]" -n --glob '*.{ts,tsx,js,jsx}'
```
### Dynamic and indirect references
```bash
# String-based lookups (config keys, event names, route paths)
rg "'function.name'|\"function.name\"|`function.name`" -n
# Object bracket access
rg "\[.*['\"]functionName['\"].*\]" -n
# Reflection, decorators, or registry patterns
rg "register\(.*functionName|resolve\(.*functionName" -n
```
## Phase 3 — Contextual Deep Dive
Read the files identified in Phases 1 and 2 to understand context.
### For each match cluster
1. **Read the surrounding code** (20-30 lines of context) to understand the role of the target at that location.
2. **Check function signatures and type definitions** to understand the contract.
3. **Trace data flow**: Where does the input come from? Where does the output go?
4. **Identify test files**: Search for test files covering the target.
```bash
# Find related test files
find . -type f \( -name '*FunctionName*test*' -o -name '*FunctionName*spec*' -o -name '*test*FunctionName*' \) -not -path '*/node_modules/*'
# Search test content for usage
rg 'FunctionName' --glob '*{test,spec}*.{ts,tsx,js,jsx,py}'
```
### Framework-specific locations to check
- **React/Next.js**: `components/`, `hooks/`, `pages/`, `app/`, `lib/`, `utils/`, `services/`, `store/`, `context/`
- **Express/Fastify**: `routes/`, `middleware/`, `controllers/`, `handlers/`
- **Python/Django**: `views/`, `models/`, `serializers/`, `urls.py`, `tasks/`
- **Go**: Check `cmd/`, `internal/`, `pkg/`, plus any `*_test.go` files
- **Config/infra**: `.env*`, `docker-compose*`, `Dockerfile`, `*.yaml`, `*.toml`, CI workflow files
## Phase 4 — Synthesize and Report
### Output Format
- **Primary Locations** — main implementations with file paths and line numbers
- **Related Files** — dependencies, consumers, and re-exports
- **Usage Patterns** — how the target is used across the codebase (called, extended, composed, configured)
- **Key Insights** — naming conventions, patterns, unexpected coupling, gotchas, dead code
Cite every finding with `file:line` references. Group related findings together.
## Completeness Checkpoint
Before reporting results, verify coverage:
- [ ] Searched for exact name, aliases, and naming-convention variants (camelCase, snake_case, kebab-case)
- [ ] Checked both source code and configuration files (JSON, YAML, TOML, env)
- [ ] Traced imports forward (who uses it) and backward (what it depends on)
- [ ] Searched for dynamic/string-based references (bracket access, registry lookups, event names)
- [ ] Looked in test files for additional usage context
- [ ] Checked framework-specific conventional directories
- [ ] Confirmed no matches were missed in generated/build output directories (dist, build, .next)
If any checklist item is uncovered, go back and run the missing search before finalising the report.
No comments yet. Be the first to comment!