# code2prompt A CLI tool that converts your codebase into a single LLM prompt with a source tree, prompt templating, and token counting. ## Description code2prompt is a command-line tool designed to help developers prepare their codebases for analysis by Large Language Models (LLMs). It creates a comprehensive prompt that includes: - Source code tree structure - Concatenated file contents - Prompt templates - Token counting for context management ## Features - 📁 **Source Tree Generation**: Visual representation of your codebase structure - 📝 **Code Concatenation**: Merges multiple files into a single prompt - 🧩 **Prompt Templates**: Customizable prompt templates - 🔢 **Token Counting**: Accurate token counting for various LLMs - 🎯 **Selective Inclusion**: Choose specific files and directories - 🔒 **Smart Filtering**: Exclude files by pattern (.git, node_modules, etc.) ## Installation ### Via Overlay ```nix {pkgs, ...}: { environment.systemPackages = with pkgs; [ code2prompt ]; } ``` ### Direct Reference ```nix {pkgs, ...}: { environment.systemPackages = with pkgs; [ inputs.m3ta-nixpkgs.packages.${pkgs.system}.code2prompt ]; } ``` ### Run Directly ```bash nix run git+https://code.m3ta.dev/m3tam3re/nixpkgs#code2prompt ``` ## Usage ### Basic Usage ```bash # Generate prompt for current directory code2prompt # Generate for specific directory code2prompt /path/to/project # Output to file code2prompt -o prompt.txt # Use custom template code2prompt --template my_template.md ``` ### Common Options ```bash # Include specific files code2prompt --include "*.py" "*.js" # Exclude specific files code2prompt --exclude "*.test.*" "node_modules/*" # Generate source tree only code2prompt --tree-only # Add custom context code2prompt --context "This is a Node.js project" ``` ### Examples #### Prepare Codebase for GPT-4 ```bash code2prompt \ --template gpt4-template.md \ --include "*.ts" "*.tsx" \ --exclude "node_modules" "*.test.ts" \ --context "Review this TypeScript codebase" \ -o codebase_prompt.txt # Then feed to GPT-4 cat codebase_prompt.txt ``` #### Analyze Specific Directory ```bash # Analyze only src directory code2prompt src/ \ --include "*.rs" \ --context "Analyze this Rust codebase" \ -o src_analysis.txt ``` #### Create Source Tree ```bash # Generate only source tree code2prompt --tree-only > tree.txt cat tree.txt ``` ## Use Cases ### Code Review Prepare code for AI-assisted code review: ```bash code2prompt \ --template code-review.md \ --include "*.py" \ --context "Review this Python code for security issues" \ -o review_prompt.txt ``` ### Documentation Generation Generate documentation using LLMs: ```bash code2prompt \ --template docs-template.md \ --include "*.js" "*.md" \ --context "Generate API documentation" \ -o docs_prompt.txt ``` ### Code Migration Prepare code for migration assistance: ```bash code2prompt \ --template migration-template.md \ --include "*.js" \ --context "Migrate this JavaScript to TypeScript" \ -o migration_prompt.txt ``` ## Configuration ### Environment Variables - `CODE2PROMPT_TEMPLATE_DIR`: Directory containing custom templates - `CODE2PROMPT_DEFAULT_TEMPLATE`: Default template to use ### Template Files Custom templates can include: ```markdown # Codebase Analysis ## Context {context} ## Directory Tree {tree} ## Code {code} ## Instructions {instructions} ``` ## Build Information - **Version**: 4.0.2 - **Language**: Rust - **License**: MIT - **Source**: [GitHub](https://github.com/mufeedvh/code2prompt) ## Dependencies - `openssl` - Secure communication - `pkg-config` - Build configuration ## Platform Support - Linux (primary) - macOS (may work) - Windows (not tested) ## Related - [Adding Packages](../guides/adding-packages.md) - How to add new packages - [Quick Start](../QUICKSTART.md) - Getting started guide