agentsclimarketplace

Debugger

Skill aiskillstore/marketplace/skills/cubha/debugger

Security-audited skills for Claude, Codex & Claude Code. One-click install, quality verified.

Install
npx -y skills add aiskillstore/marketplace --skill debugger

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.

What its author says it does

Copied from the file, not written here

버그 원인을 시스템 로그 기반으로 특정하고 수정·검증·정리까지 완료하는 디버깅 워크플로우 스킬. 트리거: '디버깅해줘', '버그 원인 찾아줘', '어디서 오류나는지', '로그 삽입해줘', 에러 메시지/스택 트레이스 붙여넣기, '--pw'/'--pw --headless'/'--pw --record' 플래그. 지원 언어: JS/TS, Python, Java, Kotlin. 안티-트리거: 단순 코드 리뷰, 신규 기능 구현, 원인이 이미 특정된 경우(수정만 진행), 성능 최적화, 기능 동작 검증/시나리오 PASS-FAIL 판정.

SKILL.md

10.6 KB, as published. Nobody here has run it

DEBUGGER 워크플로우

$ARGUMENTS 를 파싱하여 모드와 플래그를 결정한다.

플래그 파싱

플래그모드
(없음)기본 모드 — 4단계
--pwPlaywright MCP 모드 — 5단계
--pw --headlessPlaywright MCP headless 선호
--pw --recordPlaywright MCP trace/video 기록 선호

--pw 모드는 이 플러그인에 동봉된 Playwright MCP 서버(.mcp.json)를 사용한다.


안티-트리거 확인

아래 조건에 해당하면 스킬을 실행하지 않고 즉시 중단한다:

  • 단순 코드 리뷰 요청 ("이 코드 어때?")
  • 신규 기능 구현 요청 (버그가 아닌 경우)
  • 원인이 이미 특정된 상태에서 수정만 요청 → 수정만 진행, 로그 삽입 스킵
  • 성능 최적화 요청

기본 모드 (4단계)

[1/4] 분석

  1. 관련 코드 파일 읽기 — 버그 현상·에러 메시지·재현 조건 파악
  2. sequential_thinking 툴로 가설 도출 (필수)
    • 각 Thought에서 하나의 가설을 검토하고 근거/반례를 기술
    • 가설이 기각되면 isRevision: true로 수정하거나 다음 가설로 이동
    • nextThoughtNeeded: false가 되면 상위 가설 최대 5개 확정
  3. 의심 지점을 최대 5개까지 목록화 (우선순위 상위 5개만)
  4. 출력 형식:
[1/4] 분석
의심 지점:
1. 파일:라인 — 근거
2. 파일:라인 — 근거
...

[2/4] 로그 삽입

의심 지점 각각에 디버그 로그를 파일에 직접 삽입한다.

**로그 삽입 규칙 (§로그 규칙 참조)**를 엄격히 준수.

삽입 완료 후:

  • 사용자에게 실행 명령결과 붙여넣기 요청을 명시
  • 대기 — 사용자가 로그를 붙여넣기 전까지 [3/4]로 절대 진행하지 않음
  • 도중에 사용자가 다른 질문을 하면 → 해당 질문에 답한 뒤 로그 결과 대기 상태임을 재고지

[3/4] 원인 특정

사용자가 붙여넣은 로그를 읽고 의심 지점 중 실제 원인을 특정한다.

출력 형식:

원인: 파일:라인 — 설명

로그로 특정 불가 시:

  • 추가 로그를 삽입하고 [2/4]로 복귀 (최대 2회)
  • 2회 초과 시 → 사용자에게 추가 정보(재현 조건·환경 등) 요청 후 중단

[4/4] 수정 + 정리

  1. 범위 판정 게이트 (§범위 판정 게이트) → 수정 범위 확정
  2. 확정 범위에 버그 수정 적용 — 기본은 원인 파일. 범위 판정에서 ⚠️ 변경필요로 나온 인접 경계는 같은 원인의 다른 발현이므로 함께 수정. stub→제대로 권고가 있으면 반영
  3. 사용자에게 재실행 요청 → 결과 확인
  4. 회귀 게이트 → 프로젝트 검증 스크립트(verify.sh, npm test, npm run build, pytest 등)가 있으면 실행. 재현 증상은 사라졌어도 수정이 다른 곳(tsc/lint/단위테스트)을 깨뜨리지 않았는지 확인. FAIL → 회귀 수정 후 재검증
  5. 해결됨(증상 해소 + 검증 스크립트 PASS) → §정리 단계 실행 후 수정 요약 출력 + 종료
  6. 미해결 → [3/4]로 복귀 (최대 2회 반복). 2회 초과 시 상황 보고 후 중단

--pw 모드 (5단계)

사전 조건 체크 (필수)

  1. Playwright MCP 서버 연결 여부 확인 (이 플러그인에 동봉됨)
    • 미연결 → 연결 안내 제안. 사용자 거부 시 기본 모드(4단계) 폴백 여부 질문
  2. 대상 프로젝트가 웹 UI 프로젝트인지 확인 (package.json, index.html, 사용자 명시)
  3. 재현 URL과 재현 시나리오 확인 — 없으면 사용자에게 1회 질문
  4. 백엔드 의존성이 있는 프로젝트라면, 재현/수정 사이클이 운영 데이터에 영향을 주지 않도록 로컬·테스트 환경(테스트 DB·개발 서버)을 사용하도록 사용자에게 안내한다

[1/5] 분석

기본 모드 [1/4]와 동일. (sequential_thinking 툴 필수 실행 포함)

[2/5] 로그 삽입

기본 모드 [2/4]와 동일. 단 클라이언트 코드는 console.log 사용 (브라우저 콘솔 가시성 확보).

[3/5] Playwright MCP 자동 실행

Playwright MCP 도구로 지정된 URL/시나리오를 실행한다:

  • 콘솔 로그, 네트워크 로그, 스크린샷 수집
  • --record 시 trace 기록 옵션 선호
  • 출력: 수집 로그 요약 + 스크린샷 경로 (MCP 반환 경로 그대로)

수집 대상별 Playwright MCP 도구:

  • 콘솔 에러: browser_console_messages
  • 네트워크 요청·응답: browser_network_requests / browser_network_request
  • 스크린샷: browser_take_screenshot
  • DOM 스냅샷: browser_snapshot

[4/5] 원인 특정

수집된 로그·스크린샷 기반으로 원인 특정. 기본 모드 [3/4]와 동일 형식.

[5/5] 수정 + 검증 + 정리

  1. 범위 판정 게이트 (§범위 판정 게이트) → 수정 범위 확정 후 수정 코드 적용
  2. Playwright MCP로 동일 시나리오 재실행 → 로그·스크린샷으로 해결 검증
  3. 회귀 게이트 → 프로젝트 검증 스크립트(verify.sh, npm test, npm run build, pytest 등)가 있으면 실행. 시나리오 재현은 동일 증상만 보므로, 정적+단위 게이트로 회귀를 추가 확인. FAIL → 회귀 수정 후 재검증
  4. 해결됨(증상 해소 + 검증 스크립트 PASS) → §정리 단계 실행 + before/after 스크린샷 경로 출력 + 종료
  5. 미해결 → [4/5]로 복귀 (최대 2회). 2회 초과 시 가설·수정 이력·수집 로그 요약 보고 후 중단

범위 판정 게이트

원인 특정([3/4]·[4/5]) 직후, 수정을 적용하기 전에 실행한다. 단편적 수정(이 화면만 막고 넘어가 나중에 들어내는 것)과 부적절한 stub를 잡는 단계다.

판정 기준

특정된 원인(파일:라인 + 설명)과 계획된 수정안(무엇을 어떻게 — 아직 미적용)을 놓고, 직접 인접한 경계를 각각 점검한다:

  • 호출부: 이 함수/모듈을 부르는 쪽이 수정 후 계약을 그대로 유지하는가?
  • API/데이터 계약: 반환 타입·스키마·에러 형태가 바뀌면 소비자가 깨지지 않는가?
  • 공유 상태: 전역·캐시·DB 등 공유 자원의 다른 사용처에서 같은 버그가 재발현하지 않는가?

임시구현(stub/fallback/하드코딩)을 넣으려 한다면 2×2로 평가한다:

  • 형태가 known인가? (제대로 된 구현의 모양을 지금 아는가)
  • 되돌리기 비용이 낮은가? (나중에 제대로 바꿀 때 파급이 작은가)
  • 둘 다 "아니오"에 가까우면 stub 대신 처음부터 제대로 구현한다.

별도의 범위 검토용 read-only 서브에이전트가 설치·사용 가능한 환경이라면, 위 기준으로 판정을 위임해 교차검증할 수 있다. 없으면 위 기준으로 인라인 자기검토를 수행한다.

결과 처리

판정 결론동작
수정안 그대로 OK계획대로 [4/4]·[5/5] 수정 적용
범위 확대 필요⚠️ 경계를 수정 범위에 포함 (같은 원인의 발현 = 인스코프, 리팩토링 아님)
stub→제대로 권고stub 대신 제대로 구현
  • 단일 함수 내부 순수 로직 버그처럼 인접 경계가 없으면 즉시 "그대로 OK" — 오버헤드가 작다.
  • 판정을 정당한 근거로 무시할 수 있으나, 무시 시 사유 1줄을 남긴다(무비판 수용·무비판 무시 둘 다 금지).

로그 규칙

지원 언어별 로그 형식

언어마커 주석로그 함수예시
JavaScript/TypeScript// [DEBUG-INSERTED]console.logconsole.log('[DEBUG] userId:', userId);
Python# [DEBUG-INSERTED]print (또는 기존 logger)print(f'[DEBUG] user_id: {user_id}')
Java// [DEBUG-INSERTED]System.out.println (또는 기존 logger)System.out.println("[DEBUG] userId: " + userId);
Kotlin// [DEBUG-INSERTED]println (또는 기존 Log/logger)println("[DEBUG] userId: $userId")

불변 규칙

  1. 모든 삽입 로그는 [DEBUG] 문자열을 반드시 포함
  2. 로그 라인 바로 위에 // [DEBUG-INSERTED] 또는 # [DEBUG-INSERTED] 마커 주석 삽입
  3. 기존 logger (winston, pino, SLF4J 등)가 있으면 해당 logger의 debug 레벨 사용 — 마커 규칙은 동일 적용
  4. 로그에 비밀번호·토큰·개인정보가 찍힐 가능성이 있으면 해당 필드를 ***로 마스킹

정리 단계

마커 주석 기반 제거만 수행한다:

  • [DEBUG-INSERTED] 마커 주석이 달린 라인과 바로 아래 로그 라인 쌍을 제거
  • 마커 없이 [DEBUG]만 있는 라인은 사용자의 기존 로그 → 절대 건드리지 않음

제거 후 검증 (필수):

grep -r "\[DEBUG-INSERTED\]" . --include="*.ts" --include="*.tsx" --include="*.js" --include="*.py" --include="*.java" --include="*.kt"
  • 결과가 0건이어야 종료 가능
  • 1건 이상이면 해당 파일로 돌아가 재정리

정리 완료 출력:

정리 완료: 제거한 로그 N개 / 수정된 파일: 파일목록

안전 규칙

  • 수정 범위는 원인 + 범위 판정 게이트에서 ⚠️ 변경필요로 나온 인접 경계(같은 원인의 다른 발현)에 한정 — 그 외 관련 없는 리팩토링·기능 추가는 금지
  • 테스트 파일(*.spec.*, *.test.*)·CI 설정·.env·secrets 파일에는 로그 삽입 금지
  • 정리 단계 없이 커밋하는 것은 불가 — 종료 전 반드시 grep 검증 수행

Known Pitfalls

본 skill 실행 중 반복 발생한 실패 패턴. 신규 패턴 발견 시 entry 추가.

(현재 누적 entry 없음)

작성 형식

  • [패턴명] — YYYY-MM-DD
    • 상황: 어떤 단계(로그 삽입/원인 특정/정리)·조건에서 발생
    • 원인: 무엇 때문에 실패 (마커 누락 / 정리 실패 / 잘못된 원인 특정 등)
    • 회피: 다음 실행 시 적용할 가이드

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.