CodeIndexer
A lightweight CLI tool for indexing codebases to provide context for LLMs.
Why ?
Still doing some finger-hurting typing or copy-pasting just to update your LLM about code changes or set up context in new chats (the old way 😅, without copilots)?
I run this tool to generate a structured prompt with my project files, so all I have to do is copy, paste, and the model is ready to go! ⌛⏱️✨
Installation ℹ️
pip install codeindexer
# Basic usage
codeindexer --index ./my_repo --format md index_file.md
# Filter by file extensions (create a txt prompt file index_file.txt)
codeindexer --index ./my_repo --only .py,.js,.md --format txt index_file.txt
# Skip specific directories or files (create a json prompt file index_file.json)
codeindexer --index ./my_repo --skip node_modules/,venv/,*.log --format json index_file.json
# Explicitly include files/paths (even if ignored by .gitignore)
codeindexer --index ./my_repo --include important.log,temp/config.json --format md index_file.md
# Add a custom prompt at the end
codeindexer --index ./my_repo --prompt "Analyze and suggest improvements." --format md index_file.md
# Disable .gitignore parsing
codeindexer --index ./my_repo --no-gitignore --format md index_file.md
# Split the prompt into multiple parts e.g 1000 lines max (place prompt parts in the index_file/... folder)
codeindexer --index ./my_repo --format md index_file.md --split 1000
Example of indexed output file (index_file.md) 📋
# Repo: my_repo
# Folder structure:
my_repo/
├── src/
│ ├── main.py
│ ├── utils.py
├── tests/
│ ├── test_main.py
├── README.md
├── requirements.txt
# Files
# my_repo/requirements.txt
{contents of my_repo/requirements.txt}
# my_repo/README.md
{contents of my_repo/README.md}
# my_repo/src/main.py
{contents of my_repo/src/main.py}
...
________________________________________
Acknowledge the project's description and files, do no provide additional explanation, wait for instructions
Options 🔧
--index: Directory to index (required)--only: Comma-separated list of file extensions to include (e.g., .py,.js,.md)--skip: Comma-separated list of patterns to skip (e.g., node_modules/,venv/,*.log)--include: Comma-separated list of patterns to explicitly include even if in .gitignore--format: Output format (md, txt, json) - default is md--prompt: Custom prompt to add at the end of the index--no-skip-env: Include .env files (by default they are skipped)--no-gitignore: Disable automatic parsing of .gitignore files (enabled by default)--split: Split output into chunks with specified max lines per file (default: 1000)
Features ✨
- ✅ Generate a single file with your repo’s structure and files
- ✅ Automatically respects .gitignore rules 📋
- ✅ Filters files by extension and skips binaries 🔍
- ✅ Multiple output formats: Markdown, text, JSON 📝
- ✅ Add a custom prompt for LLM context 🤖
- ✅ Split output files into small parts
Contributing 🤝
Contributions are welcome! Please check out our Contributing Guide for details on how to get started.
License
MIT
Release files for codeindexer 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| codeindexer-0.1.2.tar.gz | 13.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| codeindexer-0.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 27.8 kB
Release files / codeindexer-0.1.2.tar.gz
| Download URL | codeindexer-0.1.2.tar.gz |
|---|---|
| Size | 13.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
36669cc665e52e1b85c687c989ac2137c107de3034b2c0a710673022ffd51c19
|
|
BLAKE2b-256 checksum How to use checksums |
3c982fd5d79cb05d84164e7806303a2840bf0b7bb741e15d91baa49ae43fd004
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.5
|
Release files / codeindexer-0.1.2-py3-none-any.whl
| Download URL | codeindexer-0.1.2-py3-none-any.whl |
|---|---|
| Size | 14.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3f329e97695ce29b1d52b4b8faf80e1473746768cc54c21e5ca976e916044107
|
|
BLAKE2b-256 checksum How to use checksums |
f01396357e58db5f48171c162d9b858666e0b419e7c9fdc6a593350431ee0132
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.5
|