Community코딩 & 개발github.com

niamkvn/ponytail-review

리포지토리 전체 품질을 검토합니다: 버그, 보안 취약점, 실 부하 하의 고장 지점, 테스트 없는 위험 코드, 느린 경로, 삭제·병합·분할이 필요한 부분. 일회성 순차 보고서이며 코드를 변경하지 않습니다. "codebase review", "repo review", "bloat 찾기", "삭제할 것", /ponytail-review 명령으로 사용하세요.

ponytail-review란 무엇인가요?

이 스킬은 AI 에이전트가 리포지토리를 시니어 개발자처럼 검토하도록 안내합니다. 코드를 변경하지 않고 일회성 보고서를 생성하며, 버그, 보안 위험, 확장성 문제, 누락된 테스트, 성능 병목, 불필요한 코드를 찾습니다. 모든 플랫폼(Claude Code, Cursor, Codex 등)에서 작동하며, 사용자가 특정 폴더나 패키지를 지정하지 않으면 전체 리포지토리를 검토합니다. 검토는 4단계로 진행됩니다: 먼저 리포지토리 구조와 주요 흐름을 파악하고, 6가지 측면(버그, 위험, 확장성, 테스트, 속도, 간결함)에서 문제를 탐색하며, 각 발견 사항이 구체적인 사례를 가지고 있는지 확인한 후, 간결한 인도네시아어로 우선순위가 매겨진 보고서를 출력합니다. 보고서는 '수정 필수', '수정 권장', '있으면 좋은' 세 그룹으로 나뉘며, 각 항목에 문제 위치, 설명, 및 해결책이 포함됩니다. 최대 20개의 발견 사항을 제시하고, 리포지토리의 전반적인 건강 상태와 제거 가능한 코드 라인 수를 요약합니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/niamkvn/agent-skills-starter/tree/HEAD/.agents/skills/ponytail-review

Installed? Explore more 코딩 & 개발 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

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

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

문서

리포지토리를 새로 물려받은 시니어 개발자처럼 검토하며, 문제가 생기면 호출될 것을 전제합니다. 우선순위: 정확함, 안전함, 부하 견딤, 테스트됨, 빠름, 간결함. 추가되는 모든 줄은 나중에 읽고, 테스트하고, 수정해야 합니다. 이는 사용자가 요청한 보고서이므로 완전하게 작성하세요.

1. 먼저 파악하기

  • 사용자가 지정한 폴더, 패키지 또는 리포지토리를 검토합니다. 지정하지 않으면 전체 리포지토리를 검토합니다.
  • README, 빌드/배포 설정, 의존성 목록, 진입점(main, routes, handlers, jobs, CLI), 테스트를 읽습니다.
  • 예상 부하(한 사람이 스크립트 실행 vs 다수 사용자/프로세스 동시 사용)를 결정합니다. 그에 맞춰 규모를 평가하고 가정을 명시합니다.
  • 주요 흐름을 처음부터 끝까지 추적합니다: 데이터 유입, 저장, 출력. 사용자 입력, 금전, 인증, 데이터 쓰기, 백그라운드 작업, 프로세스 간 공유 상태 경로를 전체적으로 읽습니다.
  • 큰 리포지토리: 파일 단위가 아니라, 잘못될 경우 비용이 가장 큰 부분을 집중적으로 조사합니다. 읽지 않은 부분을 명시합니다.

2. 찾기

  1. 버그: 잘못된 결과, 크래시, 놓친 엣지 케이스(빈 값, 0, 마지막 항목, 반올림, 시간대), 함수 반환 타입과 호출자의 불일치, 동일 규칙이 두 곳에서 다르게 적용됨.
  2. 위험: 보안 취약점(인젝션, 약한 난수, 코드 내 시크릿, 검증되지 않은 사용자 입력), 데이터 손실(오류 무시, 잘못된 쓰기 순서, 트랜잭션 없음).
  3. 확장성: 단일 사용자에게는 안전하지만 다수에게는 문제: 조건-확인-후-쓰기 경합, 작업이 프로세스마다 중복 실행, 계속 커지는 메모리/리스트, 항목별 쿼리, 큰 입력에서 O(n^2), 공유되어야 할 프로세스별 상태.
  4. 누락된 테스트: 위험한 로직(분기, 파서, 금전, 보안, 데이터 쓰기)에 해당 로직이 망가졌을 때 실패하는 테스트가 없음. 커버리지가 아니라 좋은 테스트 하나.
  5. 속도: 큰 성능 저하 = 문제. 작은 최적화(핫 루프에서 반복 작업) = 제안.
  6. 간결함: 없어도 되거나 더 작아야 하는 코드.
    • 삭제: 죽은 코드, 사용되지 않는 옵션/플래그/설정, 투기적 기능
    • 재사용: 동일한 작업을 하는 두 헬퍼 (하나 유지, 경로 명시)
    • 표준 라이브러리/네이티브: 표준 라이브러리나 플랫폼이 이미 제공하는 것; 몇 줄로 충분한 의존성
    • yagni: 구현체가 하나뿐인 인터페이스, 제품이 하나뿐인 팩토리, 호출을 전달만 하는 래퍼
    • 병합: 함께 변경되어야 하는 유사한 복사본
    • 분할: 여러 개의 관련 없는 작업을 하는 하나의 함수/클래스. 줄 수가 아니라 작업 기준으로 분할하고, 단순히 함수를 짧게 만드는 헬퍼는 만들지 마세요.

3. 보고 전 확인

  • 각 발견 사항에는 구체적인 사례가 필요합니다: "이 입력/상황에서 이 잘못된 결과가 발생합니다." 사례가 없으면 발견 사항이 아닙니다.
  • 코드가 사용되지 않는다고 말하기 전에 전체 트리를 grep하세요. 테스트, fixture, 설정, 문자열/동적 참조를 포함합니다.
  • shortcut: (또는 이전 ponytail:) 주석으로 표시된 지름길은 한계를 명시하는 결정이며, 예상 부하가 이미 그 한계를 넘지 않는 한 발견 사항이 아닙니다.
  • 가장 작은 수정을 제안하세요. 코드를 제거하는 수정을 우선시하세요. 필요하지 않은 레이어, 프레임워크 또는 설정을 추가하지 마세요.
  • 스타일 취향, "고려하세요", 막연한 우려는 없습니다.

4. 출력

간단한 인도네시아어: 짧은 문장, 일상적인 단어. 기술 용어는 처음 사용할 때 설명하세요. 독자는 이 코드를 본 적이 없을 수 있습니다.

리포지토리 기능: (2-3 문장)과 가정된 부하로 시작하세요.

그런 다음 발견 사항을 세 그룹으로, 가장 중요한 것부터, 빈 그룹은 건너뛰세요:

  • 수정 필수: 버그, 보안, 데이터 손실, 예상 부하에서 고장.
  • 수정 권장: 테스트 없는 위험 코드, 현저히 느림, 중복, 혼합된 책임의 함수, 불필요한 코드.
  • 있으면 좋음: 작은 최적화, 더 짧은 형태.

그룹 전체에 걸쳐 순차적으로 번호를 매겨 사용자가 "2번과 5번 수정"이라고 말할 수 있게 하세요. 최대 20개의 발견 사항; 건너뛴 개수를 명시하세요. 각 발견 사항은 네 부분으로 구성되며, 각각 1-2개의 짧은 문장입니다:

  1. 주문이 잘못된 날짜에 기록됨 (billing/close_day.py:L40-52)
    • 이것은: 자정 작업이 하루를 마감하고 해당 날짜의 모든 주문을 청구합니다.
    • 문제: "오늘"이 서버 시간(UTC)에서 가져옵니다. 베를린에서 00:30에 주문된 것이 전날에 청구됩니다.
    • 수정: 매장 시간대에서 한 번 날짜를 계산: datetime.now(ZoneInfo("Europe/Berlin")).date().
    • 건너뛸 경우: 늦은 밤 주문이 잘못된 날짜로 기록되며, 회계에서 수동으로 수정합니다.

다음으로 끝내세요:

  • 평결: 한 줄: 건강함, 또는 먼저 수정할 사항.
  • 간결함: -<N>줄, -<M>개 의존성 가능. 간결함 발견 사항이 있는 경우.
  • 검토되지 않음: 읽지 않았거나 실행할 수 없는 부분.

발견 사항 없음: 리포지토리 기능: 다음 건강함. 수정할 사항 없음.과 검토한 내용에 대한 한 줄.

일회성 보고서, 코드를 변경하지 않습니다.

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

관련 스킬