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.
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."
Manually prepping context is a vibe-killer. repo-to-llm-context
makes other methods look ancient.
❌ The Old Way (Pain) | ✅ The `context` Way (Glory) |
|
|
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.
The context
command will be available in your terminal after installation.
This is the cleanest, most native experience.
# 1. Add the Tap (a one-time setup)
brew tap yigitkonur/context
brew install yigitkonur/context/context
pipx
is the gold standard for installing Python CLI tools. It keeps things tidy and isolated.
# 1. Install pipx if you don't have it
python3 -m pip install --user pipx
python3 -m pipx ensurepath
# 2. Install the tool (from PyPI once published, or from GitHub for latest)
pipx install repo-to-llm-context
# OR for latest dev version: pipx install git+https://github.com/yigitkonur/code-to-clipboard-for-llms.git
✨ Zero Manual Setup: After installation, the
context
command should be ready to go. If not, just restart your terminal!
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.
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
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 | What It Does | Why You Care |
---|---|---|
🧠 Smart FilteringNo junk allowed |
Auto-excludes node_modules , venv , builds , .git , logs & more |
Stops you from wasting tokens on garbage |
🎯 Depth-First SortingPerfect file order |
Traverses directories systematically, README.md files first | Your LLM gets context in logical, hierarchical order |
📏 Large File ControlToken-aware sizing |
Skip or truncate files over configurable limits (default: 10K chars) | Never blow your LLM's context window again |
🏗️ Project TreeVisual context |
Includes a tree -style view of what's included |
The AI (and you) can see the project structure |
⚙️ Git-AwareRespects your repo |
Can read your .gitignore and check tracking status |
Context matches your actual source code |
📋 Clipboard ReadyCmd+C on steroids |
Copies the entire formatted output in one go | Zero manual work between terminal and AI |
🔧 Hyper-ConfigurableYou're the boss |
Flags to include/exclude anything you want | Fine-tune the context for any weird project |
🔒 Privacy FirstNo path leaks |
Masks your local home directory path in the summary | Share your code, not your user folder |
🚀 Auto-UpdateAlways current |
Automatically updates to the latest version when available | Never miss new features or critical fixes |
The defaults are great, but you can dial it in just right.
Expand for the full list of command-line flags
--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.
--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 rootREADME.md
.
--max-size SIZE
: Exclude files larger than the specified size (e.g.,500k
,10M
). Default is2M
.--max-file-chars N
: Set maximum characters per file (default: 10,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.
--no-gitignore
: (Default) Ignore.gitignore
rules and Git tracking status entirely.--gitignore-only
: 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 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.
--version
: Display the current version and exit.--check-updates
: Check for available updates with interactive prompts.--no-auto-update
: Disable automatic updates (by default,context
automatically updates when new versions are available).
🚀 Auto-Update Feature: By default,
context
automatically checks for and installs new versions when you run the command. This ensures you always have the latest features and fixes. Use--no-auto-update
if you prefer manual control over updates.
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. |
Want to hack on the code? Easy.
-
Clone the repo:
git clone https://github.com/yigitkonur/code-to-clipboard-for-llms.git cd code-to-clipboard-for-llms
-
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 yourcontext
command.
If you fork the repo, you can permanently change the default filters by editing the constants at the top of llmcontext.py
.
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 |
By default, git integration is off for speed. Use the --gitignore-only or --use-git flag to turn it on. |
Script errors out | Make sure you're on Python 3.8 or newer (python3 --version ). |
Built with 🔥 because manually crafting LLM prompts is a soul-crushing waste of time.