Pack your codebase into a single formatted Markdown string for LLMs.
Project description
📦 ai-pack
Pack your entire codebase, specific files, or uncommitted changes into a single token-optimized Markdown prompt for LLMs (like ChatGPT, Claude, Gemini).
[!IMPORTANT] 📋 Default Clipboard Behavior
By default, running
aipautomatically copies the generated Markdown payload directly to your system clipboard. No files are saved to disk unless you specify the output file using the-oor--outputflag.Note: It also natively supports remote SSH sessions using the OSC 52 clipboard escape sequence.
⚡ Key Features
- 📋 Clipboard-First: Automatically copies your prompt, ready to paste straight into ChatGPT, Claude, Gemini, or any LLM interface.
- 💀 Skeleton Mode (
-s/--skeleton): Drastically saves tokens by stripping function/method bodies, keeping only class structures, signatures, and imports. - 🎯 Interactive Selector (
-i): Choose files interactively via checkbox CLI menu. - 🌿 Git-Aware (
-c/--changed): Automatically pack only modified, staged, or untracked files. - 🛡️ Gitignore-Respecting: Excludes ignored, temporary, or build files automatically (using
git ls-fileswith manual fallback for non-git folders). - 💬 Prompt Presets (
-p): Instantly prepend pre-configured prompts for code review, bug hunting, or architecture explanations. - 📊 Token Estimation: Heuristic token counting warns you if your payload exceeds your limit (
--max-tokens).
🚀 Quick Start
Installation
Choose your preferred installation method:
# Option 1: Install official package via pip (Recommended)
pip3 install ai-pack-cli --user
# Option 2: Install via pipx (Isolated environment)
pipx install ai-pack-cli
# Option 3: Standalone Executable (Zero dependencies - No Python required!)
# Linux:
curl -sSL https://github.com/iamraydoan/ai-pack/releases/latest/download/ai-pack-linux-x86_64 -o /usr/local/bin/aip && chmod +x /usr/local/bin/aip
# macOS:
curl -sSL https://github.com/iamraydoan/ai-pack/releases/latest/download/ai-pack-macos-arm64 -o /usr/local/bin/aip && chmod +x /usr/local/bin/aip
# Windows: Download ai-pack-windows-x86_64.exe from GitHub Releases
[!TIP] Skeleton Mode (
-s/--skeleton): Natively supports AST outline extraction for Python, JavaScript, TypeScript, Go, Rust, Java, C/C++, C#, PHP, Ruby, and 30+ programming languages out of the box with zero external setup required.
💡 Usage & Common Scenarios
Here are common ways to use ai-pack (using commands aip, ai-pack, or aipack):
1. Pack codebase & copy to clipboard (Default)
aip
2. Pack specific files/folders and save to a file
aip -f src/main.py tests/ -o output.md
3. Pack only uncommitted changes with a code review prompt
aip -c -p review
4. Pack code skeleton to save context window tokens
aip -s -p explain
5. Choose files interactively before packing
aip -i
⚙️ CLI Flags & Interactions
Reference
| Flag | Short | Type | Description |
|---|---|---|---|
--version |
-v |
Flag | Show the version of ai-pack and exit. |
--files |
-f |
Path(s) | Specific files or directories to pack (space-separated). |
--changed |
-c |
Flag | Pack only modified, staged, or untracked Git files. |
--interactive |
-i |
Flag | Select files interactively via a checkbox menu. |
--skeleton |
-s |
Flag | Strip method bodies, leaving only signatures and imports to save tokens. |
--prompt |
-p |
Choices | Prepend preset: review, bug, or explain. |
--output |
-o |
Path | Save output directly to a file instead of copying to clipboard. |
--max-tokens |
Number | Count approximate tokens and warn if the limit is exceeded. |
🤝 Combining Flags
You can combine flags to narrow down and customize your payload:
- Filter Git changes (
-f+-c/--changed): Only packs files that are both modified/uncommitted AND located inside the specified paths.aip -c -f src/
- Interactive selection with filter (
-i+-f/-c): Shows only the filtered list (e.g. only changed files) in the interactive checkbox menu instead of the entire repo.aip -i -c
- Structure only (
-s/--skeleton+ any mode): Can be appended to any command to extract skeletons instead of full source code for the selected files.aip -i -s
- Redirect output (
-ovs Default): By default, everything goes to the clipboard. Use-o filename.mdto save to a file instead.
💀 Skeleton Mode Example
Original Code:
def fibonacci(n):
if n <= 0:
return []
elif n == 1:
return [0]
sequence = [0, 1]
while len(sequence) < n:
sequence.append(sequence[-1] + sequence[-2])
return sequence
Skeleton Output:
def fibonacci(n): ...
🤝 Contributing
Contributions are welcome! Please check out the Developer & Contributing Guide for local setup, running unit tests, and code formatting guidelines (ruff).
- Fork the repository.
- Create your feature branch (
git checkout -b feat/amazing-feature). - Commit your changes (
git commit -m 'feat: add amazing feature'). - Push to the branch (
git push origin feat/amazing-feature). - Open a Pull Request.
Give this repository a ⭐ if it helped you pack your code for LLMs!
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ai_pack_cli-0.3.0.tar.gz.
File metadata
- Download URL: ai_pack_cli-0.3.0.tar.gz
- Upload date:
- Size: 14.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
442f5e854e1f1cdb23a7a0b965bf1e2c32d686245e9cb40cf6cbf71fe5fb1bee
|
|
| MD5 |
8244616ae059e417ebd3b67d1076c9ac
|
|
| BLAKE2b-256 |
7d6bb4fdc375d247e179bd60799a7ea779af190788634e0a795b94069a1c1796
|
Provenance
The following attestation bundles were made for ai_pack_cli-0.3.0.tar.gz:
Publisher:
publish.yml on iamraydoan/ai-pack
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ai_pack_cli-0.3.0.tar.gz -
Subject digest:
442f5e854e1f1cdb23a7a0b965bf1e2c32d686245e9cb40cf6cbf71fe5fb1bee - Sigstore transparency entry: 2231748178
- Sigstore integration time:
-
Permalink:
iamraydoan/ai-pack@ca96cae0ccde085f39eba86729be3a41d5506fca -
Branch / Tag:
refs/tags/v0.3.0 - Owner: https://github.com/iamraydoan
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@ca96cae0ccde085f39eba86729be3a41d5506fca -
Trigger Event:
push
-
Statement type:
File details
Details for the file ai_pack_cli-0.3.0-py3-none-any.whl.
File metadata
- Download URL: ai_pack_cli-0.3.0-py3-none-any.whl
- Upload date:
- Size: 12.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
673d37cb0d3d80a8f7f6718d611236120351a4ebe8ff8d82a89179b4a23d7502
|
|
| MD5 |
56b9b7648fad75b3286b42cd6aab9c9e
|
|
| BLAKE2b-256 |
b70b2598f43f1ab3e3d7d7fb2d7f3aee709259dfb58cf770190e85a92d25cbcf
|
Provenance
The following attestation bundles were made for ai_pack_cli-0.3.0-py3-none-any.whl:
Publisher:
publish.yml on iamraydoan/ai-pack
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ai_pack_cli-0.3.0-py3-none-any.whl -
Subject digest:
673d37cb0d3d80a8f7f6718d611236120351a4ebe8ff8d82a89179b4a23d7502 - Sigstore transparency entry: 2231748758
- Sigstore integration time:
-
Permalink:
iamraydoan/ai-pack@ca96cae0ccde085f39eba86729be3a41d5506fca -
Branch / Tag:
refs/tags/v0.3.0 - Owner: https://github.com/iamraydoan
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@ca96cae0ccde085f39eba86729be3a41d5506fca -
Trigger Event:
push
-
Statement type: