Use when errors occur deep in execution - traces bugs backward through call stack to find original trigger, not just symptom
View on GitHubwithzombies/hyperpowers
withzombies-hyper
January 21, 2026
Select agents to install to:
npx add-skill https://github.com/withzombies/hyperpowers/blob/main/skills/root-cause-tracing/SKILL.md -a claude-code --skill root-cause-tracingInstallation paths:
.claude/skills/root-cause-tracing/<skill_overview> Bugs manifest deep in the call stack; trace backward until you find the original trigger, then fix at source, not where error appears. </skill_overview> <rigidity_level> MEDIUM FREEDOM - Follow the backward tracing process strictly, but adapt instrumentation and debugging techniques to your language and tools. </rigidity_level> <quick_reference> | Step | Action | Question | |------|--------|----------| | 1 | Read error completely | What failed and where? | | 2 | Find immediate cause | What code directly threw this? | | 3 | Trace backward one level | What called this code? | | 4 | Keep tracing up stack | What called that? | | 5 | Find where bad data originated | Where was invalid value created? | | 6 | Fix at source | Address root cause | | 7 | Add defense at each layer | Validate assumptions as backup | **Core rule:** Never fix just where error appears. Fix where problem originates. </quick_reference> <when_to_use> - Error happens deep in execution (not at entry point) - Stack trace shows long call chain - Unclear where invalid data originated - Need to find which test/code triggers problem - Error message points to utility/library code **Example symptoms:** - "Database rejects empty string" ← Where did empty string come from? - "File not found: ''" ← Why is path empty? - "Invalid argument to function" ← Who passed invalid argument? - "Null pointer dereference" ← What should have been initialized? </when_to_use> <the_process> ## 1. Observe the Symptom Read the complete error: ``` Error: Invalid email format: "" at validateEmail (validator.ts:42) at UserService.create (user-service.ts:18) at ApiHandler.createUser (api-handler.ts:67) at HttpServer.handleRequest (server.ts:123) at TestCase.test_create_user (user.test.ts:10) ``` **Symptom:** Email validation fails on empty string **Location:** Deep in validator utility **DON'T fix here yet.** This might be symptom, not source. --- ## 2. Find Immediate Cause What code directly caus