LLMs are also primarily promoted through the web chat interface, not always magic wonder tools. With any project that will fit in claude/gemini's large context you use those interfaces and dump everything in with something like this:
(tree Source/; echo; for file in $(find Source/ -type f ) ; do echo ======== $file: ; cat $file; done ) > /mnt/c/Users/you/Desktop/claude_out.txt #claudesource
Then drag that into the chat.
You can also do stuff like pass in just the headers and a few relevant files
(tree Source/; echo; for file in $(find Source/ -type f -name '\*.h' ; echo Source/path/to/{file1,file2,file3}.cpp ) ; do echo ======== $file: ; cat $file; done ) > /mnt/c/Users/you/Desktop/claude_out.txt #claudeheaderselective
You can then just hit ctrl+r and type claude to refind it in shell history. Maybe that's too close to "writing scripts" for you but if you are searching a large codebase effectively without AI you are constantly writing stuff like that and now it reads it for you.
Put the command itself into claude too and tell claude itself to write a similar one for all the implementation files it finds it needs while looking those relevant files and headers.
If you want a wonder tool that will navigate and handle the context window and get in the right files into context for huge projects, try claude code or other agents, but they are still undergoing rapid improvements. Cursor has started adding some in too but as subscription calling into an expensive API they cost cut a lot on trying to minimize context.
They also let you now just point it at a github project and pull in what it needs, or tools build around the api model context protocol etc. to let it browse and pull it in.