From odin
Hypothesis-driven defect isolation using stack-trace forensics, breakpoint strategy, state inspection, and root-cause confirmation via minimal repro. Apply when a test failure, crash, exception, wrong output, or intermittent flake has an unclear cause.
How this skill is triggered — by the user, by Claude, or both
Slash command
/odin:debugThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
A bug is a falsified assumption. Find the assumption, falsify it deliberately, observe the divergence, narrow until one line owns the lie. No speculation, no shotgun edits, no "fix and rerun" guessing.
A bug is a falsified assumption. Find the assumption, falsify it deliberately, observe the divergence, narrow until one line owns the lie. No speculation, no shotgun edits, no "fix and rerun" guessing.
Apply: test fails and cause unclear; production stack trace; intermittent / flaky behavior; wrong output without crash; regression after known commit window; heisenbug.
NOT apply: performance regression with correct outputs; security defect; symptom obvious from one-line read; architectural confusion.
git bisect for regressions.caused by chain encodes why; the stack encodes where.<inlined> markers signal source-line-to-instruction map is approximate.| Family | Live debugger | Postmortem / record | Remote attach |
|---|---|---|---|
| Systems (C/C++/Rust) | gdb, lldb, rust-gdb, rust-lldb | coredumpctl + gdb core, rr record/replay | gdb -p <pid> / lldb -p <pid> |
| Python | pdb, ipdb, pdbpp, breakpoint() | faulthandler, py-spy dump, traceback module | debugpy --listen |
| Go | dlv debug, dlv test, dlv attach <pid> | runtime/pprof, GOTRACEBACK=crash | dlv connect <addr> |
| Java/Kotlin | IntelliJ debugger, jdb | hs_err logs, JFR, heap dump (jmap) | JDWP -agentlib:jdwp=... |
| JavaScript/TypeScript | node --inspect, Chrome DevTools | --report-uncaught-exception reports | --inspect=0.0.0.0:9229 |
| OCaml | ocamldebug, Printexc.record_backtrace true | core file + ocaml-gdb, memtrace | ocamldebug -s <socket> |
Use procs (not ps) for PID. Use bat -P -p -n (not cat) for trace files. Use git grep -n -C 3 'pattern' (not grep) for callsites.
Before hypothesizing a fix, reason through the failure — SHORT-form KEYWORDS for trace notes, observe the symptoms, trace the execution path, break down where actual behavior diverges from expected, critically review each candidate cause, validate each hypothesis against the evidence. The root cause is the smallest explanation that accounts for all observed symptoms. For numeric calculation (timing math, bound arithmetic, off-by-N analysis), invoke fend per the baseline rule; never self-calculate. Causal reasoning and trace interpretation are in-head — they are not arithmetic.
npx claudepluginhub outlinedriven/odin-claude-plugin --plugin odinHypothesis-driven debugging methodology with ranked hypotheses, git bisect strategies, instrumentation planning, and minimal reproduction design. For intermittent failures, unclear stacktraces, performance regressions, and non-obvious bugs requiring systematic investigation.
Parses error messages, traces execution through stack traces, correlates logs to identify failure points, and applies systematic hypothesis-driven debugging to isolate and resolve bugs.
Guides active bug investigation using Code Complete's scientific debugging method: STABILIZE → LOCATE → HYPOTHESIZE → EXPERIMENT → FIX → TEST → SEARCH. Runs the failing test first, then forms testable hypotheses before editing.