Anssol
Back to Skills
Development

Debugger

Gives the agent a real debugger — breakpoints, stepping, and stack traces via CLI.

debuggingclitooling
<p align="center"> <img src=".github/logo.png" alt="debug-skill" width="220"> </p> <p align="center"> <strong>Let your coding agent debug like a human developer.</strong><br> Set breakpoints, step through code, evaluate expressions — the way you actually debug. </p> <p align="center"> <a href="https://github.com/AlmogBaku/debug-skill/releases/latest"><img src="https://img.shields.io/github/v/release/AlmogBaku/debug-skill?style=flat-square&color=00c853" alt="Latest Release"></a> <a href="https://github.com/AlmogBaku/debug-skill/actions/workflows/release.yml"><img src="https://img.shields.io/github/actions/workflow/status/AlmogBaku/debug-skill/release.yml?style=flat-square" alt="Build Status"></a> <a href="https://github.com/AlmogBaku/debug-skill/blob/master/go.mod"><img src="https://img.shields.io/github/go-mod/go-version/AlmogBaku/debug-skill?style=flat-square" alt="Go Version"></a> <a href="https://github.com/AlmogBaku/debug-skill/blob/master/LICENSE"><img src="https://img.shields.io/github/license/AlmogBaku/debug-skill?style=flat-square" alt="License: MIT"></a> <a href="https://github.com/AlmogBaku/debug-skill/stargazers"><img src="https://img.shields.io/github/stars/AlmogBaku/debug-skill?style=flat-square&color=yellow" alt="GitHub Stars"></a> </p> <p align="center"> If this saves you a debugging session, please <a href="https://github.com/AlmogBaku/debug-skill"><strong>star the repo</strong></a> — it helps others find it. </p>

AI coding agents (Claude Code, Codex, Opencode, Cursor) are stuck with print statements and guesswork. debug-skill gives them what human developers have: a real debugger they can actually use. It ships two things:

  • A Claude Code skill — teaches Claude how to debug: when to set breakpoints, how to step through code, how to inspect state
  • The dap CLI — a stateless CLI wrapper around the Debug Adapter Protocol so any agent can drive a real debugger from Bash

Demo

Watch the demo


The Skill

Install the skill, and Claude debugs your code the way you would — not with print statements.

The debugging-code skill gives Claude structured knowledge of the debugging workflow: setting breakpoints, stepping through execution, inspecting locals and the call stack, evaluating expressions mid-run. It uses the dap CLI as its tool.

Install for Claude Code

Via the plugin marketplace — no manual setup needed:

/plugin marketplace add AlmogBaku/debug-skill
/plugin install debugging-code@debug-skill-marketplace

Install for other agents

Via skills.sh — works with Cursor, GitHub Copilot, Windsurf, Cline, and 20+ more agents:

npx skills add AlmogBaku/debug-skill
# or: bunx skills add AlmogBaku/debug-skill

Or manually copy skills/debugging-code/ into your agent's skills.


The dap CLI

dap wraps the Debug Adapter Protocol behind simple, stateless CLI commands. A background daemon holds the session; the CLI sends one command and gets back the full context — no interactive terminal required.

Install

# One-liner (Linux & macOS)
bash <(curl -fsSL https://raw.githubusercontent.com/AlmogBaku/debug-skill/master/skills/debugging-code/scripts/install-dap.sh)
<details> <summary>Other install methods</summary>

From Homebrew (for macOS):

brew install AlmogBaku/tap/dap

From sources:

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

Or download a pre-built binary from the releases page.

</details>

Quick Start

dap debug app.py --break app.py:42   # start, stop at breakpoint
dap eval "len(items)"                # inspect a value
dap inspect data --depth 2           # expand nested objects
dap step                             # step over
dap continue                         # next breakpoint
dap continue --to app.py:50          # run to specific line
dap pause                            # interrupt if hanging
dap restart                          # re-run, preserving breakpoint changes
dap stop                             # end session

Execution commands (debug, continue, step) return full context automatically: current location, surrounding source, local variables, call stack, and program output. No follow-up calls needed.

Usage Examples

# Python
dap debug app.py --break app.py:42

# Go
dap debug main.go --break main.go:15

# Node.js / TypeScript
dap debug server.js --break server.js:10

# Rust / C / C++
dap debug hello.rs --break hello.rs:4

# Attach to a remote debugger (e.g. debugpy in a container)
dap debug --attach container:5678 --backend debugpy --break handler.py:20

# Attach to a running process by PID
dap debug --pid 12345 --backend debugpy

# Pass arguments to the program
dap debug app.py --break app.py:10 -- --config prod.yaml --verbose

Commands

CommandDescription
dap debug <script>Start debugging (local or --attach host:port or --pid PID)
dap stopEnd session
dap step [in|out|over]Step (default: over)
dap continueResume execution (--to file:line for temp breakpoint)
dap context [--frame N]Re-fetch current state
dap eval <expr> [--frame N]Evaluate expression in current frame
dap inspect <var> [--depth N]Inspect variable (expand nested objects)
dap outputDrain buffered stdout/stderr since last stop
dap pausePause a running program
dap restartRestart session, preserving breakpoint changes
dap threadsList all threads
dap thread <id>Switch to a different thread
dap break list|add|remove|clearManage breakpoints mid-session

Global flags: --json (machine-readable output), --session <name> (named sessions), --socket <path> (custom socket path), --context-lines <int> (lines of source context)

Supported Languages

LanguageBackendAuto-detected
Pythondebugpyyes
Godlv (Delve)yes
Node.js/TypeScriptjs-debugyes
Rust / C / C++lldb-dapyes

Backend is inferred from the file extension. Override with --backend <name>.

How It Works

dap <cmd>  →  Unix socket  →  Daemon  →  DAP protocol  →  debugpy / dlv / js-debug / lldb-dap  →  your program

The daemon starts automatically on dap debug and shuts down on dap stop (or after 10 min idle). It's invisible — you never manage it directly.

Multi-Session

Multiple agents can debug independently with named sessions:

dap debug app.py  --session agent1 --break app.py:10
dap debug main.go --session agent2 --break main.go:8

dap stop --session agent1   # stops agent1 only

Each session has its own daemon and socket. Omit --session to use the default session.


Contributing

PRs and issues welcome. See claudedocs/ for architecture details and CLAUDE.md for code conventions.

Support the Project

If debug-skill saves you from a painful debugging session, consider starring the repo — it helps others find it and keeps the project going.

License

MIT

Want something like this for your team?

We build custom MCPs and Claude skills tailored to private workflows. Get in touch.

Start a Conversation

Ready to Ship Something?

Tell us about your project. We respond within one business day with honest scoping — not a sales pitch.

Get Started