navigating-java

Navigate Java codebases with symbol-level tools to find definitions, callers, and implementations.

9|1|Updated Aug 28, 2026
One-click install
npx skills add https://github.com/RisorseArtificiali/skills --skill navigating-java-risorseartificiali
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: navigating-java
Source: https://github.com/RisorseArtificiali/skills/tree/main/skills/navigating-java
Command: npx skills add https://github.com/RisorseArtificiali/skills --skill navigating-java-risorseartificiali

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Text search cannot reliably answer structural questions in Java codebases: grep cannot distinguish overloaded methods, misses calls through interfaces and dependency injection, and cannot tell you who actually calls a method before you change its signature. This Skill replaces grep-first exploration with symbol-level navigation so refactoring decisions are based on resolved references, not text matches. ## Core Features & Use Cases - Symbol-level queries: Find definitions, references, implementations, and type hierarchies using Serena MCP, a built-in LSP, or CLI fallbacks (ctags, rg, mvn, javap). - Maven structure awareness: Read the reactor module map, resolve dependency trees offline, and respect the test-mirror and generated-sources conventions. - Blind-spot handling: Detects what LSPs cannot see — reflection, DI by name, ServiceLoader registrations, config binding, and lambdas — with a mandatory string sweep before deletions or renames. - Use Case: Before renaming a public method, enumerate all callers including overloads and the test mirror, run the resource string sweep, then use rename_symbol instead of search-replace. ## Quick Start Ask the agent to find every caller of a specific Java method and assess the blast radius before changing its signature.

Frequently Asked Questions about navigating-java

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I find all callers of a Java method before changing its signature?▼

Use find_referencing_symbols in Serena MCP or your LSP to enumerate resolved callers, including overloads and the mirrored test classes. State the caller count before editing; without an LSP, compile the module with mvn -o compile so javac lists every breakage.

Why is grep unreliable for navigating Java code?▼

Grep cannot distinguish same-named methods across classes, misses calls through interfaces or superclasses, and drowns overloads together. Symbol-level tools resolve typed references, answering who actually calls a method rather than what text resembles it.

What can LSP symbol tools not see in Java projects?▼

LSPs miss reflection calls, dependency injection by name, ServiceLoader registrations in META-INF/services, Jackson or config binding of field names, and lambda implementations of functional interfaces. Always pair a zero-references result with a string sweep across resources before deleting code.

How do I safely rename a Java method or class?▼

Use rename_symbol from Serena MCP or your LSP, which updates all typed references atomically. Without an LSP, build a references list, edit each site, then compile to verify; never use search-replace, which rewrites same-named symbols in unrelated classes.

How do I explore a large unfamiliar Java class efficiently?▼

Run get_symbols_overview first to see the class structure, then load only the method bodies you need with find_symbol and include_body. Without an LSP, ctags -x gives a one-line-per-symbol outline, avoiding reading a 1500-line file top to bottom.