Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
zhanghandong avatar

Rust Call Graph

  • 713 installs
  • 1.3k repo stars
  • Updated May 24, 2026
  • zhanghandong/rust-skills

This is a copy of rust-call-graph by actionbook - installs and ranking accrue to the original listing.

rust-call-graph is a Rust skills command that visualizes function callers, callees, and deep call hierarchies via LSP for developers who need fast call-relationship maps without manual grep tracing.

About

rust-call-graph is a rust-skills slash command that builds function call graphs using LSP call hierarchy instead of manual source tracing. Invoke `/rust-call-graph <function_name>` with optional `--depth N` (default 3) and `--direction in|out|both` to list callers, callees, or both. The skill triggers on phrases like call hierarchy, who calls, what calls, and related Chinese query terms. Developers reach for rust-call-graph when refactoring Rust services, auditing unsafe call paths, or onboarding to unfamiliar crates. Allowed tools are LSP, Read, and Glob, so results stay tied to the language server view of the workspace rather than static text search alone.

  • Visualizes Rust function call relationships using LSP call hierarchy
  • Supports --depth N (default 3) and --direction in|out|both options
  • Three LSP operations: prepareCallHierarchy, incomingCalls, outgoingCalls
  • Works with /rust-call-graph slash command and natural language triggers
  • Combines workspaceSymbol, grep, and LSP for accurate location discovery

Rust Call Graph by the numbers

  • 713 all-time installs (skills.sh)
  • +6 installs in the week ending Jul 28, 2026 (Skillselion tracking)
  • Security screen: MEDIUM risk (skills.sh audit)
  • Data as of Jul 28, 2026 (Skillselion catalog sync)
npx skills add https://github.com/zhanghandong/rust-skills --skill rust-call-graph

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs713
repo stars1.3k
Security audit3 / 3 scanners passed
Last updatedMay 24, 2026
Repositoryzhanghandong/rust-skills

How do you visualize Rust function call hierarchies?

Instantly visualize Rust function callers, callees, and deep call hierarchies without manual tracing.

Who is it for?

Rust developers refactoring or debugging who need caller and callee maps for a specific function without manual ripgrep tracing.

Skip if: Non-Rust codebases, projects without a working Rust LSP, or static analysis needs beyond call hierarchy such as data-flow or type graphs.

When should I use this skill?

A developer asks who calls a Rust function, what it calls, or requests a call graph with depth and direction options.

What you get

LSP call-hierarchy maps showing callers, callees, and depth-limited traversal for a named function.

  • call hierarchy visualization for named function

By the numbers

  • Default call-hierarchy traversal depth is 3 levels
  • Supports three direction modes: in, out, both

Files

SKILL.mdMarkdownGitHub ↗

Rust Call Graph

Visualize function call relationships using LSP call hierarchy.

Usage

/rust-call-graph <function_name> [--depth N] [--direction in|out|both]

Options:

  • --depth N: How many levels to traverse (default: 3)
  • --direction: in (callers), out (callees), both

Examples:

  • /rust-call-graph process_request - Show both callers and callees
  • /rust-call-graph handle_error --direction in - Show only callers
  • /rust-call-graph main --direction out --depth 5 - Deep callee analysis

LSP Operations

1. Prepare Call Hierarchy

Get the call hierarchy item for a function.

LSP(
  operation: "prepareCallHierarchy",
  filePath: "src/handler.rs",
  line: 45,
  character: 8
)

2. Incoming Calls (Who calls this?)

LSP(
  operation: "incomingCalls",
  filePath: "src/handler.rs",
  line: 45,
  character: 8
)

3. Outgoing Calls (What does this call?)

LSP(
  operation: "outgoingCalls",
  filePath: "src/handler.rs",
  line: 45,
  character: 8
)

Workflow

User: "Show call graph for process_request"
    │
    ▼
[1] Find function location
    LSP(workspaceSymbol) or Grep
    │
    ▼
[2] Prepare call hierarchy
    LSP(prepareCallHierarchy)
    │
    ▼
[3] Get incoming calls (callers)
    LSP(incomingCalls)
    │
    ▼
[4] Get outgoing calls (callees)
    LSP(outgoingCalls)
    │
    ▼
[5] Recursively expand to depth N
    │
    ▼
[6] Generate ASCII visualization

Output Format

Incoming Calls (Who calls this?)

## Callers of `process_request`

main
└── run_server
    └── handle_connection
        └── process_request  ◄── YOU ARE HERE

Outgoing Calls (What does this call?)

## Callees of `process_request`

process_request  ◄── YOU ARE HERE
├── parse_headers
│   └── validate_header
├── authenticate
│   ├── check_token
│   └── load_user
├── execute_handler
│   └── [dynamic dispatch]
└── send_response
    └── serialize_body

Bidirectional (Both)

## Call Graph for `process_request`

                    ┌─────────────────┐
                    │      main       │
                    └────────┬────────┘
                             │
                    ┌────────▼────────┐
                    │   run_server    │
                    └────────┬────────┘
                             │
                    ┌────────▼────────┐
                    │handle_connection│
                    └────────┬────────┘
                             │
        ┌────────────────────┼────────────────────┐
        │                    │                    │
┌───────▼───────┐   ┌───────▼───────┐   ┌───────▼───────┐
│ parse_headers │   │ authenticate  │   │send_response  │
└───────────────┘   └───────┬───────┘   └───────────────┘
                            │
                    ┌───────┴───────┐
                    │               │
             ┌──────▼──────┐ ┌──────▼──────┐
             │ check_token │ │  load_user  │
             └─────────────┘ └─────────────┘

Analysis Insights

After generating the call graph, provide insights:

## Analysis

**Entry Points:** main, test_process_request
**Leaf Functions:** validate_header, serialize_body
**Hot Path:** main → run_server → handle_connection → process_request
**Complexity:** 12 functions, 3 levels deep

**Potential Issues:**
- `authenticate` has high fan-out (4 callees)
- `process_request` is called from 3 places (consider if this is intentional)

Common Patterns

User SaysDirectionUse Case
"Who calls X?"incomingImpact analysis
"What does X call?"outgoingUnderstanding implementation
"Show call graph"bothFull picture
"Trace from main to X"outgoingExecution path

Visualization Options

StyleBest For
Tree (default)Simple hierarchies
Box diagramComplex relationships
Flat listMany connections
MermaidExport to docs

Mermaid Export

graph TD
    main --> run_server
    run_server --> handle_connection
    handle_connection --> process_request
    process_request --> parse_headers
    process_request --> authenticate
    process_request --> send_response

Related Skills

WhenSee
Find definitionrust-code-navigator
Project structurerust-symbol-analyzer
Trait implementationsrust-trait-explorer
Safe refactoringrust-refactor-helper

Related skills

How it compares

Prefer rust-call-graph over text search when you need LSP-accurate caller and callee hierarchy with configurable depth.

FAQ

What is the default depth for rust-call-graph?

rust-call-graph defaults to depth 3 when `--depth N` is omitted, traversing three levels of callers or callees from the named Rust function.

How do you show only callers in rust-call-graph?

rust-call-graph accepts `--direction in` to list incoming callers, `--direction out` for callees, or `--direction both` for a combined hierarchy view.

Is Rust Call Graph safe to install?

skills.sh reports 3 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.

Debuggingbackendintegrationstesting

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.