From code-quality
PROACTIVE skill - Use when navigating code, understanding symbol definitions, finding references, or exploring call hierarchies. Triggers include questions like "where is X defined", "what calls Y", "show usages of Z", or any code exploration task. Prefer LSP over grep for semantic navigation.
npx claudepluginhub wgordon17/personal-claude-marketplace --plugin code-qualityThis skill is limited to using the following tools:
This skill optimizes code navigation by using LSP (Language Server Protocol) for semantic understanding rather than text-based search.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Searches prompts.chat for AI prompt templates by keyword or category, retrieves by ID with variable handling, and improves prompts via AI. Use for discovering or enhancing prompts.
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
This skill optimizes code navigation by using LSP (Language Server Protocol) for semantic understanding rather than text-based search.
Use LSP when you need to:
| Operation | Purpose | Example Use Case |
|---|---|---|
goToDefinition | Jump to where symbol is defined | "Where is processRequest defined?" |
findReferences | All locations using this symbol | "What code calls authenticate()?" |
hover | Get type info and docs | "What type does user have here?" |
documentSymbol | List all symbols in file | "What functions are in this file?" |
workspaceSymbol | Search symbols by name | "Find class named Config" |
goToImplementation | Find interface implementations | "What implements Repository?" |
prepareCallHierarchy | Get callable item at position | Prepare for call hierarchy queries |
incomingCalls | What calls this function | "What code invokes validate()?" |
outgoingCalls | What this function calls | "What does main() call?" |
Need to find something in code?
├── Is it a SYMBOL (function, class, variable)?
│ ├── Need its definition? → LSP goToDefinition
│ ├── Need all usages? → LSP findReferences
│ ├── Need type/docs? → LSP hover
│ └── Need call flow? → LSP incomingCalls/outgoingCalls
├── Is it a TEXT PATTERN (string, comment, TODO)?
│ └── Use Grep
├── Is it a FILE PATTERN (*.ts, src/**/*.py)?
│ └── Use Glob
└── Unknown symbol name?
└── LSP workspaceSymbol (fuzzy search)
| Aspect | LSP | Grep |
|---|---|---|
| Search type | Semantic (understands code) | Text pattern matching |
| Finds imports | Yes, follows module resolution | Only if text matches |
| Distinguishes definitions from usages | Yes | No |
| Type-aware | Yes | No |
| Works across languages | Per-language server | Yes |
| Requires language server | Yes | No |
Rule of thumb: If you're looking for a symbol (something with a definition), use LSP. If you're looking for text (a string, pattern, or comment), use Grep.
__init__.py module structurePyright-specific behaviors:
TYPE_CHECKING imports.ts, .tsx, .js, .jsx, .mjs, .cjstsconfig.json paths).d.ts files)vtsls-specific behaviors:
gopls-specific behaviors:
LSP(operation="goToDefinition", filePath="src/api/routes.py", line=15, character=23)
Position cursor on the class name (e.g., UserController at line 15, col 23).
LSP(operation="findReferences", filePath="src/utils/auth.ts", line=42, character=12)
Returns all locations where this function is called.
LSP(operation="documentSymbol", filePath="src/services/user.go", line=1, character=1)
Returns structured list of all symbols (functions, types, constants).
LSP(operation="workspaceSymbol", filePath="src/any_file.py", line=1, character=1)
Note: For workspaceSymbol, the file just needs to match the language. The search is global.
LSP(operation="hover", filePath="src/handler.ts", line=67, character=20)
Returns type signature, documentation, and JSDoc/docstring.
LSP(operation="goToImplementation", filePath="pkg/repository/interface.go", line=12, character=10)
Finds all concrete implementations of an interface.
Step 1: Prepare the call hierarchy item:
LSP(operation="prepareCallHierarchy", filePath="src/core.py", line=100, character=5)
Step 2: Find incoming calls (who calls this):
LSP(operation="incomingCalls", filePath="src/core.py", line=100, character=5)
Step 3: Find outgoing calls (what this calls):
LSP(operation="outgoingCalls", filePath="src/core.py", line=100, character=5)
All LSP operations require:
| Parameter | Type | Description |
|---|---|---|
operation | string | One of the operations listed above |
filePath | string | Absolute or relative path to the file |
line | integer | Line number (1-based, as shown in editors) |
character | integer | Column position (1-based, as shown in editors) |
Important notes:
Check if file type has an LSP server:
.py, .pyi.ts, .tsx, .js, .jsx, .mjs, .cjs.go.html, .htm.cssVerify prerequisites are installed:
uvx --version # For Python
npx --version # For TypeScript/HTML
gopls version # For Go
Check debug logs:
tail -f ~/.claude/debug/latest
hover first to confirm LSP recognizes the symbolClear pyright cache:
uv cache clean pyright
Clear npx cache:
rm -rf ~/.npm/_npx
The pyright language server runs via uvx, using the same infrastructure as other Python tools:
uvx --from pyright pyright-langserver --stdio~/.cache/uv/uv cache clean pyrightCurrent configuration (installed from personal-claude-marketplace):
| Plugin | Language | Command |
|---|---|---|
| pyright-uvx | Python | uvx --from pyright pyright-langserver --stdio |
| vtsls-npx | TypeScript/JS | npx -y @vtsls/language-server --stdio |
| gopls-go | Go | gopls serve |
| vscode-html-css-npx | HTML/CSS | npx -y vscode-langservers-extracted vscode-html-language-server --stdio |