---
name: frontend-debug-linting
description: Quality gates for frontend code. ALWAYS use after writing React/Next.js code and before delivery. Covers: ESLint linting, TypeScript type-checking, Prettier formatting, browser console debugging. Catches errors before they reach users.
allowed-tools: Read, Edit, Bash (*)
---

# Debug & Linting

Catch errors before delivery. Lint, type-check, browser verify.

## When to Use

- After writing code → run checks
- Before delivery → verify quality
- Debugging → check console/network

## Process

**LINT → TYPE → BROWSER → DELIVER**

1. Run lint: `npm run lint`
2. Type check: `npm run typecheck`
3. Browser check: console + screenshot
4. Deliver when clean

## Quick Commands

```bash
npm run lint          # ESLint check
npm run lint:fix      # Auto-fix
npm run typecheck     # TypeScript check
npm run format        # Prettier format
npm run check         # All checks
```

## Common Fixes

### TypeScript

```yaml
"Type 'X' not assignable to 'Y'":
  → Fix type mismatch or add assertion

"'X' declared but never used":
  → Remove or prefix with _

"Object possibly 'undefined'":
  → Add null check: obj?.property
  → Add fallback: obj ?? default
```

### React

```yaml
"Missing dependencies in useEffect":
  → Add deps or wrap in useCallback

"Each child should have unique key":
  → Add key={item.id} to list items

"img must have alt prop":
  → Add alt text or alt=""
```

### Formatting

```yaml
"Prettier errors":
  → Run: npm run format
```

## Browser Verification

```yaml
# Check console errors
browser_console_messages: { onlyErrors: true }
→ Must be empty before delivery

# Check network
browser_network_requests
→ No failed (4xx, 5xx) requests

# Debug element styles
browser_evaluate: { function: "() => getComputedStyle(el)" }
```

## Pre-Delivery Checklist

```yaml
MUST PASS:
  - [ ] npm run lint → 0 errors
  - [ ] npm run typecheck → 0 errors
  - [ ] browser_console_messages → 0 errors
  - [ ] No failed network requests

CAN DELIVER WITH:
  - ESLint warnings (with explanation)
  - Console warnings (if understood)
```

## Project Setup

```bash
# Add to existing Next.js project
npm install -D prettier eslint-config-prettier

# package.json scripts
{
  "lint": "eslint . --ext .ts,.tsx",
  "lint:fix": "eslint . --ext .ts,.tsx --fix",
  "format": "prettier --write .",
  "typecheck": "tsc --noEmit",
  "check": "npm run typecheck && npm run lint"
}
```

## Debug Checklist

```yaml
WHEN SOMETHING BREAKS:
  1. browser_console_messages → check errors
  2. browser_network_requests → failed requests?
  3. npm run typecheck → type errors?
  4. Add console.log → trace flow
  5. Isolate → comment out sections
  6. Fix → run checks → verify
```
