- .contextzip/output/ now branches by run mode: output/codebase/, output/git-changes/, output/prompt/ (vibe.zip), output/watch/ — named after the flag that produced it, so it's unambiguous which zip is which without guessing. - output_subdir_for_mode()/zip_filename_for_mode() are the single source of truth other modules (watcher.py, cleanup.py) build on. - apply-zip's manifest auto-detection (find_latest_manifest) now searches recursively across the new per-mode subfolders instead of a flat glob. - Implements limits.redact_secrets (previously persisted but never enforced, per the 0.4.0 changelog): text files already going into the archive get scanned for secret-shaped values and matched values are replaced with [REDACTED] before writing. Only ever scans files already known to be text and within max_file_size_mb, reusing the existing binary/large-file classification — never re-scans, never touches binaries or oversized files. - Workspace-creation fallback warning converted from panel to a single warn()-style line.
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.