Skip to content

Repository files navigation

📦 Code Collector

npm versionLicense: MITNode

Collect all your code into a single XML file — perfect for AI assistants, code review, and documentation.

A powerful TUI (Terminal User Interface) utility that scans your project and aggregates all code files into one structured XML document with token counting, smart filtering, and built-in ignore presets.

✨ Features

  • 🖥️ Interactive TUI — Navigate directories with keyboard, preview selections
  • 🔢 Token Counting — GPT tokenizer integration for accurate token counts
  • 🎯 12+ Ignore Presets — Node.js, Python, Rust, Go, Java, and more
  • CI/CD Friendly — Run without TUI in automated pipelines
  • 📋 Clipboard Integration — Output path automatically copied
  • 🔧 Custom Rules — Add your own ignore patterns for directories, files, or extensions

📦 Installation

# Install globally
npm install -g @lemantorus/code-collector
# Or use with npx (no installation required)
npx @lemantorus/code-collector --path ~/my-project

🚀 Quick Start

# Interactive mode (default)
code-collector
# Specify a directory
code-collector --path ~/projects/my-app
# CI mode (no TUI)
code-collector --no-tui
# Custom output file
code-collector --output my-code.xml

📋 CLI Options

OptionAliasDescriptionDefault
--path-pStarting directoryCurrent directory
--output-oOutput filenameall_code.txt
--no-tuiRun without TUI (CI mode)false
--openOpen output file after collectionfalse
--help-hShow help
--version-vShow version

⌨️ TUI Keyboard Shortcuts

File Browser

KeyAction
/ Navigate directories
EnterEnter directory
Backspace / EscGo to parent directory
RRun collection
IOpen ignore settings
PQuick presets menu
/Search directories
QQuit

Ignore Settings

KeyAction
/ Navigate presets
EnterToggle preset on/off
EEdit preset rules
AAdd custom rule
SSave and go back
/Search presets
EscCancel

Category Editor

KeyAction
DShow Directories
FShow Files
EShow Extensions
/ Navigate rules
AAdd new rule
XDelete selected rule
SSave changes
EscCancel

🎯 Built-in Ignore Presets

PresetIgnores
Node.jsnode_modules/, dist/, build/
Pythonvenv/, .venv/, __pycache__/, *.pyc
Rusttarget/, Cargo.lock
Govendor/
Java/Kotlin.gradle/, *.class
Databases*.db, *.sqlite, *.sqlite3
Build Artifactsdist/, build/, out/, target/
VCS.git/, .svn/, .hg/
Secrets.env, *.pem, *.key, credentials.*
Media*.png, *.jpg, *.gif, *.zip, *.mp4
IDE.idea/, .vscode/, *.iml
JavaScript*.min.js, *.min.css

📄 Output Format

The output is a structured XML file:

<?xml version="1.0" encoding="UTF-8"?>
<codebaseproject="/path/to/project"generated="2025-01-15T12:00:00Z">
<meta>
<totalFiles>42</totalFiles>
<totalTokens>15234</totalTokens>
<totalSize>125000</totalSize>
</meta>
<filepath="src/index.ts"lang="typescript"tokens="150">
<content><![CDATA[// Your code hereexport function hello() { return "Hello, World!";}]]></content>
</file>
<filepath="src/utils.ts"lang="typescript"tokens="85">
<content><![CDATA[// Utility functionsexport const formatDate = (d: Date) => d.toISOString();]]></content>
</file>
</codebase>

🔧 Adding Custom Rules

In the TUI:

  1. Press I to open Ignore Settings
  2. Press A to add a custom rule
  3. Choose type: [D]irectory, [F]ile, or [E]xtension
  4. Enter the pattern (supports glob patterns)

Examples:

  • Directory: my-build-folder
  • File: *.generated.ts
  • Extension: .min.js

🤖 Use Cases

For AI Assistants

Collect your entire codebase into a single file to provide context to ChatGPT, Claude, or other AI tools:

code-collector --no-tui --output context.txt

For Code Review

Generate a comprehensive view of all changes:

code-collector --path ./my-feature

For Documentation

Create code snapshots for tutorials or documentation.

For CI/CD

Run in automated pipelines:

- name: Collect coderun: npx @lemantorus/code-collector --no-tui --output artifacts/codebase.xml

🛠️ Development

# Clone the repository
git clone https://github.com/lemantorus/code-collector.git
cd code-collector
# Install dependencies
npm install
# Build
npm run build
# Run locally
npm run dev
# Type check
npx tsc --noEmit

🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

📝 License

This project is licensed under the MIT License - see the LICENSE file for details.

🙏 Acknowledgments


Made with ❤️ by lemantorus

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages