nextjs
Next.js 14+ App Router patterns, Server Components, API routes, and performance optimization
Works with
--- name: nextjs description: Next.js 14+ App Router patterns, Server Components, API routes, and performance optimization license: MIT --- ## Next.js Code Review Rules ### Security (Critical) - Server Actions must validate and sanitize all input - No secrets exposed in client components - Check `headers()` and `cookies()` usage is server-side only - Sanitize all dynamic values (file names, HTTP headers) to prevent injection attacks - Never use HTML comments (`<!-- -->`) in production code - Validate and escape all user-provided content before rendering ### App Router Structure - Verify `app/` directory structure follows conventions (`page.tsx`, `layout.tsx`, `loading.tsx`, `error.tsx`) - Check `use client` directive is only used when necessary (event handlers, hooks, browser APIs) - Server Components should not import client-only libraries (useState, useEffect, etc.) - Implement error boundaries with `error.tsx` for error handling - Use error boundaries to catch and handle errors in Server Components - Provide fallback UIs for errors with proper error messages ### Data Fetching - Prefer Server Components for data fetching over client-side fetching - Check for proper use of `cache()` for request deduplication - Validate `revalidate` options for ISR (Incremental Static Regeneration) - Ensure `generateStaticParams()` is used for static generation of dynamic routes ### Performance (Essential) - Images must use `next/image` with explicit `width`/`height` or `fill` - Fonts should use `next/font` for automatic optimization - Check for proper `Suspense` boundaries around async components - Verify no blocking data fetches in layouts (affects all child routes) ### API Routes - Validate HTTP methods (check `req.method` or use route handlers) - Implement authentication and authorization - Return appropriate HTTP status codes - Handle errors gracefully with try-catch - Sanitize and validate all inputs - Use proper CORS headers when needed ### Accessibility - Use semantic HTML elements - Include `alt` text on all images - Ensure keyboard navigation works - Test with screen readers - Maintain proper heading hierarchy - Add ARIA labels where needed ### Testing - Write unit tests for critical components - Test Server Components and Server Actions - Use integration tests for data fetching flows - Test error boundaries and error states - Include e2e tests for critical user flows - Validate test coverage for mission-critical features ### Dependencies - Keep Next.js and React versions compatible - Check for breaking changes when updating - Audit third-party packages for security and compatibility - Use official Next.js plugins when available - Avoid excessive dependencies for simple functionality ### Edge Runtime (Advanced) - Review usage of Edge runtime for API routes - Ensure Edge-compatible code (no Node.js-specific APIs) - Use Edge runtime for latency-sensitive operations - Be aware of Edge runtime limitations (memory, execution time) - Test Edge functions thoroughly ### Common Anti-patterns - Avoid `use client` at layout level (makes all children client components) - Avoid fetching same data in multiple components (use cache or pass as props) - Avoid `dynamic = 'force-dynamic'` without justification
More Performance skills
seo-audit
coreyhaines31/marketingskills
When the user wants to audit, review, or diagnose SEO issues on their site. Also use when the user mentions "SEO audit," "technical SEO," "why am I not ranking," "SEO issues," "on-page SEO," "meta tags review," "SEO health check," "my traffic dropped," "lost rankings," "not showing up in Google," "site isn't ranking," "Google update hit me," "page speed," "core web vitals," "crawl errors," or "indexing issues." Use this even if the user just says something vague like "my SEO is bad" or "help with SEO" — start with an audit. For building pages at scale to target keywords, see programmatic-seo. For adding structured data, see schema. For AI search optimization, see ai-seo.
competitor-profiling
coreyhaines31/marketingskills
When the user wants to research, profile, or analyze competitors from their URLs. Also use when the user mentions 'competitor profile,' 'competitor research,' 'competitor analysis,' 'profile this competitor,' 'analyze competitor,' 'competitive intelligence,' 'competitor deep dive,' 'who are my competitors,' 'competitor landscape,' 'competitor dossier,' 'competitive audit,' or 'research these competitors.' Input is a list of competitor URLs. Output is structured competitor profile markdown files. For creating comparison/alternative pages from profiles, see competitors. For sales-specific battle cards, see sales-enablement.
prospecting
coreyhaines31/marketingskills
When the user wants to find, qualify, and build a list of prospects to reach out to — across B2B SaaS, general B2B, or local small businesses. Also use when the user mentions "prospecting," "build a prospect list," "find prospects," "find leads," "lead gen list," "find SaaS companies that," "find B2B companies," "find local businesses," "ICP-fit accounts," "who should we go after," "outbound list," "target account list," "find clients near me," "businesses without websites," "prospect research," "qualified leads," "find my first customers," "early adopters," "design partners," "beta users," or "who has this problem." Use this for the list-building and qualification phase. For writing the outbound copy after the list is built, see cold-email. For deep competitive research on specific accounts, see competitor-profiling.

