A tool to concatenate folders into a single text file, respecting .gitignore and using optional config.
Project description
CodeConcat v3.0
The State-of-the-Art tool for preparing codebases for LLM usage.
CodeConcat turns your messy project folders into a single, clean, markdown-formatted file optimized for Large Language Models (LLMs) like Claude, GPT-4, and Gemini. It handles parsing, ignoring, and formatting so you don't have to.
🚀 Key Features
- 🧙♂️ Interactive Wizard: New in v3.0! Just run
codeconcatand let the step-by-step wizard guide you. - 🌲 ASCII File Tree: Every output starts with a beautiful ASCII representation of your directory structure to give the LLM context.
- 🧠 Smart Context: Automatically respects
.gitignore, skippingnode_modules,.git, and binary files. - 💎 Granular Control:
- Force Include: Bypass
.gitignorefor specific files (like.envor specific build artifacts) using the new "Force Include" logic. - Whitelist/Exclude: Powerful glob patterns for fine-tuning.
- Force Include: Bypass
- 🛡️ Safe Fencing: Intelligent code block detection prevents nested backticks from breaking your markdown structure.
- ✨ Beautiful UI: Powered by
richandquestionaryfor a modern, clean terminal experience.
📦 Installation
Ensure you have Python 3.8+ installed.
pip install codeconcat
🛠️ Usage
1. Interactive Wizard (Recommended)
Simply run the command without arguments to start the configuration wizard.
codeconcat
You will be asked:
- Source directory?
- Output filename?
- Respect
.gitignore? - Force include specific files? (Grab those
.envfiles ordist/builds easily!) - Verification & Summary.
2. Command Line Interface (CLI)
For power users or scripts, use the widely compatible CLI.
Concatenate current directory:
codeconcat .
Force Include specific ignored files (New in v3.0):
Grab your .env.local even though it's gitignored:
codeconcat --force-include ".env.local"
Exclude logs and include only Python files:
codeconcat . codebase.md -e "*.log" -w "*.py"
Options
| Flag | Description |
|---|---|
-i, --interactive |
Force the interactive wizard mode. |
--force-include |
Additive: Include these files even if they are in .gitignore. |
-e, --exclude |
subtractive: Exclude files matching this glob pattern. |
-w, --whitelist |
Exclusive: ONLY include files matching this glob pattern. |
--no-gitignore |
Disable .gitignore processing entirely. |
--stdout |
Output to console instead of a file. |
📄 Output Format
The output is a single Markdown file structured for maximum LLM comprehension:
- Header: Project Name.
- File Tree:
src/ ├── main.py ├── utils.py └── config.py
- Content:
### File: `src/main.py` ```python print("Hello World")
🤝 Contributing
Contributions are welcome!
- Clone repo:
git clone https://github.com/lguibr/codeconcat.git - Install dev setup:
pip install -e . - Run tests:
pytest
License
MIT License.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file codeconcat-3.0.1.tar.gz.
File metadata
- Download URL: codeconcat-3.0.1.tar.gz
- Upload date:
- Size: 24.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
81bae7df010bb530fbaf25bd0b9c0ae13a0cc88d50afb3cf430fc9a905d85b30
|
|
| MD5 |
d6c6830be51c065813a3d40bbb693908
|
|
| BLAKE2b-256 |
660b6ddda8393280fc0e8075b83081c1afc9a9cdd04ed3e561d41f3ef459f0b1
|
File details
Details for the file codeconcat-3.0.1-py3-none-any.whl.
File metadata
- Download URL: codeconcat-3.0.1-py3-none-any.whl
- Upload date:
- Size: 21.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
caea0123a65fad8861a900cdb0ea673c90f0025aacffddbc7b3b8d134a2c2a9b
|
|
| MD5 |
5a94aab8304db1d1e51e2b60cc209ea6
|
|
| BLAKE2b-256 |
f34976168a3a234e3dba587308edf288807f746bfe3c9be096df9ea40a5362cd
|