Skip to main content

CodeIndexer

PyPI version

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)

Source distribution for codeindexer 0.1.2
File Size Uploaded
codeindexer-0.1.2.tar.gz 13.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for codeindexer 0.1.2
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

0.1.2 This release

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page