code2prompt
무엇인가
code2prompt는 디렉터리 트리를 순회해 소스 파일을 모으고, 이를 하나의 텍스트 프롬프트로 렌더링하는 명령줄 도구다. LLM에 넣을 컨텍스트를 준비하는 단계, 즉 컨텍스트 엔지니어링 계열에 속한다. 결과물은 사람이 채팅 UI에 붙여넣는 용도로도, Python SDK나 MCP 서버를 통해 에이전트가 호출하는 용도로도 쓰인다.
어떻게 동작하나
처리는 파일 수집, 필터링, 템플릿 렌더링, 토큰 계산으로 나뉜다. 수집 단계에서 glob 패턴으로 포함·제외할 파일을 지정하고 `.gitignore` 규칙을 함께 적용한다. 렌더링은 Handlebars 템플릿으로 수행하며, 소스 트리와 파일 본문이 하나의 문서로 합쳐진다. 토큰 수는 파일별로 병렬 계산한 값에 템플릿 오버헤드 추정치를 더해 산출하고, 줄 번호를 넣을 경우 그 몫도 반영한다. 출력은 기본적으로 stdout으로 나가고 `-c`로 클립보드에 복사하거나 파일로 저장한다. Git 저장소에서는 diff, log, 브랜치 비교 결과를 입력으로 넣을 수 있고, CSV·Notebook·JSONL 같은 형식은 전용 리더가 처리한다. 별도의 TUI에서 설정을 조작하며 프롬프트를 생성하는 모드도 있다.
무엇과 다른가
파일을 하나씩 열어 복사하고 형식을 손으로 맞추는 방식과 달리, 트리 순회와 포맷팅을 한 번의 명령으로 끝낸다. 에디터 플러그인이나 IDE 확장이 아니라 단일 바이너리로 동작하므로 편집기 종속성이 없다. 출력 형식이 고정된 도구와 달리 Handlebars 템플릿 파일을 사용자가 직접 교체할 수 있고, 토큰 수도 완성된 프롬프트를 다시 토크나이즈하는 대신 파일 단위 병렬 계산과 템플릿 오버헤드 추정으로 구한다.
어떻게 쓰나
설치는 Cargo, Homebrew, pip(Python SDK) 경로가 있다. 설치 후 대상 디렉터리를 인자로 주면 stdout으로 프롬프트가 나오고, `-c`를 붙이면 클립보드로 들어간다. 파일로 저장하거나 TUI를 띄우는 것도 같은 실행 파일에서 된다. Skills CLI로 코딩 에이전트에 code2prompt 스킬을 설치할 수 있으며, 이 스킬은 `sem-core`로 함수·클래스 목록을 뽑아 저장소 구조를 훑는 절차와 템플릿을 함께 넣는다.
전제와 한계
소스에서 빌드하려면 Git과 Rust, Cargo가 필요하다. Wayland 환경에서 클립보드 연동을 쓰려면 `wayland` 피처 플래그를 켜야 한다. 토큰 수는 추정치이며 렌더링된 전체 프롬프트를 다시 토크나이즈하지 않고, JSON 출력 봉투는 계산에서 빠진다. `entity-map`은 선택 피처라 없으면 디렉터리 맵으로 대체되고, 스킬 설치 프로그램은 템플릿을 가져오기 위해 저장소를 일시적으로 복제한다.
유사 도구
- rtk명령 출력을 LLM 컨텍스트에 넣기 전에 필터·압축해 토큰을 줄이는 Rust 단일 바이너리 CLI 프록시다. Bash 훅으로 명령을 가로채 필터를 적용한다.
- Codewhale터미널에서 프로젝트를 읽고 파일을 고치고 명령을 실행하는 Rust 기반 코딩 에이전트다. 호스티드·로컬 모델을 골라 붙인다.
- claude-code-promptsClaude Code의 동작 패턴을 관찰해 독립 작성한 AI 코딩 에이전트용 프롬프트 템플릿 모음이다. 시스템·도구·메모리·멀티에이전트 프롬프트를 마크다운으로 제공한다.
- abtopClaude Code·Codex CLI·OpenCode 세션의 토큰·컨텍스트 창·레이트 리밋·포트를 로컬 상태에서 읽어 실시간으로 보여주는 Rust TUI다.
- aichat20개 이상 LLM 제공자를 하나의 인터페이스로 묶어 셸 명령 변환, REPL 대화, RAG, 함수 호출을 한 바이너리에서 처리하는 Rust CLI다.
- oh-my-pi터미널에서 도는 코딩 에이전트로, LSP와 DAP를 에이전트 루프에 직접 연결해 이름 변경과 디버깅까지 IDE 수준으로 처리한다. Rust 코어 단일 바이너리다.