🎯

systematic-debugging

🎯Skill

from izyanrajwani/agent-skills-library

VibeIndex|
What it does

Systematically investigates root causes of bugs by tracing data flow, analyzing system components, and forming precise hypotheses before attempting fixes.

πŸ“¦

Part of

izyanrajwani/agent-skills-library(10 items)

systematic-debugging

Installation

πŸ“‹ No install commands found in docs. Showing default command. Check GitHub for actual instructions.
Quick InstallInstall with npx
npx skills add izyanrajwani/agent-skills-library --skill systematic-debugging
4Installs
-
AddedFeb 4, 2026

Skill Details

SKILL.md

Root cause analysis for debugging. Use when bugs, test failures, or unexpected behavior have non-obvious causes, or after multiple fix attempts have failed.

Overview

# Systematic Debugging

Core principle: Find root cause before attempting fixes. Symptom fixes are failure.

```

NO FIXES WITHOUT ROOT CAUSE INVESTIGATION FIRST

```

Phase 1: Root Cause Investigation

BEFORE attempting ANY fix:

  1. Read Error Messages Carefully

- Read stack traces completely

- Note line numbers, file paths, error codes

- Don't skip warnings

  1. Reproduce Consistently

- What are the exact steps?

- If not reproducible β†’ gather more data, don't guess

  1. Check Recent Changes

- Git diff, recent commits

- New dependencies, config changes

- Environmental differences

  1. Gather Evidence in Multi-Component Systems

WHEN system has multiple components (CI β†’ build β†’ signing, API β†’ service β†’ database):

Add diagnostic instrumentation before proposing fixes:

```

For EACH component boundary:

- Log what data enters/exits component

- Verify environment/config propagation

- Check state at each layer

Run once to gather evidence β†’ analyze β†’ identify failing component

```

Example:

```bash

# Layer 1: Workflow

echo "=== Secrets available: ==="

echo "IDENTITY: ${IDENTITY:+SET}${IDENTITY:-UNSET}"

# Layer 2: Build script

env | grep IDENTITY || echo "IDENTITY not in environment"

# Layer 3: Signing

security find-identity -v

```

  1. Trace Data Flow

See references/root-cause-tracing.md for backward tracing technique.

Quick version: Where does bad value originate? Trace up call chain until you find the source. Fix at source.

Phase 2: Pattern Analysis

  1. Find Working Examples - Similar working code in codebase
  2. Compare Against References - Read reference implementations COMPLETELY, don't skim
  3. Identify Differences - List every difference, don't assume "that can't matter"
  4. Understand Dependencies - Components, config, environment, assumptions

Phase 3: Hypothesis and Testing

  1. Form Single Hypothesis - "I think X is root cause because Y" - be specific
  2. Test Minimally - SMALLEST possible change, one variable at a time
  3. Verify - Worked β†’ Phase 4. Didn't work β†’ form NEW hypothesis, don't stack fixes
  4. When You Don't Know - Say so. Don't pretend.

Phase 4: Implementation

  1. Create Failing Test Case

- Use the test-driven-development skill

- MUST have before fixing

  1. Implement Single Fix

- ONE change at a time

- No "while I'm here" improvements

  1. Verify Fix

- Test passes? Other tests still pass? Issue resolved?

  1. If Fix Doesn't Work

- Count attempts

- If < 3: Return to Phase 1 with new information

- If β‰₯ 3: Escalate (below)

Escalation: 3+ Failed Fixes

Pattern indicating architectural problem:

  • Each fix reveals new problems elsewhere
  • Fixes require massive refactoring
  • Shared state/coupling keeps surfacing

Action: STOP. Question fundamentals:

  • Is this pattern fundamentally sound?
  • Are we continuing through inertia?
  • Refactor architecture vs. continue fixing symptoms?

Discuss with human partner before more fix attempts. This is wrong architecture, not failed hypothesis.

Red Flags β†’ STOP and Return to Phase 1

If you catch yourself thinking:

  • "Quick fix for now, investigate later"
  • "Just try changing X"
  • "I'll skip the test"
  • "It's probably X"
  • "Pattern says X but I'll adapt it differently"
  • Proposing solutions before tracing data flow
  • "One more fix" after 2+ failures

Human Signals You're Off Track

  • "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
  • "Ultrathink this" β†’ Question fundamentals
  • Frustrated "We're stuck?" β†’ Your approach isn't working

Response: Return to Phase 1.

Supporting Techniques

Reference files in references/:

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

Related skills:

  • test-driven-development - Creating failing test case (Phase 4)
  • verification-before-completion - Verify fix before claiming success

More from this repository9

🎯
dispatching-parallel-agents🎯Skill

Dispatches independent test failures or bug domains to specialized subagents for concurrent, focused investigation and resolution.

🎯
verification-before-completion🎯Skill

Enforces evidence-first verification by requiring concrete proof via specific commands before claiming task completion or success.

🎯
using-git-worktrees🎯Skill

Creates isolated Git workspaces for parallel development without disrupting the current working tree.

🎯
executing-plans🎯Skill

Systematically executes implementation plans by loading, critically reviewing, executing tasks in batches, and reporting progress for architect feedback.

🎯
test-driven-development🎯Skill

Guides developers through writing tests first, implementing minimal code to pass, and refactoring while ensuring verified test coverage for behavior changes.

🎯
finishing-a-development-branch🎯Skill

Streamlines Git branch completion by running tests, determining merge target, and guiding developers through merging or creating pull requests.

🎯
requesting-code-review🎯Skill

Requests a comprehensive code review by dispatching a subagent to analyze code changes, identify potential issues, and provide structured feedback before merge.

🎯
brainstorming🎯Skill

Collaboratively explores and refines ideas into validated design specifications through iterative, focused questioning and incremental validation.

🎯
writing-plans🎯Skill

Generates comprehensive, test-driven implementation plans with precise file paths, code snippets, and verification steps for multi-step development tasks.