skills/nextjs/nextjs-security/SKILL.md
Secure Next.js App Router with middleware auth, Server Action validation, CSP headers, and taint APIs. Use when adding authentication middleware, validating Server Action inputs with Zod, or preventing secret leakage to client bundles.
npx skillsauth add hoangnguyen0403/agent-skills-standard nextjs-securityInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
middleware.ts to verify JWT/session on protected routes.await auth() first.server-only — Import in modules containing secrets to prevent client bundling.taintObjectReference to block server objects from reaching client.See implementation examples
middleware.ts for edge-side authentication, role-based access control (RBAC), and enforcing Security Headers (e.g., Content-Security-Policy (CSP), X-XSS-Protection).FormData or JSON using Zod. Perform authentication checks (await auth()) inside every action to verify caller.experimental_taint API (taintObjectReference) to ensure sensitive server objects (e.g., User with passwordHash) never leak into Client Component.route.ts): Implement rate limiting to prevent brute-force or DoS attacks. Verify Origin/Referer headers to mitigate CSRF (Cross-Site Request Forgery).HttpOnly, Secure cookies with SameSite: 'Lax' for session management. Never store tokens in localStorage.server-only package to prevent backend-specific logic from included in client bundle.dangerouslySetInnerHTML without sanitizer like DOMPurify.process.env in client bundles: Mark as NEXT_PUBLIC_ only if safe to expose.testing
Infer the requesting operator's technical fluency from message content (never ask directly) and adapt register — business, hybrid, or technical — across SDLC workflow output. Use when starting sdlc, brainstorm-feature, plan-feature, verify-work, publish-notes, or session-report, or whenever a request's phrasing signals a non-technical or cross-stack operator.
documentation
Define transaction boundaries, locking, and consistency guarantees for multi-step writes. Use when designing atomic operations, retries, idempotency, or concurrent write behavior.
development
Design relational or document schemas from access patterns, cardinality, and lifecycle. Use when modeling entities, choosing embed vs normalize, or shaping schema boundaries before implementation.
data-ai
Diagnose database latency with explain plans, index ownership, and query-shape review. Use when a query is slow, an index is missing, or scans and N+1 patterns appear.