Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsBlogPro
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Authors
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges
  • Chrome Extension
  • Skill Manager

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

ProTermsPrivacyRefunds
Back to skills

Nextjs Debug

ASecurity

Framework diagnostics for Next.js applications. Troubleshoots API route 404/405 errors, middleware redirect loops, SSR/hydration issues, and server/client component problems. Use when facing Next.js-specific issues. Triggers on "nextjs debug", "404 error", "405 error", "middleware issue", "hydration error", "server component", "client component", "API route not working".

2 stars
0 votes
0 copies
0 views
Added 9/27/2026
developmenttypescriptgobashreactnextjsdebuggingapi

Works with

cliapi

Security Analysis

A100/100

Scanned 9/27/2026

$npx -y skills add emanuelrechsteiner/claude-rcode --skill nextjs-debug --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Nextjs Debug?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Nextjs Debug
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/emanuelrechsteiner-nextjs-debug/badge)](https://www.skillsdirectory.com/skills/emanuelrechsteiner-nextjs-debug)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
Files
SKILL.md
---
name: nextjs-debug
description: Framework diagnostics for Next.js applications. Troubleshoots API route 404/405 errors, middleware redirect loops, SSR/hydration issues, and server/client component problems. Use when facing Next.js-specific issues. Triggers on "nextjs debug", "404 error", "405 error", "middleware issue", "hydration error", "server component", "client component", "API route not working".
context: fork
model: haiku
allowed-tools: Read, Glob, Grep, Bash(npm *), Bash(npx next *)
---

# Next.js Debug Skill - Framework Diagnostics

## Purpose

Quickly diagnose and resolve common Next.js issues by running targeted diagnostic checks and providing specific solutions.

## Issue Categories

### 1. API Route Issues (404/405)

**Symptoms:**
- POST request returns 404
- API route returns 405 Method Not Allowed
- API works in development but not production

**Diagnostic Steps:**

```bash
# 1. Verify route file exists
ls -la app/api/[endpoint]/route.ts

# 2. Check exported HTTP methods
grep -E "export (async )?function (GET|POST|PUT|DELETE|PATCH)" app/api/*/route.ts

# 3. Check middleware configuration
grep -A 10 "matcher" middleware.ts

# 4. Look for API exclusion in middleware
grep "api" middleware.ts
```

**Common Fixes:**

| Problem | Fix |
|---------|-----|
| Route file missing | Create `app/api/[endpoint]/route.ts` |
| Wrong HTTP method | Export correct function: `export async function POST()` |
| Middleware intercepting | Add `/api/*` exclusion to matcher |
| Path mismatch | Verify client fetch URL matches route path |

**Middleware Fix Template:**
```typescript
export const config = {
  matcher: ['/((?!api|_next/static|_next/image|favicon.ico).*)']
};
```

### 2. Middleware Redirect Loops

**Symptoms:**
- Browser shows "too many redirects"
- Page never loads
- Request keeps bouncing between paths

**Diagnostic Steps:**

```bash
# 1. Check middleware redirect conditions
grep -A 20 "redirect\|NextResponse.redirect" middleware.ts

# 2. Check authentication logic
grep -B 5 -A 10 "if.*authenticated\|if.*session\|if.*cookie" middleware.ts

# 3. Check matcher scope
grep "matcher" middleware.ts
```

**Common Fixes:**

| Problem | Fix |
|---------|-----|
| Redirect target matches middleware | Exclude target from matcher |
| Missing auth check on redirect target | Add condition to skip redirect if already on target |
| Cookie not persisting | Set cookie before redirect |

### 3. Hydration Mismatches

**Symptoms:**
- Console warning: "Hydration failed because the initial UI does not match"
- Content flickers on page load
- Interactive elements don't work initially

**Diagnostic Steps:**

```bash
# 1. Find browser-only APIs
grep -rn "window\.\|document\.\|localStorage\|sessionStorage" src/ --include="*.tsx"

# 2. Find date/time rendering
grep -rn "new Date\|toLocaleString\|Date\.now" src/ --include="*.tsx"

# 3. Find random values
grep -rn "Math\.random\|uuid\|nanoid" src/ --include="*.tsx"

# 4. Find conditional rendering that could differ
grep -rn "typeof window\|process\.browser" src/ --include="*.tsx"
```

**Common Fixes:**

| Problem | Fix |
|---------|-----|
| Browser API in render | Wrap in `useEffect` or use `dynamic({ ssr: false })` |
| Date/time differs | Use consistent formatting or `suppressHydrationWarning` |
| Random values | Generate in `useEffect` or pass from server |

**Pattern:**
```tsx
// BAD - runs on server with different value
const time = new Date().toLocaleString();

// GOOD - only runs on client
const [time, setTime] = useState<string>();
useEffect(() => {
  setTime(new Date().toLocaleString());
}, []);
```

### 4. Server/Client Component Issues

**Symptoms:**
- Error: "useState is not a function"
- Error: "Hooks can only be called inside a function component"
- Error: "You're importing a component that needs X"

**Diagnostic Steps:**

```bash
# 1. Find files using React hooks
grep -rn "useState\|useEffect\|useRef\|useContext\|useCallback\|useMemo" src/ --include="*.tsx" -l

# 2. Check which have 'use client'
for f in $(grep -rn "useState\|useEffect" src/ --include="*.tsx" -l); do
  if ! grep -q "use client" "$f"; then
    echo "Missing 'use client': $f"
  fi
done

# 3. Find event handlers (need client component)
grep -rn "onClick\|onChange\|onSubmit" src/ --include="*.tsx" -l
```

**Common Fixes:**

| Problem | Fix |
|---------|-----|
| Hook in server component | Add `'use client'` directive at top of file |
| Event handler in server component | Add `'use client'` or extract to client component |
| Context in server component | Create client wrapper component |

### 5. Build/Bundle Issues

**Symptoms:**
- Build fails with module errors
- Unexpected bundle size
- "Module not found" errors

**Diagnostic Steps:**

```bash
# 1. Check for circular dependencies
npx madge --circular src/

# 2. Analyze bundle size
npm run build
npx @next/bundle-analyzer

# 3. Check for server-only imports in client
grep -rn "from 'fs'\|from 'path'\|from 'crypto'" src/ --include="*.tsx"
```

## Quick Diagnostic Command

Run this for a quick health check:

```bash
echo "=== Next.js Diagnostic ===" && \
echo "Middleware:" && ls -la middleware.ts 2>/dev/null || echo "No middleware" && \
echo "API Routes:" && find app/api -name "route.ts" 2>/dev/null | head -10 && \
echo "Client Components:" && grep -rl "use client" src/ 2>/dev/null | wc -l && \
echo "Server Hooks Usage:" && grep -rn "useState\|useEffect" src/ --include="*.tsx" 2>/dev/null | grep -v "use client" | head -5
```

## Debugging Workflow

1. **Identify the error type** (404, hydration, hooks, etc.)
2. **Run targeted diagnostics** for that category
3. **Check the common fixes table**
4. **Apply the fix**
5. **Verify with build:** `npm run build`

## Integration

This skill works with:
- `framework-specialist-agent` for complex issues
- `/validate-build` for verification after fixes
- `nextjs-app-router-patterns.md` rule for prevention

## Quick Reference

### File Checklist for API Routes

- [ ] File is at `app/api/[endpoint]/route.ts`
- [ ] HTTP method function is exported
- [ ] Method name is uppercase (GET, POST, etc.)
- [ ] Middleware excludes `/api/*`
- [ ] No `page.tsx` in same folder

### File Checklist for Client Components

- [ ] `'use client'` at very top of file
- [ ] No server-only imports
- [ ] All hooks are inside component body
- [ ] Event handlers are in client components

Attribution

emanuelrechsteineremanuelrechsteiner
View sourceSee grades on GitHubMore from emanuelrechsteiner →
SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Related Skills

Clean Code

Pragmatic coding standards - concise, direct, no over-engineering, no unnecessary comments

304955 votes

Browser Extension Developer

Use this skill when developing or maintaining browser extension code in the `browser/` directory, including Chrome/Firefox/Edge compatibility, content scripts, background scripts, or i18n updates.

286712 votes

Seo Optimizer

SEO optimization with keyword analysis, readability assessment, technical validation, content quality. Use for search rankings, blog posts, content audits, or encountering keyword density, readability scores, meta tags, schema markup errors.

2222 votes

Google Official Seo Guide

Official Google SEO guide covering search optimization, best practices, Search Console, crawling, indexing, and improving website search visibility based on official Google documentation

1862 votes

Writing Plans

Use when you have a spec or requirements for a multi-step task, before touching code

2927051 votes
View all in development →