Graphify C# indexa código con Roslyn para que los agentes no adivinen
Un indexador open source con licencia MIT que usa Roslyn y MSBuild para dar a los agentes de código llamantes, referencias e implementaciones resueltas por el compilador.
Un indexador de C# que carga la solución con MSBuild y le pregunta a Roslyn qué significa cada símbolo, para entregárselo después a un agente de código. Se llama graphify-csharp, es open source con licencia MIT y no necesita IDE, ni una DLL compilada del proyecto, ni base de datos. La premisa es que el agente deje de adivinar a partir de coincidencias de texto.
El problema que ataca es concreto. Si le pides a un agente que averigüe qué llama a un método, lo habitual es que haga una búsqueda textual. Encuentra nombres que coinciden, pero no sabe qué sobrecarga se enlazó, ni a qué proyecto pertenece el llamante, ni si esa implementación de interfaz es la que creías. Graphify C# produce llamantes resueltos por el compilador, referencias, implementaciones, herencia y overrides, incluso con sobrecargas, genéricos y varios proyectos de por medio. Cada relación es una arista dirigida con identidad estable de símbolo, no un recuento de coincidencias.
La salida es un único documento JSON con nodos, aristas e hiperaristas. Se puede leer directamente desde un agente, consultar con jq, consumir desde código propio o pasar a Graphify, que es opcional.
Cómo se instala
Se distribuye como herramienta global de dotnet, apuntando a net10.0, y la indexación se lanza desde línea de comandos:
dotnet tool install --global Graphify.CSharp --framework net10.0
graphify-csharp --input ./src/MyProduct.sln --root . \
--configuration Release --output ./graphify-out/csharp.json
Acepta como entrada archivos .sln, .slnx, .csproj y aplicaciones .cs basadas en archivos de SDK. Los SDK, paquetes y entradas de MSBuild tienen que estar disponibles en local. El repositorio incluye además una skill para enseñar al agente cuándo refrescar el índice y cómo seguir las aristas semánticas: se instala en .agents/skills/graphify-csharp/SKILL.md para proyectos compatibles con Codex, o en .claude/skills/graphify-csharp/SKILL.md para Claude Code. Hay que recargar la sesión del agente después de instalarla o actualizarla. El indexado incremental con un watcher en caliente es opcional.
Dónde encaja
El propio autor delimita el producto. Rider y ReSharper dan navegación interactiva, inspecciones y refactorizaciones dentro del IDE. NDepend es una suite comercial de arquitectura y calidad construida alrededor de análisis de dependencias, métricas, reglas y visualizaciones. Graphify C# quiere ser otra cosa: evidencia semántica a nivel de fuente, headless y en formato abierto, para que la consuman agentes y otras herramientas. Reconoce el solapamiento con NDepend en llamantes, dependencias, herencia e investigación de código muerto, y aclara que no es un clon gratuito ni un reemplazo del IDE.
Con el índice en la mano, un agente puede responder qué llama a esa sobrecarga exacta, qué clases implementan una interfaz, qué miembros sobrescriben un virtual o qué declaraciones no tienen ninguna referencia entrante. Sobre lo último conviene ser cuidadoso: cero aristas entrantes es evidencia estática observada, no prueba de que ese código sea inalcanzable en ejecución. El proyecto lo dice explícitamente, y la decisión de borrar sigue siendo humana.
Queda por ver el coste de indexar soluciones grandes. En el material publicado no hay cifras de rendimiento ni tiempos sobre monorepos de verdad, así que eso habrá que medirlo en casa antes de meterlo en un pipeline.


