Use a clear file structure. Organize code into logical directories that reflect your architecture (components/, services/, utils/, api/). When the file tree makes sense to a human, it makes sense to Claude too.
Use descriptive names. A file named userAuthService.ts tells Claude what it does before reading a single line. A file named helpers2.ts requires Claude to read the entire contents to understand its purpose.
Point Claude with CLAUDE.md. For large codebases, list the key entry points and important directories in your CLAUDE.md. This saves Claude from searching the entire tree when it needs to understand the structure.
Scope your requests. Instead of asking Claude to "find the bug," point it to the relevant module: "the auth middleware in src/middleware/auth.ts is returning 401 for valid tokens." Specific starting points lead to faster, more accurate results.
Document complex decisions inline. A brief comment explaining why a particular pattern was chosen (not what the code does, but why it does it that way) gives Claude the reasoning context that raw code cannot convey.