원클릭으로
debug-issue
Use when encountering unexpected behavior, failing tests, API errors, or runtime panics in Tundra — before proposing any fix
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Use when encountering unexpected behavior, failing tests, API errors, or runtime panics in Tundra — before proposing any fix
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Use when you need to understand codebase structure, locate code, or trace relationships before making changes or answering architecture questions
Use when planning or executing a refactor — rename, extract, move, or delete code — to prevent breaking callers or missing affected files
Use after completing a feature or before merging to perform a risk-scored review of changed code, check test coverage, and assess blast radius
| name | debug-issue |
| description | Use when encountering unexpected behavior, failing tests, API errors, or runtime panics in Tundra — before proposing any fix |
Graph-powered debugging traces call chains and recent changes in seconds. Random guessing on a codebase this size wastes hours.
Core principle: Understand before fixing. A wrong fix in auth, crypto, or migrations can corrupt data or create security holes.
get_minimal_context(task="debug <symptom description>")
Always first. Orients graph for your specific investigation.
semantic_search_nodes(query="<error message fragment or function name>")
Find the exact node. Note its file path and line.
detect_changes()
Most bugs are introduced by recent changes. High-risk score on a recently changed function near the failure site = strong lead.
query_graph(node_id="...", pattern="callers_of") // who triggered this
query_graph(node_id="...", pattern="callees_of") // what it delegates to
Trace up until you find where bad data originates. Fix at source, not at symptom.
get_affected_flows(changed_nodes=[...])
Confirms which execution path passes through the broken function. Helps rule out unrelated code.
get_review_context(node_ids=["<failing_node_id>"])
Don't read entire files. One node at a time until root cause is clear.
| Symptom | Where to look first |
|---|---|
| 401 on valid session | tundrad-auth session extractor, cookie name |
| 403 unexpected | RBAC scope check in handler, authz_matrix.rs test coverage |
| 500 from API handler | unwrap() on None, missing ? propagation |
Rust compile error in tundrad-api | Check routes/mod.rs pub declaration + lib.rs route registration |
| Panel route blank / crashes | routeTree.gen.ts type map mismatch; check FileRoutesByFullPath |
| TanStack Query stuck loading | queryFn fetch URL typo, refetchInterval returning wrong value |
| Migration fails | NOT NULL without DEFAULT, or type mismatch on existing rows |
| Encrypted field panics | Wrong EncryptedField<T> type parameter, or master key format |
| WP provisioning stuck | State never updated to active/error — check tokio::spawn task panicked silently |
Docker: sqlx: not found | /cargo/bin not in PATH; check docker-compose.override.yml |
Only then: write a minimal failing test (per superpowers:test-driven-development), then fix.