Help us improve
Share bugs, ideas, or general feedback.
From stv
Guides blackbox debugging: confirms AS-IS/TO-BE symptoms, traces callstacks step-by-step in trace.md, explores branches heuristically then exhaustively, verifies fixes via red-green tests.
npx claudepluginhub 2lab-ai/oh-my-claude --plugin stvHow this skill is triggered — by the user, by Claude, or both
Slash command
/stv:debugThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
A debugging methodology that records everything like an airplane black box while hunting for the root cause.
Enforces systematic root cause analysis for bugs, test failures, unexpected behavior, and regressions via five-phase workflow: Understand, Reproduce, Isolate, Fix, Verify.
Systematic debugging methodology for finding and fixing bugs through root cause analysis. Covers reproduce-investigate-hypothesize-fix-prevent workflow, evidence-based diagnosis, and bug category strategies.
Forces a scientific-method loop (Observe → Hypothesize → Experiment → Conclude) to debug non-trivial bugs. Prevents guessing by ensuring evidence before fixes.
Share bugs, ideas, or general feedback.
A debugging methodology that records everything like an airplane black box while hunting for the root cause. Core constraint: An unexplored branch is an unexamined branch.
Before starting, always confirm with the user:
The gap between AS-IS and TO-BE is the bug. Do not start debugging without confirmation.
Create a debugging log file:
~/.claude/stv/debugging/{issueID}-{YYYYMMDDhhmm}/trace.md
Follow the callstack one step at a time from the entry point, recording in this file.
Once a hypothesis is identified:
The above blackbox method covers how to trace. These principles cover how to think while debugging.
setTimeout/sleep 대신 조건 폴링을 써라.waitFor(() => condition, timeout) — 10ms 간격 폴링 + 타임아웃 필수.# Bug Trace: ISSUE-1234 — Soccer team names appear in results
## AS-IS: Movie search results include soccer team names mixed in
## TO-BE: Movie search results should only contain movies
## Phase 1: Heuristic Top-3
### Hypothesis 1: Search query runs without category filter
- `SearchController.cs:45` → calls `SearchService.Query()`
- `SearchService.cs:112` → check categoryFilter parameter → **passed as null** ✅ Likely
### Hypothesis 2: DB table join is incorrect
- `SearchRepository.cs:78` → check SQL → join is correct ❌ Ruled out
### Hypothesis 3: Response mapping mixes in other entities
- `SearchMapper.cs:34` → check mapping logic → correct ❌ Ruled out
## Conclusion: Hypothesis 1 confirmed — categoryFilter passed as null to SearchService.Query()