Graphify: Understanding the Connections Between Files

·

A project’s authentication module imports a JWT library, is called by three API endpoints, and was designed to satisfy a decision recorded in an architecture decision record from fourteen months ago. None of those files mentions the others by name. Reading each one individually does not tell you how they connect. A knowledge graph can.

Nodes, edges, and what they add

A knowledge graph represents entities as nodes and relationships as edges. In a codebase: a node is a module, a function, or a concept; an edge is a function call, an import, or a design reference. The value is not in listing the entities—a file tree does that—but in making the relationships navigable.

Graphify is a Claude Code skill that builds a knowledge graph from a folder of files. It runs with /graphify . on any directory. Source types it processes include code files (.py, .ts, .js, .go, .rs, .java, and others), markdown and text documents, PDFs, and images.

Code files are processed locally using tree-sitter for AST extraction and a call-graph pass. The result is deterministic and does not require model inference. Documents, papers, and images are processed via Claude: concepts and relationships are extracted semantically, citations are mined from PDFs, and images—screenshots, diagrams, whiteboard photos—are analyzed using Claude vision. Users with privacy concerns should treat these two categories differently before running Graphify on sensitive material.

What comes back

Every edge in the graph is tagged with one of three confidence labels: EXTRACTED for relationships that are explicit in the source (an import statement, a function call, a citation), INFERRED for reasonable inferences (shared data structures, implied dependencies), and AMBIGUOUS for uncertain relationships flagged for review. Inferred edges carry a confidence score from 0.4 to 0.9; ambiguous edges score 0.1 to 0.3. The README describes this as being “honest about what it found vs guessed.”

Output includes an interactive HTML graph, a persistent graph.json, and a GRAPH_REPORT.md that identifies the highest-degree nodes (what everything connects through), surprising cross-file connections ranked by unexpectedness, and questions the graph is specifically positioned to answer.

The illustrative question

A team is reviewing a proposed change to an authentication module. The relevant material is spread across several locations: the module’s source code, API documentation for the endpoints that call it, and an architecture decision record from when stateless authentication was adopted.

An illustrative query: “What connects this authentication change to the affected services and documented design decisions?”

In a graph, this traces from the authentication module along EXTRACTED edges to the API endpoints that import it, along INFERRED edges to services that share its data structures, and along a references edge—extracted from the architecture decision record—to the decision that records why stateless authentication was chosen. Code, documentation, and design rationale are navigable in a single query.

The relevant commands: /graphify query runs a broad traversal to surface related context; /graphify path "AuthModule" "ADR-007" finds the shortest path between two named nodes; /graphify explain "AuthModule" returns a plain-language description of that node and its immediate connections.

Who benefits

Developers working in an unfamiliar codebase who need to understand its architecture before changing anything. Architects tracing the downstream effects of a proposed redesign. Researchers working across a collection of papers, notes, and documents—the graph spans all source types in one structure.

Privacy

Code AST extraction runs locally via tree-sitter—deterministic, no model inference. Documents, PDFs, and images go through Claude for semantic extraction. The README describes the infrastructure as local (no server, no Neo4j), but the semantic extraction step for non-code content is model-based. Verify your data-handling requirements before running Graphify on sensitive material.

Limitations

Graph completeness depends on source coverage. A relationship between two files Graphify did not process does not appear; a concept from an image it could not parse will be absent or wrong.

Inferred relationships require inspection. An INFERRED edge with a 0.5 confidence score is a reasonable guess, not a confirmed dependency. The score is a signal, not a substitute for reading the underlying source.

A graph is a model of the files it was built from. It is not an authoritative description of the system as it actually runs.


Source: github.com/Graphify-Labs/graphify — README and skill.md. Retrieved 8 October 2026.

#KnowledgeGraph #DeveloperTools #AgentSkills