본문으로 건너뛰기
cccskills
무료GitHub에 공개한국어 소개

diagnosing-bugs

재현하기 어려운 오류와 성능 저하를 증상 감지 테스트나 스크립트로 조사합니다. 원인 후보를 검증하고 수정한 뒤 재발 방지 테스트까지 확인합니다.

원문원문 설명 보기

Diagnosis loop for hard bugs and performance regressions. Use when the user says "diagnose"/"debug this", or reports something broken/throwing/failing/slow.

AI 평가80점/ 100설치 방법 보기

이럴 때 유용합니다

  • 재현하기 어려운 오류 조사
  • 처리 속도가 느려진 원인 조사
  • 간헐적 오류를 반복해서 검증
  • 수정 후 문제 재발 방지 확인

한국어 소개

할 수 있는 일

diagnosing-bugs는 재현과 검증을 반복해 복잡한 오류와 성능 저하를 조사합니다. 먼저 보고된 증상을 감지하는 테스트나 스크립트를 만들고 빠르게 반복할 수 있도록 정리합니다. 실패 조건을 최소한으로 좁히고 예측을 포함한 원인 후보를 세 개에서 다섯 개 정리한 뒤, 한 번에 조건 하나씩 바꿔 검증합니다. 수정 후에는 원래 재현 절차와 재발 방지 테스트를 확인하고 조사용 로그 등도 정리합니다.

이럴 때 유용합니다

오류 원인을 알 수 없거나 업데이트 후 느려졌을 때, 가끔 잘못된 결과가 나올 때 적합합니다. 성능 문제는 기준 측정값을 먼저 확보한 다음 원인이 된 변경을 좁혀 갑니다.

사용 예시

  • “이 오류를 재현하는 테스트를 만들고 원인을 조사해 주세요.”
  • “업데이트 후 느려진 처리를 측정하고 원인을 좁혀 주세요.”
  • “가끔 실패하는 작업을 반복하고 수정 결과를 검증해 주세요.”

주의 사항

증상을 재현할 수 있는 환경이나 입력이 필요합니다. 재현 절차를 만들 수 없으면 조사를 멈추고 환경 접근이나 비밀 정보를 가린 로그 등을 요청합니다. 명령 출력과 기록에 포함된 비밀 정보는 가려서 다룹니다.

이 소개문은 공개된 SKILL.md를 바탕으로 AI(OpenAI Codex)가 작성했습니다. 정확한 사양은 아래 원문을 확인하세요.

객관 평가

AI가 SKILL.md의 내용만을 근거로 4가지 관점에서 판정했습니다. 스타 수나 인기도는 판정에 넣지 않았습니다.

지시의 명확성언제 쓰고 무엇을 하는지 알 수 있는가
A양호오류와 성능 저하에 사용하며 재현 반복에서 원인 검증으로 넘어갈 조건을 명시합니다.
절차의 구체성절차·입출력·예시가 구체적으로 적혀 있는가
A양호재현 방법, 완료 조건, 최소화 방법, 원인 가설 형식과 검증 순서가 구체적입니다.
안전성전송·삭제·명령 실행 등을 명시하고 있는가
B일부 부족비밀 정보 가림과 운영 환경 계측 허가는 지정하지만 명령 실행 전 영향 확인은 없습니다.
도입의 용이성필요한 도구나 API 키가 적고 적혀 있는가
B일부 부족재현 환경과 해당 실행 도구가 필요하지만 도구 설치 절차는 없습니다.

총점은 각 항목을 A=25점, B=15점, C=5점으로 더한 값입니다. 2026년 10월 19일 기준으로 AI(OpenAI Codex)가 판정했습니다. 참고용이므로 설치 전에 원문도 확인해 주세요.

평가가 다르다고 생각되면 재검토를 요청하기

어느 항목이 왜 다르다고 생각하는지 적어 주세요. 로그인은 필요 없습니다. SKILL.md와 대조해 평가를 다시 만들고 이곳에 반영합니다.

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

포함된 파일(3)

  • SKILL.md8.5 KB
  • agents/openai.yaml103 B
  • scripts/hitl-loop.template.sh1.3 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

Diagnosing Bugs

A discipline for hard bugs. Skip phases only when explicitly justified.

When exploring the codebase, read GLOSSARY.md (if it exists) to get a clear mental model of the relevant modules, and check ADRs in the area you're touching.

Redact

This skill has you show commands, outputs and captured artifacts. Redact every secret first: write <REDACTED> in its place. Build loops against env vars, so the credential stays in the environment rather than in what you show. Captured artifacts carry auth headers: quote only the lines that carry the signal.

If the redacted output is not enough to diagnose the bug, say so and ask the user.

Phase 1: Build a feedback loop

This is the skill. Everything else is mechanical. If you have a tight pass/fail signal for the bug (one that goes red on this bug), you will find the cause; bisection, hypothesis-testing, and instrumentation all just consume it. If you don't have one, no amount of staring at code will save you.

Spend disproportionate effort here. Be aggressive. Be creative. Refuse to give up.

Ways to construct one, in roughly this order

  1. Failing test at whatever seam reaches the bug: unit, integration, e2e.
  2. Curl / HTTP script against a running dev server.
  3. CLI invocation with a fixture input, diffing stdout against a known-good snapshot.
  4. Headless browser script (Playwright / Puppeteer) that drives the UI and asserts on DOM/console/network.
  5. Replay a captured trace. Save a real network request / payload / event log to disk; replay it through the code path in isolation.
  6. Throwaway harness. Spin up a minimal subset of the system (one service, mocked deps) that exercises the bug code path with a single function call.
  7. Property / fuzz loop. If the bug is "sometimes wrong output", run 1000 random inputs and look for the failure mode.
  8. Bisection harness. If the bug appeared between two known states (commit, dataset, version), automate "boot at state X, check, repeat" so you can git bisect run it.
  9. Differential loop. Run the same input through old-version vs new-version (or two configs) and diff outputs.
  10. HITL bash script. Last resort. If a human must click, drive them with scripts/hitl-loop.template.sh so the loop is still structured. Captured output feeds back to you.

Build the right feedback loop, and the bug is 90% fixed.

Tighten the loop

Treat the loop as a product. Once you have a loop, tighten it:

  • Can I make it faster? (Cache setup, skip unrelated init, narrow the test scope.)
  • Can I make the signal sharper? (Assert on the specific symptom, not "didn't crash".)
  • Can I make it more deterministic? (Pin time, seed RNG, isolate filesystem, freeze network.)

A 30-second flaky loop is barely better than no loop; a 2-second deterministic one is tight, a debugging superpower.

Non-deterministic bugs

The goal is not a clean repro but a higher reproduction rate. Loop the trigger 100×, parallelise, add stress, narrow timing windows, inject sleeps. A 50%-flake bug is debuggable; 1% is not, so keep raising the rate until it's debuggable.

When you genuinely cannot build a loop

Stop and say so explicitly. List what you tried. Ask the user for: (a) access to whatever environment reproduces it, (b) a redacted captured artifact (HAR file, log dump, core dump, screen recording with timestamps), or (c) permission to add temporary production instrumentation. Do not proceed to hypothesise without a loop.

Completion criterion: a tight loop that goes red

Phase 1 is done when the loop is tight and red-capable: you can name one command (a script path, a test invocation, a curl) that you have already run at least once (show the invocation and its output, redacted), and that is:

  • Red-capable: it drives the actual bug code path and asserts the user's exact symptom, so it can go red on this bug and green once fixed. Not "runs without erroring"; it must be able to catch this specific bug.
  • Deterministic: same verdict every run (flaky bugs: a pinned, high reproduction rate, per above).
  • Fast: seconds, not minutes.
  • Agent-runnable: you can run it unattended; a human in the loop only via scripts/hitl-loop.template.sh.

If you catch yourself reading code to build a theory before this command exists, stop: jumping straight to a hypothesis is the exact failure this skill prevents. No red-capable command, no Phase 2.

Phase 2: Reproduce + minimise

Run the loop. Watch it go red as the bug appears.

Confirm:

  • The loop produces the failure mode the user described, not a different failure that happens to be nearby. Wrong bug = wrong fix.
  • The failure is reproducible across multiple runs (or, for non-deterministic bugs, reproducible at a high enough rate to debug against).
  • You have captured the exact symptom (error message, wrong output, slow timing) so later phases can verify the fix actually addresses it.

Minimise

Once it's red, shrink the repro to the smallest scenario that still goes red. Cut inputs, callers, config, data, and steps one at a time, re-running the loop after each cut, and keep only what's load-bearing for the failure.

Why bother: a minimal repro shrinks the hypothesis space in Phase 3 (fewer moving parts left to suspect) and becomes the clean regression test in Phase 5.

Done when every remaining element is load-bearing: removing any one of them makes the loop go green.

Do not proceed until you have reproduced and minimised.

Phase 3: Hypothesise

Generate 3–5 ranked hypotheses before testing any of them. Single-hypothesis generation anchors on the first plausible idea.

Each hypothesis must be falsifiable: state the prediction it makes.

Format: "If <X> is the cause, then <changing Y> will make the bug disappear / <changing Z> will make it worse."

If you cannot state the prediction, the hypothesis is a vibe: discard or sharpen it.

Show the ranked list to the user before testing. They often have domain knowledge that re-ranks instantly ("we just deployed a change to #3"), or know hypotheses they've already ruled out. Cheap checkpoint, big time saver. Don't block on it; proceed with your ranking if the user is AFK.

Phase 4: Instrument

Each probe must map to a specific prediction from Phase 3. Change one variable at a time.

Tool preference:

  1. Debugger / REPL inspection if the env supports it. One breakpoint beats ten logs.
  2. Targeted logs at the boundaries that distinguish hypotheses.
  3. Never "log everything and grep".

Tag every debug log with a unique prefix, e.g. [DEBUG-a4f2]. Cleanup at the end becomes a single grep. Untagged logs survive; tagged logs die.

Perf branch. For performance regressions, logs are usually wrong. Instead: establish a baseline measurement (timing harness, performance.now(), profiler, query plan), then bisect. Measure first, fix second.

Phase 5: Fix + regression test

Write the regression test before the fix, but only if there is a correct seam for it.

A correct seam is one where the test exercises the real bug pattern as it occurs at the call site. If the only available seam is too shallow (single-caller test when the bug needs multiple callers, unit test that can't replicate the chain that triggered the bug), a regression test there gives false confidence.

If no correct seam exists, that itself is the finding. Note it. The codebase architecture is preventing the bug from being locked down. Flag this for the next phase.

If a correct seam exists:

  1. Turn the minimised repro into a failing test at that seam.
  2. Watch it fail. If you forced the red by mutating code or a fixture, diff against a pristine copy to prove the mutation landed before you trust it.
  3. Apply the fix.
  4. Watch it pass.
  5. Re-run the Phase 1 feedback loop against the original (un-minimised) scenario.

Phase 6: Cleanup

Required before declaring done:

  • Original repro no longer reproduces (re-run the Phase 1 loop)
  • Regression test passes (or absence of seam is documented)
  • All [DEBUG-...] instrumentation removed (grep the prefix)
  • Throwaway prototypes deleted (or moved to a clearly-marked debug location)
  • The hypothesis that turned out correct is stated in the commit / PR message, so the next debugger learns

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

ask-matt

무료요약 있음AI 평가 90점

아이디어 정리, 구현, 오류 조사에 맞는 관련 스킬과 사용 순서를 안내합니다. 작업의 규모와 단계에 따라 다음 절차를 선택하도록 돕습니다.

  • 아이디어부터 구현까지의 절차 선택
  • 오류 조사를 시작할 지점 찾기
  • 여러 세션에 걸친 개발 진행 방식 상담
mattpocock/skills29.6만2026년 10월 13일 업데이트

chief-of-staff

무료요약 있음AI 평가 60점

한 세션에서 장기 목표를 향해 여러 하위 에이전트의 작업을 조율합니다. 사용자와 대화를 이어가면서 다음 작업에도 도움이 될 환경과 공통 규칙을 개선합니다.

  • 장기 목표를 위한 작업 담당을 조율할 때
  • 백그라운드 작업 중에도 대화를 이어갈 때
  • 공통 규칙과 작업 환경을 개선할 때
mattpocock/skills29.6만2026년 10월 13일 업데이트

claude-handoff

무료요약 있음AI 평가 90점

진행 중인 대화를 인계용으로 요약하고 민감한 정보를 제외한 뒤 새 백그라운드 에이전트에 전달합니다. 다음 작업의 초점과 참고 자료를 정리해 현재 작업 위치에서 이어 갑니다.

  • 새 에이전트에 후속 작업 인계
  • 다음 세션의 작업 범위를 좁혀 인계
  • 다음 세션에 필요한 참고 자료 정리
mattpocock/skills29.6만2026년 10월 13일 업데이트

code-review

무료요약 있음AI 평가 90점

지정한 커밋이나 브랜치를 기준으로 코드 변경을 검토합니다. 문서화된 개발 규칙 준수와 요구 사항 구현을 별도로 확인하고 두 관점의 지적 사항을 나누어 보고합니다.

  • 브랜치나 PR의 변경 검토
  • 지정 커밋이나 태그 이후 변경 확인
  • 문서화된 개발 규칙과 대조
mattpocock/skills29.6만2026년 10월 13일 업데이트

codebase-design

무료요약 있음AI 평가 90점

호출자가 익혀야 할 사용법은 줄이고 복잡한 처리는 내부에 모으는 모듈 설계를 돕습니다. 공통 용어와 판단 기준으로 사용 편의성과 테스트 용이성을 검토합니다.

  • 모듈 호출 방법 간소화
  • 흩어진 복잡한 처리 통합
  • 구현을 교체할 위치 검토
mattpocock/skills29.6만2026년 10월 13일 업데이트

domain-modeling

무료요약 있음AI 평가 100점

구체적인 사례와 코드 대조로 프로젝트의 업무 용어와 개념 경계를 명확히 합니다. 합의한 정의를 용어집에 기록하고 필요에 따라 중요한 설계 결정의 이유도 남깁니다.

  • 모호한 업무 용어 정리
  • GLOSSARY.md 생성과 갱신
  • 업무 정의와 코드의 일치 여부 확인
mattpocock/skills29.6만2026년 10월 13일 업데이트

mattpocock의 스킬 모두 보기

이 스킬의 문제 신고