parallel-debugging
Debug complex issues using competing hypotheses with parallel investigation, evidence collection, and root cause arbitration. Use this skill when debugging bugs with multiple potential causes, performing root cause analysis, or organizing parallel investigation workflows.
What this skill does
# Parallel Debugging
Framework for debugging complex issues using the Analysis of Competing Hypotheses (ACH) methodology with parallel agent investigation.
## When to Use This Skill
- Bug has multiple plausible root causes
- Initial debugging attempts haven't identified the issue
- Issue spans multiple modules or components
- Need systematic root cause analysis with evidence
- Want to avoid confirmation bias in debugging
## Hypothesis Generation Framework
Generate hypotheses across 6 failure mode categories:
### 1. Logic Error
- Incorrect conditional logic (wrong operator, missing case)
- Off-by-one errors in loops or array access
- Missing edge case handling
- Incorrect algorithm implementation
### 2. Data Issue
- Invalid or unexpected input data
- Type mismatch or coercion error
- Null/undefined/None where value expected
- Encoding or serialization problem
- Data truncation or overflow
### 3. State Problem
- Race condition between concurrent operations
- Stale cache returning outdated data
- Incorrect initialization or default values
- Unintended mutation of shared state
- State machine transition error
### 4. Integration Failure
- API contract violation (request/response mismatch)
- Version incompatibility between components
- Configuration mismatch between environments
- Missing or incorrect environment variables
- Network timeout or connection failure
### 5. Resource Issue
- Memory leak causing gradual degradation
- Connection pool exhaustion
- File descriptor or handle leak
- Disk space or quota exceeded
- CPU saturation from inefficient processing
### 6. Environment
- Missing runtime dependency
- Wrong library or framework version
- Platform-specific behavior difference
- Permission or access control issue
- Timezone or locale-related behavior
## Evidence Collection Standards
### What Constitutes Evidence
| Evidence Type | Strength | Example |
| ----------------- | -------- | --------------------------------------------------------------- |
| **Direct** | Strong | Code at `file.ts:42` shows `if (x > 0)` should be `if (x >= 0)` |
| **Correlational** | Medium | Error rate increased after commit `abc123` |
| **Testimonial** | Weak | "It works on my machine" |
| **Absence** | Variable | No null check found in the code path |
### Citation Format
Always cite evidence with file:line references:
```
**Evidence**: The validation function at `src/validators/user.ts:87`
does not check for empty strings, only null/undefined. This allows
empty email addresses to pass validation.
```
### Confidence Levels
| Level | Criteria |
| ------------------- | ----------------------------------------------------------------------------------- |
| **High (>80%)** | Multiple direct evidence pieces, clear causal chain, no contradicting evidence |
| **Medium (50-80%)** | Some direct evidence, plausible causal chain, minor ambiguities |
| **Low (<50%)** | Mostly correlational evidence, incomplete causal chain, some contradicting evidence |
## Result Arbitration Protocol
After all investigators report:
### Step 1: Categorize Results
- **Confirmed**: High confidence, strong evidence, clear causal chain
- **Plausible**: Medium confidence, some evidence, reasonable causal chain
- **Falsified**: Evidence contradicts the hypothesis
- **Inconclusive**: Insufficient evidence to confirm or falsify
### Step 2: Compare Confirmed Hypotheses
If multiple hypotheses are confirmed, rank by:
1. Confidence level
2. Number of supporting evidence pieces
3. Strength of causal chain
4. Absence of contradicting evidence
### Step 3: Determine Root Cause
- If one hypothesis clearly dominates: declare as root cause
- If multiple hypotheses are equally likely: may be compound issue (multiple contributing causes)
- If no hypotheses confirmed: generate new hypotheses based on evidence gathered
### Step 4: Validate Fix
Before declaring the bug fixed:
- [ ] Fix addresses the identified root cause
- [ ] Fix doesn't introduce new issues
- [ ] Original reproduction case no longer fails
- [ ] Related edge cases are covered
- [ ] Relevant tests are added or updated
## Runtime Evidence Pattern
When arbitration leaves hypotheses Plausible or Inconclusive and static evidence is exhausted, inject targeted runtime logs to disambiguate. The pattern is designed so cleanup is mechanical (grep + delete) and the logs never leak into production.
### Log Convention
Every injected log MUST follow this format:
```
[DEBUG] [{file}:{line}] {short description} { {relevant vars} }
```
Concrete examples per language:
```javascript
// JS/TS
console.log("[DEBUG] [auth.ts:42] before token verify", { tokenLen: token.length, hasUser: !!user })
```
```python
# Python
print(f"[DEBUG] [auth.py:42] before token verify", {"token_len": len(token), "has_user": user is not None})
# or
logger.debug("[DEBUG] [auth.py:42] before token verify token_len=%d has_user=%s", len(token), user is not None)
```
```rust
// Rust
eprintln!("[DEBUG] [auth.rs:42] before token verify token_len={} has_user={}", token.len(), user.is_some());
```
```go
// Go
fmt.Fprintf(os.Stderr, "[DEBUG] [auth.go:42] before token verify token_len=%d has_user=%v\n", len(token), user != nil)
```
The `[DEBUG]` prefix is non-negotiable. It is the cleanup anchor.
### Strategic Placement
Pick 3-5 points, not more. Flooding logs makes signal harder to extract.
| Location | Captures |
| ----------------- | ----------------------------------- |
| Function entry | Confirms execution path, args |
| Before async call | State just before the operation |
| After async call | Result, error, timing |
| Conditional | Which branch was taken |
| Catch block | Error name, message, partial state |
### What NOT to Log
- Passwords, tokens, API keys (use length or `present/absent` markers instead)
- PII (email, phone, names) unless masked
- Full request/response bodies (use sizes and selected fields)
- Inside hot loops without rate limiting
### Cleanup Protocol
After the bug is verified fixed, remove every `[DEBUG]` log. The grep is the source of truth — if grep returns zero matches, cleanup is complete.
```bash
# JS/TS
grep -rn '\[DEBUG\]' . --include='*.ts' --include='*.tsx' --include='*.js' --include='*.jsx'
# Python
grep -rn '\[DEBUG\]' . --include='*.py'
# Rust
grep -rn '\[DEBUG\]' . --include='*.rs'
# Go
grep -rn '\[DEBUG\]' . --include='*.go'
```
Multi-line console statements that span more than the matched line must be removed in full. Verify the file still parses after deletion.
### Iteration Cap
A debug session should perform at most **2 rounds** of log injection. If after the second round the hypotheses are still Inconclusive, escalate to the user with a written summary of what has been ruled out and what additional context (MCP access, production logs, a minimal reproduction) would be needed.
## Specialized Investigation Agents
When a hypothesis falls into one of the 6 failure mode categories above, prefer a specialized investigator over a generic `team-debugger`. The specialized agent loads the right knowledge base automatically and produces higher-precision findings.
| Failure mode category | Preferred specialized agent | Notes |
|---|---|---|
| Logic Error | `senior-review:code-auditor` | Failure-flow tracing + pattern consistency |
| Data Issue | `senior-review:code-auditor` or `senior-review:security-auditor` | The latter when the data crosses a trust boundary |
| State Problem (concurrency, cache, mutation) | `senior-review:ui-race-auditor` for UI; `senior-review:distributed-flow-auditor` for cross-service | |
| Integration Failure | `seniRelated 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.