This skill provides TypeScript Language Server Protocol integration for exploring and understanding TypeScript/JavaScript codebases.
IMPORTANT: Prefer LSP tools over Grep/Glob when working with *.ts, *.tsx, *.js, *.jsx files. LSP provides type-aware results that understand imports, exports, and symbol relationships.
Use these tools to:
-
Explore codebases - Find symbols, understand module structure, discover implementations
-
Find references - Type-aware search across the entire codebase (better than grep for symbols)
-
Understand types - Get full type signatures, generics, and documentation
-
Verify before editing - Check all usages before modifying or deleting exports
-
Navigate code - Jump to definitions, find implementations
When to Use Each Tool
| Glob | Find files by pattern
| Grep | Search text content
| lsp-find | Search TypeScript symbols
| lsp-hover | Get type info + TSDoc documentation
| lsp-refs | Find all references to a symbol
| lsp-analyze | Batch analysis of file structure
LSP vs Grep/Glob
| Find all usages of a function/type
| ✅ lsp-refs
| ❌ Misses re-exports, aliases
| Search for a symbol by name
| ✅ lsp-find
| ❌ Matches strings, comments
| Get type signature + TSDoc
| ✅ lsp-hover
| ❌ Not possible
| Understand file exports
| ✅ lsp-analyze --exports
| ❌ Doesn't resolve re-exports
| Find files by pattern
| ❌
| ✅ Glob
| Search non-TS files (md, json)
| ❌
| ✅ Grep
| Search for text in comments/strings
| ❌
| ✅ Grep
When to Use
Exploring code (prefer LSP):
-
Run
lsp-findto search for symbols across the workspace -
Run
lsp-symbolsto get an overview of file structure -
Run
lsp-analyze --exportsto see what a module provides
Before editing code:
-
Run
lsp-referencesto find all usages of a symbol you plan to modify -
Run
lsp-hoverto verify current type signatures
Before writing code:
-
Run
lsp-findto search for similar patterns or related symbols -
Run
lsp-hoveron APIs you plan to use
Path Resolution
All scripts accept three types of file paths:
-
Absolute paths:
/Users/name/project/src/file.ts -
Relative paths:
./src/file.tsor../other/file.ts -
Package export paths:
my-package/src/module.ts(resolved viaBun.resolve())
Package export paths are recommended for portability and consistency with the package's exports field.
Scripts
Individual Scripts
lsp-hover
Get type information at a specific position.
bunx @plaited/development-skills lsp-hover <file> <line> <char>
Arguments:
-
file: Path to TypeScript/JavaScript file -
line: Line number (0-indexed) -
char: Character position (0-indexed)
Example:
bunx @plaited/development-skills lsp-hover src/utils/parser.ts 42 10
lsp-symbols
List all symbols in a file.
bunx @plaited/development-skills lsp-symbols <file>
Example:
bunx @plaited/development-skills lsp-symbols src/utils/parser.ts
lsp-references
Find all references to a symbol.
bunx @plaited/development-skills lsp-refs <file> <line> <char>
Example:
bunx @plaited/development-skills lsp-refs src/utils/parser.ts 42 10
lsp-find
Search for symbols across the workspace.
bunx @plaited/development-skills lsp-find <query> [context-file]
Arguments:
-
query: Symbol name or partial name -
context-file: Optional file to open for project context
Example:
bunx @plaited/development-skills lsp-find parseConfig
bunx @plaited/development-skills lsp-find validateInput src/lib/validator.ts
Batch Script
lsp-analyze
Perform multiple analyses in a single session for efficiency.
bunx @plaited/development-skills lsp-analyze <file> [options]
Options:
-
--symbols, -s: List all symbols -
--exports, -e: List only exported symbols -
--hover <line:char>: Get type info (repeatable) -
--refs <line:char>: Find references (repeatable) -
--all: Run symbols + exports analysis
Examples:
# Get file overview
bunx @plaited/development-skills lsp-analyze src/utils/parser.ts --all
# Check multiple positions
bunx @plaited/development-skills lsp-analyze src/utils/parser.ts --hover 50:10 --hover 75:5
# Before refactoring: find all references
bunx @plaited/development-skills lsp-analyze src/utils/parser.ts --refs 42:10
Common Workflows
Understanding a File
# 1. Get exports overview
bunx @plaited/development-skills lsp-analyze path/to/file.ts --exports
# 2. For specific type info, hover on interesting symbols
bunx @plaited/development-skills lsp-hover path/to/file.ts <line> <char>
Before Modifying an Export
# 1. Find all references first
bunx @plaited/development-skills lsp-refs path/to/file.ts <line> <char>
# 2. Check what depends on it
# Review the output to understand impact
Finding Patterns
# Search for similar implementations
bunx @plaited/development-skills lsp-find handleRequest
bunx @plaited/development-skills lsp-find parseConfig
Pre-Implementation Verification
# Before writing code that uses an API, verify its signature
bunx @plaited/development-skills lsp-hover path/to/api.ts <line> <char>
Output Format
All scripts output JSON to stdout. Errors go to stderr.
Hover output:
{
"contents": {
"kind": "markdown",
"value": "```typescript\nconst parseConfig: (options: Options) => Config\n```"
},
"range": { "start": {...}, "end": {...} }
}
Symbols output:
[
{
"name": "symbolName",
"kind": 13,
"range": { "start": {...}, "end": {...} }
}
]
Analyze output:
{
"file": "path/to/file.ts",
"exports": [
{ "name": "exportName", "kind": "Constant", "line": 139 }
]
}
Performance
Each script invocation:
-
Starts TypeScript Language Server (~300-500ms)
-
Initializes LSP connection
-
Opens document
-
Performs query
-
Closes and stops
For multiple queries on the same file, use lsp-analyze to batch operations in a single session.
Related Skills
- code-documentation: TSDoc standards for documentation