At some point every "let me just paste my code into the AI" session hits a wall. You want the model to reason about the whole project — not one file — so you start copy-pasting directories. Three things go wrong, usually in this order:
Here's a workflow that handles all three, whether you build the tooling yourself or use an off-the-shelf one.
Models reason better over a single, well-ordered document than over 30 pasted snippets. Walk the repo, skip the noise (node_modules
, build output, images, lockfiles), and emit each file with a clear header. A file index at the top helps the model build a mental map before it reads any code.
This is the step people skip. Anything credential-shaped — sk-...
, ghp_...
, AKIA...
, sk_live_...
, -----BEGIN PRIVATE KEY-----
— should be masked automatically, not by remembering to check. A prompt log is a place secrets go to leak; treat the bundle like a public paste.
Estimate the bundle's token count and compare it to your target model (Claude ~200K, GPT-5 ~400K, Gemini 2.5 Pro ~1M). If you're over, don't truncate blindly — drop the largest file bodies but keep every file listed, so the model still knows the project's full shape.
ctxpack is a zero-dependency CLI that does all three:
npx github:trongtruong110-ux/ctxpack . --model claude-fable-5 -o context.md
npx github:trongtruong110-ux/ctxpack . --fit 150000 -o context.md
ctxpack: 214 files packed
tokens: ~147,900 (74% of Claude 200,000 ctx)
redacted: 3 secret(s)
Then paste context.md
(or attach it) and ask your question against the full project.
ctxpack is MIT-licensed and free: https://github.com/trongtruong110-ux/ctxpack. If you've got a workflow for feeding whole projects to an LLM, I'd like to hear it.