In today's AI driven coding world, feeding the right code to AI models can feel like herding cats. Manually copying files, tracking dependencies, or dumping an entire project while dodging .gitignore clutter is a nightmare. That's why I built Copy Codes, a CLI tool to automate code extraction and formatting, making it a breeze to share code with AI for debugging, feature building, or learning. The real MVP? The ts-deps subcommand, which grabs a TypeScript file and its nested imports in one go. Let's dive into how this tool saves the day.
Why This Tool Exists
AI models thrive on context, but getting that context to them is a pain. Here's what I aimed to fix:
- Manual File Copying: Copying multiple files by hand to share with AI is slow and error prone, especially for large projects.
- Dependency Chaos: Tracking down all the files a feature depends on is tedious and impractical.
- Clean AI Input: AI needs focused, relevant code respecting
.gitignore, excluding binaries, and formatted clearly without the mess of an entire project. - Feature Focused Work: Most coding tasks are feature specific, so grabbing just the relevant files is key to efficient AI collaboration.
Technologies Used
- Node.js – Drives file system operations and core logic.
- Commander.js – Powers the slick CLI interface.
- ignore – Handles
.gitignorestyle filtering. - ts-morph – Traces TypeScript imports for
ts-deps. - clipboardy – Copies output to your clipboard.
Solutions
Here's how Copy Codes tackles these challenges, with a spotlight on ts-deps.
Smart Directory Scanning
The tool scans your project, grabbing only text files while respecting .gitignore and custom include/exclude patterns. It's like a librarian who knows exactly which books you need.
Conceptual Flow
- Scan the directory recursively, respecting max depth.
- Apply
.gitignorerules and user-defined patterns. - Collect text files, skipping binaries or ignored paths.
- Format output with file paths and line counts.
Command: copy-codes -i node_modules -a '*.ts'
TypeScript Dependency Superpower
The ts-deps subcommand is the heart of this tool for AI workflows. Need to debug or build a feature? Just point to a TypeScript file, and ts-deps grabs it plus all its nested imports automatically. No more chasing down import statements or missing critical files. This makes feeding AI the exact context for a feature or bug fix a snap.
Conceptual Flow
- Parse the input TypeScript file using
ts-morph. - Recursively trace all
importstatements within the project. - Apply ignore/accept filters to exclude irrelevant files.
- Output the file and its dependencies, formatted for AI.
Command: copy-codes ts-deps src/index.ts
Flexible Output for AI
Whether you're pasting code into an AI chat or saving it for docs, the output is clean and AI friendly:
- Plain Text: Files separated with headers (path, line count).
- Markdown: Code blocks with metadata for easy pasting.
Markdown Output
Enable markdown with: copy-codes -m
Bonus Features
- Copy output directly to your clipboard with
-c. - Visualize your project structure with
-t. - Limit scan depth with
-dfor focused extraction.
Results
- Share feature specific code with AI in seconds, no manual file searching.
- The
ts-depscommand quickly gathers essential TypeScript files for easy debugging and feature development. - It respects
.gitignoreensuring only relevant files are sent to the AI. - Automate code extraction and formatting to focus more on coding.
Installation
Ready to level up your AI driven coding? Install Copy Codes globally via npm and start automating your workflow:
Check out the project on GitHub for more details and examples!