К основному содержанию
скилл CX Codex

grepai-trace-graph — скилл для Claude Code: графы вызовов

Скилл учит агента строить рекурсивные графы вызовов через grepai trace graph: кто кого вызывает и на какую глубину.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add yoanbernabeu/grepai-skills --skill grepai-trace-graph -a claude-code
Открыть на GitHub

Что делает grepai-trace-graph

Скилл описывает работу с командой grepai trace graph "FunctionName". Она строит дерево зависимостей от указанной функции вниз по цепочке вызовов. Глубину задаёт флаг --depth: по умолчанию 2 уровня, можно поставить 1, 3 или 5. Для больших проектов начните с малой глубины, иначе дерево разрастётся и вывод станет нечитаемым.

Есть два режима разбора: --mode fast работает по регулярным выражениям, --mode precise идёт через AST tree-sitter. Вывод можно получить в JSON, компактном JSON или в формате TOON, который экономит токены. --json и --toon вместе не ставятся. Циклы в зависимостях инструмент помечает отдельно, так что кольцевые вызовы видно сразу.

Из JSON удобно собирать картинки: в скилле есть готовые скрипты на Python для экспорта в DOT (потом рендерит dot -Tpng) и в Mermaid. Ещё один сценарий — считать узлы через jq '.stats.nodes' до и после рефакторинга и сравнивать. Если ветки пропадают, скилл советует переключиться на --mode precise; при таймауте — уменьшить глубину.

Какие задачи решает

  • разобрать, что вызывается из main при старте приложения
  • оценить, что сломается при правке функции
  • найти кольцевые зависимости в модуле
  • посчитать узлы графа до и после рефакторинга
  • выгрузить дерево вызовов в DOT или Mermaid

Примеры запросов агенту

  • построй граф вызовов от main на глубину 3
  • покажи, что зависит от validateInput, режим precise
  • сделай граф processOrder в JSON и посчитай узлы

Как установить grepai-trace-graph

1Через Skills CLI (Vercel)

npx skills add yoanbernabeu/grepai-skills --skill grepai-trace-graph -a claude-code

2Вручную: положить файлы

~/.claude/skills/grepai-trace-graph/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/grepai-trace-graph/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Из того же набора12

grepai-trace-callers Скилл учит агента искать все места в коде, откуда вызывается конкретная функция. Пригодится перед переименованием или сменой сигнатуры. CX Codex +1 784установок grepai-search-tips Скилл учит агента формулировать семантические запросы к GrepAI: описывать смысл, а не имя функции. Пригодится, когда поиск по коду выдаёт мусор. CX Codex +1 778установок grepai-trace-callees Скилл учит агента вызывать grepai trace callees и разбирать, какие функции вызывает конкретная функция — с файлами, строками и контекстом вызова. CX Codex +1 762установок grepai-search-boosting Скилл настраивает бусты и штрафы в GrepAI, чтобы исходники поднимались выше тестов, документации и вендорного кода. CX Codex +1 749установок grepai-watch-daemon Скилл учит агента запускать и настраивать демон grepai watch: первичная индексация проекта, слежение за файлами, фоновый режим и разбор сбоев. CX Codex +1 693установок grepai-config-reference Скилл-шпаргалка по всем параметрам .grepai/config.yaml: эмбеддер, хранилище, чанки, поиск. Пригодится, когда нужно понять опцию или починить конфиг. CX Codex +1 688установок grepai-workspaces Скилл учит агента настраивать рабочие пространства GrepAI: несколько проектов, один поисковый индекс, поиск по всем сразу или по одному. CX Codex +1 682установок grepai-mcp-claude Подключает GrepAI к Claude через MCP: агент ищет код по смыслу, а не по строкам, и разбирает граф вызовов. CX Codex +1 612установок

Похожие

rust-call-graph actionbook Строит граф вызовов функций Rust через LSP: кто вызывает функцию и что вызывает она. Пригодится при разборе чужого кода и оценке последствий правок. CX Codex +1 3 200установок tldr-deep parcadei Скилл разбирает отдельную функцию по пяти аналитическим слоям через утилиту tldr. Помогает при отладке и рефакторинге запутанного кода. CX Codex +1 481установок tldr-code parcadei Скилл для анализа кода через CLI tldr: дерево файлов, граф вызовов, потоки данных и мёртвый код. Экономит токены по сравнению с чтением файлов целиком. CX Codex +1 503установок diagramming-code trailofbits Строит диаграммы Mermaid по графу кода через Trailmark. Помогает визуализировать вызовы функций, структуру модулей и пути потоков данных. CX Codex +1 4 200установок trace Yeachan-Heo Скилл для разбора неоднозначных проблем: багов, регрессий, задержек. Запускает параллельные линии исследования, собирает доказательства за и против каждой версии, ранжирует их и предлагает следующий шаг, который даст ответ быстрее всего. CX Codex +1 790установок validate-urp-render-graph-renderer-feature Unity-Technologies Разбирает ScriptableRendererFeature на Render Graph API в Unity 6: привязка материалов, ресурсы, структура прохода. Пригодится перед тем, как влить фичу в проект. CX Codex +1 5 600установок

Рядом в теме «Настройка агента: память, контекст, субагенты»

Все скиллы по теме «Настройка агента: память, контекст, субагенты» →

Вопросы о grepai-trace-graph

Как установить grepai-trace-graph в Claude?

Выполните npx skills add yoanbernabeu/grepai-skills --skill grepai-trace-graph -a claude-code. Скилл встанет в ~/.claude/skills/grepai-trace-graph/SKILL.md.

Что делает grepai-trace-graph?

Показывает агенту, как строить рекурсивное дерево вызовов через grepai trace graph и как читать его вывод.

Чем режимы fast и precise отличаются?

--mode fast ищет вызовы по регулярным выражениям, --mode precise разбирает код через tree-sitter AST. Если в графе не хватает веток, скилл советует precise.

Исходный текст

SKILL.md · MIT
---
name: grepai-trace-graph
description: Build complete call graphs with GrepAI trace. Use this skill for recursive dependency analysis.
---

# GrepAI Trace Graph

This skill covers using `grepai trace graph` to build complete call graphs showing all dependencies recursively.

## When to Use This Skill

- Mapping complete function dependencies
- Understanding complex code flows
- Impact analysis for major refactoring
- Visualizing application architecture

## What is Trace Graph?

`grepai trace graph` builds a recursive dependency tree:

```
main
├── initialize
│   ├── loadConfig
│   │   └── parseYAML
│   └── connectDB
│       ├── createPool
│       └── ping
├── startServer
│   ├── registerRoutes
│   │   ├── authMiddleware
│   │   └── loggingMiddleware
│   └── listen
└── gracefulShutdown
    └── closeDB
```

## Basic Usage

```bash
grepai trace graph "FunctionName"
```

### Example

```bash
grepai trace graph "main"
```

Output:
```
🔍 Call Graph for "main"

main
├── initialize
│   ├── loadConfig
│   └── connectDB
├── startServer
│   ├── registerRoutes
│   └── listen
└── gracefulShutdown
    └── closeDB

Nodes: 9
Max depth: 3
```

## Depth Control

Limit recursion depth with `--depth`:

```bash
# 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 Examples

**--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
```

## JSON Output

```bash
grepai trace graph "main" --depth 2 --json
```

Output:
```json
{
  "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
  }
}
```

## Compact JSON

```bash
grepai trace graph "main" --depth 2 --json --compact
```

Output:
```json
{
  "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}
}
```

## TOON Output (v0.26.0+)

TOON format offers ~50% fewer tokens than JSON:

```bash
grepai trace graph "main" --depth 2 --toon
```

> **Note:** `--json` and `--toon` are mutually exclusive.

## Extraction Modes

```bash
# Fast mode (regex-based)
grepai trace graph "main" --mode fast

# Precise mode (tree-sitter AST)
grepai trace graph "main" --mode precise
```

## Use Cases

### Understanding Application Flow

```bash
# Map entire application startup
grepai trace graph "main" --depth 4
```

### Impact Analysis

```bash
# What depends on this utility function?
grepai trace graph "validateInput" --depth 3

# Full impact of changing database layer
grepai trace graph "executeQuery" --depth 2
```

### Code Review

```bash
# Is this function too complex?
grepai trace graph "processOrder" --depth 5
# Many nodes = high complexity
```

### Documentation

```bash
# Generate architecture diagram data
grepai trace graph "main" --depth 3 --json > architecture.json
```

### Refactoring Planning

```bash
# What would break if we change this?
grepai trace graph "legacyAuth" --depth 3
```

## Handling Cycles

GrepAI detects and marks circular dependencies:

```
main
├── processA
│   └── processB
│       └── processA [CYCLE]
```

In JSON:
```json
{
  "name": "processA",
  "cycle": true
}
```

## Large Graphs

For very large codebases, graphs can be overwhelming:

### Limit Depth

```bash
# Start shallow
grepai trace graph "main" --depth 2
```

### Focus on Specific Areas

```bash
# Instead of main, trace specific subsystem
grepai trace graph "authMiddleware" --depth 3
```

### Filter in Post-Processing

```bash
# Get JSON and filter
grepai trace graph "main" --depth 3 --json | jq '...'
```

## Visualizing Graphs

### Export to DOT Format (Graphviz)

```bash
# 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:
```bash
dot -Tpng graph.dot -o graph.png
```

### Mermaid Diagram

```bash
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
```

## Comparing Graph Sizes

Track complexity over time:

```bash
# 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"
```

## Common Issues

❌ **Problem:** Graph too large / timeout
✅ **Solutions:**
- Reduce depth: `--depth 2`
- Trace specific function instead of `main`
- Use `--mode fast`

❌ **Problem:** Many cycles detected
✅ **Solution:** This indicates circular dependencies in code. Consider refactoring.

❌ **Problem:** Missing branches
✅ **Solutions:**
- Try `--mode precise`
- Check if files are indexed
- Verify language is enabled

## Best Practices

1. **Start shallow:** Begin with `--depth 2`, increase as needed
2. **Focus analysis:** Trace specific functions, not always `main`
3. **Export for docs:** Use JSON for generating diagrams
4. **Track over time:** Monitor node count as complexity metric
5. **Investigate cycles:** Circular dependencies are code smells

## Output Format

Trace 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
```

© yoanbernabeu · MIT · yoanbernabeu/grepai-skills

Смотрите также

Спонсоры проекта

Компании, которые помогают держать аналитику открытой