/tidy — 정리 단계
모든 저장소에는 썩은 것(rot)이 쌓입니다: 이동되었거나 gitignored된 파일을 가리키는 링크, 커밋에 잘못 들어간 키, 아무도 참조하지 않는 에셋, 설치 시 404가 발생하는 의존성. 이런 것들은 평상시에는 보이지 않다가 최악의 타이밍(독자의 404, 실패하는 CI, 유출된 키)에 드러납니다. /tidy는 이런 것들을 의도적으로 찾아내고 제거하는 단계입니다.
이것은 *게이트(gate)*가 아니라 *단계(stage)*입니다. 빠른 가드(check-changelog, check-assets)는 모든 푸시 시 차단합니다. /tidy는 정리할 때 실행하는 광범위한 보고 우선 검사입니다.
실행 방법
bun run tidy # 현재 저장소 → 요약 + 권장 다음 단계
bun run tidy <path> # 특정 저장소
bun run tidy --all ~/Claude # 폴더 아래 모든 git 저장소 → 하나의 통합 테이블
bun run tidy --links # 하나의 카테고리만 집중 검사 (--secrets --files --deps)
네 가지 종류의 썩은 것을 스캔하며 먼저 범위를 보여줍니다(카테고리별 개수) — 따라서 출력이 벽처럼 쏟아지지 않습니다:
| 감지하는 항목 | |
|---|---|
| 🔗 링크 | 마크다운/HTML 링크 중 존재하지 않는 파일을 가리키거나 gitignored 대상으로만 연결되는 링크 (작성자 컴퓨터에서는 동작하지만 다른 사람에게는 404) |
| 🔑 시크릿 | 높은 신뢰도의 커밋된 키 패턴 (AWS, Stripe, GitHub, Google, Slack, 개인 키 블록) — 검토용으로 표시되며 자동 판단하지 않음 |
| 🗑 데드 파일 | 아무도 참조하지 않는 커밋된 이미지/에셋 — 안전하게 제거 가능 |
| 📦 의존성 | package.json에서 npm에서 해결되지 않는 의존성 (@inngest/sdk 같은 죽은 패키지) |
흐름 (보고 → 권장 → 질문 → 수정)
- 실행. 요약 테이블 표시 — 카테고리별, 저장소별 범위.
- 권장. 각 카테고리가 중요한 이유 설명 (끊어진 링크는 독자의 404; 플래그된 시크릿은 교체 필요; 해결 불가능한 의존성은 모든 설치를 깨뜨림).
- 질문. 운영자가 무엇을 정리할지 선택하도록 함. 절대 가정하지 않음.
- 확인 후 수정 — 계획을 세우고, 적용.
bun run tidy --fix <repo>는 정확한 변경 계획(어떤 끊어진 링크가 해제될지)을 아무것도 쓰지 않고 출력합니다.--apply를 붙여 다시 실행하면 편집이 적용됩니다. 따라서 각 변경 사항을 먼저 볼 수 있습니다. 자동 수정은 의도적으로 좁게 적용됩니다: 끊어지거나 gitignored된 텍스트 링크만 해제([text](bad)→text). 시크릿, 의존성, 이미지/HTML 링크, 파일 삭제는 절대 자동 적용되지 않습니다 — 안내와 함께 수동 목록으로 표시됩니다(키 교체, 올바른 패키지 선택). 그 이유는 이러한 수정에는 판단이 필요하기 때문입니다.--all로 여러 저장소를 조사한 후,--fix로 한 번에 하나씩 처리하세요.
규율
- 항상 보고 우선. 가치 있는 것은 건드리기 전에 썩은 것을 보는 것입니다.
- 게이트로 사용하지 마세요.
/tidy는 느리고(네트워크 의존성 검사) 광범위합니다 — 단계(stage)로 유지하고 푸시 차단기로 쓰지 마세요. 좁은 가드가 게이트 역할을 합니다. - 시크릿은 검토 수준. 패턴 일치는 볼 것을 촉구하는 것이지 판결이 아닙니다. 실제 발견되면 수정은 키를 교체하는 것이지, 줄을 삭제하는 것이 아닙니다.
- 고정된 디렉토리는 건너뜀 (
_archive/,node_modules/) — 정리할 대상이 아닙니다. - 엔진은 이식 가능.
scripts/tidy.ts는 모든 저장소 경로에 대해 실행됩니다 — 이것이 100개 이상의 저장소를 한 명령어로 처리할 수 있는 이유입니다.