Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsBlogPro
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Authors
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges
  • Chrome Extension
  • Skill Manager

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

ProTermsPrivacyRefunds
Back to skills

Debug

ASecurity

Root cause debugging before fixes. Use when investigating bugs,

19 stars
0 votes
0 copies
0 views
Added 10/4/2026
code-qualityjavascriptjavabashtestingdebuggingrefactoringgitapidatabaseperformance

Works with

api

Security Analysis

A100/100

Scanned 10/4/2026

$npx -y skills add TheMostlyGreat/mythos --skill debug --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Debug?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Debug
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/themostlygreat-debug/badge)](https://www.skillsdirectory.com/skills/themostlygreat-debug)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
Files
SKILL.md
---
name: debug
description: Root cause debugging before fixes. Use when investigating bugs,
  diagnosing test failures, troubleshooting unexpected behavior, or when previous
  fix attempts failed. Enforces investigate-first discipline.
allowed-tools: "*"
---

# Systematic Debugger

Find root cause before fixing. Symptom fixes are failure.

**Iron Law:** NO FIXES WITHOUT ROOT CAUSE INVESTIGATION FIRST

## When to Use

Answer IN ORDER. Stop at first match:

1. Bug, error, or test failure? → Use this skill
2. Unexpected behavior? → Use this skill
3. Previous fix didn't work? → Use this skill (especially important)
4. Performance problem? → Use this skill
5. None of above? → Skip this skill

**Use especially when:**

- Under time pressure (emergencies make guessing tempting)
- "Quick fix" seems obvious (red flag)
- Already tried 1+ fixes that didn't work

## The Four Phases

Complete each phase before proceeding.

### Phase 1: Root Cause Investigation

**BEFORE attempting ANY fix:**

#### 1. Read Error Messages Completely

```text
Don't skip past errors. They often contain the exact solution.
- Full stack trace (note line numbers, file paths)
- Error codes and messages
- Warnings that preceded the error
```

**When the error mentions a library/framework symbol** (a function, class, or module from a dependency) — read the installed version's docs before forming a hypothesis. Signatures, defaults, and deprecation behavior change between versions; training memory may describe a different version than the one running. Check `package.json` / lockfile, then the source wired up (Context7, official docs, README at the pinned ref).

#### 2. Reproduce Consistently

| Can reproduce?  | Action                                               |
| --------------- | ---------------------------------------------------- |
| Yes, every time | Proceed to step 3                                    |
| Sometimes       | Gather more data - when does it happen vs not?       |
| Never           | Cannot debug what you cannot reproduce - gather logs |

**When repro hinges on user-only context** (env, timeline, "what were you doing"), call `/elicit` — its multiple-choice format constrains the answer space better than open prompts.

#### 3. Check Recent Changes

```bash
git diff HEAD~5       # Recent code changes
git log --oneline -10 # Recent commits
```

What changed that could cause this? Dependencies? Config? Environment?

#### 4. Trace Data Flow (Root Cause Tracing)

When error is deep in call stack:

```text
Symptom: Error at line 50 in utils.js
    ↑ Called by handler.js:120
    ↑ Called by router.js:45
    ↑ Called by app.js:10 ← ROOT CAUSE: bad input here
```

**Technique:**

1. Find where error occurs (symptom)
2. Ask: "What called this with bad data?"
3. Trace up until you find the SOURCE
4. Fix at source, not at symptom

#### 5. Multi-Component Systems

When system has multiple layers (API → service → database):

```bash
# Log at EACH boundary before proposing fixes
echo "=== Layer 1 (API): request=$REQUEST ==="
echo "=== Layer 2 (Service): input=$INPUT ==="
echo "=== Layer 3 (DB): query=$QUERY ==="
```

Run once to find WHERE it breaks. Then investigate that layer.

### Phase 2: Pattern Analysis

#### 1. Find Working Examples

Locate similar working code in same codebase. What works that's similar?

#### 2. Identify Differences

| Working code     | Broken code    | Could this matter? |
| ---------------- | -------------- | ------------------ |
| Uses async/await | Uses callbacks | Yes - timing       |
| Validates input  | No validation  | Yes - bad data     |

List ALL differences. Don't assume "that can't matter."

### Phase 3: Hypothesis Testing

#### 1. Form Single Hypothesis

Write it down: "I think X is the root cause because Y"

Be specific:

- ❌ "Something's wrong with the database"
- ✅ "Connection pool exhausted because connections aren't released in error path"

#### 2. Test Minimally

| Rule                     | Why                    |
| ------------------------ | ---------------------- |
| ONE change at a time     | Isolate what works     |
| Smallest possible change | Avoid side effects     |
| Don't bundle fixes       | Can't tell what helped |

#### 3. Evaluate Result

| Result          | Action                                  |
| --------------- | --------------------------------------- |
| Fixed           | Phase 4 (verify)                        |
| Not fixed       | NEW hypothesis (return to 3.1)          |
| Partially fixed | Found one issue, continue investigating |

### Root Cause Checkpoint (REQUIRED)

Before proceeding to Phase 4:

1. **Document root cause** in ticket (under "## Root Cause" section):
   - What is the actual cause (not symptom)?
   - Why did this happen?
   - How was it confirmed?
2. **If using tickets:** Update frontmatter to `subtype: bug-investigated`

**Example:**

```markdown
## Root Cause

Connection pool exhausted because connections aren't released in error path.
Confirmed by adding pool logging - saw connections increment without decrement on errors.
```

### Phase 4: Implementation

#### 1. Create Failing Test

Before fixing, write test that fails due to the bug:

```javascript
it("handles empty input without crashing", () => {
  // This test should FAIL before fix, PASS after
  expect(() => processData("")).not.toThrow();
});
```

#### 2. Implement Fix

- Address ROOT CAUSE identified in Phase 1
- ONE change
- No "while I'm here" improvements

#### 3. Verify

- [ ] New test passes
- [ ] Existing tests still pass
- [ ] Issue actually resolved (not just test passing)

End the fix report with **Next:** on its own line — imperative, name what's now (commit message to use, ticket to mark done, follow-up issue to open for related debt the investigation surfaced). A debug session that ends without naming the next move is incomplete.

Examples:

- **Next:** commit with `fix(auth): release pool connection in error path`, mark ticket 234 done.
- **Next:** commit the fix, then open a ticket for the unrelated logging gap surfaced at `src/auth.ts:88`.

#### 4. If Fix Doesn't Work

| Fix attempts | Action                                   |
| ------------ | ---------------------------------------- |
| 1-2          | Return to Phase 1 with new information   |
| 3+           | STOP - Question architecture (see below) |

#### 5. After 3+ Failed Fixes: Question Architecture

Pattern indicating architectural problem:

- Each fix reveals new coupling/shared state
- Fixes require "massive refactoring"
- Each fix creates new symptoms elsewhere

**STOP and ask:**

- Is this pattern fundamentally sound?
- Should we refactor vs. continue patching?
- Discuss with user before more fix attempts

## Red Flags - STOP Immediately

If you catch yourself thinking:

| Thought                                        | Reality                           |
| ---------------------------------------------- | --------------------------------- |
| "Quick fix for now, investigate later"         | Investigate NOW or you never will |
| "Just try changing X"                          | That's guessing, not debugging    |
| "I'll add multiple fixes and test"             | Can't isolate what worked         |
| "I don't fully understand but this might work" | You need to understand first      |
| "One more fix attempt" (after 2+ failures)     | 3+ failures = wrong approach      |

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

## Quick Reference

| Phase             | Key Question                          | Success Criteria                   |
| ----------------- | ------------------------------------- | ---------------------------------- |
| 1. Root Cause     | "WHY is this happening?"              | Understand cause, not just symptom |
| 2. Pattern        | "What's different from working code?" | Identified key differences         |
| 3. Hypothesis     | "Is my theory correct?"               | Confirmed or formed new theory     |
| 4. Implementation | "Does the fix work?"                  | Test passes, issue resolved        |

**Voice:** plainspoken and concise — write to be scanned.

Attribution

TheMostlyGreatTheMostlyGreat
View sourceSee grades on GitHubMore from TheMostlyGreat →
SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Related Skills

Caveman Commit

Ultra-compressed commit message generator. Cuts noise from commit messages while preserving intent and reasoning. Conventional Commits format. Subject ≤50 chars, body only when "why" isn't obvious. Use when user says "write a commit", "commit message", "generate commit", "/commit", or invokes /caveman-commit. Auto-triggers when staging changes.

1100021 votes

Caveman Review

Ultra-compressed code review comments. Cuts noise from PR feedback while preserving the actionable signal. Each comment is one line: location, problem, fix. Use when user says "review this PR", "code review", "review the diff", "/review", or invokes /caveman-review. Auto-triggers when reviewing pull requests.

1100021 votes

Verification Loop

一个全面的 Claude Code 会话验证系统。

2456590 votes

Django Verification

Verification loop for Django projects: migrations, linting, tests with coverage, security scans, and deployment readiness checks before release or PR.

2456590 votes

Springboot Verification

Verification loop for Spring Boot projects: build, static analysis, tests with coverage, security scans, and diff review before release or PR.

2456590 votes
View all in code-quality →