Skip to content

LLM-optimized repo copy: visual tree w/ stats (loc/%) + smart filtering (+.gitignore) + LLM markdown output (hints) + clipboard copy + token saving exclusions + easy installers + custom flags (incl/excl/size/types) + prioritizes root .md + logical folder traversal (keeps context grouped) w/ file size sort + file/stdout opts + set as alias easily

Notifications You must be signed in to change notification settings

yigitkonur/code-to-clipboard-for-llms

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 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.

🍎 macOS & 🐧 Linux: Homebrew (Recommended)

This is the cleanest, most native experience.

# 1. Add the Tap (a one-time setup)
brew tap yigitkonur/context
brew install yigitkonur/context/context

🪟 Windows & Others: pipx (Recommended)

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!


🎮 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.

📏 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: 10K 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
🚀 Auto-Update
Always current
Automatically updates to the latest version when available Never miss new features or critical fixes

⚙️ 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: 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.

Git Integration Behavior

  • --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 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.

Update Management

  • --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.


🆚 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 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.

About

LLM-optimized repo copy: visual tree w/ stats (loc/%) + smart filtering (+.gitignore) + LLM markdown output (hints) + clipboard copy + token saving exclusions + easy installers + custom flags (incl/excl/size/types) + prioritizes root .md + logical folder traversal (keeps context grouped) w/ file size sort + file/stdout opts + set as alias easily

Topics

Resources

Stars

Watchers

Forks

Languages