بنقرة واحدة
grepai-trace-graph
Build complete call graphs with GrepAI trace. Use this skill for recursive dependency analysis.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Build complete call graphs with GrepAI trace. Use this skill for recursive dependency analysis.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Use when user wants help choosing an approach or isn't sure where to start — presents bar-based options.
Use when user wants bar to automatically shape every response — detects and applies bar structuring without being asked.
Use when user asks which token fits an intent — looks up bar tokens by intent phrase and returns ranked matches. token matches a user's intent, when you need the full metadata for a specific token, or when you need all tokens on an axis.
Use when user wants to learn bar commands or build prompts manually — guides bar CLI usage step by step.
bar CLI — structured prompting tool. Use when the user wants to run bar build, apply bar tokens, build a workflow, or get help with bar commands. Covers autopilot, workflow, suggest, manual, dictionary, and all bar token usage.
Use when user wants to chain multiple steps or build a sequence — constructs and runs multi-step bar command workflows.
| name | grepai-trace-graph |
| description | Build complete call graphs with GrepAI trace. Use this skill for recursive dependency analysis. |
This skill covers using grepai trace graph to build complete call graphs showing all dependencies recursively.
grepai trace graph builds a recursive dependency tree:
main
├── initialize
│ ├── loadConfig
│ │ └── parseYAML
│ └── connectDB
│ ├── createPool
│ └── ping
├── startServer
│ ├── registerRoutes
│ │ ├── authMiddleware
│ │ └── loggingMiddleware
│ └── listen
└── gracefulShutdown
└── closeDB
grepai trace graph "FunctionName"
grepai trace graph "main"
Output:
🔍 Call Graph for "main"
main
├── initialize
│ ├── loadConfig
│ └── connectDB
├── startServer
│ ├── registerRoutes
│ └── listen
└── gracefulShutdown
└── closeDB
Nodes: 9
Max depth: 3
Limit recursion depth with --depth:
# Default depth (2 levels)
grepai trace graph "main"
# Deeper analysis (3 levels)
grepai trace graph "main" --depth 3
# Shallow (1 level, same as callees)
grepai trace graph "main" --depth 1
# Very deep (5 levels)
grepai trace graph "main" --depth 5
--depth 1 (same as callees):
main
├── initialize
├── startServer
└── gracefulShutdown
--depth 2 (default):
main
├── initialize
│ ├── loadConfig
│ └── connectDB
├── startServer
│ ├── registerRoutes
│ └── listen
└── gracefulShutdown
└── closeDB
--depth 3:
main
├── initialize
│ ├── loadConfig
│ │ └── parseYAML
│ └── connectDB
│ ├── createPool
│ └── ping
├── startServer
│ ├── registerRoutes
│ │ ├── authMiddleware
│ │ └── loggingMiddleware
│ └── listen
└── gracefulShutdown
└── closeDB
grepai trace graph "main" --depth 2 --json
Output:
{
"query": "main",
"mode": "graph",
"depth": 2,
"root": {
"name": "main",
"file": "cmd/main.go",
"line": 10,
"children": [
{
"name": "initialize",
"file": "cmd/main.go",
"line": 15,
"children": [
{
"name": "loadConfig",
"file": "config/config.go",
"line": 20,
"children": []
},
{
"name": "connectDB",
"file": "db/db.go",
"line": 30,
"children": []
}
]
},
{
"name": "startServer",
"file": "server/server.go",
"line": 25,
"children": [
{
"name": "registerRoutes",
"file": "server/routes.go",
"line": 10,
"children": []
}
]
}
]
},
"stats": {
"nodes": 6,
"max_depth": 2
}
}
grepai trace graph "main" --depth 2 --json --compact
Output:
{
"q": "main",
"d": 2,
"r": {
"n": "main",
"c": [
{"n": "initialize", "c": [{"n": "loadConfig"}, {"n": "connectDB"}]},
{"n": "startServer", "c": [{"n": "registerRoutes"}]}
]
},
"s": {"nodes": 6, "depth": 2}
}
# Fast mode (regex-based)
grepai trace graph "main" --mode fast
# Precise mode (tree-sitter AST)
grepai trace graph "main" --mode precise
# Map entire application startup
grepai trace graph "main" --depth 4
# What depends on this utility function?
grepai trace graph "validateInput" --depth 3
# Full impact of changing database layer
grepai trace graph "executeQuery" --depth 2
# Is this function too complex?
grepai trace graph "processOrder" --depth 5
# Many nodes = high complexity
# Generate architecture diagram data
grepai trace graph "main" --depth 3 --json > architecture.json
# What would break if we change this?
grepai trace graph "legacyAuth" --depth 3
GrepAI detects and marks circular dependencies:
main
├── processA
│ └── processB
│ └── processA [CYCLE]
In JSON:
{
"name": "processA",
"cycle": true
}
For very large codebases, graphs can be overwhelming:
# Start shallow
grepai trace graph "main" --depth 2
# Instead of main, trace specific subsystem
grepai trace graph "authMiddleware" --depth 3
# Get JSON and filter
grepai trace graph "main" --depth 3 --json | jq '...'
# Convert JSON to DOT
grepai trace graph "main" --depth 3 --json | python3 << 'EOF'
import json
import sys
data = json.load(sys.stdin)
print("digraph G {")
print(" rankdir=TB;")
def traverse(node, parent=None):
name = node.get('name') or node.get('n')
if parent:
print(f' "{parent}" -> "{name}";')
children = node.get('children') or node.get('c') or []
for child in children:
traverse(child, name)
traverse(data.get('root') or data.get('r'))
print("}")
EOF
Then render:
dot -Tpng graph.dot -o graph.png
grepai trace graph "main" --depth 2 --json | python3 << 'EOF'
import json
import sys
data = json.load(sys.stdin)
print("```mermaid")
print("graph TD")
def traverse(node, parent=None):
name = node.get('name') or node.get('n')
if parent:
print(f" {parent} --> {name}")
children = node.get('children') or node.get('c') or []
for child in children:
traverse(child, name)
traverse(data.get('root') or data.get('r'))
print("```")
EOF
Track complexity over time:
# Get node count
grepai trace graph "main" --depth 3 --json | jq '.stats.nodes'
# Compare before/after refactoring
echo "Before: $(grepai trace graph 'main' --depth 3 --json | jq '.stats.nodes') nodes"
# ... refactoring ...
echo "After: $(grepai trace graph 'main' --depth 3 --json | jq '.stats.nodes') nodes"
❌ Problem: Graph too large / timeout ✅ Solutions:
--depth 2main--mode fast❌ Problem: Many cycles detected ✅ Solution: This indicates circular dependencies in code. Consider refactoring.
❌ Problem: Missing branches ✅ Solutions:
--mode precise--depth 2, increase as neededmainTrace graph result:
🔍 Call Graph for "main"
Depth: 3
Mode: fast
main
├── initialize
│ ├── loadConfig
│ │ └── parseYAML
│ └── connectDB
│ ├── createPool
│ └── ping
├── startServer
│ ├── registerRoutes
│ │ ├── authMiddleware
│ │ └── loggingMiddleware
│ └── listen
└── gracefulShutdown
└── closeDB
Statistics:
- Total nodes: 12
- Maximum depth reached: 3
- Cycles detected: 0
Tip: Use --json for machine-readable output
Use --depth N to control recursion depth