ide-diagnostics
Expert knowledge of IDE/LSP tools for code navigation, diagnostics, and refactoring. Use when working with TypeScript errors, linting issues, code navigation, or IDE operations.
When & Why to Use This Skill
This Claude skill provides expert-level integration with IDE and Language Server Protocol (LSP) tools to streamline code navigation, diagnostics, and refactoring. It enables agents to identify TypeScript errors, resolve linting issues, and execute automated IDE commands like 'fix all' or 'organize imports,' ensuring high code quality and consistency across complex codebases through professional-grade developer tooling.
Use Cases
- Identifying and resolving complex TypeScript compilation errors and ESLint violations using real-time IDE diagnostics.
- Performing safe, project-wide refactoring by renaming symbols and automatically updating all references across the codebase.
- Analyzing code impact and dependencies by locating all usages of specific functions, variables, or classes before making changes.
- Automating routine code maintenance tasks such as document formatting, organizing imports, and applying suggested quick-fixes via IDE commands.
| name | ide-diagnostics |
|---|---|
| description | Expert knowledge of IDE/LSP tools for code navigation, diagnostics, and refactoring. Use when working with TypeScript errors, linting issues, code navigation, or IDE operations. |
| allowed-tools | mcp__ide__getDiagnostics, mcp__ide__get_references, mcp__ide__rename_symbol, mcp__ide__execute_command, Read, Glob |
IDE Diagnostics and Navigation Expert
Master IDE integration tools for diagnostics, code navigation, and automated fixes.
Available IDE Tools
1. Get Diagnostics (mcp__ide__getDiagnostics)
Purpose: Retrieve errors, warnings, and info messages from the IDE's language server.
When to use:
- Before fixing TypeScript/JavaScript errors
- Checking for linting violations
- Validating code changes
- Identifying compilation issues
Usage:
Use mcp__ide__getDiagnostics to get all diagnostics
Output: List of diagnostics with:
- File path
- Line and column numbers
- Severity (error/warning/info)
- Error message
- Error code (e.g.,
TS2304,@typescript-eslint/no-unused-vars)
Best practices:
- Always check diagnostics before claiming code is error-free
- Use this instead of running
tsc --noEmitor manual compilation - Filter by severity if only interested in errors
- Group diagnostics by file for systematic fixing
2. Find References (mcp__ide__get_references)
Purpose: Find all usages of a symbol (variable, function, class, etc.)
When to use:
- Before renaming or refactoring
- Understanding code impact
- Finding all callers of a function
- Checking if code is unused
Usage:
Use mcp__ide__get_references for symbol at file:line:column
Best practices:
- Use before making changes to understand impact
- Verify all references when refactoring
- Check for unused code (0 references)
3. Rename Symbol (mcp__ide__rename_symbol)
Purpose: Safely rename variables, functions, classes across the entire codebase
When to use:
- Renaming variables, functions, classes
- Ensuring all references are updated
- Avoiding manual find-replace errors
Usage:
Use mcp__ide__rename_symbol at file:line:column to newName
Best practices:
- ALWAYS use this instead of manual find-replace
- Safer than Edit tool for renaming (handles scope correctly)
- Automatically updates all references
- Works across files
4. Execute IDE Command (mcp__ide__execute_command)
Purpose: Execute IDE commands like auto-fix, organize imports, format document
Common commands:
Auto-fix All Issues
Use mcp__ide__execute_command with command: "editor.action.fixAll"
Use cases:
- Auto-fix ESLint violations
- Auto-fix TypeScript quick fixes
- Apply all available code actions
Organize Imports
Use mcp__ide__execute_command with command: "editor.action.organizeImports"
Use cases:
- Remove unused imports
- Sort imports
- Clean up import statements
Format Document
Use mcp__ide__execute_command with command: "editor.action.formatDocument"
Best practices:
- Use
editor.action.fixAllinstead of runningeslint --fixvia Bash - More efficient than manual fixes
- Respects IDE configuration
- Works with all language servers
Diagnostic Severity Levels
Error (must fix):
- TypeScript type errors
- Syntax errors
- Missing imports
- Breaking compilation
Warning (should fix):
- Unused variables
- Deprecated API usage
- Potential bugs
- Style violations (if configured as warnings)
Info (consider fixing):
- Suggestions
- Code improvements
- Style preferences
Common Diagnostic Patterns
TypeScript Errors
Missing imports:
Error: Cannot find name 'foo'
Code: TS2304
Fix: Add import statement
Type mismatches:
Error: Type 'string' is not assignable to type 'number'
Code: TS2322
Fix: Convert type or adjust declaration
Property errors:
Error: Property 'bar' does not exist on type 'Foo'
Code: TS2339
Fix: Add property or check type definition
ESLint Errors
Unused variables:
Error: 'foo' is defined but never used
Rule: @typescript-eslint/no-unused-vars
Fix: Remove variable or use it
Missing return types:
Error: Missing return type on function
Rule: @typescript-eslint/explicit-function-return-type
Fix: Add explicit return type annotation
Workflow: Fix All Diagnostics
Step 1: Get Current Diagnostics
Use mcp__ide__getDiagnostics
Step 2: Prioritize Fixes
- Fix errors first (severity: error)
- Then warnings
- Then info-level suggestions
Step 3: Fix Systematically
- Group by file
- Fix one file at a time
- Use
editor.action.fixAllfor auto-fixable issues - Manually fix remaining issues with Edit tool
Step 4: Verify
Use mcp__ide__getDiagnostics again to confirm all fixed
Step 5: Iterate
Repeat until no diagnostics remain
Best Practices
DO:
- ✅ Use
mcp__ide__getDiagnosticsinstead oftsc --noEmit - ✅ Use
mcp__ide__rename_symbolinstead of manual find-replace - ✅ Use
editor.action.fixAllinstead ofeslint --fix - ✅ Check diagnostics before committing changes
- ✅ Fix errors before warnings
- ✅ Read file context before fixing (use Read tool)
DON'T:
- ❌ Don't run
tsc --noEmitvia Bash when you havegetDiagnostics - ❌ Don't use Edit tool for renaming (use
rename_symbol) - ❌ Don't ignore warnings - they often indicate real issues
- ❌ Don't fix diagnostics without understanding the context
Integration with Other Tools
With Read Tool
Always read the file before fixing diagnostics to understand context:
1. Use Read to view the file
2. Understand the code
3. Fix diagnostics appropriately
With Edit Tool
After understanding diagnostics, use Edit to make targeted fixes:
1. Get diagnostics
2. Read file
3. Plan fixes
4. Apply edits
5. Verify with getDiagnostics
With Glob Tool
For project-wide issues, find affected files first:
1. Use Glob to find TypeScript files: **/*.ts
2. Get diagnostics
3. Fix systematically
Troubleshooting
No Diagnostics Returned
Possible causes:
- IDE not running or not connected
- File not opened in IDE
- Language server not initialized
Diagnostics Not Updating
After fixes, diagnostics may take a moment to refresh. If needed, trigger a refresh by:
- Using
editor.action.fixAll - Saving the file
- Re-running
getDiagnostics
References
- VS Code Commands: Use
/idefor interactive IDE features - TypeScript Error Codes: https://typescript.tv/errors/
- ESLint Rules: https://eslint.org/docs/rules/