cross-project-duplicate-file-audit
이미 출시한 여러 프로젝트에서 프로젝트별 게이트가 못 보는 결함을 찾는 도구입니다. 똑같은 파일이 여러 곳에 있는지 봅니다.
어떤 문제를 푸나The problem
게이트는 한 번에 한 프로젝트만 봅니다. 하나의 템플릿에서 복사된 버그는 각 프로젝트의 게이트를 모두 통과하고도 전부에 출시됩니다. 뒤를 돌아 전체를 한 번에 훑으면 그 공통 결함이 한 번에 드러납니다.
프로젝트 폴더들을 훑어 같은 이름과 같은 해시를 가진 파일이 여러 프로젝트에 퍼져 있는지, 템플릿 때문에 글자가 흩어진 줄이 있는지, 두 설명이 거의 같은지를 확인합니다.
이런 분께 맞습니다Who it is for
같은 템플릿에서 여러 앱이나 사이트를 만들어 내는 팀, 출시 뒤에 공통 버그를 찾고 싶은 사람.
무엇을 하나What it does
- dupes는 이름과 md5가 같은 파일이 --min-projects 이상 프로젝트에 퍼져 있으면 목록으로 보여 줍니다.
- charsplit는 'i; P; h; o; n; e'처럼 템플릿 오류로 글자가 쪼개진 줄을 찾습니다.
- overlap은 두 설명문이 거의 같은지(단어 묶음의 4분의 1 이상 공유)를 판정합니다.
- 확장자 필터(--ext)로 검사 대상을 줄일 수 있습니다.
직접 돌려 본 출력Real output
저장소의 examples 폴더를 실행한 결과입니다.
$ bash examples/demo.sh
# Four shipped apps were generated from one template. Which file is byte-identical in all of them?
$ python3 scripts/fleet_audit.py dupes .demo-tmp --min-projects 3 --ext .swift
RewardedAd.swift md5=0788686b identical in 4/4 projects: app1, app2, app3, app4
review each: one shared file means one shared bug (or a missing abstraction)
[exit 1]
# Review notes whose characters were split apart by a bad template (line 2):
$ python3 scripts/fleet_audit.py charsplit .demo-tmp/notes.txt
.demo-tmp/notes.txt:2: looks character-split: '2. i; P; h; o; n; e; ; S; E; 1; 5'
1 suspicious line(s)
[exit 1]
알아둘 한계Limits
- 이름과 내용이 완전히 같은 파일만 찾습니다. 조금 고친 비슷한 코드는 찾지 못합니다.
받아서 쓰기Get it
# 저장소를 받습니다
git clone https://github.com/Kein-chronicle/cross-project-duplicate-file-audit.git
# Claude Code 스킬로 쓰려면 이 폴더 이름으로 받습니다
git clone https://github.com/Kein-chronicle/cross-project-duplicate-file-audit.git ~/.claude/skills/reverse-audit-shipped
정보Info
- 분류Category
- 검증과 게이트Review gates
- 형태Type
- 명령줄 도구Command-line tool
- 라이선스License
- MIT
- 필요한 것Requires
- Python 3.10 이상
- 저장소Repository
- cross-project-duplicate-file-audit
- 토픽Topics
auditcode-qualityduplicate-detectionclaude-codeclaude-skillsagent-skillsrelease-management
2026-10-18 기준: 저장소의 테스트를 로컬에서 실행해 통과했고, 예제 출력은 저장소의 examples 폴더를 실제로 실행한 결과입니다.