Agent skill

Debugging Code

by sickn33 in sickn33/agentic-awesome-skills

Interactively debug source code — set breakpoints, step through execution line by line, inspect live variable state, evaluate expressions against the running program, and navigate the call stack to…

MITAuto-check passedDevelopment

Install Debugging Code

skills CLI
$ npx skills add sickn33/agentic-awesome-skills --skill debugging-code -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install sickn33/agentic-awesome-skills debugging-code --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/sickn33/agentic-awesome-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/debugging-code .claude/skills/debugging-code && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
debugging-code
GitHub stars
47k
Used in
1 other repo
Token cost
~3.1k tokens
SKILL.md length
1,257 words
Files
4 (incl. scripts, references)
Skills in repo
1,394
Repo updated
First seen
Licence
MIT

At a glance

Interactively debug source code — set breakpoints, step through execution line by line, inspect live variable state, evaluate expressions against the running program, and navigate the call stack to…

  • Tasks that involve Responsive design
  • SKILL.md covers When to Use, Setup, Starting a Session and The Debugging Mindset, plus 10 more sections
  • Runs Shell scripts from its folder; calls brew, bash and go
  • Tasks that involve Debugging

What it does

Debugging Code is an agent skill from sickn33/agentic-awesome-skills. Interactively debug source code — set breakpoints, step through execution line by line, inspect live variable state, evaluate expressions against the running program, and navigate the call stack to trace root causes.

Its SKILL.md is about 3.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 5 other files, including scripts and reference files (for example `references/advanced-techniques.md`, `references/installing-debuggers.md` and `scripts/install-dap.sh`).

It sits in Development, covering Responsive design, Debugging and Root cause analysis. The repository describes itself as: AAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and planning, backed by 2,400+ agentic skills. Includes… The licence is MIT.

When your agent uses it

  • Tasks that involve Responsive design
  • Tasks that involve Debugging
  • Tasks that involve Root cause analysis

Example prompts

  • “/debugging-code”

Requirements

  • Node.js
  • A Bash shell

What it can do on your machine

Read from SKILL.md and the folder at commit 1e53ce2. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 1 file in scripts/ (Shell), which the agent can run.

    Shell commands in SKILL.md call:

    • brew
    • bash
    • go

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • github.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Debugging Code loads about 3.1k tokens when it runs, and up to ~4.1k if it reads all its reference files. Until then it costs about 58 tokens; SKILL.md has 1,257 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~58
When it runs · the whole SKILL.md, loaded when a task matches
~3.1k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~4.1k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from sickn33/agentic-awesome-skills at commit 1e53ce2, republished under its MIT licence (© sickn33). 1,257 words, ~3,067 tokens.

Download SKILL.mdSave it as .claude/skills/debugging-code/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.
name
debugging-code
description
Interactively debug source code — set breakpoints, step through execution line by line, inspect live variable state, evaluate expressions against the running program, and navigate the call stack to trace root causes.
risk
critical
source
https://github.com/AlmogBaku/debug-skill/tree/master/skills/debugging-code
source_repo
AlmogBaku/debug-skill
source_type
community
date_added
2026-07-01
license
MIT
license_source
https://github.com/AlmogBaku/debug-skill/blob/master/LICENSE

Interactive Debugger

When to Use

Use this skill when you need interactively debug source code — set breakpoints, step through execution line by line, inspect live variable state, evaluate expressions against the running program, and navigate the call stack to trace root causes. Use when a program crashes, raises unexpected exceptions, produces...

Use when a program crashes, produces wrong output, or you need to understand exactly how execution reached a particular state — and running it again with more print statements won't give you the answer fast enough.

You can pause a running program at any point, read live variable values and the call stack at that exact moment, step forward line by line or jump to the next breakpoint, and evaluate arbitrary expressions against the live process — all without restarting.

Setup

This skill uses dap, a CLI tool that background daemon to interact with the debugger via the DAP Protocol, maintain the debugger state, so you can simply interact with it with multiple calls.

If dap isn't installed (check: command -v dap), install it NOW. Ask/notify the user before proceeding to install it.

From Homebrew (macOS)

bash
brew install AlmogBaku/tap/dap

Installer script:

bash
bash scripts/install-dap.sh

Install from sources:

bash
go install github.com/AlmogBaku/debug-skill/cmd/dap@latest

This tool is open-sourced and available on GitHub, maintained and follows best practices.

Supports natively Python, Go, Node.js/TypeScript, Rust, C/C++, and any other language that supports DAP.

If a debugger backend is missing or fails to start, see references/installing-debuggers.md

For all commands and flags: dap --help or dap <cmd> --help.

Starting a Session

dap debug <file> launches the program under the debugger. Backend is auto-detected from the file extension.

Choose your starting strategy based on what you know:

  • Have a hypothesis — set a breakpoint where you expect the bug: dap debug script.py --break script.py:42
  • Conditional breakpoint — only stop when a condition is met: dap debug script.py --break "script.py:42:x > 5" ( always quote specs with conditions)
  • Multi-file app — breakpoints across modules: --break src/api/routes.py:55 --break src/models/user.py:30
  • No hypothesis, small program — walk from entry: dap debug script.py --stop-on-entry (avoid for large projects — startup code is noisy; bisect with breakpoints instead)
  • Exception, location unknown — dap debug script.py --break-on-exception raised (Python) / all (Go/JS)
  • Remote process — dap debug --attach host:port --backend <name>
  • Process already running (stuck server, live issue) — attach without restarting: dap debug --pid <PID> --backend <name>

    macOS + Go gotcha: dlv --pid requires SIP disabled (csrutil disable). Prefer starting the program under the debugger instead or attaching to a remote debugger!

Session isolation: --session <name> keeps concurrent agents from interfering. Tip: You might want to use your session id(${CLAUDE_SESSION_ID}) if available.

Run dap debug --help for all flags, backends, and examples.

The Debugging Mindset

Reach for a debugger when reading source alone can't validate the root cause. A debugger lets you observe what does happen: actual values, actual path, actual state. When that diverges from what should happen, you've found your bug.

Two strikes, rethink. If two hypotheses fail at the same location, your mental model is wrong. Re-read the code, form a completely different theory with different breakpoints.

Escalate gradually. Start with dap eval to test a quick hypothesis. Use conditional breakpoints to filter noise. Fall back to full breakpoints + stepping only when you need interactive control.

Mimic the user journey. If you're debugging a user flow, set breakpoints along the path you expect the code to take. If you expected compute() to be called, but it never is, then the bug is in the caller — not compute(), but whatever was supposed to call it.

Set breakpoints instead of prints. When you feel the urge to print something, set a breakpoint instead.

Know Your State

Every dap execution command returns full context automatically: current location, source, locals, call stack, and output. At each stop, ask:

  • Do the local variables have the values I expected?
  • Is the call stack showing the code path I expected?
  • Does the output so far reveal anything unexpected?

Trace causation up the stack. If a value is wrong at frame 0, check dap eval "<expr>" --frame 1 to see what the caller passed. Keep going up (--frame 2, --frame 3) until you find the frame where the value first became wrong — that's the origin of the bug, not the symptom.

Example output at a stop:

Stopped at compute() · script.py:41
  39:   def compute(items):
  40:       result = None
> 41:       return result
Locals: items=[]  result=None
Stack:  main [script.py:10] → compute [script.py:41]
Output: (none)

If the program exits before hitting your breakpoint:

Program terminated · Exit code: 1

→ Move breakpoints earlier, or restart with --stop-on-entry.

Forming a Hypothesis

Before setting a breakpoint: "I believe the bug is in X because Y." A good hypothesis is falsifiable — your next observation will confirm or disprove it. No hypothesis yet? Bisect with two breakpoints to narrow the search space, or see starting strategies above.

Show full SKILL.md (502 more words)Show less

Setting Breakpoints Strategically

  • Set where the problem begins, not where it manifests
  • Exception at line 80? Root cause is upstream — start earlier
  • Uncertain? Bisect: --break f:20 --break f:60 — wrong state before or after halves the search space

Where to break:

  • Boundaries — where data crosses a format, representation, or module boundary; state is cleanest here
  • State transitions — the line that assigns or mutates the corrupted value
  • Wrong branch — the condition whose inputs led to the bad path
  • Antipatterns — don't break inside library code; break at the call site instead. Don't use unconditional breaks in tight loops — use conditions.
Managing Breakpoints Mid-Session

As you learn more, add breakpoints deeper in the suspect code and remove ones that have served their purpose — progressive narrowing without restarting:

bash
dap continue --break app.py:50              # add breakpoint deeper, then continue
dap continue --remove-break app.py:20       # drop a breakpoint you're done with
dap break add app.py:42 app.py:60           # add multiple breakpoints at once
dap break list                              # see what's set
dap break clear                             # start fresh

If a breakpoint is on an invalid line or the adapter adjusts it, dap warns you in the output.

Conditional Breakpoints

Stop only when a condition is true — essential for loops, hot paths, and specific input values. Syntax: "file:line:condition" (always quote).

bash
dap debug app.py --break "app.py:42:i == 100"            # skip 99 iterations, stop on the one that matters
dap debug app.py --break "app.py:30:user_id == 123"      # reproduce a user-specific bug
dap continue --break "app.py:50:len(items) == 0"         # catch the empty-list case mid-session
Invariant Breakpoints

Conditional breakpoints as runtime assertions — stop the moment something goes wrong:

bash
dap debug app.py --break "bank.py:68:balance < 0"          # catch the overdraft
dap debug app.py --break "pipe.py:30:type(val) != int"     # type violation

Navigating Execution

At each stop, choose how to advance based on what you suspect:

If you're stepping more than 3 times in a row, you need a breakpoint, not more steps.

bash
dap step                         # step over — trust this call, advance to next line
dap step in                      # step into — suspect what's inside this function
dap step out                     # step out — you're in the wrong place, return to caller
dap continue                     # jump to next breakpoint
dap continue --to file:line      # run to line (temp breakpoint, auto-removed)
dap context                      # re-inspect current state without stepping
dap output                       # drain buffered stdout/stderr without full context
dap inspect <var> --depth N      # expand nested/complex objects
dap pause                        # interrupt a running/hanging program
dap restart                      # restart with same args and breakpoints
dap threads                      # list all threads
dap thread <id>                  # switch thread context

Each stop shows the current file:line so you always know where you are.

Use dap eval "<expr>" to probe live state without stepping:

bash
dap eval "len(items)"
dap eval "user.profile.settings"
dap eval "expected == actual"       # test hypothesis on live state
dap eval "self.config" --frame 1    # frame 1 = caller (may be a different file)

Avoid eval expressions that call methods with side effects — they mutate program state and can corrupt your debugging session. Stick to read-only access unless you're intentionally testing a fix.

Skipping Ahead

When you need a quick look at a specific line without committing to a permanent breakpoint, use dap continue --to file:line. It's a disposable breakpoint — stops once, then vanishes. Good for "I just want to see what x looks like at line 50" without managing breakpoint lifecycle.

Advanced Scenarios

For advanced scenarios — hangs, concurrency bugs, deeply nested state, loop bisection — see ${CLAUDE_SKILL_DIR}/references/advanced-techniques.md.

Walkthrough

Bug: compute() returns None

Hypothesis: result not assigned before return
→ dap debug script.py --break script.py:41
  Locals: result=None, items=[]   ← wrong, and input is also empty

New hypothesis: caller passing empty list
→ dap eval "items" --frame 1      → []   ← confirmed
→ dap step out                    → caller at line 10, no guard for empty input
→ dap continue --break script.py:8 --remove-break script.py:41
  ← narrowing: add breakpoint at data source, drop the one we're done with
  Stopped at main():8, items loaded from config as []

Root cause: missing guard. Fix → dap stop.

No hypothesis (exception, unknown location):

Exception: TypeError, location unknown
→ dap debug script.py --break-on-exception raised
  Stopped at compute():41, items=None
Root cause: None passed where list expected.

Verify Your Fix

While paused at the bug, use eval to test your proposed fix expression against the live state. If it works in eval, it'll work in code. Then edit and dap restart to confirm end-to-end.

After applying a fix, re-run the same scenario to verify. dap restart re-runs with the same args and breakpoints — a fast feedback loop. Don't trust that a fix works until you've observed the correct behavior at the same breakpoint where you found the bug.

Cleanup

The dap session is usually automatically terminated when the program exits or after an idle timout. When the app is not closed properly (e.g. you killed it while debugging), you can terminate it manually: dap stop.

Limitations

  • Use this skill only when the task clearly matches its upstream source and local project context.
  • Verify commands, generated code, dependencies, credentials, and external service behavior before applying changes.
  • Do not treat examples as a substitute for environment-specific tests, security review, or user approval for destructive or costly actions.

© sickn33, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 3 other files (scripts, references) in skills/debugging-code of sickn33/agentic-awesome-skills.

  • SKILL.md
  • references/advanced-techniques.md
  • references/installing-debuggers.md
  • scripts/install-dap.sh

Open the folder on GitHubat commit 1e53ce2

Used in 1 other repository

We found 5 copies of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in sickn33/agentic-awesome-skills, which our catalogue first saw on October 7, 2026.

Compare with similar skills

Debugging Code next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Debugging Code compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Debugging Code this skillsickn33/agentic-awesome-skills47k1 repos~3.1kAutomated safety check: PassMIT
Debugging WizardAratKruglik/claude-laravel155—~832Automated safety check: PassNone
Frontend Browser Debugginglobehub/lobehub83k—~1.7kAutomated safety check: PassCustom licence
Local Log DebugUniClipboard/UniClipboard1.8k—~2.6kAutomated safety check: PassAGPL-3.0
Debugging CodeJetBrains/skills3631 repos~3.8kAutomated safety check: PassNone
Openocd Jtagmohitmishra786/low-level-dev-skills253—~1.6kAutomated safety check: PassMIT

Similar skills

  • Debugging Wizard

    AratKruglik/claude-laravel

    A skill your agent uses when investigating errors, analyzing stack traces, or finding root causes of unexpected behavior.

    155 GitHub stars~832 tokensUpdated 5 mo ago
    DevelopmentAuto-check passed
  • Traces intermittent UI, stale state, ordering and navigation bugs through a browser to find the first boundary where correct data becomes wrong.

    83k GitHub stars~1.7k tokensUpdated today
    DevelopmentAuto-check passed
  • Local Log Debug

    UniClipboard/UniClipboard

    Inspect and analyze uniclipboard's local JSONL logs on a SINGLE machine — query, filter, and time-merge the per-role (gui/daemon/cli) log files to answer "what just happened" or trace a symptom…

    1.8k GitHub stars~2.6k tokensUpdated today
    DevelopmentAuto-check passed
  • Debugging Code

    JetBrains/skills

    Official

    A skill your agent uses for debugger-driven runtime root-cause analysis in Rider-supported solutions and projects, including .NET/C, F, VB, C++, Unity, Unreal Engine, and other GameDev or…

    363 GitHub starsUsed in 1 repo~3.8k tokens
    Game DevelopmentAuto-check passed
  • Openocd Jtag

    mohitmishra786/low-level-dev-skills

    OpenOCD skill for embedded hardware debugging. An agent skill from mohitmishra786/low-level-dev-skills.

    253 GitHub stars~1.6k tokensUpdated 3 mo ago
    DevelopmentAuto-check passed
  • Bug Finder for daisyUI

    saadeghi/daisyui

    Investigates suspected bugs in the daisyUI monorepo through read-only analysis, then writes a decision-ready fix plan in tmp/bugs without changing any product code.

    43k GitHub stars~2.3k tokensUpdated 7 days ago
    DevelopmentAuto-check passed

More from sickn33/agentic-awesome-skills

All 1,394 skills in this repo
  • Liuguang Banlan UI

    sickn33/agentic-awesome-skills

    Implements an interface in one of two named color modes, iridescent white or colorful black, from a parameterized starter that reports measured color intensity.

    47k GitHub starsUsed in 1 repo~2.5k tokens
    Auto-check passed
  • User Thoughts Memory

    sickn33/agentic-awesome-skills

    Saves a user's project decisions, rules and preferences into a project-local mdbase so later sessions and other agents can recover the intent.

    47k GitHub starsUsed in 1 repo~2.5k tokens
    Auto-check passed
  • Using LWC Memory and Graphs

    sickn33/agentic-awesome-skills

    Keeps project decisions, research and verified results available across coding-agent sessions through LWC memory, a document Wiki graph and a CodeGraph code index.

    47k GitHub starsUsed in 1 repo~2k tokens
    Auto-check passed
  • Find Complementary Founders

    sickn33/agentic-awesome-skills

    Guides an agent through assessing its own owner for cofounder fit, publishing an approved profile, and ranking complementary profiles other agents published for their owners.

    47k GitHub starsUsed in 1 repo~4.8k tokens
    Auto-check passed
  • Whatsapp Cloud API

    sickn33/agentic-awesome-skills

    Integracao com WhatsApp Business Cloud API (Meta). An agent skill from sickn33/agentic-awesome-skills.

    47k GitHub starsUsed in 2 repos~4.5k tokens
    Auto-check passed
  • Cline Pilot

    sickn33/agentic-awesome-skills

    Acts as a proxy for the Cline CLI, dispatching coding tasks one at a time, monitoring runs by hard evidence, relaying decisions to you and learning per-project preferences.

    47k GitHub starsUsed in 1 repo~4.6k tokens
    Auto-check passed

Questions about Debugging Code

What does Debugging Code do?

Interactively debug source code — set breakpoints, step through execution line by line, inspect live variable state, evaluate expressions against the running program, and navigate the call stack to…. Debugging Code is an agent skill from sickn33/agentic-awesome-skills. Interactively debug source code — set breakpoints, step through execution line by line, inspect live variable state, evaluate expressions against the running program, and navigate the call stack to trace root causes.

When should I use Debugging Code?

Debugging Code fits situations like: tasks that involve Responsive design; tasks that involve Debugging; tasks that involve Root cause analysis.

How do I install Debugging Code in Claude Code?

Run `npx skills add sickn33/agentic-awesome-skills --skill debugging-code -a claude-code`. Or copy the skill folder (skills/debugging-code in sickn33/agentic-awesome-skills) into .claude/skills/debugging-code in your project. Claude Code loads it when a task matches its description.

How do I install Debugging Code in Codex?

Run `npx skills add sickn33/agentic-awesome-skills --skill debugging-code -a codex`. Or copy the skill folder (skills/debugging-code in sickn33/agentic-awesome-skills) into .agents/skills/debugging-code in your project. Codex loads it when a task matches its description.

Can I use Debugging Code in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add sickn33/agentic-awesome-skills --skill debugging-code -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/debugging-code, .gemini/skills/debugging-code, .github/skills/debugging-code and .opencode/skills/debugging-code in your project.

What does Debugging Code need to run?

Going by SKILL.md and its folder, Debugging Code needs a shell for the scripts in its folder and the command-line tools its instructions call (brew, bash and go). Our summary lists: Node.js; A Bash shell.

Does Debugging Code access the network?

SKILL.md names 1 domain. As links in the text: github.com. This is read from the text; nothing was executed.

Is Debugging Code safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Debugging Code use?

Debugging Code is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Debugging Code use?

About 3.1k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1.1k tokens, read only when the agent opens those files.

What are the alternatives to Debugging Code?

Skills that share tags, products or a category with Debugging Code: Debugging Wizard (AratKruglik/claude-laravel, 155 stars), Frontend Browser Debugging (lobehub/lobehub, 83k stars), Local Log Debug (UniClipboard/UniClipboard, 1.8k stars) and Debugging Code (JetBrains/skills, 363 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Debugging Code?

sickn33 (a GitHub user) maintains it in sickn33/agentic-awesome-skills, which has 47,304 GitHub stars. The repository holds 1,394 skills in this directory. The repository was last updated on October 6, 2026.

Source: sickn33/agentic-awesome-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.