Skip to content

Cross-platform CLI for exporting codebases to LLM context. Features visual trees, token-aware filtering, .gitignore compliance, and clipboard integration.

Notifications You must be signed in to change notification settings

yigitkonur/repo-to-prompt

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

37 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ“ฆ repo-to-llm-context ๐Ÿ“ฆ

Stop copy-pasting code. Start shipping smarter prompts.

the ultimate context packer for your AI coding assistant. it scans your repo, ditches the junk, and bundles the good stuff into one perfect, clipboard-ready prompt.

pypi python ย ย โ€ขย ย  license platform

zero config clipboard ready


repo-to-llm-context is the project manager your AI assistant wishes it had. Stop feeding your LLM random files and praying for a good answer. This tool acts like a pro developer, reading your entire project, intelligently selecting the most relevant files, and packaging them into a perfectly structured prompt so your AI can actually understand what the hell is going on.

๐Ÿง 

Smart Filtering
Ditches node_modules & junk

๐ŸŽฏ

Relevance Scoring
Puts the important code first

๐Ÿ“‹

Clipboard Ready
One command, ready to paste

How it slaps:

  • You: cd my-project && context
  • context: Scans, filters, scores, formats, and copies.
  • You: Cmd+V into Claude/ChatGPT/Gemini.
  • LLM: "Ah, I see. A well-structured project. Here is your god-tier answer."

๐Ÿ’ฅ Why This Slaps Other Methods

Manually prepping context is a vibe-killer. repo-to-llm-context makes other methods look ancient.

โŒ The Old Way (Pain) โœ… The `context` Way (Glory)
  1. Open 15 files in VS Code.
  2. Frantically copy-paste into a text file.
  3. Realize you forgot the Dockerfile.
  4. Curse as you hit the token limit.
  5. Get a mediocre answer from a confused LLM.
  1. cd my-project
  2. context
  3. Paste.
  4. Receive genius-level insights.
  5. Go grab a coffee. โ˜•

We're not just concatenating files. We're building a high-signal, low-noise prompt with intelligent depth-first traversal that processes directories systematically, prioritizes README files, and prevents massive files from breaking your LLM's context window.


๐Ÿš€ Get Started in 60 Seconds

The context command will be available in your terminal after installation.

Platform Recommended Method One-liner
๐ŸŽ macOS Homebrew brew install yigitkonur/context/context
๐ŸชŸ Windows Scoop scoop bucket add context https://github.com/yigitkonur/scoop-context && scoop install context
๐Ÿง Linux Homebrew brew install yigitkonur/context/context

๐ŸŽ macOS: Homebrew (Recommended)

The cleanest, most native experience for Mac users.

# Add the tap and install (one-time setup)
brew tap yigitkonur/context
brew install yigitkonur/context/context

๐ŸชŸ Windows: Scoop (Recommended)

Scoop is the developer's choice for Windows package management. No admin rights needed!

# First, install Scoop if you don't have it (one-time)
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Invoke-RestMethod -Uri https://get.scoop.sh | Invoke-Expression

# Add the bucket and install
scoop bucket add context https://github.com/yigitkonur/scoop-context
scoop install context

๐ŸชŸ Windows: pipx (Alternative)

If you already have Python installed and prefer pipx:

# 1. Install pipx if you don't have it
python -m pip install --user pipx
python -m pipx ensurepath

# 2. Install the tool
pipx install repo-to-llm-context

๐Ÿง Linux: Homebrew (Recommended)

Homebrew works great on Linux too!

# Install Homebrew for Linux (if not installed)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# Add the tap and install
brew tap yigitkonur/context
brew install yigitkonur/context/context

๐Ÿง Linux: pipx (Alternative)

For Linux users who prefer pipx over Homebrew:

# 1. Install pipx if you don't have it
python3 -m pip install --user pipx
python3 -m pipx ensurepath

# 2. Install the tool
pipx install repo-to-llm-context

โœจ Zero Manual Setup: After installation, the context command should be ready to go. If not, just restart your terminal!


๐ŸŽฎ Usage: Fire and Forget

The workflow is dead simple.

1. Navigate to Your Project

cd /path/to/your/killer-app

2. Run the Command

context

Your clipboard is now loaded with perfectly formatted Markdown.

3. Paste & Prompt Go to your favorite LLM and paste the context. Now you can ask the real questions.

๏ฟฝ GitHub Repository Support (NEW!)

You can now clone and analyze any public GitHub repository directly without downloading it locally!

Supported Formats:

  • owner/repo - Shorthand format
  • owner/repo@branch - Specific branch
  • https://github.com/owner/repo - Full URL
  • github.com/owner/repo - Short URL

Examples:

# Clone and scan a repository
context sindresorhus/is-online

# Scan specific branch
context facebook/react@main

# Full GitHub URL
context https://github.com/torvalds/linux

# With filtering options
context owner/repo --include "*.py" --preview

# Output to file instead of clipboard
context owner/repo --output analysis.md

The tool automatically:

  • Performs shallow clones for speed
  • Manages temporary directories (auto-cleanup on exit)
  • Shows GitHub source links in output
  • Applies the same intelligent filtering to remote repositories

๏ฟฝ๐Ÿ“ Large File Control (NEW!)

Got massive JSON files or generated code breaking your LLM context? We've got you covered.

  • Skip large files entirely:
    context --skip-large-files --max-file-chars 5000
  • Truncate large files with smart preview:
    context --truncate-large-files --max-file-chars 8000
  • Custom limits for different projects:
    context --max-file-chars 15000 --truncate-large-files

The tool shows exactly what it's doing:

INFO: Truncated response.json: 1,487,897 โ†’ 10,075 chars
Success: 530,745 chars copied to clipboard

Output Control ๐Ÿ•น๏ธ

Don't want it on your clipboard? No problem.

  • Save to a file:
    context --output project_context.md
  • Print directly to your terminal (for piping or peeking):
    context --stdout

โœจ Feature Breakdown: The Secret Sauce

Feature What It Does Why You Care
๐Ÿง  Smart Filtering
No junk allowed
Auto-excludes node_modules, venv, builds, .git, logs & more Stops you from wasting tokens on garbage
๐ŸŽฏ Depth-First Sorting
Perfect file order
Traverses directories systematically, README.md files first Your LLM gets context in logical, hierarchical order
๐Ÿ“ Large File Control
Token-aware sizing
Skip or truncate files over configurable limits (default: 50K chars) Never blow your LLM's context window again
๐Ÿ—๏ธ Project Tree
Visual context
Includes a tree-style view of what's included The AI (and you) can see the project structure
โš™๏ธ Git-Aware
Respects your repo
Can read your .gitignore and check tracking status Context matches your actual source code
๐Ÿ“‹ Clipboard Ready
Cmd+C on steroids
Copies the entire formatted output in one go Zero manual work between terminal and AI
๐Ÿ”ง Hyper-Configurable
You're the boss
Flags to include/exclude anything you want Fine-tune the context for any weird project
๐Ÿ”’ Privacy First
No path leaks
Masks your local home directory path in the summary Share your code, not your user folder
๐ŸŽฏ Interactive Mode
Guided setup
Run --interactive for a step-by-step config wizard Perfect for first-time users or complex setups

โš™๏ธ Advanced Usage & Customization

The defaults are great, but you can dial it in just right.

Expand for the full list of command-line flags

Filtering and Inclusion Control

  • --include PATTERN: Glob pattern to force inclusion of files/directories that might be excluded (e.g., --include "config/**.yaml").
  • --exclude PATTERN: Glob pattern to add custom exclusions beyond the defaults (e.g., --exclude "*.log").
  • --include-only: A powerful mode that includes only files matching --include patterns, excluding everything else.
  • --exclude-extension EXT: Exclude all files with a specific extension (e.g., --exclude-extension .tmp).
  • --include-extension EXT: Force include files with an extension that is normally excluded by default.

Override Default File Type Exclusions

  • --include-json: Include .json / .jsonc files.
  • --include-yaml: Include .yaml / .yml files.
  • --include-xml: Include .xml files.
  • --include-html: Include .html / .htm files.
  • --include-css: Include .css files.
  • --include-sql: Include .sql files.
  • --include-csv: Include .csv / .tsv files.
  • --include-markdown: Include all Markdown files, not just the root README.md.

Size and Content Control

  • --max-size SIZE: Exclude files larger than the specified size (e.g., 500k, 10M). Default is 2M.
  • --max-file-chars N: Set maximum characters per file (default: 50,000). Works with skip/truncate options.
  • --skip-large-files: Skip files that exceed the --max-file-chars limit entirely.
  • --truncate-large-files: Keep large files but show only the first N characters with a truncation notice.
  • --include-binary: Attempt to include files detected as binary (default is to exclude them).
  • --max-depth N: Limit scanning to a maximum directory depth.

Git Integration Behavior

  • --no-gitignore: Ignore .gitignore rules and Git tracking status entirely.
  • --gitignore-only: (Default) Use .gitignore rules for exclusion but don't filter based on Git tracking status.
  • --use-git: Use both .gitignore rules and only include files that are tracked by Git.

Output and Execution Behavior

  • --output FILE: Write output to a file instead of the clipboard.
  • --stdout: Print the full output to the terminal.
  • --no-clipboard: Disable automatic copying to the clipboard (useful when using --stdout or --output).
  • --preview: Show a summary of what would be included without processing files or generating output.
  • --dry-run: Run the entire process but do not write any output to the clipboard, file, or stdout.
  • --sort-alpha: Override the relevance-based sorting and sort files alphabetically instead.

Information

  • --version: Display the current version and exit.
  • --check-updates: Check for available updates.

๐Ÿ†š Why This Slaps Other Methods

Method The Pain ๐Ÿ˜ฉ The context Way ๐Ÿ˜Ž
Manual Copy/Paste You'll miss a file. You'll include junk. You'll hate your life. One command. Perfect context. Every time.
cat file1 file2 > out.txt Zero structure. No filtering. Still manual. Basically useless. Auto-filters, adds a file tree, and formats beautifully.
Sharing a GitHub Link LLM can't see local changes. Can't access private repos. Works offline. Works on your latest, unpushed code.
Simple tree command Shows structure but includes zero code content. Gives you the full package: structure AND content.

๐Ÿ› ๏ธ For Developers & Tinkerers

Running from Source

Want to hack on the code? Easy.

  1. Clone the repo:

    git clone https://github.com/yigitkonur/code-to-clipboard-for-llms.git
    cd code-to-clipboard-for-llms
  2. Set up a virtual environment and install in editable mode:

    python3 -m venv venv
    source venv/bin/activate
    pip install -e .

    Now, any change you make to llmcontext.py will be live on your context command.

Fork & Customize

If you fork the repo, you can permanently change the default filters by editing the constants at the top of llmcontext.py.


๐Ÿ”ฅ Common Issues & Quick Fixes

Expand for troubleshooting tips
Problem Solution
context: command not found Restart your terminal. 99% of the time, this is the fix. If not, run pipx ensurepath (for pipx) or check your PATH environment variable.
Clipboard isn't working Linux users: You might need a clipboard utility. Run sudo apt install xclip or sudo pacman -S xclip. For any OS, you can always use --stdout or --output my_context.md to bypass the clipboard.
.gitignore is ignored Make sure you have gitignore-parser installed. The tool uses .gitignore by default. Use --no-gitignore to disable.
Script errors out Make sure you're on Python 3.8 or newer (python3 --version).

Windows-specific issues:

Problem Solution
Scoop install fails Make sure you've enabled script execution: Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
context not recognized in PowerShell Close and reopen PowerShell, or run scoop reset context to refresh the shim.
Permission denied errors Scoop installs to user directory, so admin rights shouldn't be needed. If using pipx, run PowerShell as Administrator.
Python not found (pipx method) Download Python from python.org and ensure "Add Python to PATH" is checked during installation.

Built with ๐Ÿ”ฅ because manually crafting LLM prompts is a soul-crushing waste of time.

About

Cross-platform CLI for exporting codebases to LLM context. Features visual trees, token-aware filtering, .gitignore compliance, and clipboard integration.

Topics

Resources

Stars

Watchers

Forks

Languages