The graphify command line.
One binary, two jobs: wire the /graphify skill into your assistant, then read the graph back out — query, path, explain, and a PR dashboard. Everything runs locally against graphify-out/graph.json.
Install & set up
The CLI ships in the graphifyy package on PyPI. Installing the tool gives you the graphify binary; graphify install then registers the /graphify skill with every AI coding assistant it detects on your machine (17 supported).
uv tool install graphifyy graphify install [--platform <name>] graphify uninstall [--purge]
- --platform <name>
- Register with one specific assistant instead of everything detected — e.g.
claude,cursor,codex,gemini,aider,devin. - --purge
- With
uninstall: also delete thegraphify-out/directory.
$ uv tool install graphifyy✓ installed graphify $ graphify install✓ detected Claude Code, Cursor, GitHub Copilot✓ /graphify skill registered · 17 assistants supported # alternatives:# pipx install graphifyy# pip install graphifyy/graphify — build the graph
Building the graph happens inside your assistant, not the terminal: run /graphify . and it maps the project — 36 code languages plus docs, SQL, and more — into graphify-out/. The CLI commands below all read the graph.json this step produces.
/graphify <path> [--update] [--mode deep]
- --update
- Re-scan only what changed since the last run instead of rebuilding from scratch.
- --mode deep
- Deeper multi-pass analysis — slower, more inferred connections.
# in your assistant (Claude Code, Cursor, Copilot, …):/graphify . ✓ graphify-out/graph.html interactive graph✓ graphify-out/GRAPH_REPORT.md architecture report✓ graphify-out/graph.json machine-readable graph # re-scan only what changed: /graphify . --update# deeper multi-pass analysis: /graphify . --mode deepgraphify query
Ask a question in plain English. The CLI traverses the graph breadth-first from the best-matching nodes and prints the relevant subgraph as text — explicit paths with file:line citations, every edge tagged EXTRACTED, INFERRED, or AMBIGUOUS.
graphify query "<question>" [--dfs] [--context <c>] [--budget <n>] [--graph <path>]
- --dfs
- Depth-first instead of breadth-first — trace one specific chain rather than gathering broad context.
- --context <c>
- Explicit edge-context filter, e.g.
call. Repeatable. - --budget <n>
- Cap the output at n tokens (default 2000) — sized to drop into an assistant's context.
- --graph <path>
- Path to
graph.json(defaultgraphify-out/graph.json).
$ graphify query "what connects auth to the database?"AuthService → SessionStore → DatabasePool [EXTRACTED] src/auth/service.py:42 → src/db/pool.py:17 # trace one specific chain instead of broad context:$ graphify query "how does a request reach the cache?" --dfsgraphify path
The shortest path between two nodes — how two pieces of your codebase actually connect, hop by hop. Endpoints are matched by label, so a close-enough name works.
graphify path "<source>" "<target>" [--graph <path>]
- --graph <path>
- Path to
graph.json(defaultgraphify-out/graph.json).
$ graphify path "UserService" "DatabasePool"UserService → UserRepository → DatabasePool (2 hops)graphify explain
A plain-language explanation of one node and its neighborhood: what it is, where it lives, what calls it, and what it calls.
graphify explain "<node>" [--graph <path>]
- --graph <path>
- Path to
graph.json(defaultgraphify-out/graph.json).
$ graphify explain "RateLimiter"RateLimiter · class · src/middleware/rate_limit.pycalled by ApiGateway, WebhookHandler · calls RedisClientgraphify prs
A graph-aware dashboard of your open GitHub pull requests: CI and review state per PR, plus graph impact — which communities each PR touches, where PRs overlap, and which pairs carry merge risk. Pass a number for a deep dive on one PR.
graphify prs [<number>] [--triage] [--conflicts] [--worktrees] [--base <branch>] [--repo <owner/repo>]
- --triage
- Rank the review queue with your configured LLM backend: what to review first, and why.
- --conflicts
- Show PRs that touch the same graph communities — merge-order risk before it becomes a conflict.
- --worktrees
- Map local git worktrees to branches to open PRs.
- --base <branch>
- Only PRs targeting this base branch (auto-detected by default).
- --repo <owner/repo>
- GitHub repository to inspect (defaults to the current repo).
$ graphify prs#482 refactor: extract PaymentGateway touches 12 nodes · 3 shared with #479#479 fix: retry logic in RedisClient touches 4 nodes $ graphify prs --triage#482 HIGH overlaps #479 on RedisClient · review first#479 LOW isolated change $ graphify prs --conflicts#482 ↔ #479 both modify RedisClient.retry · merge riskEverything else
The CLI has more surface than fits here — updating and watching the graph, headless extraction for CI, exports, git hooks. graphify --help lists every command and flag, and the README on GitHub covers them in depth.
Prefer your assistant to call the graph natively instead of shelling out? The same data is exposed over MCP — see the MCP tools reference.