PluginBench
Skill
Fail
Audit score 45

rust-symbol-analyzer

actionbook/rust-skills

Analyze Rust project structure and list symbols (structs, traits, functions) using LSP.

What is rust-symbol-analyzer?

Examines Rust codebases via Language Server Protocol to extract and visualize project structure, modules, and symbol hierarchies. Use this when you need to understand code organization, find specific types or functions, or generate documentation of your crate's public API.

  • Extract symbols (structs, traits, functions, enums, modules) from single files or entire workspaces
  • Display hierarchical symbol structure with nesting and relationships
  • Filter symbols by type (struct, trait, fn, mod) or visibility (pub)
  • Generate complexity metrics and identify high-complexity files
  • Analyze internal dependencies between modules and files
  • Create formatted tables and tree views of project organization

How to install rust-symbol-analyzer

npx skills add https://github.com/actionbook/rust-skills --skill rust-symbol-analyzer
Prerequisites
  • Rust project with LSP support (rust-analyzer)
  • LSP server running or accessible to the agent
Claude Code
Cursor
Windsurf
Cline

How to use rust-symbol-analyzer

  1. 1.Run `/rust-symbol-analyzer` to analyze the entire project structure
  2. 2.Run `/rust-symbol-analyzer src/lib.rs` to analyze a single file
  3. 3.Run `/rust-symbol-analyzer --type trait` to list only traits in the project
  4. 4.Run `/rust-symbol-analyzer --type struct` to list only structs
  5. 5.Review the output tables and hierarchy to understand code organization

Use cases

Good for
  • Understanding the structure of an unfamiliar Rust codebase before making changes
  • Documenting public API surface by listing all public structs and traits
  • Finding all implementations of a trait across the project
  • Identifying code hotspots with high complexity that may need refactoring
  • Generating a module hierarchy diagram for architectural review
Who it's for
  • Rust developers exploring or refactoring codebases
  • Code reviewers assessing project structure and organization
  • Documentation generators building API references
  • Architects planning or validating module organization

rust-symbol-analyzer FAQ

What's the difference between documentSymbol and workspaceSymbol?

documentSymbol analyzes a single file and returns its nested symbol hierarchy. workspaceSymbol searches across the entire project for matching symbols.

Can I filter symbols by visibility (pub vs private)?

Yes, use the output filtering to show only public symbols, or request the skill to filter by visibility when analyzing.

Does this show trait implementations?

The skill identifies trait definitions and their implementors in the output, but for detailed call relationships see the rust-call-graph skill.

What file types does it analyze?

It analyzes .rs files in your Rust project, including lib.rs, main.rs, and all module files.

Can it detect async functions?

Yes, the skill can filter and identify async functions in the output when requested.

Full instructions (SKILL.md)

Source of truth, from actionbook/rust-skills.


name: rust-symbol-analyzer description: "Analyze Rust project structure using LSP symbols. Triggers on: /symbols, project structure, list structs, list traits, list functions, 符号分析, 项目结构, 列出所有, 有哪些struct" argument-hint: "[file.rs] [--type struct|trait|fn|mod]" allowed-tools: ["LSP", "Read", "Glob"]

Rust Symbol Analyzer

Analyze project structure by examining symbols across your Rust codebase.

Usage

/rust-symbol-analyzer [file.rs] [--type struct|trait|fn|mod]

Examples:

  • /rust-symbol-analyzer - Analyze entire project
  • /rust-symbol-analyzer src/lib.rs - Analyze single file
  • /rust-symbol-analyzer --type trait - List all traits in project

LSP Operations

1. Document Symbols (Single File)

Get all symbols in a file with their hierarchy.

LSP(
  operation: "documentSymbol",
  filePath: "src/lib.rs",
  line: 1,
  character: 1
)

Returns: Nested structure of modules, structs, functions, etc.

2. Workspace Symbols (Entire Project)

Search for symbols across the workspace.

LSP(
  operation: "workspaceSymbol",
  filePath: "src/lib.rs",
  line: 1,
  character: 1
)

Note: Query is implicit in the operation context.

Workflow

User: "What's the structure of this project?"
    │
    ▼
[1] Find all Rust files
    Glob("**/*.rs")
    │
    ▼
[2] Get symbols from each key file
    LSP(documentSymbol) for lib.rs, main.rs
    │
    ▼
[3] Categorize by type
    │
    ▼
[4] Generate structure visualization

Output Format

Project Overview

## Project Structure: my-project

### Modules
├── src/
│   ├── lib.rs (root)
│   ├── config/
│   │   ├── mod.rs
│   │   └── parser.rs
│   ├── handlers/
│   │   ├── mod.rs
│   │   ├── auth.rs
│   │   └── api.rs
│   └── models/
│       ├── mod.rs
│       ├── user.rs
│       └── order.rs
└── tests/
    └── integration.rs

By Symbol Type

## Symbols by Type

### Structs (12)
| Name | Location | Fields | Derives |
|------|----------|--------|---------|
| Config | src/config.rs:10 | 5 | Debug, Clone |
| User | src/models/user.rs:8 | 4 | Debug, Serialize |
| Order | src/models/order.rs:15 | 6 | Debug, Serialize |
| ... | | | |

### Traits (4)
| Name | Location | Methods | Implementors |
|------|----------|---------|--------------|
| Handler | src/handlers/mod.rs:5 | 3 | AuthHandler, ApiHandler |
| Repository | src/db/mod.rs:12 | 5 | UserRepo, OrderRepo |
| ... | | | |

### Functions (25)
| Name | Location | Visibility | Async |
|------|----------|------------|-------|
| main | src/main.rs:10 | pub | yes |
| parse_config | src/config.rs:45 | pub | no |
| ... | | | |

### Enums (6)
| Name | Location | Variants |
|------|----------|----------|
| Error | src/error.rs:5 | 8 |
| Status | src/models/order.rs:5 | 4 |
| ... | | |

Single File Analysis

## src/handlers/auth.rs

### Symbols Hierarchy

mod auth
├── struct AuthHandler
│   ├── field: config: Config
│   ├── field: db: Pool
│   └── impl AuthHandler
│       ├── fn new(config, db) -> Self
│       ├── fn authenticate(&self, token) -> Result<User>
│       └── fn refresh_token(&self, user) -> Result<Token>
├── struct Token
│   ├── field: value: String
│   └── field: expires: DateTime
├── enum AuthError
│   ├── InvalidToken
│   ├── Expired
│   └── Unauthorized
└── impl Handler for AuthHandler
    ├── fn handle(&self, req) -> Response
    └── fn name(&self) -> &str

Analysis Features

Complexity Metrics

## Complexity Analysis

| File | Structs | Functions | Lines | Complexity |
|------|---------|-----------|-------|------------|
| src/handlers/auth.rs | 2 | 8 | 150 | Medium |
| src/models/user.rs | 3 | 12 | 200 | High |
| src/config.rs | 1 | 3 | 50 | Low |

**Hotspots:** Files with high complexity that may need refactoring
- src/handlers/api.rs (15 functions, 300 lines)

Dependency Analysis

## Internal Dependencies

auth.rs
├── imports from: config.rs, models/user.rs, db/mod.rs
└── imported by: main.rs, handlers/mod.rs

user.rs
├── imports from: (none - leaf module)
└── imported by: auth.rs, api.rs, tests/

Symbol Types

TypeIconLSP Kind
Module📦Module
Struct🏗️Struct
Enum🔢Enum
Trait📜Interface
Function⚡Function
Method🔧Method
Constant🔒Constant
Field📎Field

Common Queries

User SaysAnalysis
"What structs are in this project?"workspaceSymbol + filter
"Show me src/lib.rs structure"documentSymbol
"Find all async functions"workspaceSymbol + async filter
"List public API"documentSymbol + pub filter

Related Skills

WhenSee
Navigate to symbolrust-code-navigator
Call relationshipsrust-call-graph
Trait implementationsrust-trait-explorer
Safe refactoringrust-refactor-helper

Related skills

More from actionbook/rust-skills and the wider catalog.

RUrust-trait-explorer logo

rust-trait-explorer

actionbook/rust-skills

Explore Rust trait implementations and polymorphic designs using LSP.

2.9k installsAudited
UNunsafe-checker logo

unsafe-checker

actionbook/rust-skills

Detects and reviews unsafe Rust code patterns, FFI calls, and memory safety issues.

2.9k installsAudited
COcoding-guidelines logo

coding-guidelines

actionbook/rust-skills

Reference for Rust code style, naming conventions, and best practices from 50 core rules.

3.6k installsAudited
COcore-actionbook logo

core-actionbook

actionbook/rust-skills

Internal support skill for actionbook MCP selectors in Rust documentation research workflows.

1.5k installsAudited
ESesp32-firmware-engineer logo

esp32-firmware-engineer

adamlipecz/esp32-firmware-engineer-skill

ESP32 firmware engineering for ESP-IDF projects. Write, review, and debug embedded C/C++ code involving FreeRTOS tasks/queues/timers, GPIO/I2C/SPI/UART/ADC/PWM peripherals, TWAI/CAN, Wi-Fi/BLE networking, OTA updates, Secure Boot and flash encryption, LVGL display integration, build/flash/monitor workflows, logging, crash analysis, memory/code-size optimization, low-power sleep/wakeup design, on-device USB/serial service terminals, and board bring-up. Use when an agent is asked to implement ESP-IDF firmware features, review embedded changes for correctness or race conditions, investigate boot/runtime failures or Guru Meditation panics, interpret serial logs, fix build/link/flash problems, optimize RAM/flash usage, tune deep sleep/light sleep behavior, harden firmware for production, add a service console/CLI, integrate a display with LVGL, or diagnose hardware-software integration issues on ESP32-class devices.

722 installs
APapi-and-interface-design logo

api-and-interface-design

addyosmani/agent-skills

Design stable, hard-to-misuse APIs and interfaces with proven principles and patterns.

43k installs