Manifest-based match-rate comparison ties at 0% (both stripped and unstripped) whenever the freshest manifest is scoped to a subset of the project — most commonly a git-diff manifest from output/git-changes/, which only ever tracked files touched in one prior change. A zip of otherwise-legitimate new files then looks equally unmatched either way, so the previous logic played it safe and left the wrapper folder in place, dumping it verbatim into the project. Now, when the manifest signal ties, fall back to comparing top-level path segments against the project's real, current directory layout (app/, components/, lib/, etc.) instead. Confirmed against a reproduction of the exact reported case.
contextzip
Package exactly the right parts of your codebase and paste it into any AI tool — in one command.
pip install contextzip
📖 Full docs, every flag, every config option: contextzip.vercel.app
Why contextzip
Every AI session starts the same way: hunt down the relevant files, skip node_modules and build artifacts by hand, zip it, find the zip, upload it — then do it all again next session.
contextzip eliminates that. Run it from your project root — it detects your stack, applies smart exclusions, and produces a lean ZIP ready to paste into Claude, ChatGPT, or any AI tool. When the AI hands changes back, contextzip apply-zip writes them into your project safely.
Quick start
cd ~/projects/my-app
contextzip
That's it — no flags required. contextzip detects your framework, excludes the noise, and writes a ZIP to .contextzip/.
The essentials
| Command | What it does |
|---|---|
contextzip |
Detect stack, exclude noise, package the project |
contextzip --prompt "task" |
Let Gemini pick only the files relevant to a task |
contextzip --git-changes |
Package only modified/staged/untracked files |
contextzip apply-zip |
Write an AI-returned ZIP back into your project, safely |
contextzip watch -- npm run dev |
Auto-package debug context the moment an error appears |
contextzip config --ui |
Set include/exclude rules visually in a local browser tab |
Every command supports --dry-run, --verbose, --include, --exclude, and more — see the full CLI reference.
contextzip respects your .gitignore, detects Node.js, Next.js, Python, Django, FastAPI, Rust, Go, and Ruby (including in monorepos), and never packages secrets — SSH keys, cloud credentials, and Terraform state are always excluded. Details: contextzip.vercel.app/features.
Also a Python library
from contextzip import get_git_changes, create_zip
collection = get_git_changes()
pkg = create_zip(collection, output="/tmp/changes.zip")
Full function reference: contextzip.vercel.app/cli#python-api
Learn more
- Packaging & detection — frameworks, exclusion rules, safety
- AI-powered file selection —
--prompt, Gemini setup - Terminal error watcher —
contextzip watch - Applying changes back —
apply-zip, backups, safety - Configuration — personal & project config, visual config UI
- CLI & Python API reference
Contributing
Contributions are welcome — especially new framework rule sets and edge-case fixes. See CONTRIBUTING.md. Please open an issue before starting a large PR.
License
MIT — see LICENSE for details.