코드 정리, 데드 코드 제거, 불필요한 주석 제거, 프로젝트 구조 최적화
/plugin marketplace add inchan/cc-skills/plugin install icp@inchan-claude-pluginbase/commands//cleanup [대상] [--type code|imports|files|comments|all] [--safe|--aggressive] [--interactive]
대상: 정리할 디렉토리 또는 파일 경로 (기본값: 현재 디렉토리)--type: 정리 유형 - code (데드 코드), imports (미사용 import), files (미사용 파일), comments (불필요한 주석), all (기본값: all)--safe: 최대 안전성 검증으로 보수적 정리--aggressive: 엣지 케이스 포함 철저한 정리 (기본값)--interactive: 복잡한 결정에 대해 확인 요청 (기본값)| 항목 | --safe | --aggressive (기본값) |
|---|---|---|
| 미사용 import | 제거 | 제거 |
| 미사용 지역 변수 | 제거 | 제거 |
| 주석 처리된 코드 | 제거 | 제거 |
| 완료된 TODO/FIXME | 제거 | 제거 |
| 의미 없는 주석 | 제거 | 제거 |
| 미사용 export 함수 | 건너뜀 (검증 필요 표시) | 제거 (확인 후) |
| 고아 파일 | 건너뜀 (검증 필요 표시) | 제거 (확인 후) |
| 진행 중 TODO | 보존 | 보존 |
| JSDoc/문서화 주석 | 보존 | 보존 |
핵심 차이: --aggressive는 "검증 필요" 항목도 --interactive 확인 후 제거
# git 저장소인 경우
git stash push -m "cleanup-backup-$(date +%Y%m%d-%H%M%S)"
# git이 아닌 경우
cp -r [대상] [대상].cleanup-backup
# 구문 검증 (JS/TS)
node -c [파일] 또는 npx tsc --noEmit [파일]
# 린트 검증
npx eslint [파일] --quiet
# 프로젝트 테스트 명령 자동 탐지 후 실행
npm test 또는 yarn test 또는 pnpm test
npm run build 또는 npx tsc --noEmit
# 깨진 import 탐지
npx madge --circular --extensions ts,tsx [대상]
분석 단계:
1. 정적 분석으로 미사용 함수/변수 찾기
2. 동적 사용 패턴 확인 (리플렉션, 문자열 기반 호출)
3. 외부 참조 없음 검증
4. 의존성 검증과 함께 제거
분석 단계:
1. 모든 import 문 파싱
2. 파일 스코프에서 실제 사용 추적
3. 미사용 import 식별
4. 제거 및 남은 import 재정렬
분석 단계:
1. 고아 파일 식별 (import/참조 없음)
2. 중복 또는 유사 중복 파일 찾기
3. 재구성 또는 제거 제안
분석 단계:
1. 주석 처리된 코드 블록 탐지
2. 오래된/완료된 TODO/FIXME 식별
3. 코드와 불일치하는 주석 탐지
4. 의미 없는 주석 식별 (예: // 변수 선언)
정리 전:
- 영향받는 파일의 백업/스냅샷 생성
- 현재 테스트 상태 문서화
정리 중:
- 각 변경 후 점진적 검증
- 예상치 못한 실패 시 중단
정리 후:
- 전체 테스트 스위트 실행
- 빌드 검증
- 고위험 변경에 대한 수동 검토
/cleanup src/ --type code --safe
보수적 정리:
/cleanup src/ --type imports
Import 정리:
/cleanup src/ --type comments
주석 정리:
/cleanup
기본값으로 전체 정리 (--type all --aggressive --interactive):
/cleanup src/ --safe
안전 우선 정리:
// 변수 선언, // 생성자).gitignore 패턴과 일치하는 파일## 정리 요약
### 제거됨
- 8개 파일에서 15개 미사용 import
- 3개 데드 함수 (245줄)
- 2개 고아 유틸리티 파일
- 12개 주석 처리된 코드 블록
- 5개 완료된 TODO 주석
### 건너뜀 (검토 필요)
- `utils/legacy.ts` - export되었으나 내부 사용 없음
- `helpers/format.ts:formatDate` - 동적 호출 가능성
### 검증
- 테스트: 142개 통과, 0개 실패
- 빌드: 성공
- 린트: 새 경고 없음
### 권장사항
- 외부 사용 없음 확인 후 `utils/legacy.ts` 제거 고려
- `src/api/client.ts`의 주석 코드 검토
수행:
수행 안 함: