Metadata-Version: 2.4
Name: show-me-your-vibe
Version: 0.2.0
Summary: Simple CLI tool to generate context for LLMs from codebase
License: MIT
License-File: LICENSE
Keywords: cli,llm,context,prompt,developer-tools
Author: Skylar V. Allen
Author-email: sky@alinsky.tech
Requires-Python: >=3.15
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.15
Classifier: Topic :: Utilities
Requires-Dist: gitpython (>=3.2.1,<4.0.0)
Requires-Dist: pydantic (>=2.14.2,<3.0.0)
Requires-Dist: pyperclip (>=1.11.0,<2.0.0)
Requires-Dist: typer (>=0.27.3,<0.28.0)
Project-URL: Homepage, https://github.com/SKY-ALIN/vibe
Project-URL: Issues, https://github.com/SKY-ALIN/vibe/issues
Project-URL: Repository, https://github.com/SKY-ALIN/vibe
Description-Content-Type: text/markdown

# ✨ `vibe` — generate structured LLM context from your codebase in one command

Instead of manually opening files, copy-pasting their contents one by one, adding markdown formatting, describing every file, and stitching them into a prompt, `vibe` does it for you in a single command. `vibe` collects files from a given directory, processes their contents, and forms a structured markdown context.

By default, the generated context is printed to stdout, so you can pipe it or redirect it to a file.
With `-c`/`--copy` it goes straight to your clipboard, so you can simply **Ctrl+V it into your LLM prompt** without any extra steps.
It respects git (skips `.git` and files matched by `.gitignore`) and excludes package manager lock files by default.

## Usage

Run `vibe -c path/to/codedir/you/wanna/discuss/with/AI` and the full structured description of all files and folders will be ready in your clipboard;)
Or drop `-c` to print it to stdout, e.g. `vibe src > context.md`.

![demo](/demo/screencast.gif)

The help reference:

```
$ vibe --help
                                                                                
 Usage: vibe [OPTIONS] [path]                                                                               
                                                                                                            
 Generate structured LLM context from a directory or file.                                                  
                                                                                                            
 By default, prints to stdout, respects git and excludes package manager lock files.                        
                                                                                                            
 GLOB without '/' matches names at any depth; with '/' it matches paths relative to the target; '**' spans  
 dirs.                                                                                                      
                                                                                                            
╭─ Arguments ──────────────────────────────────────────────────────────────────────────────────────────────╮
│   path      <path>  Directory or file to build the context from. [default: .]                            │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Options ────────────────────────────────────────────────────────────────────────────────────────────────╮
│ --copy           -c                         Copy the context to the clipboard instead of printing it.    │
│ --summary-only   -s                         Output only the summary, without file contents.              │
│ --git            -g  --no-git     -G        Respect git: skip the .git directory and files matched by    │
│                                             .gitignore.                                                  │
│                                             [default: git]                                               │
│ --binary         -b  --no-binary  -B        List binary (non-text) files in the summary.                 │
│                                             [default: binary]                                            │
│ --locks          -l  --no-locks   -L        Include package manager lock files. [default: no-locks]      │
│ --include        -i                   GLOB  Only include files matching GLOB or inside matching          │
│                                             directories, e.g. '*.py', 'src'. Repeatable.                 │
│ --exclude        -x                   GLOB  Skip files and directories matching GLOB, e.g. 'tests',      │
│                                             '*.svg', 'docs/*.md'. Repeatable.                            │
│ --max-file-size  -m                   SIZE  Omit contents of text files larger than SIZE, e.g. 500KB.    │
│                                             [default: 5MB]                                               │
│ --version        -V                         Show version and exit.                                       │
│ --help                                      Show this message and exit.                                  │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────╯
```

## Installation

Just `pip install show-me-your-vibe`.

For **MacOS** and **Windows** it will work right out of the box.

For **Linux** (only needed for `-c`/`--copy` to access your clipboard) install a support lib according to the table below:

<table>
  <thead>
    <tr>
      <th>Display Server</th>
      <th>Family / Distribution</th>
      <th>Command</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td rowspan="8" align="center"><b>Wayland</b></br>(Commonly default)</td>
      <td>Ubuntu | Debian | Linux Mint | Pop!_OS | KDE Neon | elementary</td>
      <td><code>sudo apt install wl-clipboard</code></td>
    </tr>
    <tr>
      <td>Fedora | RHEL | CentOS | Rocky | AlmaLinux | Oracle Linux</td>
      <td><code>sudo dnf install wl-clipboard</code></td>
    </tr>
    <tr>
      <td>Arch | Manjaro | EndeavourOS | Garuda</td>
      <td><code>sudo pacman -S --needed wl-clipboard</code></td>
    </tr>
    <tr>
      <td>openSUSE Leap | Tumbleweed | SLES</td>
      <td><code>sudo zypper install wl-clipboard</code></td>
    </tr>
    <tr>
      <td>Alpine</td>
      <td><code>sudo apk add wl-clipboard</code></td>
    </tr>
    <tr>
      <td>Void</td>
      <td><code>sudo xbps-install -S wl-clipboard</code></td>
    </tr>
    <tr>
      <td>Gentoo</td>
      <td><code>sudo emerge wl-clipboard</code></td>
    </tr>
    <tr>
      <td>NixOS | Nix</td>
      <td><code>nix-env -iA nixpkgs.wl-clipboard</code></td>
    </tr>
    <tr>
      <td rowspan="8" align="center"><b>X11</b></td>
      <td>Ubuntu | Debian | Linux Mint | Pop!_OS | KDE Neon | elementary</td>
      <td><code>sudo apt install xclip</code> or <code>sudo apt install xsel</code></td>
    </tr>
    <tr>
      <td>Fedora | RHEL | CentOS | Rocky | AlmaLinux | Oracle Linux</td>
      <td><code>sudo dnf install xclip</code> or <code>sudo dnf install xsel</code></td>
    </tr>
    <tr>
      <td>Arch | Manjaro | EndeavourOS | Garuda</td>
      <td><code>sudo pacman -S --needed xclip</code> or <code>sudo pacman -S --needed xsel</code></td>
    </tr>
    <tr>
      <td>openSUSE Leap | Tumbleweed | SLES</td>
      <td><code>sudo zypper install xclip</code> or <code>sudo zypper install xsel</code></td>
    </tr>
    <tr>
      <td>Alpine</td>
      <td><code>sudo apk add xclip</code> or <code>sudo apk add xsel</code></td>
    </tr>
    <tr>
      <td>Void</td>
      <td><code>sudo xbps-install -S xclip</code> or <code>sudo xbps-install -S xsel</code></td>
    </tr>
    <tr>
      <td>Gentoo</td>
      <td><code>sudo emerge xclip</code> or <code>sudo emerge xsel</code></td>
    </tr>
    <tr>
      <td>NixOS | Nix</td>
      <td><code>nix-env -iA nixpkgs.xclip</code> or <code>nix-env -iA nixpkgs.xsel</code></td>
    </tr>
    <tr>
      <td align="center"><b>No GUI</b></td>
      <td></td>
      <td>No system clipboard available - use <code>xvfb</code>, or write to file, or just print.</td>
    </tr>
  </tbody>
</table>

