Files
RoslynBridge/.claude/skills/roslyn-api/SKILL.md
2025-10-25 11:03:29 -04:00

4.6 KiB

name, description
name description
roslyn-api Use this for C# code analysis, querying .NET projects, finding symbols, getting diagnostics, or any Roslyn/semantic analysis tasks using the bridge server

Roslyn API Testing Guide

Use this guide when testing or accessing the Claude Roslyn Bridge HTTP endpoints.

Server Info

  • Base URL: http://localhost:59123/query
  • Method: POST
  • Content-Type: application/json

Correct Command Syntax

# Test if server is running
curl -X POST http://localhost:59123/query -H "Content-Type: application/json" -d "{\"queryType\":\"getprojects\"}"

# Get document info
curl -X POST http://localhost:59123/query -H "Content-Type: application/json" -d "{\"queryType\":\"getdocument\",\"filePath\":\"C:\\\\path\\\\to\\\\file.cs\"}"

# Get symbol at position
curl -X POST http://localhost:59123/query -H "Content-Type: application/json" -d "{\"queryType\":\"getsymbol\",\"filePath\":\"C:\\\\Users\\\\AJ\\\\Desktop\\\\PepLib\\\\PepLib\\\\Program.cs\",\"line\":10,\"column\":5}"

IMPORTANT curl syntax rules:

  • Use -X POST (NOT -Method POST)
  • Use -H for headers (NOT -Headers)
  • Use -d for data (NOT -Body)
  • Escape backslashes in file paths: \\\\ becomes \\ in JSON

Using PowerShell (Alternative)

Run these commands directly in PowerShell, NOT via powershell -Command:

# Test server
$body = @{queryType='getprojects'} | ConvertTo-Json
Invoke-RestMethod -Uri 'http://localhost:59123/query' -Method Post -Body $body -ContentType 'application/json'

# Get document
$body = @{
    queryType='getdocument'
    filePath='C:\path\to\file.cs'
} | ConvertTo-Json
Invoke-RestMethod -Uri 'http://localhost:59123/query' -Method Post -Body $body -ContentType 'application/json'

IMPORTANT PowerShell rules:

  • Run directly in PowerShell console, NOT via bash -c or powershell -Command
  • Use single quotes around URI and content type
  • File paths don't need escaping in PowerShell hash tables

Quick Reference: All Endpoints

Query Endpoints

Endpoint Required Fields Optional Fields
getprojects - -
getdocument filePath -
getsymbol filePath, line, column -
getdiagnostics - filePath
findreferences filePath, line, column -
findsymbol symbolName parameters.kind
gettypemembers symbolName parameters.includeInherited
gettypehierarchy symbolName parameters.direction
findimplementations symbolName OR filePath+line+column -
getnamespacetypes symbolName -
getcallhierarchy filePath, line, column parameters.direction
getsolutionoverview - -
getsymbolcontext filePath, line, column -
searchcode symbolName (regex) parameters.scope

Editing Endpoints

Endpoint Required Fields Optional Fields
formatdocument filePath -
organizeusings filePath -
renamesymbol filePath, line, column, parameters.newName -
addmissingusing filePath, line, column -
applycodefix filePath, line, column -

Common Test Examples

# Get all projects in solution
curl -X POST http://localhost:59123/query -H "Content-Type: application/json" -d "{\"queryType\":\"getprojects\"}"

# Get solution overview
curl -X POST http://localhost:59123/query -H "Content-Type: application/json" -d "{\"queryType\":\"getsolutionoverview\"}"

# Get diagnostics for entire solution
curl -X POST http://localhost:59123/query -H "Content-Type: application/json" -d "{\"queryType\":\"getdiagnostics\"}"

# Find all classes containing "Helper"
curl -X POST http://localhost:59123/query -H "Content-Type: application/json" -d "{\"queryType\":\"searchcode\",\"symbolName\":\".*Helper\",\"parameters\":{\"scope\":\"classes\"}}"

# Format a document
curl -X POST http://localhost:59123/query -H "Content-Type: application/json" -d "{\"queryType\":\"formatdocument\",\"filePath\":\"C:\\\\path\\\\to\\\\file.cs\"}"

Response Format

Success:

{
  "success": true,
  "message": "Optional message",
  "data": { /* Response data */ }
}

Error:

{
  "success": false,
  "error": "Error message",
  "data": null
}

Notes

  • Line numbers are 1-based
  • Column numbers are 0-based
  • File paths in JSON need escaped backslashes: C:\\path\\to\\file.cs
  • All workspace modifications use VS threading model (JoinableTaskFactory.SwitchToMainThreadAsync())
  • The Visual Studio extension must be running for endpoints to work