debug
Use this skill when features break, users report errors, deployments fail, or tests don't pass. Guides systematic debugging: reproducing bugs, gathering diagnostic info, reading error messages, and working with AI tools to fix issues efficiently.
What this skill does
# Debug
## The golden rule
**NO GUESSING. GATHER INFO FIRST.**
Bad: Something broke → try random fix → doesn't work → try another → still broken after 5 attempts.
Good: Something broke → reproduce it → gather diagnostic info → diagnose root cause → fix it (usually first try).
**Diagnosis before fixes.**
---
## Debugging by tool
How you debug depends on which tool you're using.
### Claude Code (you have direct access)
Claude Code can gather its own diagnostics. Before asking the founder for screenshots or logs, do this automatically:
```
Auto-debug steps (do these yourself):
1. Check git history: git log --oneline -10 and git diff HEAD~3
2. Search for the error: Grep for error text across the codebase
3. Read the failing file: Read the file + surrounding context
4. Run the app/tests: Bash to run dev server, test suite, or reproduce
5. Check logs: Read server logs, build output, or error logs
6. Check environment: Verify .env.example vs actual config
```
Only ask the founder for information you can't get yourself: what they saw in the browser, what they clicked, screenshots of visual bugs.
### Lovable / Replit (founder pastes into chat)
The founder needs to gather info manually and paste it. Use the "Tell AI:" prompts in [DEBUG-PROMPTS.md](DEBUG-PROMPTS.md) — they're structured templates that ensure complete context.
### Production bugs (check monitoring first)
Before debugging production issues, check monitoring and error tracking:
```
1. Error tracker (Sentry, LogRocket): exact error + stack trace + user context
2. Server logs: filter by timestamp of report
3. Hosting dashboard: any deployment or outage at that time?
4. Database: any failed migrations or connection issues?
```
See /monitor skill for setting up monitoring. See /deploy skill for rollback procedures.
---
## Workflow
```
Debug process:
- [ ] Reproduce bug consistently
- [ ] Gather diagnostic info (auto in Claude Code, manual elsewhere)
- [ ] Check what changed recently
- [ ] Diagnose root cause before proposing fixes
- [ ] Fix the root cause
- [ ] Test fix works
- [ ] Verify didn't break anything else
- [ ] Ask: how do we prevent this?
```
---
## Reproducing bugs
Before fixing, reproduce it:
```
Can you reproduce it?
- [ ] Exact steps to trigger bug
- [ ] Happens every time or intermittently?
- [ ] Specific browser/device?
- [ ] Specific data or user?
If can't reproduce:
- Ask user for exact steps or screen recording
- Try different browser/device/account
- Try with different data
- Clear cache and retry
- Check if timing-dependent
```
**Tell AI:**
```
Bug: [description]
Steps to reproduce:
1. [Step]
2. [Step]
3. [Bug happens]
Happens: [Always / Sometimes / Once]
Browser: [Chrome 120 on Mac]
Screenshot: [attach]
```
---
## Capturing error info
### Browser console
1. Right-click page → Inspect → Console tab
2. Look for red errors
3. Screenshot the full error including stack trace
**Tell AI:**
```
Console error: [paste full error message]
When it happens: [what you were doing]
```
### Network tab
1. DevTools → Network tab → reproduce bug
2. Look for failed requests (red, 4xx, 5xx)
3. Click failed request → check Response tab
**Tell AI:**
```
API call failing:
URL: /api/endpoint
Method: [GET/POST]
Status: [status code]
Response: [paste error response]
This happens when: [action]
```
### Visual bugs
Screenshot what you expected vs what actually shows. Include device and browser.
---
## Common bug types
### "Nothing happens when I click"
Check: console errors? Network request failing? Element actually clickable (not covered by another element)?
### "Page won't load"
Check: network errors? JavaScript errors? Infinite redirect? Missing environment variable?
### "Wrong data showing"
Check: API returning wrong data (network tab)? Caching issue? State not updating? Wrong user context?
### "Form doesn't submit"
Check: validation errors visible? Console errors? Network request firing at all?
### "Works in dev, broken in production"
Check: environment variables set? Different database? Build step stripping something? CORS configured for production domain?
### "Works in Chrome, broken in Safari"
Check: CSS/JS compatibility? Safari-specific defaults? Date parsing differences?
---
## Escalation discipline
### After 1 failed fix
Reassess. Did we misdiagnose? Is there more info we should gather?
```
Fix didn't work. Here's what happened after applying it: [new info].
Are we fixing the right thing?
```
### After 2 failed fixes
**Stop trying fixes.** The diagnosis is probably wrong.
```
2 fixes failed.
Fix 1: [tried] → [result]
Fix 2: [tried] → [result]
Are we fixing the wrong thing? Should we rethink the approach entirely?
```
### After 3 failed fixes
Don't try a 4th. Change strategy:
1. Rebuild the feature with a simpler approach
2. Get a human developer to look at it (see /hiring)
3. Ship a workaround and fix properly later
---
## Digging deeper: find the real root cause
Most debugging failures happen because you stop at the first plausible cause instead of the actual root cause. Use the "keep asking why" technique:
```
Problem: Server crashed
Why? → Out of memory
Why? → Memory leak in the auth service ← Most people stop here and "add more RAM"
Why? → Database connections not being released
Why? → Error handler doesn't close connections
Why? → No cleanup in the finally block ← THIS is the fix
```
**How to tell you've found the real root cause:**
- It's something you can actually change (code, config, process)
- Fixing it would prevent the problem from recurring
- Asking "why?" again doesn't lead anywhere actionable
**Common mistake: stopping at "the AI broke it."** That's blame, not a cause. Ask instead: what process would have caught this? Missing test? Missing validation? No code review?
### When a bug has multiple causes
Sometimes a bug needs two things to go wrong at the same time. When the obvious cause doesn't fully explain the problem, look for a second branch:
```
Problem: Deployment failed
Why? → Database migration timed out
Branch A: Why was the migration slow?
→ Table lock from a long-running query → Missing index
Branch B: Why is the timeout so short?
→ Using default timeout → No deployment-specific config
```
Both branches need fixing, or the bug will come back under slightly different conditions.
### Validate your diagnosis
Before implementing a fix, trace it backwards: "If I fix X, does that prevent Y, which prevents Z, which prevents the original problem?" If the chain breaks, you found the wrong root cause.
---
## Intermittent bugs
"Works sometimes, breaks sometimes" — likely a race condition, caching issue, or external API flakiness.
**Tell AI:**
```
Bug is intermittent.
Works: [X] out of 10 times
Fails: [Y] out of 10 times
Pattern: Fails more when [condition]. Never fails when [condition].
Add logging to capture state when it fails.
```
---
## Edge case testing
When a fix works for the main case, also test:
- **Empty states**: no data, empty lists, missing fields
- **Volume**: 1 item, 100 items, 10,000 items
- **Timing**: slow connection (3G throttle in DevTools), rapid double-clicks, expired sessions, multiple tabs
- **Boundaries**: very long text, special characters, zero values, negative numbers
---
## Bugs in production
**Priority 1: Can users work around it?**
- Yes → fix in next deployment
- No → emergency fix needed
**Emergency fix:**
```
Production bug blocking users.
Bug: [description]
Impact: [how many users affected]
Need the simplest fix that unblocks users. Can improve later.
```
---
## Multiple bugs at once
Symptoms that look like one bug might be several, or several symptoms might share one root cause.
```
List all symptoms:
1. [Symptom]
2. [Symptom]
3. [Symptom]
Are these separate bugs or one root cause?
```
**Fix in priority order:** blocking (can't use app) → critical (main features broken) → major → minor. Don't fix minor buRelated in Code Review
gstack
IncludedFast headless browser for QA testing and site dogfooding. Navigate pages, interact with elements, verify state, diff before/after, take annotated screenshots, test responsive layouts, forms, uploads, dialogs, and capture bug evidence. Use when asked to open or test a site, verify a deployment, dogfood a user flow, or file a bug with screenshots. (gstack)
startup-due-diligence
IncludedLegal due diligence review for seed-stage and Series A startups (US, Delaware C-Corp focus). Supports both investor and founder perspectives. Capabilities include: (1) Interactive document review and issue spotting; (2) Document request list generation; (3) Cap table and SAFE/convertible note analysis; (4) Red flag identification with severity ratings; (5) Diligence report generation. TRIGGERS: due diligence, DD, startup investment, cap table review, Series A, seed round, investor diligence, legal review startup, SAFE analysis, convertible note, 409A, founder vesting.
interview-master
IncludedThis skill should be used when the user asks to "generate interview questions", "prepare for interview", "optimize resume", "conduct mock interview", "analyze git commits for resume", "generate resume from code", "review my resume", or mentions interview preparation, career assistance, or extracting project experience from git history. Provides comprehensive interview and career development guidance for both job seekers and interviewers.
fix-issue
IncludedFixes GitHub issues using parallel analysis agents for root cause investigation, code exploration, and regression detection. Reads issue context from gh CLI, searches codebase and memory for related patterns, generates a fix with tests, and links the resolution back to the issue via PR. Includes prevention analysis to avoid recurrence. Use when debugging errors, resolving regressions, fixing bugs, or triaging issues.
sf-apex
IncludedGenerates and reviews Salesforce Apex code with 150-point scoring. TRIGGER when: user writes, reviews, or fixes Apex classes, triggers, test classes, batch/queueable/schedulable jobs, or touches .cls/.trigger files. DO NOT TRIGGER when: LWC JavaScript (use sf-lwc), Flow XML (use sf-flow), SOQL-only queries (use sf-soql), or non-Salesforce code.
swift-development
IncludedComprehensive Swift development for building, testing, and deploying iOS/macOS applications. Use when Claude needs to: (1) Build Swift packages or Xcode projects from command line, (2) Run tests with XCTest or Swift Testing framework, (3) Manage iOS simulators with simctl, (4) Handle code signing, provisioning profiles, and app distribution, (5) Format or lint Swift code with SwiftFormat/SwiftLint, (6) Work with Swift Package Manager (SPM), (7) Implement Swift 6 concurrency patterns (async/await, actors, Sendable), (8) Create SwiftUI views with MVVM architecture, (9) Set up Core Data or SwiftData persistence, or any other Swift/iOS/macOS development tasks.