Community라이팅 & 에디팅github.com

LaughingisLaughing/git-repo-doctor

비대한 Git 저장소에 대한 읽기 전용 진단 및 안전한 롤백 가능 정리 계획을 제공합니다. 의존성이 없는 Python 스크립트이며 Claude Code 스킬로 제공됩니다.

git-repo-doctor란 무엇인가요?

이 스킬은 비대해지거나 손상된 Git 저장소를 진단하고, 안전하게 정리할 수 있는 롤백 가능 계획을 제공하는 읽기 전용 도구입니다. .git 디렉토리가 수 GB에 달하거나, objects/pack/tmp_pack_*, tmp_obj_* 파일이 쌓이거나, 수십만 개의 느슨한 객체(loose objects)가 존재할 때 유용합니다. 또한 git gc/repack/fetch가 OOM(Out Of Memory), 크래시, 타임아웃으로 중단된 경우나 git count-objects에서 'garbage'가 보고되는 경우에도 사용할 수 있습니다. Claude Code, Cursor, Codex 등 에이전트가 저장소를 스캔하다가 충돌하는 문제를 방지하는 용도로 설계되었습니다. 이 스킬은 단일 Python 3 스크립트로 실행되며 의존성이 전혀 없고, 엄격히 읽기 전용으로 동작하여 진단 결과와 정리 계획을 텍스트로 출력할 뿐 실제 파괴적 명령은 절대 실행하지 않습니다. 사용자는 이 계획을 검토한 후 수동으로 각 단계를 확인하고 실행해야 합니다.

지원 대상✓Claude Code✓Codex CLI✓Cursor
npx skills add LaughingisLaughing/git-repo-doctor

Installed? Explore more 라이팅 & 에디팅 skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

git-repo-doctor은(는) 무엇을 하나요?

비대한 Git 저장소를 위한 읽기 전용 진단 및 안전 정리 조언 도구입니다.

이 스킬을 사용해야 하는 경우

  • .git 디렉토리가 수 기가바이트까지 커졌을 때
  • objects/pack/tmp_pack_* 또는 objects/??/tmp_obj_* 파일이 계속 쌓일 때
  • git count-objects -v 에서 garbage 수치가 크거나 수십만 개의 느슨한 객체가 표시될 때
  • gc.auto=0 이 설정되었거나, gc/repack/fetch가 계속 중단될 때
  • 편집기나 코딩 에이전트(Codex, Claude Code, Cursor, IDE 인덱서)가 저장소를 스캔하다가 크래시나 OOM이 발생할 때
  • 사용자가 안전하게 저장소를 축소, 정리, 프루닝, 가비지 컬렉션하거나 디스크 공간을 회수하는 방법을 물어볼 때

실행 방법

의존성이 없는 단일 Python 3 스크립트입니다. 엄격히 읽기 전용입니다.

# 현재 디렉토리가 포함된 저장소 진단:
python3 scripts/git_repo_doctor.py

# 특정 Git 디렉토리(이름이 바뀌거나 비활성화된 것 포함) 지정:
python3 scripts/git_repo_doctor.py --git-dir /path/to/.git.disabled-xyz

# 기계가 읽기 쉬운 출력(에이전트로 동작 시 파싱 용도):
python3 scripts/git_repo_doctor.py --json

# 원격 저장소 도달 가능성 검사 건너뛰기(오프라인 또는 느린 네트워크):
python3 scripts/git_repo_doctor.py --no-remote

반환 내용

  1. 크기 분석 - 명확한 가비지 / 느슨한 객체 / 팩 파일 / 도달 가능한 히스토리 / 도달 불가능 추정치 / 디스크 여유 공간
  2. 건강 문제 - gc.auto=0, 오래된 gc.log, 작업 트리가 $HOME과 동일, Syncthing이 .git 동기화, 느슨한 객체 홍수, 남은 임시 파일
  3. 권장 사항 (다음 중 하나):
    • PATH A (도달 가능한 히스토리가 작은 경우): 번들 안전망 생성, 복원 증명 후 계층적 지연 삭제
    • PATH B (히스토리가 큰 경우): 현재 위치에서 git maintenance + gc/repack 수행; 디스크가 부족하면 먼저 가비지 삭제
    • filter-repo / BFG 힌트: 도달 가능한 히스토리에 거대 blob이 있는 경우
  4. 복사하여 사용할 수 있는 롤백 가능 정리 계획 - 명시적인 롤백 지점 포함. 스크립트는 명령어를 출력만 하고 실행하지 않습니다.

에이전트가 출력을 사용하는 방법

  • 스크립트를 실행한 후 크기 분석, 건강 문제, 권장 PATH를 사용자에게 요약하여 알려줍니다.
  • 출력된 계획을 제시하지만, 어떤 명령도 자동으로 실행하지 마십시오. 정리는 되돌릴 수 없으며, 사람이 각 파괴적 단계를 확인해야 합니다.
  • 항상 $GITDIR 값을 확인하고, 번들이 생성되고 검증되었는지 확인하며, 사용자가 확신할 때까지 번들을 유지하세요.

안전 계약

이 도구는 gc, prune, repack, rm, reflog expire 또는 어떤 변경 명령도 실행하지 않습니다. 실행하는 것은 읽기 전용 git 쿼리와 파일 시스템 통계뿐이며, 모두 타임아웃으로 보호됩니다. 모든 파괴적 동작은 사람이 검토하고 실행할 수 있도록 출력된 계획의 텍스트로만 존재합니다.

결정 로직 (요약)

조건권장 사항
도달 가능 < 1 GiB 및 전체의 10% 미만PATH A: 번들 + 계층적 삭제/재구축
도달 가능이 크고 여유 공간 충분PATH B: git maintenance + 현재 위치에서 gc/repack
도달 가능이 크고 디스크 부족먼저 가비지 삭제 후 repack
팩 객체 수는 적지만 팩 크기가 큼거대 blob 힌트 (git-sizer 실행, git-filter-repo 고려)

전체 문서 및 예제 보고서는 README.md를 참조하세요.

관련 스킬