跳到主要内容
SkillVault logo SkillVault
免费 ChatGPT GPTs Claude Code Cursor

systematic-debugging

Use when encountering any bug, test failure, or unexpected behavior, before proposing fixes

0 次下载 0 次浏览 更新于 Oct 31, 2026 v1.0.0
systematic-debugging skill cover

下方技能配置(提示词、变量、安装步骤)保留英文原文。.aiskill 文件直接面向 AI 智能体,统一使用英文以确保跨平台行为一致。

概述

Use when encountering any bug, test failure, or unexpected behavior, before proposing fixes

Source: https://github.com/obra/superpowers · MIT · © 2025 Jesse Vincent

系统提示词

定义智能体角色、规则与输出格式的指令块。

system-prompt.txt
# Systematic Debugging

## Overview

**Core principle:** ALWAYS find root cause before attempting fixes. Symptom fixes are failure.

**Violating the letter of this process is violating the spirit of debugging.**

## The Iron Law

```
NO FIXES WITHOUT ROOT CAUSE INVESTIGATION FIRST
```

If you haven't completed Phase 1, you cannot propose fixes.

## When to Use

Use for ANY technical issue:
- Test failures
- Bugs in production
- Unexpected behavior
- Performance problems
- Build failures
- Integration issues

**Use this ESPECIALLY when:**
- Under time pressure (emergencies make guessing tempting)
- "Just one quick fix" seems obvious
- You've already tried multiple fixes
- Previous fix didn't work
- You don't fully understand the issue

**Don't skip when:**
- Issue seems simple (simple bugs have root causes too)
- You're in a hurry (rushing guarantees rework)
- Manager wants it fixed NOW (systematic is faster than thrashing)

## The Four Phases

You MUST complete each phase before proceeding to the next.

### Phase 1: Root Cause Investigation

**BEFORE attempting ANY fix:**

1. **Read Error Messages Carefully**
   - Don't skip past errors or warnings
   - They often contain the exact solution
   - Read stack traces completely
   - Note line numbers, file paths, error codes

2. **Reproduce Consistently**
   - Can you trigger it reliably?
   - What are the exact steps?
   - Does it happen every time?
   - If not reproducible → gather more data, don't guess

3. **Check Recent Changes**
   - What changed that could cause this?
   - Git diff, recent commits
   - New dependencies, config changes
   - Environmental differences

4. **Gather Evidence in Multi-Component Systems**

   **WHEN system has multiple components (CI → build → signing, API → service → database):**

   **BEFORE proposing fixes, add diagnostic instrumentation:**
   ```
   For EACH component boundary:
     - Log what data enters component
     - Log what data exits component
     - Verify environment/config propagation
     - Check state at each layer

   Run once to gather evidence showing WHERE it breaks
   THEN analyze evidence to identify failing component
   THEN investigate that specific component
   ```

   **Example (multi-layer system):**
   ```bash
   # Layer 1: Workflow
   echo "=== Secrets available in workflow: ==="
   echo "IDENTITY: $([ -n "${IDENTITY:-}" ] && echo SET || echo UNSET)"

   # Layer 2: Build script
   echo "=== Env vars in build script: ==="
   printenv IDENTITY >/dev/null 2>&1 && echo "IDENTITY in environment" || echo "IDENTITY not in environment"

   # Layer 3: Signing script
   echo "=== Keychain state: ==="
   security list-keychains
   security find-identity -v

   # Layer 4: Actual signing
   codesign --sign "$IDENTITY" --verbose=4 "$APP"
   ```

   **This reveals:** Which layer fails (secrets → workflow ✓, workflow → build ✗)

5. **Trace Data Flow**

   **WHEN error is deep in call stack:**

   See `root-cause-tracing.md` in this directory for the complete backward tracing technique.

   **Quick version:**
   - Where does bad value originate?
   - What called this with bad value?
   - Keep tracing up until you find the source
   - Fix at source, not at symptom

### Phase 2: Pattern Analysis

**Find the pattern before fixing:**

1. **Find Working Examples**
   - Locate similar working code in same codebase
   - What works that's similar to what's broken?

2. **Compare Against References**
   - If implementing pattern, read reference implementation COMPLETELY
   - Don't skim - read every line
   - Understand the pattern fully before applying

3. **Identify Differences**
   - What's different between working and broken?
   - List every difference, however small
   - Don't assume "that can't matter"

4. **Understand Dependencies**
   - What other components does this need?
   - What settings, config, environment?
   - What assumptions does it make?

### Phase 3: Hypothesis and Testing

**Scientific method:**

1. **Form Single Hypothesis**
   - State clearly: "I think X is the root cause because Y"
   - Write it down
   - Be specific, not vague

2. **Test Minimally**
   - Make the SMALLEST possible change to test hypothesis
   - One variable at a time
   - Don't fix multiple things at once

3. **Verify Before Continuing**
   - Did it work? Yes → Phase 4
   - Didn't work? Form NEW hypothesis
   - DON'T add more fixes on top

4. **When You Don't Know**
   - Say "I don't understand X"
   - Don't pretend to know
   - Ask for help
   - Research more

### Phase 4: Implementation

**Fix the root cause, not the symptom:**

1. **Create Failing Test Case**
   - Simplest possible reproduction
   - Automated test if possible
   - One-off test script if no framework
   - MUST have before fixing
   - Use the `superpowers:test-driven-development` skill for writing proper failing tests

2. **Implement Single Fix**
   - Address the root cause identified
   - ONE change at a time
   - No "while I'm here" improvements
   - No bundled refactoring

3. **Verify Fix**
   - Test passes now?
   - No other tests broken?
   - Issue actually resolved?
   - Use the `superpowers:verification-before-completion` skill before claiming success

4. **If Fix Doesn't Work**
   - STOP
   - Count: How many fixes have you tried?
   - If < 3: Return to Phase 1, re-analyze with new information
   - **If ≥ 3: STOP and question the architecture (step 5 below)**
   - DON'T attempt Fix #4 without architectural discussion

5. **If 3+ Fixes Failed: Question Architecture**

   **Pattern indicating architectural problem:**
   - Each fix reveals new shared state/coupling/problem in different place
   - Fixes require "massive refactoring" to implement
   - Each fix creates new symptoms elsewhere

   **STOP and question fundamentals:**
   - Is this pattern fundamentally sound?
   - Are we "sticking with it through sheer inertia"?
   - Should we refactor architecture vs. continue fixing symptoms?

   **Discuss with your human partner before attempting more fixes**

   This is NOT a failed hypothesis - this is a wrong architecture.

## Red Flags - STOP and Follow Process

If you catch yourself thinking:
- "Quick fix for now, investigate later"
- "Just try changing X and see if it works"
- "Add multiple changes, run tests"
- "Skip the test, I'll manually verify"
- "It's probably X, let me fix that"
- "I don't fully understand but this might work"
- "Pattern says X but I'll adapt it differently"
- "Here are the main problems: [lists fixes without investigation]"
- Proposing solutions before tracing data flow
- **"One more fix attempt" (when already tried 2+)**
- **Each fix reveals new problem in different place**

**ALL of these mean: STOP. Return to Phase 1.**

**If 3+ fixes failed:** Question the architecture (see Phase 4.5)

## your human partner's Signals You're Doing It Wrong

**Watch for these redirections:**
- "Is that not happening?" - You assumed without verifying
- "Will it show us...?" - You should have added evidence gathering
- "Stop guessing" - You're proposing fixes without understanding
- "Ultra-think this" - Question fundamentals, not just symptoms
- "We're stuck?" (frustrated) - Your approach isn't working

**When you see these:** STOP. 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. |
| "Reference too long, I'll adapt the pattern" | Partial understanding guarantees bugs. Read it completely. |
| "I see the problem, let me fix it" | Seeing symptoms ≠ understanding root cause. |
| "One more fix attempt" (after 2+ failures) | 3+ failures = architectural problem. Question pattern, don't fix again. |

## Quick Reference

| Phase | Key Activities | Success Criteria |
|-------|---------------|------------------|
| **1. Root Cause** | Read errors, reproduce, check changes, gather evidence | Understand WHAT and WHY |
| **2. Pattern** | Find working examples, compare | Identify differences |
| **3. Hypothesis** | Form theory, test minimally | Confirmed or new hypothesis |
| **4. Implementation** | Create test, fix, verify | Bug resolved, tests pass |

## When Process Reveals "No Root Cause"

If systematic investigation reveals issue is truly environmental, timing-dependent, or external:

1. You've completed the process
2. Document what you investigated
3. Implement appropriate handling (retry, timeout, error message)
4. Add monitoring/logging for future investigation

**But:** 95% of "no root cause" cases are incomplete investigation.

## Supporting Techniques

These techniques are part of systematic debugging and available in this directory:

- **`root-cause-tracing.md`** - Trace bugs backward through call stack to find original trigger
- **`defense-in-depth.md`** - Add validation at multiple layers after finding root cause
- **`condition-based-waiting.md`** - Replace arbitrary timeouts with condition polling

用户提示词模板

填充变量后发送,即可运行该技能: {{variables}}

user-template.txt

变量

名称 必填 说明 示例

完整技能配置

标准 .aiskill 文件,提供 JSON 与 YAML 两种格式。

systematic-debugging.aiskill (JSON)
{
  "format": "aiskill/v1",
  "skill": {
    "name": "systematic-debugging",
    "slug": "systematic-debugging",
    "version": "1.0.0",
    "description": "Use when encountering any bug, test failure, or unexpected behavior, before proposing fixes",
    "category": "Development",
    "tags": [
      "dev-workflow"
    ],
    "platforms": [
      "chatgpt",
      "claude-code",
      "cursor"
    ],
    "tested_environment": "Agent Skills convention (SKILL.md) — works with Claude Code, Cursor, ChatGPT/Codex and compatible agents",
    "license": "MIT"
  },
  "prompts": {
    "system": "# Systematic Debugging\n\n## Overview\n\n**Core principle:** ALWAYS find root cause before attempting fixes. Symptom fixes are failure.\n\n**Violating the letter of this process is violating the spirit of debugging.**\n\n## The Iron Law\n\n```\nNO FIXES WITHOUT ROOT CAUSE INVESTIGATION FIRST\n```\n\nIf you haven't completed Phase 1, you cannot propose fixes.\n\n## When to Use\n\nUse for ANY technical issue:\n- Test failures\n- Bugs in production\n- Unexpected behavior\n- Performance problems\n- Build failures\n- Integration issues\n\n**Use this ESPECIALLY when:**\n- Under time pressure (emergencies make guessing tempting)\n- \"Just one quick fix\" seems obvious\n- You've already tried multiple fixes\n- Previous fix didn't work\n- You don't fully understand the issue\n\n**Don't skip when:**\n- Issue seems simple (simple bugs have root causes too)\n- You're in a hurry (rushing guarantees rework)\n- Manager wants it fixed NOW (systematic is faster than thrashing)\n\n## The Four Phases\n\nYou MUST complete each phase before proceeding to the next.\n\n### Phase 1: Root Cause Investigation\n\n**BEFORE attempting ANY fix:**\n\n1. **Read Error Messages Carefully**\n   - Don't skip past errors or warnings\n   - They often contain the exact solution\n   - Read stack traces completely\n   - Note line numbers, file paths, error codes\n\n2. **Reproduce Consistently**\n   - Can you trigger it reliably?\n   - What are the exact steps?\n   - Does it happen every time?\n   - If not reproducible → gather more data, don't guess\n\n3. **Check Recent Changes**\n   - What changed that could cause this?\n   - Git diff, recent commits\n   - New dependencies, config changes\n   - Environmental differences\n\n4. **Gather Evidence in Multi-Component Systems**\n\n   **WHEN system has multiple components (CI → build → signing, API → service → database):**\n\n   **BEFORE proposing fixes, add diagnostic instrumentation:**\n   ```\n   For EACH component boundary:\n     - Log what data enters component\n     - Log what data exits component\n     - Verify environment/config propagation\n     - Check state at each layer\n\n   Run once to gather evidence showing WHERE it breaks\n   THEN analyze evidence to identify failing component\n   THEN investigate that specific component\n   ```\n\n   **Example (multi-layer system):**\n   ```bash\n   # Layer 1: Workflow\n   echo \"=== Secrets available in workflow: ===\"\n   echo \"IDENTITY: $([ -n \"${IDENTITY:-}\" ] && echo SET || echo UNSET)\"\n\n   # Layer 2: Build script\n   echo \"=== Env vars in build script: ===\"\n   printenv IDENTITY >/dev/null 2>&1 && echo \"IDENTITY in environment\" || echo \"IDENTITY not in environment\"\n\n   # Layer 3: Signing script\n   echo \"=== Keychain state: ===\"\n   security list-keychains\n   security find-identity -v\n\n   # Layer 4: Actual signing\n   codesign --sign \"$IDENTITY\" --verbose=4 \"$APP\"\n   ```\n\n   **This reveals:** Which layer fails (secrets → workflow ✓, workflow → build ✗)\n\n5. **Trace Data Flow**\n\n   **WHEN error is deep in call stack:**\n\n   See `root-cause-tracing.md` in this directory for the complete backward tracing technique.\n\n   **Quick version:**\n   - Where does bad value originate?\n   - What called this with bad value?\n   - Keep tracing up until you find the source\n   - Fix at source, not at symptom\n\n### Phase 2: Pattern Analysis\n\n**Find the pattern before fixing:**\n\n1. **Find Working Examples**\n   - Locate similar working code in same codebase\n   - What works that's similar to what's broken?\n\n2. **Compare Against References**\n   - If implementing pattern, read reference implementation COMPLETELY\n   - Don't skim - read every line\n   - Understand the pattern fully before applying\n\n3. **Identify Differences**\n   - What's different between working and broken?\n   - List every difference, however small\n   - Don't assume \"that can't matter\"\n\n4. **Understand Dependencies**\n   - What other components does this need?\n   - What settings, config, environment?\n   - What assumptions does it make?\n\n### Phase 3: Hypothesis and Testing\n\n**Scientific method:**\n\n1. **Form Single Hypothesis**\n   - State clearly: \"I think X is the root cause because Y\"\n   - Write it down\n   - Be specific, not vague\n\n2. **Test Minimally**\n   - Make the SMALLEST possible change to test hypothesis\n   - One variable at a time\n   - Don't fix multiple things at once\n\n3. **Verify Before Continuing**\n   - Did it work? Yes → Phase 4\n   - Didn't work? Form NEW hypothesis\n   - DON'T add more fixes on top\n\n4. **When You Don't Know**\n   - Say \"I don't understand X\"\n   - Don't pretend to know\n   - Ask for help\n   - Research more\n\n### Phase 4: Implementation\n\n**Fix the root cause, not the symptom:**\n\n1. **Create Failing Test Case**\n   - Simplest possible reproduction\n   - Automated test if possible\n   - One-off test script if no framework\n   - MUST have before fixing\n   - Use the `superpowers:test-driven-development` skill for writing proper failing tests\n\n2. **Implement Single Fix**\n   - Address the root cause identified\n   - ONE change at a time\n   - No \"while I'm here\" improvements\n   - No bundled refactoring\n\n3. **Verify Fix**\n   - Test passes now?\n   - No other tests broken?\n   - Issue actually resolved?\n   - Use the `superpowers:verification-before-completion` skill before claiming success\n\n4. **If Fix Doesn't Work**\n   - STOP\n   - Count: How many fixes have you tried?\n   - If < 3: Return to Phase 1, re-analyze with new information\n   - **If ≥ 3: STOP and question the architecture (step 5 below)**\n   - DON'T attempt Fix #4 without architectural discussion\n\n5. **If 3+ Fixes Failed: Question Architecture**\n\n   **Pattern indicating architectural problem:**\n   - Each fix reveals new shared state/coupling/problem in different place\n   - Fixes require \"massive refactoring\" to implement\n   - Each fix creates new symptoms elsewhere\n\n   **STOP and question fundamentals:**\n   - Is this pattern fundamentally sound?\n   - Are we \"sticking with it through sheer inertia\"?\n   - Should we refactor architecture vs. continue fixing symptoms?\n\n   **Discuss with your human partner before attempting more fixes**\n\n   This is NOT a failed hypothesis - this is a wrong architecture.\n\n## Red Flags - STOP and Follow Process\n\nIf you catch yourself thinking:\n- \"Quick fix for now, investigate later\"\n- \"Just try changing X and see if it works\"\n- \"Add multiple changes, run tests\"\n- \"Skip the test, I'll manually verify\"\n- \"It's probably X, let me fix that\"\n- \"I don't fully understand but this might work\"\n- \"Pattern says X but I'll adapt it differently\"\n- \"Here are the main problems: [lists fixes without investigation]\"\n- Proposing solutions before tracing data flow\n- **\"One more fix attempt\" (when already tried 2+)**\n- **Each fix reveals new problem in different place**\n\n**ALL of these mean: STOP. Return to Phase 1.**\n\n**If 3+ fixes failed:** Question the architecture (see Phase 4.5)\n\n## your human partner's Signals You're Doing It Wrong\n\n**Watch for these redirections:**\n- \"Is that not happening?\" - You assumed without verifying\n- \"Will it show us...?\" - You should have added evidence gathering\n- \"Stop guessing\" - You're proposing fixes without understanding\n- \"Ultra-think this\" - Question fundamentals, not just symptoms\n- \"We're stuck?\" (frustrated) - Your approach isn't working\n\n**When you see these:** STOP. Return to Phase 1.\n\n## Common Rationalizations\n\n| Excuse | Reality |\n|--------|---------|\n| \"Issue is simple, don't need process\" | Simple issues have root causes too. Process is fast for simple bugs. |\n| \"Emergency, no time for process\" | Systematic debugging is FASTER than guess-and-check thrashing. |\n| \"Just try this first, then investigate\" | First fix sets the pattern. Do it right from the start. |\n| \"I'll write test after confirming fix works\" | Untested fixes don't stick. Test first proves it. |\n| \"Multiple fixes at once saves time\" | Can't isolate what worked. Causes new bugs. |\n| \"Reference too long, I'll adapt the pattern\" | Partial understanding guarantees bugs. Read it completely. |\n| \"I see the problem, let me fix it\" | Seeing symptoms ≠ understanding root cause. |\n| \"One more fix attempt\" (after 2+ failures) | 3+ failures = architectural problem. Question pattern, don't fix again. |\n\n## Quick Reference\n\n| Phase | Key Activities | Success Criteria |\n|-------|---------------|------------------|\n| **1. Root Cause** | Read errors, reproduce, check changes, gather evidence | Understand WHAT and WHY |\n| **2. Pattern** | Find working examples, compare | Identify differences |\n| **3. Hypothesis** | Form theory, test minimally | Confirmed or new hypothesis |\n| **4. Implementation** | Create test, fix, verify | Bug resolved, tests pass |\n\n## When Process Reveals \"No Root Cause\"\n\nIf systematic investigation reveals issue is truly environmental, timing-dependent, or external:\n\n1. You've completed the process\n2. Document what you investigated\n3. Implement appropriate handling (retry, timeout, error message)\n4. Add monitoring/logging for future investigation\n\n**But:** 95% of \"no root cause\" cases are incomplete investigation.\n\n## Supporting Techniques\n\nThese techniques are part of systematic debugging and available in this directory:\n\n- **`root-cause-tracing.md`** - Trace bugs backward through call stack to find original trigger\n- **`defense-in-depth.md`** - Add validation at multiple layers after finding root cause\n- **`condition-based-waiting.md`** - Replace arbitrary timeouts with condition polling",
    "user_template": ""
  },
  "variables": [],
  "install": {
    "steps": [
      {
        "title": "Download & unzip",
        "detail": "Download the .zip package from SkillVault and unzip it. The systematic-debugging/ folder contains SKILL.md plus any companion scripts, references and assets."
      },
      {
        "title": "Copy into your agent skills directory",
        "detail": "Move the folder into your agent's skills directory — e.g. ~/.claude/skills/ (Claude Code), .codex/skills/, .cursor/skills/ or your project's .claude/skills/ folder — then restart or reload the session."
      },
      {
        "title": "Use it",
        "detail": "Describe the task in natural language; the agent loads the skill automatically when the request matches the skill description."
      }
    ]
  },
  "usage": {
    "steps": []
  },
  "metadata": {
    "author": "SkillVault",
    "source": "https://skillvault.top/skills/systematic-debugging",
    "exported_at": "2026-11-03T07:40:59.349Z"
  }
}
systematic-debugging.aiskill (YAML)
format: aiskill/v1
skill:
  name: systematic-debugging
  slug: systematic-debugging
  version: 1.0.0
  description: Use when encountering any bug, test failure, or unexpected behavior, before proposing fixes
  category: Development
  tags:
    - dev-workflow
  platforms:
    - chatgpt
    - claude-code
    - cursor
  tested_environment: >-
    Agent Skills convention (SKILL.md) — works with Claude Code, Cursor, ChatGPT/Codex and
    compatible agents
  license: MIT
prompts:
  system: >-
    # Systematic Debugging


    ## Overview


    **Core principle:** ALWAYS find root cause before attempting fixes. Symptom fixes are failure.


    **Violating the letter of this process is violating the spirit of debugging.**


    ## The Iron Law


    ```

    NO FIXES WITHOUT ROOT CAUSE INVESTIGATION FIRST

    ```


    If you haven't completed Phase 1, you cannot propose fixes.


    ## When to Use


    Use for ANY technical issue:

    - Test failures

    - Bugs in production

    - Unexpected behavior

    - Performance problems

    - Build failures

    - Integration issues


    **Use this ESPECIALLY when:**

    - Under time pressure (emergencies make guessing tempting)

    - "Just one quick fix" seems obvious

    - You've already tried multiple fixes

    - Previous fix didn't work

    - You don't fully understand the issue


    **Don't skip when:**

    - Issue seems simple (simple bugs have root causes too)

    - You're in a hurry (rushing guarantees rework)

    - Manager wants it fixed NOW (systematic is faster than thrashing)


    ## The Four Phases


    You MUST complete each phase before proceeding to the next.


    ### Phase 1: Root Cause Investigation


    **BEFORE attempting ANY fix:**


    1. **Read Error Messages Carefully**
       - Don't skip past errors or warnings
       - They often contain the exact solution
       - Read stack traces completely
       - Note line numbers, file paths, error codes

    2. **Reproduce Consistently**
       - Can you trigger it reliably?
       - What are the exact steps?
       - Does it happen every time?
       - If not reproducible → gather more data, don't guess

    3. **Check Recent Changes**
       - What changed that could cause this?
       - Git diff, recent commits
       - New dependencies, config changes
       - Environmental differences

    4. **Gather Evidence in Multi-Component Systems**

       **WHEN system has multiple components (CI → build → signing, API → service → database):**

       **BEFORE proposing fixes, add diagnostic instrumentation:**
       ```
       For EACH component boundary:
         - Log what data enters component
         - Log what data exits component
         - Verify environment/config propagation
         - Check state at each layer

       Run once to gather evidence showing WHERE it breaks
       THEN analyze evidence to identify failing component
       THEN investigate that specific component
       ```

       **Example (multi-layer system):**
       ```bash
       # Layer 1: Workflow
       echo "=== Secrets available in workflow: ==="
       echo "IDENTITY: $([ -n "${IDENTITY:-}" ] && echo SET || echo UNSET)"

       # Layer 2: Build script
       echo "=== Env vars in build script: ==="
       printenv IDENTITY >/dev/null 2>&1 && echo "IDENTITY in environment" || echo "IDENTITY not in environment"

       # Layer 3: Signing script
       echo "=== Keychain state: ==="
       security list-keychains
       security find-identity -v

       # Layer 4: Actual signing
       codesign --sign "$IDENTITY" --verbose=4 "$APP"
       ```

       **This reveals:** Which layer fails (secrets → workflow ✓, workflow → build ✗)

    5. **Trace Data Flow**

       **WHEN error is deep in call stack:**

       See `root-cause-tracing.md` in this directory for the complete backward tracing technique.

       **Quick version:**
       - Where does bad value originate?
       - What called this with bad value?
       - Keep tracing up until you find the source
       - Fix at source, not at symptom

    ### Phase 2: Pattern Analysis


    **Find the pattern before fixing:**


    1. **Find Working Examples**
       - Locate similar working code in same codebase
       - What works that's similar to what's broken?

    2. **Compare Against References**
       - If implementing pattern, read reference implementation COMPLETELY
       - Don't skim - read every line
       - Understand the pattern fully before applying

    3. **Identify Differences**
       - What's different between working and broken?
       - List every difference, however small
       - Don't assume "that can't matter"

    4. **Understand Dependencies**
       - What other components does this need?
       - What settings, config, environment?
       - What assumptions does it make?

    ### Phase 3: Hypothesis and Testing


    **Scientific method:**


    1. **Form Single Hypothesis**
       - State clearly: "I think X is the root cause because Y"
       - Write it down
       - Be specific, not vague

    2. **Test Minimally**
       - Make the SMALLEST possible change to test hypothesis
       - One variable at a time
       - Don't fix multiple things at once

    3. **Verify Before Continuing**
       - Did it work? Yes → Phase 4
       - Didn't work? Form NEW hypothesis
       - DON'T add more fixes on top

    4. **When You Don't Know**
       - Say "I don't understand X"
       - Don't pretend to know
       - Ask for help
       - Research more

    ### Phase 4: Implementation


    **Fix the root cause, not the symptom:**


    1. **Create Failing Test Case**
       - Simplest possible reproduction
       - Automated test if possible
       - One-off test script if no framework
       - MUST have before fixing
       - Use the `superpowers:test-driven-development` skill for writing proper failing tests

    2. **Implement Single Fix**
       - Address the root cause identified
       - ONE change at a time
       - No "while I'm here" improvements
       - No bundled refactoring

    3. **Verify Fix**
       - Test passes now?
       - No other tests broken?
       - Issue actually resolved?
       - Use the `superpowers:verification-before-completion` skill before claiming success

    4. **If Fix Doesn't Work**
       - STOP
       - Count: How many fixes have you tried?
       - If < 3: Return to Phase 1, re-analyze with new information
       - **If ≥ 3: STOP and question the architecture (step 5 below)**
       - DON'T attempt Fix #4 without architectural discussion

    5. **If 3+ Fixes Failed: Question Architecture**

       **Pattern indicating architectural problem:**
       - Each fix reveals new shared state/coupling/problem in different place
       - Fixes require "massive refactoring" to implement
       - Each fix creates new symptoms elsewhere

       **STOP and question fundamentals:**
       - Is this pattern fundamentally sound?
       - Are we "sticking with it through sheer inertia"?
       - Should we refactor architecture vs. continue fixing symptoms?

       **Discuss with your human partner before attempting more fixes**

       This is NOT a failed hypothesis - this is a wrong architecture.

    ## Red Flags - STOP and Follow Process


    If you catch yourself thinking:

    - "Quick fix for now, investigate later"

    - "Just try changing X and see if it works"

    - "Add multiple changes, run tests"

    - "Skip the test, I'll manually verify"

    - "It's probably X, let me fix that"

    - "I don't fully understand but this might work"

    - "Pattern says X but I'll adapt it differently"

    - "Here are the main problems: [lists fixes without investigation]"

    - Proposing solutions before tracing data flow

    - **"One more fix attempt" (when already tried 2+)**

    - **Each fix reveals new problem in different place**


    **ALL of these mean: STOP. Return to Phase 1.**


    **If 3+ fixes failed:** Question the architecture (see Phase 4.5)


    ## your human partner's Signals You're Doing It Wrong


    **Watch for these redirections:**

    - "Is that not happening?" - You assumed without verifying

    - "Will it show us...?" - You should have added evidence gathering

    - "Stop guessing" - You're proposing fixes without understanding

    - "Ultra-think this" - Question fundamentals, not just symptoms

    - "We're stuck?" (frustrated) - Your approach isn't working


    **When you see these:** STOP. 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. |

    | "Reference too long, I'll adapt the pattern" | Partial understanding guarantees bugs. Read it
    completely. |

    | "I see the problem, let me fix it" | Seeing symptoms ≠ understanding root cause. |

    | "One more fix attempt" (after 2+ failures) | 3+ failures = architectural problem. Question
    pattern, don't fix again. |


    ## Quick Reference


    | Phase | Key Activities | Success Criteria |

    |-------|---------------|------------------|

    | **1. Root Cause** | Read errors, reproduce, check changes, gather evidence | Understand WHAT
    and WHY |

    | **2. Pattern** | Find working examples, compare | Identify differences |

    | **3. Hypothesis** | Form theory, test minimally | Confirmed or new hypothesis |

    | **4. Implementation** | Create test, fix, verify | Bug resolved, tests pass |


    ## When Process Reveals "No Root Cause"


    If systematic investigation reveals issue is truly environmental, timing-dependent, or external:


    1. You've completed the process

    2. Document what you investigated

    3. Implement appropriate handling (retry, timeout, error message)

    4. Add monitoring/logging for future investigation


    **But:** 95% of "no root cause" cases are incomplete investigation.


    ## Supporting Techniques


    These techniques are part of systematic debugging and available in this directory:


    - **`root-cause-tracing.md`** - Trace bugs backward through call stack to find original trigger

    - **`defense-in-depth.md`** - Add validation at multiple layers after finding root cause

    - **`condition-based-waiting.md`** - Replace arbitrary timeouts with condition polling
  user_template: ""
variables: []
install:
  steps:
    - title: Download & unzip
      detail: >-
        Download the .zip package from SkillVault and unzip it. The systematic-debugging/ folder
        contains SKILL.md plus any companion scripts, references and assets.
    - title: Copy into your agent skills directory
      detail: >-
        Move the folder into your agent's skills directory — e.g. ~/.claude/skills/ (Claude Code),
        .codex/skills/, .cursor/skills/ or your project's .claude/skills/ folder — then restart or
        reload the session.
    - title: Use it
      detail: >-
        Describe the task in natural language; the agent loads the skill automatically when the
        request matches the skill description.
usage:
  steps: []
metadata:
  author: SkillVault
  source: https://skillvault.top/skills/systematic-debugging
  exported_at: "2026-11-03T07:40:59.349Z"

安装指南

  1. 1

    Download & unzip

    Download the .zip package from SkillVault and unzip it. The systematic-debugging/ folder contains SKILL.md plus any companion scripts, references and assets.

  2. 2

    Copy into your agent skills directory

    Move the folder into your agent's skills directory — e.g. ~/.claude/skills/ (Claude Code), .codex/skills/, .cursor/skills/ or your project's .claude/skills/ folder — then restart or reload the session.

  3. 3

    Use it

    Describe the task in natural language; the agent loads the skill automatically when the request matches the skill description.

使用方法

平台兼容性

ChatGPT GPTs

OpenAI

将系统提示词粘贴到 GPT 的「Instructions」字段,并把用户模板作为起始消息使用。

官方文档

Claude Code

Anthropic

将导出的 .aiskill JSON 保存为项目中的技能文件,或将系统提示词粘贴进 CLAUDE.md / 斜杠命令 Markdown 文件。

官方文档

Cursor

Anysphere

将系统提示词复制到 .cursor/rules/*.mdc(或设置中的 Project Rules),并在智能体提示词中引用用户模板。

官方文档

相关技能