핵심 요약
LLM에게 코드 맥락을 전달할 때 수동으로 복사하거나 복잡한 도구를 쓰는 번거로움을 해결하기 위해 pmc(pack-my-code)가 개발됐다. 이 도구는 luainstaller로 빌드된 단일 바이너리 형태로 제공되어 설치가 간편하며, 실행 시 현재 디렉토리의 코드를 하나의 텍스트로 묶어준다. .gitignore를 자동으로 준수하며 마크다운이나 YAML 등 다양한 출력 형식을 지원하여 프롬프트 구성의 효율성을 높인다. 결과적으로 개발자는 대규모 코드 베이스의 컨텍스트를 LLM에게 정확하고 구조적으로 전달할 수 있다.
배경
기본적인 CLI(터미널) 사용 능력, .gitignore 기반의 필터링 기능을 위한 Git 설치 환경
대상 독자
LLM을 활용해 코드 리뷰, 리팩터링, 기능 구현을 수행하는 소프트웨어 개발자
의미 / 영향
이 도구는 LLM의 컨텍스트 윈도우가 커짐에 따라 중요해진 '코드 컨텍스트 주입' 과정을 단순화한다. 복잡한 설정 없이 바이너리 하나로 작동하므로 개발 워크플로에 즉시 통합되어 프롬프트 엔지니어링의 생산성을 높이는 데 기여한다.
섹션별 상세
pmc(pack-my-code)는 LLM 프롬프트 작성을 위해 코드 컨텍스트를 패키징하는 초경량 CLI 도구이다. luainstaller로 패키징된 바이너리 형태로 배포되어 별도의 의존성 없이 설치가 가능하며, 실행 시 현재 디렉토리나 특정 경로의 파일들을 하나의 텍스트 뭉치로 결합한다. 기본 출력은 마크다운 코드 블록 형식을 따르며 실행 경로 기준의 상대 경로를 각 파일 상단에 표시한다.
강력한 필터링 옵션을 통해 프롬프트에 포함될 정보를 정밀하게 제어한다. -x 옵션으로 로그 파일이나 바이너리 디렉토리를 제외할 수 있고, -m 옵션으로 특정 확장자나 소스 디렉토리만 선택적으로 포함한다. 기본적으로 프로젝트의 .gitignore 설정을 자동으로 읽어 불필요한 파일 유입을 차단하며, -r 옵션을 통해 이를 무시하고 전체 스캔을 수행할 수도 있다.
출력 결과물의 구조와 메타데이터를 커스터마이징하는 기능을 포함한다. -t 옵션은 결과물 최상단에 디렉토리 트리 구조를 추가하여 LLM이 프로젝트 구조를 파악하도록 돕고, -s 옵션은 하단에 파일 개수와 크기 등 통계 정보를 덧붙인다. -w 옵션을 사용하면 마크다운 외에도 일반 텍스트나 사용자 정의 블록 형태로 래핑 방식을 변경할 수 있다.
구조화된 데이터 전달을 위해 독립적인 YAML 모드(-y)를 지원한다. YAML 모드에서는 일반적인 텍스트 연결 방식 대신 자체적인 트리 계층 구조로 파일 내용과 경로를 조직화하여 출력한다. 이 모드는 데이터의 구조적 무결성을 위해 트리나 통계 등 일부 텍스트 전용 옵션과 혼용할 수 없으며, 출력 결과는 반드시 .yaml 또는 .yml 확장자로 저장해야 한다.
실무 Takeaway
- LLM 프롬프트에 대량의 코드를 주입할 때 pmc를 사용하면 수동 복사 시간을 줄이고 컨텍스트 누락을 방지할 수 있다.
- .gitignore 자동 인식 기능을 활용하여 빌드 아티팩트나 라이브러리 파일을 제외함으로써 LLM의 토큰 소모를 최적화할 수 있다.
- YAML 모드를 통해 코드 계층 구조를 명확히 전달함으로써 LLM이 복잡한 프로젝트 아키텍처를 더 정확하게 이해하도록 유도할 수 있다.
언급된 리소스
GitHubpmc Releases Page
AI 분석 전체 내용 보기
AI 요약 · 북마크 · 개인 피드 설정 — 무료