Debugger fluency
Skill Amey-Thakur/AI-SKILLS/skills/debugging/debugger-fluency
Plug-and-play skills and prompts for every AI coding agent
npx -y skills add Amey-Thakur/AI-SKILLS --skill debugger-fluencyAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- 20 days oldThe repository was created 20 days ago. New is not bad, but a brand new repository carrying a familiar-sounding name is the shape a typosquat arrives in, and there has been no time for anyone else to find a problem with it.
- 4 stars4 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Drive a real debugger with breakpoints, watch expressions, and conditional stops to read live program state at the moment of failure. Use when a bug needs you to see the call stack and variables as it breaks, not reconstruct them afterward.
SKILL.md
2.7 KB, 577 tokens by cl100k_base, as published. Nobody here has run it
Debugger fluency
A debugger freezes the program where the bug lives and lets you read every variable, frame, and expression at that instant. Many developers reach only for print statements because they never learned the handful of commands that make a debugger fast. Those commands trade an afternoon of recompiling for one inspected pause.
Method
- Break at the fault, not at
main. Set the breakpoint on the misbehaving line or the exception itself:breakpoint()in Python, a gutter dot in the IDE, orbreak file.py:88. Stepping from the entry point through everything wastes the tool. - Master the five movements. Step over (
n) runs a line, step into (s) enters a call, continue (c) runs to the next stop, finish (r) returns from the frame, and up/down walk the stack. The rest is convenience. - Use conditional breakpoints inside loops. Stop only when it matters:
break process.py:40 if user_id == 4187. Instead of hitting continue nine hundred times you land exactly on the iteration that fails. - Watch expressions, not just variables. Add
order.total - sum(items)as a watch so the debugger re-evaluates it at every stop. The moment the invariant breaks you see it, without scanning raw fields by eye. - Walk the stack from the crash. On an exception, drop into a post-mortem
with
pdb.pm()or "break on caught exception," then moveupthrough the callers reading locals. The bad value was often set three frames above where it blew up. - Mutate state live to test a fix. Reassign a variable at the prompt and continue, or evaluate the corrected expression in place. Confirm the hypothesis holds before you edit a single line of source.
- Script the repeat with a startup file. Put recurring breakpoints and
commands in a
.pdbrcor a launch config so re-entering the session drops you at the scene without retyping the setup.
Signals
- Do you reach the failing state in one continue, not fifty manual steps?
- Can you name the frame where the wrong value first appears?
- Do your watch expressions encode the invariant, so a stop explains itself?
Boundaries
Where you cannot attach, a locked container, a hot production path, or a timing race a breakpoint would freeze, fall back to print-debugging or heisenbugs. A debugger inspects one run, so reproduce the failure reliably with reproduction-first before you open it.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.