A single file is easy. Real work spans a repo: a function defined in one file, called from three others, with config off to the side. Claude Code is built for exactly this. Point it at a project and it will search, read, and follow the trail between files on its own.
You do not hand Claude the files one by one. It explores the repo the way you would, just faster:
So when a function is called in one place and defined in another, Claude reads across that boundary without you pasting anything.
You steer the search by how you phrase the request. A few habits that help:
server.py, the load_config
function...".The more specific your anchor, the less Claude has to search and the tighter its answer.
Once Claude understands how the pieces connect, it can change them together. Rename a function and update every caller. Add a parameter and thread it through. Move logic from one module to another and fix the imports. It plans the set of edits, shows you the diffs, and applies them across files in one pass.
You still review before anything lands. But the tedious part - knowing which files a change touches - is what Claude handles best.
When you want an edit kept small, tell Claude where the edges are: "only
touch files under src/auth/" or "change the parser, not the tests". Scope
is just another anchor, and it keeps a coordinated edit from sprawling
further than you meant.
Your lab setup
This VM comes with Claude Code preinstalled and signed in - just run claude to start.