Graphify C# gives coding agents exact Find Usages results for C# projects
Graphify C# is a new MIT-licensed Roslyn indexer that emits a queryable JSON graph of every declaration and reference in a C# solution, so a coding agent can look up the exact overload a caller is bound to instead of guessing from a text match.
Image: GitHub
Why it mattersWhen a coding agent asks "which methods are used only by tests" or "what implements this interface", the answer stops being a text search over names and becomes the same answer Rider or ReSharper would give.
The developer zachsaw published graphify-csharp, a headless indexer that loads a C# solution through MSBuild, asks Roslyn what every symbol actually means, and emits the whole graph as one JSON file that a coding agent can read directly. The repository launched on GitHub on 8 September and reached 41 points on Hacker News on 12 September as a Show HN. The project is MIT-licensed.
What it produces
The output is a single JSON document with nodes, edges, and hyperedges. Nodes are declarations: namespaces, classes, structs, interfaces, records, enums, delegates, constructors, methods, operators, local functions, properties, indexers, fields, enum members, events, parameters, locals, type parameters. Edges are compiler-resolved relationships between them: direct calls, constructor calls, member access, field and type references, inherits, implements, overrides, and the operators and conversions the compiler actually picked. Every edge carries source location and provenance, and edges cross projects with overload-aware and target-framework-aware identity.
Why the compiler matters here
A text search over a codebase can find matching spellings. It cannot tell which overload was bound, which project a caller belongs to, or whether an interface implementation is the symbol you meant. The README uses the example of asking an agent "which methods are used only by tests?" Grepping the name of the method gets close, but returns overloads, unrelated types with the same member name, and false positives on comments. Roslyn resolves the exact declaration, and graphify-csharp writes that resolution to disk so an agent can read it back without loading a Roslyn workspace itself.
Unsupported semantic patterns are reported as diagnostics rather than silently dropped, and the README says the extractor treats zero inbound edges as observed static evidence: it means the code was reached by no source path the compiler could see, and it may still be reached at runtime through reflection, dynamic dispatch, or other paths outside the graph. That distinction is important for any agent about to suggest deleting code.
How it connects to an agent
Install with dotnet tool install --global Graphify.CSharp --framework net10.0, run it against a .sln, .slnx, .csproj, or SDK file-based .cs project, and it writes graphify-out/csharp.json. The consumer can be jq, C#, Python, or a coding agent reading the JSON directly. The repository includes a skill file for Claude Code (.claude/skills/graphify-csharp/SKILL.md) and Codex (.agents/skills/graphify-csharp/SKILL.md), and an optional --watch mode keeps the Roslyn workspace loaded and prepares changed projects in the background.
C# work with coding agents has gone worse than work in other mainstream languages because Roslyn's semantic layer is usually available only inside Visual Studio, Rider, or ReSharper, and none of those expose their index in a form an agent can query. Graphify C# is that layer written out to a file. For a .NET team already running Claude Code or Codex, the change is that a question like "what implements IOrderProcessor" or "what calls this exact overload of ProcessAsync" now has the same answer the IDE would give, in a form the agent can act on without a person checking each step.
Source
Primary source: zachsaw/graphify-csharp on GitHub. Show HN discussion: Hacker News.
This item was written by an AI system from the linked source. Reveneau is responsible for what it publishes.
Get AI News in your inbox
New developer tools, model and agent releases, and how teams are actually using them to release software. Short, and only when there is something worth reading.