ワンクリックで
systematic-debugging
Use when encountering any bug, test failure, or unexpected behavior, before proposing fixes.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Use when encountering any bug, test failure, or unexpected behavior, before proposing fixes.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Use when starting work in a repository with Agent Powerups installed, when a task may match a reusable local skill, command, workflow, hook recipe, AGENTS.md template, or MCP feature.
Use when validating rendered web pages, local dev servers, browser automation, screenshots, forms, auth sessions, or UI evidence with strict browser safety boundaries.
Use when designing or reviewing filesystem MCP access, path boundaries, allowed roots, method allowlists, and safe local file operations.
Use when implementing any feature or bugfix, before writing implementation code
Use when completing tasks, implementing major features, or before merging to verify work meets requirements.
Use when receiving code review feedback, before implementing suggestions — requires technical verification and reasoned pushback, not performative agreement or blind implementation.
| name | systematic-debugging |
| description | Use when encountering any bug, test failure, or unexpected behavior, before proposing fixes. |
Find the root cause of any bug before attempting a fix. Random fixes waste time and create new bugs. Symptom fixes are failure.
Core principle: ALWAYS find root cause before attempting fixes.
Use for ANY technical issue:
Use this especially when:
Do not skip when:
You MUST complete each phase before proceeding to the next.
Before attempting ANY fix:
Read error messages carefully — Don't skip past errors or warnings. Read stack traces completely. Note line numbers, file paths, error codes.
Reproduce consistently — Can you trigger it reliably? What are the exact steps? If not reproducible: gather more data, don't guess.
Check recent changes — What changed that could cause this? Git diff, recent commits, new dependencies, config changes, environmental differences.
Gather evidence in multi-component systems — When the system has multiple components (CI → build → signing, API → service → database):
For EACH component boundary:
- Log what data enters the component
- Log what data exits the component
- Verify environment/config propagation
- Check state at each layer
Run once to gather evidence showing WHERE it breaks.
Then analyze to identify the failing component.
Then investigate that specific component.
Trace data flow — Where does the bad value originate? What called this with the bad value? Keep tracing up until you find the source. Fix at source, not at symptom. See references/root-cause-tracing.md for the complete backward tracing technique.
Create a failing test case — Simplest possible reproduction. Automated test if possible. Must exist before fixing.
Implement a single fix — Address the root cause identified. One change at a time. No "while I'm here" improvements.
Verify the fix — Test passes? No other tests broken? Issue actually resolved?
If fix doesn't work — STOP. Count how many fixes you've tried.
If 3+ fixes failed: question the architecture — Each fix revealing new shared state or coupling elsewhere is a sign of an architectural problem, not a hypothesis failure. Stop and discuss with the team before attempting another fix.
Root cause: <what caused the bug — specific, not vague>
Evidence: <what you observed that confirmed the hypothesis>
Fix: <what was changed and where>
Test: <test added or updated>
Verification: <how fix was confirmed>
Red flags — STOP and return to Phase 1:
Common rationalizations:
| Excuse | Reality |
|---|---|
| "Issue is simple, don't need process" | Simple issues have root causes too. Process is fast for simple bugs. |
| "Emergency, no time for process" | Systematic debugging is faster than guess-and-check thrashing. |
| "Just try this first, then investigate" | First fix sets the pattern. Do it right from the start. |
| "I'll write test after confirming fix works" | Untested fixes don't stick. Test first proves it. |
| "Multiple fixes at once saves time" | Can't isolate what worked. Causes new bugs. |
| "One more fix attempt" (after 2+ failures) | 3+ failures = architectural problem. Question pattern, don't fix again. |
Techniques available in references/:
root-cause-tracing.md — Trace bugs backward through the call stack to find the original trigger.defense-in-depth.md — Add validation at multiple layers after finding the root cause.condition-based-waiting.md — Replace arbitrary timeouts with condition polling to fix flaky tests.find-polluter.sh — Bisection script to identify which test creates unwanted files or state.Example implementation in examples/:
condition-based-waiting-example.ts — Complete TypeScript implementation of condition-based waiting utilities.