From tsgo-lsp
Use when finding TS/JS symbols, definitions, references, callers, implementations, or doing refactors. Prefer LSP over Grep for any symbol-level operation — LSP resolves re-exports, type refs, and import aliases that grep misses.
npx claudepluginhub minhpg/claude-plugins --plugin tsgo-lspThis skill uses the workspace's default tool permissions.
When working in TypeScript/JavaScript code, prefer the `LSP` tool over `Grep` for symbol-level operations. The LSP understands the language: it resolves re-exports, import aliases, type-only references, and JSDoc — all of which grep misses.
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Migrates code, prompts, and API calls from Claude Sonnet 4.0/4.5 or Opus 4.1 to Opus 4.5, updating model strings on Anthropic, AWS, GCP, Azure platforms.
Automates semantic versioning and release workflow for Claude Code plugins: bumps versions in package.json, marketplace.json, plugin.json; verifies builds; creates git tags, GitHub releases, changelogs.
When working in TypeScript/JavaScript code, prefer the LSP tool over Grep for symbol-level operations. The LSP understands the language: it resolves re-exports, import aliases, type-only references, and JSDoc — all of which grep misses.
| Task | LSP operation |
|---|---|
| "Where is X defined?" | goToDefinition |
| "Who calls this function?" | prepareCallHierarchy → incomingCalls |
| "What does this function call?" | prepareCallHierarchy → outgoingCalls |
| "What implements this interface / overrides this method?" | goToImplementation |
| "What's the type/signature of X?" | hover |
| "All symbols in this file" | documentSymbol |
| "Find a symbol by name across the repo" | workspaceSymbol |
| Renaming or refactoring a symbol | findReferences (catches type refs + re-exports) |
Use Grep (not LSP) for:
LSP operations need an absolute file path and 1-based line/character. If you only know a symbol name, start with workspaceSymbol to locate it, then chain the next operation using the returned position.