챗봇이 코드베이스를 볼 수 있게 해주는 앱을 만들었습니다
요약
챗봇에게 코드베이스의 컨텍스트를 효율적으로 제공하기 위해 프로젝트 구조와 파일 내용을 클립보드에 복사해주는 CLI 도구 ReptClip을 소개합니다. 복잡한 수동 작업 없이 특정 파일이나 패턴을 지정하여 AI 프롬프트에 바로 활용할 수 있습니다.
핵심 포인트
- 프로젝트 구조와 파일 내용을 한 번에 클립보드로 복사
- Glob 패턴을 지원하는 파일 포함 및 제외 기능 제공
- Python 기반의 간단한 설치 및 빠른 실행(rrcc 별칭) 지원
- toml 설정을 통한 프로젝트별 맞춤형 구성 가능
문제점: 컨텍스트 (context)
저를 포함한 많은 사람들에게, 저장소(repository) 내의 파일을 직접 읽고 편집할 수 있는 코딩 에이전트(coding agent)는 아직 손에 닿지 않는 영역입니다. 일반적인 챗봇들은 보통 무료 티어(free tiers)가 관대하기 때문에, 저는 코딩할 때 주로 챗봇을 사용합니다.
때때로 저는 챗봇에게 기존 코드에 대한 컨텍스트 (context)를 제공하고 싶을 때가 있습니다. 제가 일반적으로 하는 방식은 관련 파일들을 복사하여 붙여넣고, 코드 블록(code blocks)에 넣은 뒤, 해당 파일들의 경로를 입력하는 것입니다.
하지만 최적의 결과물을 얻기 위해서는 프로젝트의 전체적인 구조(파일 및 폴더)가 어떻게 구성되어 있는지 챗봇에게 알려주는 것이 매우 중요합니다. 이를 수동으로 수행하는 것은 정말 어렵습니다.
예전에는 tree 명령어를 실행하고 그 출력 결과(output)를 복사하곤 했습니다. 하지만 여기에는 버전 관리(version control)에 포함되지 않은 파일들(예: node_modules)도 포함되어 있어, 파일 수가 많아지면 출력이 지저분해질 수 있습니다. --gitignore 플래그를 사용하여 추적 중인 파일만 포함할 수 있다는 것을 알아냈지만, 전체적인 워크플로우 (workflow)는 여전히 느렸습니다.
해결책: 간단한 CLI 앱
온라인에서 몇 가지 좋은 옵션들(예: RepoMix)을 찾아보았지만, 제가 필요로 하는 것보다 훨씬 복잡하거나 약간 다른 용도에 최적화되어 있는 것 같았습니다.
그래서 AI의 도움을 받아, 저의 특정 워크플로우 (workflow)에 최적화된 Python 앱을 빠르게 만들었습니다. 작동 방식은 다음과 같습니다.
ReptClip | GitHub에서 보기
설치는 매우 간단합니다. pip install reptclip 명령어를 실행하여(Ubuntu에서는 pipx) 앱을 설치하고 사용할 수 있습니다.
터미널에서 앱을 실행하면 프로젝트 구조 및 사용자가 지정한 파일과 같은 코드베이스 (codebase)의 관련 부분들이 클립보드 (clipboard)에 복사됩니다. 이를 채팅창에 붙여넣고 바로 프롬프트 (prompt)를 입력하기 시작하면 됩니다.
예를 들어, 출력 결과는 다음과 같을 수 있습니다:
# Project structure
```
AGENTS.md
README.md
docs/README.md
src/main.py
src/functions.py
```
# AGENTS.md
```
Contents of AGENTS.md
```
# src/main.py
```
Contents of main.py
```
# Prompt
...
주요 기능 (Features)
-i 또는 --include 및 -e 또는 --exclude 플래그를 사용하여 포함할 파일을 지정할 수 있습니다. Glob 패턴(** 및 *)과 상대 경로(relative paths)가 지원됩니다. 아무런 인자 없이 명령어를 실행하면(reptclip 또는 rrcc) 프로젝트 구조만 복사됩니다. 이것만으로도 많은 사람들에게 엄청난 시간을 절약해 줍니다. 기본 사용법은 여기를 클릭하여 확인하세요.
또한, 터미널에서 전체 이름인 reptclip 또는 더 빠른 rrcc 명령어를 사용하여 앱을 실행할 수 있도록 rrcc 별칭(alias)을 추가했습니다. rrcc는 왼손만 사용하여 입력할 수 있습니다.
게다가, 특정 프로젝트에 대한 기본 포함 및 제외 패턴을 설정하기 위해 저장소(repository)의 루트에 reptclip-config.toml 파일을 생성할 수 있습니다 (config 명령어를 사용하여 기본 파일을 생성하세요). 설정 파일은 프리셋(presets)도 지원하며, 설정 파일에 정의한 후 -p 또는 --preset 플래그를 사용하여 하나 이상의 프리셋을 선택할 수 있습니다 (자세한 내용은 고급 사용법 (Advanced Usage)을 참조하세요). 1MB를 초과하는 파일과 바이너리 파일(binary files)의 내용은 붙여넣지 않으며, 대신 그 이유를 명시하는 플레이스홀더(placeholder)가 포함됩니다. 바이너리 파일은 확장자뿐만 아니라 콘텐츠를 통해서도 식별됩니다.
감사 인사 (Thanks)
끝까지 읽어주셔서 감사합니다. 이 앱이 유용하다고 생각하신다면, 저장소(repo)에 스타(star)를 눌러주시고 이 게시물에 좋아요를 눌러주시는 것을 고려해 주세요. 이보다 더 잘 작동하는 앱을 찾지 못했지만, 만약 있다면 꼭 알고 싶습니다. 제안 사항이 있다면 알려주세요. 풀 리퀘스트(Pull requests)는 언제나 환영하며, 여러분의 의견을 듣게 된다면 매우 기쁠 것입니다!
제가 이렇게 단순한 프로젝트를 과장하고 있다고 생각하신다면, 충분히 이해합니다. 저는 그저 18살 소년(곧 대학에 입학할 예정)일 뿐이니까요 🙂
여러분의 성원에 감사드립니다!
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기