nx/skills/serena-code-nav/SKILL.md
Use when navigating code by symbol — finding definitions, all callers, type hierarchies, renaming safely, or editing a method body without reading the whole file. Use instead of Grep for any symbol-level task.
npx skillsauth add hellblazer/nexus serena-code-navInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Serena provides LSP-backed code intelligence: it understands symbols, not text. Use it for symbol-level tasks. Use Grep for text-pattern tasks.
Tool names vary by backend (JetBrains vs LSP). Load with both variants — only available ones resolve:
ToolSearch("select:mcp__plugin_sn_serena__jet_brains_find_symbol,mcp__plugin_sn_serena__find_symbol")
ToolSearch("select:mcp__plugin_sn_serena__jet_brains_find_referencing_symbols,mcp__plugin_sn_serena__find_referencing_symbols")
ToolSearch("select:mcp__plugin_sn_serena__jet_brains_get_symbols_overview,mcp__plugin_sn_serena__get_symbols_overview")
ToolSearch("select:mcp__plugin_sn_serena__jet_brains_type_hierarchy,mcp__plugin_sn_serena__type_hierarchy")
ToolSearch("select:mcp__plugin_sn_serena__jet_brains_rename,mcp__plugin_sn_serena__rename_symbol")
ToolSearch("select:mcp__plugin_sn_serena__replace_symbol_body,mcp__plugin_sn_serena__insert_before_symbol,mcp__plugin_sn_serena__insert_after_symbol")
ToolSearch("select:mcp__plugin_sn_serena__search_for_pattern,mcp__plugin_sn_serena__find_file,mcp__plugin_sn_serena__list_dir")
Then call mcp__plugin_sn_serena__initial_instructions for full backend-specific parameter docs.
Project is auto-activated via --project-from-cwd. No activate_project call needed.
Tool names below show LSP name / JetBrains name. Use whichever resolved in Setup.
| Task | Use | Not |
|------|-----|-----|
| Find where a symbol is defined | find_symbol / jet_brains_find_symbol | Grep (finds comments/strings too) |
| Find all callers of a function | find_referencing_symbols / jet_brains_find_referencing_symbols | Grep (misses aliased calls) |
| Inventory all methods in a file | get_symbols_overview / jet_brains_get_symbols_overview | Read (reads entire file body) |
| Understand class inheritance | type_hierarchy / jet_brains_type_hierarchy | Manual import tracing |
| Replace an entire function body | replace_symbol_body | Read + Edit (line arithmetic) |
| Insert code before/after a method | insert_before/after_symbol | Read + Edit (fragile on large files) |
| Rename a symbol across codebase | rename_symbol / jet_brains_rename | Grep + Edit (corrupts comments/strings) |
| Pattern search across files | search_for_pattern | Grep (prefer Grep — it's faster) |
| Find files by name | Glob | find_file |
| Semantic/conceptual search | mcp__plugin_nx_nexus__search | Serena (no semantic search) |
| Exact text, comments, config | Grep | Serena |
Examples use short names — substitute whichever variant resolved in Setup.
find_symbol("ClassName") # locate the class
get_symbols_overview("path/to/file.py") # see all methods
# then Read only the specific method if needed
find_symbol("method_name") # confirm the right symbol
find_referencing_symbols("method_name") # all callers — LSP-accurate
# review each call site before changing the signature
get_symbols_overview("path/to/file.py") # confirm symbol exists
replace_symbol_body("method_name", new_body) # replace precisely
get_symbols_overview("path/to/file.py") # symbols without file body
type_hierarchy("ClassName") # inheritance tree
# read only the methods you actually need after this
find_symbol("old_name") # confirm target
find_referencing_symbols("old_name") # preview scope
rename_symbol("old_name", "new_name") # LSP-safe: skips comments/strings
--project-from-cwd when .serena/project.yml exists.ToolSearch. Do Setup above before any call.find_referencing_symbols on widely-used names (e.g., put, search) may return hundreds of results. Scope by file or type when possible.development
Use when critiquing / auditing / reviewing a change set against decision history — tries the review plan library first (catalog lookup → decision-evolution traversal → extract → compare), falls through to /nx:query if nothing matches
documentation
Use when doing design / architecture / planning work that walks from prose (RDRs, docs, knowledge) into the modules implementing a concept
development
Use when surveying the plan library's runtime metrics to propose plans for promotion to a higher scope — advisory-only; dispatches the plan-promote-propose meta-seed (no lifecycle ops — those ship in RDR-079)
business
Use when inspecting plan runtime metrics or enumerating dimension-registry usage — dispatches plan_match with dimensions={verb:plan-inspect}; strategy:default reports per-plan metrics, strategy:dimensions reports registry usage counts