lci-symbol-navigation

Locate and debug lci symbol navigation surfaces including def, refs, callers, tree, and browse.

Updated Apr 27, 2026
One-click install
npx skills add https://github.com/standardbeagle/lci-cpp --skill lci-symbol-navigation-standardbeagle
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: lci-symbol-navigation
Source: https://github.com/standardbeagle/lci-cpp/tree/main/.agents/skills/lci-symbol-navigation
Command: npx skills add https://github.com/standardbeagle/lci-cpp --skill lci-symbol-navigation-standardbeagle

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? When changing or debugging lci's symbol navigation features (def, refs, callers, tree, symbols, inspect, browse, find_files), developers need to know which CLI command, MCP handler, or HTTP endpoint implements each behavior, how the reference tracker and symbol store resolve calls, and which tests and golden files pin the expected output. ## Core Features & Use Cases - Surface-to-code mapping: Tables link every CLI verb, MCP tool, and HTTP endpoint to its exact source file and line, from run_def in src/cli/commands.cpp to handle_list_symbols in src/mcp/handlers_explore.cpp. - Core internals documentation: Explains the ReferenceTracker RCU snapshot, receiver-type call resolution, import resolver, PostingsIndex, SymbolStore, and base-63 object ID encoding. - Invariants and traps: Documents that def/refs are text searches decorated with symbol data, that confirmed callers exclude dynamic and unresolved sites, and that /tree risk fields are stubbed zeros. - Use Case: A developer fixing a bug where lci callers misses a typed-receiver call uses this Skill to find resolve_reference_target in reference_tracker.cpp, the pinned resolver tests, and the probe recipes to reproduce the issue. ## Quick Start Use the lci-symbol-navigation skill to find the source code and tests behind the lci callers command and compare its call resolution against an LSP server.

Frequently Asked Questions about lci-symbol-navigation

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

FAQPage Schema
How do I find the source code behind an lci navigation command?▼

Each lci command maps to a documented entry point: CLI verbs live in src/cli/main.cpp and commands.cpp, MCP tools in src/mcp/handlers_explore.cpp, and HTTP endpoints in src/server/handlers_search.cpp and server_endpoints_symbols.cpp. The surfaces table lists exact file and line references.

How does lci callers resolve function calls compared to an LSP server?▼

lci resolves calls syntactically using a local type environment and receiver-type matching, without a compiler front end. Precision matches gopls or SCIP on plain method calls but is lower on generics, overloads, and type inference; unresolved and dynamic sites are reported separately.

Why does lci def return different results than go-to-definition in clangd?▼

lci def runs a trigram text search and decorates hits with the nearest indexed symbol's kind and signature, so it can return several same-named hits across languages. LSP servers resolve exactly one definition per call site using compiler-grade analysis.

Does lci support a call tree over the MCP protocol?▼

No, there is no MCP tree tool; the pinned golden test confirms an unknown tool error. Call trees over MCP come from the get_context tool with include_call_hierarchy, while the tree command exists only in the CLI and HTTP surfaces.

What are the limitations of lci symbol navigation?▼

References are lexical text matches rather than resolved edges, there is no compiler-grade resolution, no rename or refactor support, no disk persistence so every server start re-indexes, and no cross-repository navigation. The list_symbols glob supports only equality, basename, suffix, and wildcard matching.