gsttt
pronounced ghost
A deterministic dependency graph that tells you, and your coding agent, which files a change reaches. No model, no daemon.
Install
Install the command line tool first. Add the Claude Code plugin if you work with Claude Code.
Install the command line tool
curl -fsSL https://raw.githubusercontent.com/SkuratovichA/gsttt/main/install.sh | shFor Linux and macOS, on x86_64 and aarch64. The script verifies the SHA-256 of the download and installs to ~/.local/bin, or to GSTTT_INSTALL_DIR if you set it.
Add the Claude Code plugin
/plugin marketplace add SkuratovichA/gsttt/plugin install gsttt@gstttRun these inside Claude Code. The plugin registers the MCP server, a session start hook and a skill. It needs the command line tool from the first step.
See an answer
Ask what depends on a file. The answer lists the affected files by distance with the reason for each, lists the tests that reach the file, and ends with how much code gsttt could read and how fresh the index is.
gsttt impact api/bookings/router.pyaffected files (4) 1 web/src/api/bookings.ts calls http GET /bookings/{} 2 web/src/pages/Bookings.tsx imports web/src/api/bookings.ts 2 web/src/pages/Dashboard.tsx imports web/src/api/bookings.ts 3 web/src/App.tsx imports web/src/pages/Bookings.tsxtests (1) 1 api/tests/test_bookings.py imports api/bookings/router.pypython: 212 of 214 files read, 99% of imports resolved. ts: 340 of 340 files read, 100% of imports resolved.fresh at a1b2c3d, 3 files dirtyWhat it does
Imports, across languages
TypeScript, Python and Rust files go into one graph, with the imports between files resolved to the files they point at.
Contracts, between services
HTTP routes, GraphQL operations, gRPC methods, tRPC procedures, tables, queues and environment variables link the files that declare them to the files that serve and call them, so a change to a route lists the client that calls it.
Answers that state their limits
Every answer ends with a coverage line, saying how much code gsttt could read, and a freshness line, saying whether the index matches the tree. It does not hide what it could not see.
Works with agents
gsttt speaks MCP over stdio with gsttt mcp, so any agent that supports MCP can ask what a change touches before it makes the change. For Claude Code, the plugin registers that server and adds a session start hook and a skill.