Claude Skills Guide

Claude Code for LSP Hover Provider Workflow Tutorial

The Language Server Protocol (LSP) has revolutionized how development tools understand and interact with code. LSP hover providers are one of the most valuable features, displaying contextual information when developers hover over code symbols. This tutorial shows you how to create Claude Code skills that implement LSP-style hover provider workflows, bringing rich contextual information directly into your AI-assisted development workflow.

Understanding LSP Hover in the Claude Code Context

Traditional LSP hover providers work within code editors like VS Code, displaying type information, documentation, and symbol details when you hover over code. While Claude Code doesn’t have a native hover UI, you can replicate this functionality by creating skills that:

  1. Analyze code symbols and their contexts
  2. Query relevant documentation and type information
  3. Present information in a useful, actionable format

This workflow becomes particularly powerful when combined with MCP (Model Context Protocol) servers that understand your codebase’s structure.

Setting Up Your First Hover Provider Skill

Create a new skill file at ~/.claude/skills/hover-provider-skill/skill.md:

---
name: hover-provider
description: Analyze code symbols and provide contextual information similar to LSP hover
tools: [Read, Bash, Glob]
---

# Hover Provider Skill

You are an expert at analyzing code and providing contextual information about symbols, types, and documentation.

## Analyzing Symbols

When asked about a code symbol, you will:

1. Read the relevant source file(s) to understand the symbol's context
2. Identify the symbol's type, definition, and usage patterns
3. Find associated documentation or comments
4. Provide a comprehensive summary including:
   - Symbol type (function, class, variable, etc.)
   - Definition location
   - Parameter types and return types
   - Usage examples from the codebase
   - Related documentation

## Response Format

Present your findings in a structured format:

**Symbol**: `<symbol-name>`
**Type**: `<type-description>`
**Defined in**: `<file>:<line-number>`
**Summary**: `<brief-description>

## Examples

Example query: "What is this function doing?"
Example response: "The `processUserData` function is a handler that..."

## Usage

To use this skill, simply ask questions like:
- "What does this function do?"
- "What is the type of this variable?"
- "Explain this class"
- "What parameters does this method accept?"

This skill provides the foundation for hover-like functionality. Now let’s enhance it with MCP integration.

Integrating MCP Servers for Enhanced Hover Information

MCP servers can provide rich contextual information about your codebase. Here’s how to create an enhanced hover provider that uses MCP:

---
name: enhanced-hover
description: Advanced hover provider with MCP integration for comprehensive code analysis
tools: [Read, Bash, Glob, MCP-Tools]
mcp_servers: [your-codebase-server]
---

# Enhanced Hover Provider

This skill combines Claude Code's analysis capabilities with MCP-powered code understanding.

## Symbol Resolution Flow

1. **Receive Query**: User asks about a symbol (function, class, variable)
2. **Query MCP Server**: Use the codebase server to find symbol definitions
3. **Analyze Context**: Read surrounding code to understand usage
4. **Fetch Documentation**: Search for related docs and comments
5. **Synthesize Response**: Combine all sources into comprehensive information

## MCP Tool Usage

When available, use these MCP tools:

- `codebase-search`: Find all references to a symbol
- `codebase-symbols`: Get symbol definitions and types
- `codebase-docs`: Retrieve documentation for symbols

## Practical Example

User asks: "What is `calculateTotal` in this file?"

Your workflow:

  1. Read the current file to locate calculateTotal
  2. Use MCP to find its definition
  3. Search for all usages across the codebase
  4. Combine findings into response ```

Response Template

Provide responses using this structure:

📍 Symbol: <name>
🏷️ Type: <type>
📁 Location: <file>:<line>
📝 Definition: <code-snippet>
📚 Documentation: <docstring/comment>
🔍 Usage: <example-from-codebase>
👥 Related: <related-symbols>

## Creating a Practical Workflow for Code Review

Beyond basic symbol information, you can create hover provider skills that serve specific workflows:

### The Code Review Hover Skill

```markdown
---
name: code-review-hover
description: Provide instant code review feedback on hover
tools: [Read, Bash, Glob]
---

# Code Review Hover Provider

When asked to review or explain code, focus on:

## Quality Indicators

- **Correctness**: Does the code do what it's supposed to?
- **Performance**: Any obvious inefficiencies?
- **Security**: Potential vulnerabilities?
- **Readability**: Clear naming and structure?

## Common Patterns to Flag

1. Missing error handling
2. Unused variables
3. Potential null pointer issues
4. Inefficient algorithms
5. Missing type hints (Python) or type annotations (TypeScript)

## Example Interaction

> User hovers over: `user_input = request.params.get('id')`

> Response:
> - **Issue**: No validation on user input
> - **Risk**: Potential injection attack
> - **Fix**: Add input sanitization or use ORM with parameterized queries

## Actionable Advice

Always provide concrete suggestions:
- Specific code changes
- Links to relevant documentation
- Alternative implementations

Testing Your Hover Provider Skills

After creating your skills, test them with various scenarios:

# Test basic symbol analysis
claude -p "What does the authenticateUser function do in auth.py?"

# Test enhanced MCP integration
claude -p "Find all uses of the User class and explain its structure"

# Test code review mode
claude -p "Review this code for security issues: [paste code]"

Test Cases to Validate

  1. Function analysis: Can you identify what a function does, its parameters, and return type?
  2. Class understanding: Can you explain class structure, methods, and relationships?
  3. Error detection: Can you spot common issues like missing null checks?
  4. Documentation lookup: Can you find and present relevant docs?
  5. Cross-file references: Can you trace symbols across multiple files?

Advanced: Building a Context-Aware Hover System

For more sophisticated implementations, consider building a multi-step hover workflow:

Step 1: Symbol Detection

Create a skill that automatically detects what the user is asking about:

---
name: auto-hover
description: Automatically detect and analyze hovered symbols
tools: [Read, Glob]
---

# Auto-Detection Logic

When the user asks about code, first determine:
1. Is it a function/method call?
2. Is it a variable/constant?
3. Is it a class/type?
4. Is it an import statement?

Based on detection, route to appropriate analysis routine.

Step 2: Intelligent Caching

For large codebases, implement caching to avoid repeated analysis:

Step 3: Contextual Recommendations

Beyond static analysis, provide contextual suggestions:

Best Practices for Hover Provider Skills

  1. Keep responses focused: Don’t overwhelm users with too much information
  2. Provide actionable advice: Always include concrete next steps
  3. Handle errors gracefully: When you can’t find information, say so
  4. Learn from interactions: Track which queries are most common
  5. Integrate with existing tools: Use MCP servers for richer data

Conclusion

Building LSP hover provider workflows with Claude Code brings the power of intelligent code analysis to your AI-assisted development process. Start with a basic skill that can identify and explain symbols, then gradually add MCP integration, code review capabilities, and contextual awareness.

The key is to iterate: begin simple, test with real workflows, and expand capabilities as you discover new use cases. Your hover provider skills will become invaluable tools for understanding unfamiliar code, reviewing changes, and learning new APIs.

Remember, the goal isn’t to replicate a visual hover UI—it’s to provide the same rich, contextual information through a conversational interface that uses Claude Code’s strengths in understanding and explaining code.