Skip to main content

A CLI tool to generate prompts with project structure and file contents

Project description

kopipasta

Version Downloads

A CLI tool for taking full, transparent control of your LLM context. No black boxes.

kopipasta
  • An LLM told me that "kopi" means Coffee in some languages... and a Diffusion model then made this delicious soup.

The Philosophy: You Control the Context

Many AI coding assistants use Retrieval-Augmented Generation (RAG) to automatically find what they think is relevant context. This is a black box. When the LLM gives a bad answer, you can't debug it because you don't know what context it was actually given.

kopipasta is the opposite. I built it for myself on the principle of explicit context control. You are in the driver's seat. You decide exactly what files, functions, and snippets go into the prompt. This transparency is the key to getting reliable, debuggable results from an LLM.

It's a "smart copy" command for your project, not a magic wand.

How It Works

The workflow is dead simple:

  1. Gather: Run kopipasta and point it at the files, directories, and URLs that matter for your task.
  2. Select: The tool interactively helps you choose what to include. For large files, you can send just a snippet or even hand-pick individual functions.
  3. Define: Your default editor ($EDITOR) opens for you to write your instructions to the LLM.
  4. Paste: The final, comprehensive prompt is now on your clipboard, ready to be pasted into ChatGPT, Gemini, Claude, or your LLM of choice.

Installation

# Using pipx (recommended for CLI tools)
pipx install kopipasta

# Or using standard pip
pip install kopipasta

Usage

kopipasta [options] [files_or_directories_or_urls...]

Arguments:

  • [files_or_directories_or_urls...]: One or more paths to files, directories, or web URLs to use as the starting point for your context.

Options:

  • -t TASK, --task TASK: Provide the task description directly on the command line, skipping the editor.

Key Features

  • Total Context Control: Interactively select files, directories, snippets, or even individual functions. You see everything that goes into the prompt.
  • Transparent & Explicit: No hidden RAG. You know exactly what's in the prompt because you built it. This makes debugging LLM failures possible.
  • Web-Aware: Pulls in content directly from URLs—perfect for API documentation.
  • Safety First:
    • Automatically respects your .gitignore rules.
    • Detects if you're about to include secrets from a .env file and asks what to do.
  • Context-Aware: Keeps a running total of the prompt size (in characters and estimated tokens) so you don't overload the LLM's context window.
  • Developer-Friendly:
    • Uses your familiar $EDITOR for writing task descriptions.
    • Copies the final prompt directly to your clipboard.
    • Provides syntax highlighting during chunk selection.

A Real-World Example

I had a bug where my setup.py didn't include all the dependencies from requirements.txt.

  1. I ran kopipasta -t "Update setup.py to read dependencies dynamically from requirements.txt" setup.py requirements.txt.
  2. The tool confirmed the inclusion of both files and copied the complete prompt to my clipboard.
  3. I pasted the prompt into my LLM chat window.
  4. I copied the LLM's suggested code back into my local setup.py.
  5. I tested the changes and committed.

No manual file reading, no clumsy copy-pasting, just a clean, context-rich prompt that I had full control over.

Configuration

Set your preferred command-line editor via the EDITOR environment variable.

export EDITOR=nvim  # or vim, nano, code --wait, etc.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kopipasta-0.38.0.tar.gz (34.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

kopipasta-0.38.0-py3-none-any.whl (32.0 kB view details)

Uploaded Python 3

File details

Details for the file kopipasta-0.38.0.tar.gz.

File metadata

  • Download URL: kopipasta-0.38.0.tar.gz
  • Upload date:
  • Size: 34.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.7

File hashes

Hashes for kopipasta-0.38.0.tar.gz
Algorithm Hash digest
SHA256 1c7abc74ede4885d2a43640712258bfeaec8e74392ea842137c1b5d57b2aaa6a
MD5 fd6a3c6e9f968768f8d4ed6d92f9dbe5
BLAKE2b-256 d77c2ffd2f13ecb371b1826438705987740759398bfa3157d3413b4f0d7c88a3

See more details on using hashes here.

File details

Details for the file kopipasta-0.38.0-py3-none-any.whl.

File metadata

  • Download URL: kopipasta-0.38.0-py3-none-any.whl
  • Upload date:
  • Size: 32.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.7

File hashes

Hashes for kopipasta-0.38.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d0c61645baec4458b9b72b37f7050e84480c315b26b8c95c5aac54f305b59b37
MD5 b514d5f36cdd39f1be309a20a10cea46
BLAKE2b-256 18209fc45a0a6c7bf9f0de8a42b1469d0bfb191836535acbf827aceccf238d8e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page