O

finding-duplicate-functions

작성자 obra

finding-duplicate-functions 스킬로 의미상 중복되는 함수를 찾아보세요. 이름이나 구현은 다르지만 실제로는 같은 일을 하는 함수들을 식별하는 데 유용합니다. LLM이 생성한 코드와 빠르게 커지는 JavaScript 또는 TypeScript 코드베이스에 맞춰 설계되었으며, 코드 리뷰, 통합 계획 수립, 리팩터링 전 정리에 활용할 수 있습니다.

Stars0
즐겨찾기0
댓글0
추가됨2026년 5월 9일
카테고리Code Review
설치 명령어
npx skills add obra/superpowers-lab --skill finding-duplicate-functions
큐레이션 점수

이 스킬은 78/100점으로, 의미상 중복 함수를 반복적으로 찾아야 하는 디렉터리 사용자에게 적합한 후보입니다. 저장소에는 명확한 사용 시나리오와 다단계 프로세스, 그리고 일반적인 프롬프트보다 시행착오를 줄여주는 보조 스크립트가 갖춰져 있습니다. 다만 다소 특화된 도구이며, 설치 명령이나 더 폭넓은 운영 문서는 부족합니다.

78/100
강점
  • 명확한 사용 목적: 특히 LLM 생성 코드베이스에서 의미상 중복 함수를 점검하는 용도로 분명하게 제시됩니다.
  • 구체적인 워크플로: 추출 -> 분류 -> 분리 -> 탐지 -> 보고 흐름이 있고, 각 단계에 연결된 스크립트가 있습니다.
  • 실무형 안내: 분류에는 haiku, 의미 분석에는 opus 같은 도구/모델 힌트와 출력 기대치가 함께 제시됩니다.
주의점
  • 범위가 좁음: TypeScript/JavaScript 함수 분석에 초점이 맞춰져 있어, 비JS 코드베이스에는 잘 맞지 않을 수 있습니다.
  • SKILL.md에 설치 명령이나 더 넓은 설정 문서가 없어, 사용자가 스크립트를 자신의 워크플로에 어떻게 연결할지 스스로 판단해야 합니다.
개요

finding-duplicate-functions 개요

finding-duplicate-functions 스킬은 이름이나 구현 방식은 달라도 같은 일을 하는 함수를 찾아내는 데 도움을 줍니다. 특히 LLM이 생성한 코드나 빠르게 커지는 코드베이스를 검토할 때 유용한데, 이런 환경에서는 복붙 중복보다 의미적 중복이 더 빨리 쌓이기 때문입니다. finding-duplicate-functions for Code Review를 찾고 있다면, 이 스킬은 스타일 지적이 아니라 통합 여부를 판단하는 데 초점이 맞춰져 있습니다.

이 스킬의 용도

이 finding-duplicate-functions 스킬은 “의도는 같지만 코드가 다른” 사례를 찾도록 설계되었습니다. 서로 겹치는 헬퍼, 다시 만들어진 유틸리티, 파일 곳곳에 흩어진 거의 동일한 로직이 대표적입니다. 리팩터링 전에, 정리 작업 중에, 또는 jscpd 같은 구문 기반 중복 도구가 정확히 같은 복사본을 먼저 처리한 뒤에 특히 유용합니다.

누가 설치하면 좋은가

JavaScript나 TypeScript 저장소를 검토하며 작은 유틸리티가 많거나, 생성된 파일이 섞여 있거나, 여러 기여자가 함께 작업하는 경우라면 finding-duplicate-functions 스킬을 설치할 만합니다. 함수들을 합쳐야 하는지, 분리된 채로 두어야 하는지, 아니면 추가 조사가 필요한지를 반복 가능한 방식으로 판단하고 싶을 때 잘 맞습니다.

무엇이 다른가

핵심 차별점은 2단계 워크플로입니다. 먼저 함수를 추출하고, 그다음 LLM 분석으로 의도 기준 클러스터를 만듭니다. 즉, 이 스킬은 단순히 일치하는 줄을 찾는 게 아니라 의미적 중복에 대한 추측을 줄이도록 설계되었습니다. 실무적으로는 “이 코드가 중복처럼 느껴진다”에서 “검토 가능한 통합 계획”까지 가는 경로를 짧게 만들어 줍니다.

finding-duplicate-functions 스킬 사용 방법

설치하고 워크플로 위치를 찾기

스킬 디렉터리의 저장소 설치 경로를 사용합니다: npx skills add obra/superpowers-lab --skill finding-duplicate-functions. 설치 후에는 먼저 skills/finding-duplicate-functions/SKILL.md를 열어 보고, 이어서 skills/finding-duplicate-functions/scripts/ 안의 헬퍼 스크립트를 읽으세요. 실제 분석 순서를 정의하는 것은 바로 이 스크립트들이기 때문입니다. finding-duplicate-functions 가이드 관점에서는, 개요 문장보다 이 스크립트들이 더 중요합니다.

스킬에 필요한 입력

이 스킬은 소스 디렉터리와 구체적인 검토 목표를 함께 줄 때 가장 잘 작동합니다. 좋은 입력에는 코드 영역, 분석 이유, 제외할 항목이 들어갑니다. 예를 들어: “인증 흐름을 합치기 전에 packages/api/src에서 중복된 검증 헬퍼를 찾아라. 테스트 파일은 제외하고, 신뢰도가 높은 후보만 보고해라.” 이런 식이 “중복을 찾아라”보다 낫습니다. 범위, 의도, 출력 기대치가 모두 드러나기 때문입니다.

먼저 읽어야 할 파일

scripts/extract-functions.sh, scripts/categorize-prompt.md, scripts/find-duplicates-prompt.md, scripts/prepare-category-analysis.sh, scripts/generate-report.sh를 우선적으로 보세요. 이 파일들은 finding-duplicate-functions의 실제 사용 패턴을 보여 줍니다. 즉, 카탈로그 추출, 함수 분류, 카테고리별 분리, 의미 비교 실행, 보고서 생성 순서입니다. 딱 한 파일만 훑을 시간이라면 SKILL.mdscripts/extract-functions.sh를 읽어 입력 형태와 제외 기준을 이해하는 것이 좋습니다.

결과를 바꾸는 워크플로 팁

분류 단계는 부차적인 절차가 아니라 필터로 생각해야 합니다. 카테고리가 서로 잘 맞고, 비교할 함수 수가 충분할수록 이 스킬의 정확도가 높아집니다. 중복 탐지는 카테고리별로 실행되기 때문입니다. 기본적으로 테스트를 제외하는 것은 프로덕션 정리 작업에서는 대개 맞는 선택이지만, 검토 목표가 공유 테스트 유틸리티나 픽스처 헬퍼라면 테스트도 포함해야 합니다. 생성된 보고서는 자동 리팩터링 계획이 아니라 사람이 검토할 후보 목록으로 사용하세요.

finding-duplicate-functions 스킬 FAQ

일반 프롬프트보다 나은가요?

네, 일회성 브레인스토밍 답변이 아니라 duplicate-function 의도를 반복 가능하게 찾는 워크플로가 필요할 때는 더 낫습니다. 일반 프롬프트는 범위 제어, 파일 선택, 신뢰도 기준을 놓치기 쉽습니다. finding-duplicate-functions 스킬은 코드 리뷰에서 반복하기 쉬운 워크플로와 출력 구조를 제공합니다.

구문 기반 중복 도구를 대체하나요?

아니요. 보완 관계입니다. 구문 도구는 복사된 코드를 잡아내고, 이 스킬은 구현이 달라도 의미상 비슷한 함수를 찾아냅니다. 코드베이스에 이미 완전 복사 문제가 있다면, 먼저 그 문제를 처리해 의미 비교가 본래 목적에 집중하도록 하세요.

초보자에게도 친화적인가요?

소스 트리만 지정할 수 있고 무엇을 검토해야 하는지 설명할 수 있다면 초보자에게도 비교적 친화적입니다. 초보자가 가장 알아야 할 점은 중복 탐지가 카테고리 기반이며, 입력 경계가 좋아야 제대로 작동한다는 사실입니다. 확신이 없다면 저장소 전체보다 패키지 하나나 기능 영역 하나부터 시작하세요.

언제 사용하지 말아야 하나요?

광범위한 아키텍처 조언, 일회성 버그 수정, 일반적인 코드베이스 요약이 필요할 때는 쓰지 않는 편이 좋습니다. 또한 저장소가 대부분 비-JS/TS 코드라면 적합하지 않습니다. 추출 스크립트가 JavaScript와 TypeScript 함수 패턴에 맞춰져 있기 때문입니다. 목적이 정확히 같은 복사본 찾기뿐이라면 더 단순한 복붙 탐지 도구로 충분합니다.

finding-duplicate-functions 스킬 개선 방법

범위를 더 좁히고 판단 기준을 더 분명하게 제시하기

가장 큰 품질 향상은 검토 대상을 좁히고 원하는 액션을 분명히 적는 데서 나옵니다. 모든 중복을 찾으라고 하기보다 “src/utils의 후보 통합 지점을 높은 신뢰도의 합치기 우선순위로 찾아라”처럼 요청하세요. 이렇게 해야 finding-duplicate-functions 사용성이 좋아집니다. 모델이 실제로 서로 경쟁하는 함수들끼리 비교할 수 있기 때문입니다.

대비되는 사례를 함께 제공하기

이미 의심되는 쌍이 있다면, 프롬프트에 유력한 매칭 후보로 넣고 왜 다를 수 있는지도 적으세요. 예: “parseUserInput, normalizeInput, sanitizeInput를 비교해라. 서로 겹칠 수 있지만, 하나는 HTML escaping을 처리한다.” 이렇게 하면 스킬이 진짜 중복과, 단지 어휘만 비슷한 인접 헬퍼를 더 잘 구분합니다.

흔한 실패 패턴을 살펴보기

가장 흔한 실패는 과도한 묶음입니다. 이름은 비슷하지만 비즈니스 규칙이 다른 함수들이 너무 쉽게 합쳐집니다. 두 번째는 과소 묶음입니다. 매개변수 형태나 이름만 다른 작은 래퍼들이 별개의 함수로 취급됩니다. 두 경우 모두 입력, 출력, 기대 동작에 대한 맥락을 더해 표면 유사성보다 의도를 판단할 수 있게 하세요.

보고서에서 리팩터링으로 이어가기

첫 실행 후에는 보고서를 바탕으로 카테고리 하나를 골라, 신뢰도 높은 그룹부터 원본 코드와 대조해 수동 검증하세요. 경계선에 있는 그룹이라면 카테고리를 더 좁히거나, 더 나은 컨텍스트 라인과 더 명확한 추천 기준으로 다시 실행하세요. 가장 좋은 finding-duplicate-functions 가이드는 반복형입니다. 처음 결과로 범위를 다듬고, 다음 코드 조각에 다시 적용하는 방식으로 진행하세요.

평점 및 리뷰

아직 평점이 없습니다
리뷰 남기기
이 스킬의 평점과 리뷰를 남기려면 로그인하세요.
G
0/10000
최신 리뷰
저장 중...