grepai-trace-callers
Original:🇺🇸 English
Translated
Find function callers with GrepAI trace. Use this skill to discover what code calls a specific function.
13installs
Added on
NPX Install
npx skill4agent add yoanbernabeu/grepai-skills grepai-trace-callersTags
Translated version includes tags in frontmatterSKILL.md Content
View Translation Comparison →GrepAI Trace Callers
This skill covers using to find all code locations that call a specific function or method.
grepai trace callersWhen to Use This Skill
- Finding all usages of a function before refactoring
- Understanding function dependencies
- Impact analysis before changes
- Code navigation and exploration
What is Trace Callers?
grepai trace callersfunc Login(user, pass) {...}
↑
│
┌───────┴───────────────────┐
│ Who calls Login()? │
├───────────────────────────┤
│ • HandleAuth (auth.go:42) │
│ • TestLogin (test.go:15) │
│ • CLI (main.go:88) │
└───────────────────────────┘Basic Usage
bash
grepai trace callers "FunctionName"Example
bash
grepai trace callers "Login"Output:
🔍 Callers of "Login"
Found 3 callers:
1. HandleAuth
File: handlers/auth.go:42
Context: user.Login(ctx, credentials)
2. TestLoginSuccess
File: handlers/auth_test.go:15
Context: result := Login(testUser, testPass)
3. RunCLI
File: cmd/main.go:88
Context: err := auth.Login(username, password)JSON Output
For programmatic use:
bash
grepai trace callers "Login" --jsonOutput:
json
{
"query": "Login",
"mode": "callers",
"count": 3,
"results": [
{
"file": "handlers/auth.go",
"line": 42,
"caller": "HandleAuth",
"context": "user.Login(ctx, credentials)"
},
{
"file": "handlers/auth_test.go",
"line": 15,
"caller": "TestLoginSuccess",
"context": "result := Login(testUser, testPass)"
},
{
"file": "cmd/main.go",
"line": 88,
"caller": "RunCLI",
"context": "err := auth.Login(username, password)"
}
]
}Compact JSON (AI Optimized)
bash
grepai trace callers "Login" --json --compactOutput:
json
{
"q": "Login",
"m": "callers",
"c": 3,
"r": [
{"f": "handlers/auth.go", "l": 42, "fn": "HandleAuth"},
{"f": "handlers/auth_test.go", "l": 15, "fn": "TestLoginSuccess"},
{"f": "cmd/main.go", "l": 88, "fn": "RunCLI"}
]
}TOON Output (v0.26.0+)
TOON format offers ~50% fewer tokens than JSON:
bash
grepai trace callers "Login" --toonOutput:
callers[3]:
- call_site:
context: "user.Login(ctx, credentials)"
file: handlers/auth.go
line: 42
symbol:
name: HandleAuth
...Note:and--jsonare mutually exclusive.--toon
Extraction Modes
GrepAI offers two extraction modes:
Fast Mode (Default)
Uses regex patterns. Fast and dependency-free.
bash
grepai trace callers "Login" --mode fastPrecise Mode
Uses tree-sitter AST parsing. More accurate but requires tree-sitter.
bash
grepai trace callers "Login" --mode preciseComparison
| Mode | Speed | Accuracy | Dependencies |
|---|---|---|---|
| ⚡⚡⚡ | Good | None |
| ⚡⚡ | Excellent | tree-sitter |
Configuration
Configure trace in :
.grepai/config.yamlyaml
trace:
mode: fast # fast or precise
enabled_languages:
- .go
- .js
- .ts
- .py
- .php
- .rs
exclude_patterns:
- "*_test.go"
- "*.spec.ts"Supported Languages
| Language | Extensions |
|---|---|
| Go | |
| JavaScript | |
| TypeScript | |
| Python | |
| PHP | |
| C/C++ | |
| Rust | |
| Zig | |
| C# | |
| Java | |
| Pascal/Delphi | |
Use Cases
Before Refactoring
bash
# Find all usages before renaming
grepai trace callers "getUserById"
# Check impact of changing signature
grepai trace callers "processPayment"Understanding Codebase
bash
# Who uses this core function?
grepai trace callers "validateToken"
# Find entry points to a module
grepai trace callers "initialize"Debugging
bash
# Where is this function called from?
grepai trace callers "problematicFunction"Code Review
bash
# Verify function usage before approving changes
grepai trace callers "deprecatedMethod"Handling Common Names
If your function name is common, results may include unrelated code:
Problem
bash
grepai trace callers "get" # Too common, many false positivesSolutions
- Use more specific name:
bash
grepai trace callers "getUserProfile"- Filter results by path:
bash
grepai trace callers "get" --json | jq '.results[] | select(.file | contains("auth"))'Combining with Semantic Search
Use together for comprehensive understanding:
bash
# Find what Login does (semantic)
grepai search "user login authentication"
# Find who uses Login (trace)
grepai trace callers "Login"Scripting Examples
Bash
bash
# Count callers
grepai trace callers "MyFunction" --json | jq '.count'
# Get caller function names
grepai trace callers "MyFunction" --json | jq -r '.results[].caller'
# Get file paths only
grepai trace callers "MyFunction" --json | jq -r '.results[].file' | sort -uPython
python
import subprocess
import json
result = subprocess.run(
['grepai', 'trace', 'callers', 'Login', '--json'],
capture_output=True,
text=True
)
data = json.loads(result.stdout)
print(f"Found {data['count']} callers of Login:")
for r in data['results']:
print(f" - {r['caller']} in {r['file']}:{r['line']}")Common Issues
❌ Problem: No callers found
✅ Solutions:
- Check function name spelling (case-sensitive)
- Ensure file type is in
enabled_languages - Run to update symbol index
grepai watch
❌ Problem: Too many false positives
✅ Solutions:
- Use more specific function name
- Add exclude patterns in config
- Filter results with
jq
❌ Problem: Missing some callers
✅ Solutions:
- Try for better accuracy
--mode precise - Check if files are in ignore patterns
Best Practices
- Use exact function name: Case matters
- Check symbol index: Run first
grepai watch - Use JSON for scripts: Easier to parse
- Combine with search: Semantic + trace = full picture
- Filter large results: Use or grep
jq
Output Format
Trace callers result:
🔍 Callers of "Login"
Mode: fast
Language files scanned: 245
Found 3 callers:
1. HandleAuth
File: handlers/auth.go:42
Context: user.Login(ctx, credentials)
2. TestLoginSuccess
File: handlers/auth_test.go:15
Context: result := Login(testUser, testPass)
3. RunCLI
File: cmd/main.go:88
Context: err := auth.Login(username, password)
Tip: Use --json for machine-readable output
Use --mode precise for more accurate results