frontend-development

Use this skill for ANY task in a Next.js or React frontend codebase — adding pages, building components, fixing UI bugs, styling, handling forms, fetching data, or modifying layouts. Trigger even when the task is vague like "add this feature", "fix the UI", "make this page", or "update the form" — if the project has next.config.*, React components, or client-side TypeScript, this skill applies. Covers App Router, Server Components, Server Actions, MUI styling, Zod validation, caching, and design quality. When in doubt whether this is frontend work, use this skill.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "frontend-development" with this command: npx skills add carvalab/k-skills/carvalab-k-skills-frontend-development

Frontend Development

Next.js App Router with TypeScript. Server-first architecture. Covers everything from adding a page to building complex interactive features — including vague tasks where you need to figure out the right approach from context.

Related Skills:

  • kavak-documentation — for Kavak-specific patterns, GitLab CI, Docker templates
  • vercel-react-best-practices — for performance (bundle size, waterfalls, caching, re-renders)
  • Check .claude/CLAUDE.md or .cursor/rules/* for project-specific conventions

MCP: Use kavak-platform/platform_docs_search for Kavak internal docs and kavak-platform/search_resource for workload info.

Quick Start

TaskPattern
New pageServer Component by default
Data fetchingServer Component async fetch
MutationsServer Actions + Zod + revalidatePath
StylingMUI sx prop, inline if <100 lines
StateServer = fetch, Client = useState only when needed

Core Principles

  1. Server by Default — components are Server Components unless they need useState/useEffect/events
  2. Server Actions for Mutations — replace API routes for internal app logic
  3. Opt-in Caching — use 'use cache' directive for explicit caching
  4. Minimal Client JS — keep 'use client' components small and leaf-level
  5. Type Everything — strict TypeScript, Zod for runtime validation

Performance: For bundle optimization, waterfalls, memoization, see vercel-react-best-practices

Server vs Client Decision

Need useState/useEffect/onClick? → 'use client'
Need browser APIs (localStorage)? → 'use client'
Just rendering data? → Server Component (default)

Keep Client Components small. Most of the tree stays server-rendered.

Data Fetching Pattern

// app/users/page.tsx - Server Component (default)
export default async function UsersPage() {
    const users = await db.user.findMany();  // Runs on server
    return <UserList users={users} />;
}

No TanStack Query needed — Server Components handle data fetching natively. Only use TanStack Query for real-time polling or complex optimistic updates.

Server Actions Pattern

// app/actions.ts
'use server';

import { z } from 'zod';
import { revalidatePath } from 'next/cache';

const schema = z.object({ title: z.string().min(1) });

export async function createPost(formData: FormData) {
  const parsed = schema.safeParse({ title: formData.get('title') });
  if (!parsed.success) return { error: parsed.error.flatten() };

  await db.post.create({ data: parsed.data });
  revalidatePath('/posts');
  return { success: true };
}
  • Server Actions → internal mutations, form submissions
  • Route Handlers → public APIs, webhooks, large uploads, streaming

Design Quality

When building UI, avoid generic-looking interfaces. Every interface should feel intentional:

  • Typography — pick fonts that match the context. Avoid defaulting to Inter/Roboto/Arial for everything
  • Color — commit to a cohesive palette with CSS variables. Dominant colors with sharp accents beat timid, evenly-distributed palettes
  • Spacing — generous negative space or controlled density, not cramped defaults
  • Motion — meaningful animations for state transitions, not gratuitous effects. Use CSS transitions first, Motion library for complex sequences

Match complexity to the design vision. A dashboard needs clarity and information density. A marketing page needs bold visual impact. A form needs clean usability.

Critical Rules

// ❌ Large 'use client' at top of tree — marks entire subtree as client
// ❌ Expose secrets in client: process.env.SECRET_KEY
// ❌ Old MUI Grid syntax: <Grid xs={12} md={6}>

// ✅ Small leaf-level client components
// ✅ Validate Server Action inputs with Zod
// ✅ MUI Grid size prop: <Grid size={{ xs: 12, md: 6 }}>

File Conventions

app/
├── layout.tsx          # Root layout (Server)
├── page.tsx            # Home page
├── loading.tsx         # Loading UI (Suspense fallback)
├── error.tsx           # Error boundary ('use client')
├── not-found.tsx       # 404 page
├── users/
│   ├── page.tsx        # /users
│   ├── [id]/page.tsx   # /users/:id
│   └── actions.ts      # Server Actions
└── api/webhook/
    └── route.ts        # Route Handler (public API)

Common Workflows

New Feature

  1. Create app/{route}/page.tsx (Server Component)
  2. Add loading.tsx for Suspense boundary
  3. Create Server Actions in actions.ts
  4. Add Client Components only where needed

Styling Component

  1. MUI sx prop with SxProps<Theme>
  2. Inline styles if <100 lines, separate .styles.ts if >100
  3. Grid: size={{ xs: 12, md: 6 }}

Performance Issue

→ Run vercel-react-best-practices skill for optimization rules

References

ReferenceWhen to Use
references/nextjs.mdApp Router, RSC, Server Actions, caching
references/component-patterns.mdReact.FC, hooks order, dialogs, forms
references/styling.mdMUI sx prop, Grid, theming
references/typescript.mdTypes, generics, Zod validation
references/project-structure.mdfeatures/ vs components/, organization

Next.js DevTools MCP (Next.js 16+)

When working on a Next.js 16+ project, use these MCP tools for runtime diagnostics and documentation. They provide better information than reading files or guessing — always prefer them when available.

ToolWhen to Use
next-devtools/initCall FIRST at session start to establish documentation-first approach
next-devtools/nextjs_docsLook up ANY Next.js API, pattern, or feature. Read nextjs-docs://llms-index resource first to get the correct path, then query
next-devtools/nextjs_indexDiscover running dev servers and their available MCP tools. Call before any runtime inspection
next-devtools/nextjs_callExecute runtime tools on a running dev server — get errors, list routes, check build status, clear cache. Use nextjs_index first to discover available tools
next-devtools/browser_evalBrowser automation — navigate, click, fill forms, take screenshots, get console messages. For Next.js, prefer nextjs_index/nextjs_call over console log forwarding
next-devtools/enable_cache_componentsMigrate to Cache Components mode (Next.js 16+). Handles config, error detection, Suspense boundaries, 'use cache' directives
next-devtools/upgrade_nextjs_16Upgrade to Next.js 16 — runs official codemod first (needs clean git), then handles remaining issues

Workflow: Before implementing changes, call nextjs_index to understand current routes and state. Before looking up Next.js APIs, call nextjs_docs with the correct path from the docs index. Use nextjs_call for runtime diagnostics (errors, build status) instead of reading logs manually.

Technology Stack

LayerTechnology
FrameworkNext.js (App Router, latest)
Type SafetyTypeScript (strict) + Zod
Data FetchingServer Components (async)
MutationsServer Actions + revalidatePath
Client StateuseState (minimal)
StylingMUI (latest)
FormsServer Actions + useActionState

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

code-review

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

code-simplifier

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

test-driven-development

No summary provided by upstream source.

Repository SourceNeeds Review