🎯

agentic-jumpstart-react

🎯Skill

from webdevcody/agentic-jumpstart

VibeIndex|
What it does

Enables rapid React 19 development with best practices, integrating TanStack Start, shadcn/ui, React Hook Form, Zod, and advanced component patterns.

πŸ“¦

Part of

webdevcody/agentic-jumpstart(8 items)

agentic-jumpstart-react

Installation

npm runRun npm script
npm run dev
πŸ“– Extracted from docs: webdevcody/agentic-jumpstart
2Installs
-
AddedFeb 4, 2026

Skill Details

SKILL.md

React 19 patterns and best practices for TanStack Start applications with shadcn/ui, React Hook Form, Zod, Framer Motion, and TanStack Query. Use when building React components, forms, handling state, data fetching, animations, drag and drop, toasts, modals, or when the user mentions React, hooks, components, or UI.

Overview

# React 19 Best Practices

Component Structure

File Organization

```

src/routes/admin/courses/

β”œβ”€β”€ route.tsx # Route definition

β”œβ”€β”€ -components/ # Route-specific components

β”‚ β”œβ”€β”€ CourseList.tsx

β”‚ β”œβ”€β”€ CourseForm.tsx

β”‚ └── CourseCard.tsx

```

Component Pattern

```typescript

import { type ReactNode } from "react";

interface CourseCardProps {

course: Course;

onEdit?: (id: number) => void;

children?: ReactNode;

}

export function CourseCard({ course, onEdit, children }: CourseCardProps) {

return (

{course.title}

{course.description}

{children}

{onEdit && (

)}

);

}

```

Form Handling with React Hook Form + Zod

Basic Form Pattern

```typescript

import { useForm } from "react-hook-form";

import { zodResolver } from "@hookform/resolvers/zod";

import { z } from "zod";

const formSchema = z.object({

title: z.string().min(1, "Title is required").max(100),

description: z.string().max(500).optional(),

isPremium: z.boolean().default(false),

});

type FormData = z.infer;

export function CourseForm({ onSubmit }: { onSubmit: (data: FormData) => void }) {

const form = useForm({

resolver: zodResolver(formSchema),

defaultValues: {

title: "",

description: "",

isPremium: false,

},

});

return (

id="title"

{...form.register("title")}

aria-invalid={!!form.formState.errors.title}

/>

{form.formState.errors.title && (

{form.formState.errors.title.message}

)}