plugins/stv/skills/debug/SKILL.md
Trigger this skill in any situation where code behaves differently from expectations like "why does this happen", "find the bug", "form a hypothesis", "follow the callstack", "trace back from the result". Even without the explicit word "debugging", trigger on symptom reports.
npx skillsauth add 2lab-ai/oh-my-claude debugInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
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 under the current working directory (NOT the home directory):
./.claude/stv/debugging/{issueID}-{YYYYMMDDhhmm}/trace.md
The ./ prefix is intentional — every stv artifact (spec.md, trace.md, debugging trace) lives under the active CWD so multi-tenant / multi-session agents stay isolated. The tradeoff is that the same {issueID} started in different working trees yields separate trace dirs; that is the intended isolation model, not a bug.
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()
development
Problem space exploration mode. Stance, not workflow. Read-only codebase investigation before committing to spec. Triggers on 'explore this', 'investigate', 'understand the problem', 'what are we dealing with', 'before we spec this'.
tools
유저의 요구가 불명확할때 트리거. 애매한 요청, 다의적 지시, 범위 불분명한 작업에서 Context Brief를 생성하여 명확화한다.
development
STV Phase 3: Implementation (GREEN) + Trace Verify loop. Implements code to pass contract tests, then verifies implementation matches trace document. Supports non-linear flow — returning to spec/trace when implementation reveals errors in earlier artifacts.
testing
Triggers on "check the PR", "is it implemented per the issue", "compare spec vs implementation", "compare JIRA and PR", "verify", "validate". Final checkpoint before PR merge using 3-dimensional verification (Completeness, Correctness, Coherence).