Skip to content

Instantly share code, notes, and snippets.

View jrusbatch's full-sized avatar

Justin Rusbatch jrusbatch

View GitHub Profile
@jrusbatch
jrusbatch / INSTRUCTIONS.md
Last active March 13, 2026 18:12
Integrating the C# LSP in Claude Code

C# LSP in Claude Code

The roslyn-language-server is a .NET tool that provides rich language features for C# through the Language Server Protocol. It powers editor integrations including the C# extension for Visual Studio Code and C# Dev Kit. It offers several operations that Claude can use to navigate C# code rather than using grep and friends.

The Roslyn LSP supports many operations defined by the language service protocol, but from what I read only these commands are supported by Claude as of v2.1.62.

  • goToDefinition: find where a symbol is defined.
  • findReferences: find all references to a symbol.
  • hover: get documentation and type info for a symbol.
  • documentSymbol: list all symbols in a document.
  • workspaceSymbol: search for symbols by name across the entire workspaced.
@jrusbatch
jrusbatch / Instructions.md
Created February 27, 2026 15:27
Instructions for Integrating the C# LSP into Claude Code

C# LSP in Claude Code

The roslyn-language-server is a .NET tool that provides rich language features for C# through the Language Server Protocol. It powers editor integrations including the C# extension for Visual Studio Code and C# Dev Kit. It offers several operations that Claude can use to navigate C# code rather than using grep and friends.

The Roslyn LSP supports many operations defined by the language service protocol, but from what I read only these commands are supported by Claude as of v2.1.62.

  • goToDefinition: find where a symbol is defined.
  • findReferences: find all references to a symbol.
  • hover: get documentation and type info for a symbol.
  • documentSymbol: list all symbols in a document.
  • workspaceSymbol: find implementations of an interface or abstract method.
function Restore-Packages
{
$nuget = Join-Path $Env:UserProfile 'Tools/nuget.exe'
if (Test-Path $nuget) {
Write-Output "Restoring NuGet packages..."
& $nuget restore -verbosity quiet
}
else {
Write-Output "'$nuget' could not be found."
[alias]
amend = commit -a --amend
branches = branch -avv
bclean = "!f() { git branch --merged ${1-develop} | grep -v \\* | grep -v master$ | grep -v ${1-develop}$ | xargs -r git branch -d; }; f"
c = clone --recursive
ca = !git add -A && git commit -av
co = checkout
d = diff --patch-with-stat
fetch-pr = "!f() { git fetch -fu $1 refs/pull/$2/head:pull-$2; }; f"
go = checkout -B

Keybase proof

I hereby claim:

  • I am jrusbatch on github.
  • I am jrusbatch (https://keybase.io/jrusbatch) on keybase.
  • I have a public key whose fingerprint is 1248 4DD6 1FA4 5A02 9980 E127 2B6F 7944 A411 9D7A

To claim this, I am signing this object:

namespace ArgListOutVar
{
public class Program
{
public static void Main(string[] args)
{
// __arglist(out var x); // Loading a project that contains a file with this line uncommented crashes VS
__arglist(out int x); // If the type is explicit, VS doesn't crash
}
}
namespace ArgListOutVar
{
class Program
{
static void Main(string[] args)
{
// __arglist(out var x) // Loading a file with this line uncommented crashes Visual Studio
__arglist(out int x) // If the type is explicit, VS doesn't crash
}
}
#!/usr/bin/env bash
EC_CURVE=secp384r1
SRC=$(pwd)
KEY_FILE="$SRC/$EC_CURVE.private-key"
CSR_FILE="$SRC/localhost.csr"
CERT_FILE="$SRC/localhost.crt"
CONFIG_FILE="$SRC/server.csr.cnf"
OUT_FILE="$SRC/localhost.pfx"
public static class DatabaseFactory
{
private static ISqlLocalDbInstance GetInstance()
{
var provider = new SqlLocalDbProvider();
return provider.GetInstance("v13.0");
}
public static IDatabase CreateDatabase()
{
@jrusbatch
jrusbatch / Job.cs
Created September 28, 2016 17:11 — forked from clairernovotny/Job.cs
Job objects in .NET
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
internal class Job : IDisposable
{