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.
- 🧙♂️ 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.
Ensure you have Python 3.8+ installed.
pip install codeconcatSimply run the command without arguments to start the configuration wizard.
codeconcatYou will be asked:
- Source directory?
- Output filename?
- Respect
.gitignore? - Force include specific files? (Grab those
.envfiles ordist/builds easily!) - Verification & Summary.
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"| 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. |
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")
Contributions are welcome!
- Clone repo:
git clone https://github.com/lguibr/codeconcat.git - Install dev setup:
pip install -e . - Run tests:
pytest
MIT License.
