Buzzform
buildnbuzz/buzzform
A skill your agent uses when working with BuzzForm schema-driven forms, @buildnbuzz/form-core, @buildnbuzz/form-react, or any related APIs like defineSchema, InferType, FormProvider, useDataField…
Type-safe React forms with React Hook Form and Zod validation.
$ npx skills add secondsky/claude-skills --skill react-hook-form-zod -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install secondsky/claude-skills react-hook-form-zod --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/secondsky/claude-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/react-hook-form-zod/skills/react-hook-form-zod .claude/skills/react-hook-form-zod && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "react-hook-form-zod" agent skill from https://github.com/secondsky/claude-skills/tree/main/plugins/react-hook-form-zod/skills/react-hook-form-zod into .claude/skills/react-hook-form-zod/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "react-hook-form-zod", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/secondsky/claude-skills/tree/main/plugins/react-hook-form-zod/skills/react-hook-form-zodType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add secondsky/claude-skills --skill react-hook-form-zod -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install secondsky/claude-skills react-hook-form-zod --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/secondsky/claude-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/plugins/react-hook-form-zod/skills/react-hook-form-zod .agents/skills/react-hook-form-zod && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "react-hook-form-zod" agent skill from https://github.com/secondsky/claude-skills/tree/main/plugins/react-hook-form-zod/skills/react-hook-form-zod into .agents/skills/react-hook-form-zod/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "react-hook-form-zod", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add secondsky/claude-skills --skill react-hook-form-zod -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install secondsky/claude-skills react-hook-form-zod --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/secondsky/claude-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/plugins/react-hook-form-zod/skills/react-hook-form-zod .cursor/skills/react-hook-form-zod && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "react-hook-form-zod" agent skill from https://github.com/secondsky/claude-skills/tree/main/plugins/react-hook-form-zod/skills/react-hook-form-zod into .cursor/skills/react-hook-form-zod/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "react-hook-form-zod", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/secondsky/claude-skills.git --path plugins/react-hook-form-zod/skills/react-hook-form-zod--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add secondsky/claude-skills --skill react-hook-form-zod -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install secondsky/claude-skills react-hook-form-zod --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/secondsky/claude-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/plugins/react-hook-form-zod/skills/react-hook-form-zod .gemini/skills/react-hook-form-zod && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "react-hook-form-zod" agent skill from https://github.com/secondsky/claude-skills/tree/main/plugins/react-hook-form-zod/skills/react-hook-form-zod into .gemini/skills/react-hook-form-zod/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "react-hook-form-zod", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install secondsky/claude-skills react-hook-form-zodInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add secondsky/claude-skills --skill react-hook-form-zod -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/secondsky/claude-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/plugins/react-hook-form-zod/skills/react-hook-form-zod .github/skills/react-hook-form-zod && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "react-hook-form-zod" agent skill from https://github.com/secondsky/claude-skills/tree/main/plugins/react-hook-form-zod/skills/react-hook-form-zod into .github/skills/react-hook-form-zod/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "react-hook-form-zod", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add secondsky/claude-skills --skill react-hook-form-zod -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install secondsky/claude-skills react-hook-form-zod --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/secondsky/claude-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/plugins/react-hook-form-zod/skills/react-hook-form-zod .opencode/skills/react-hook-form-zod && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "react-hook-form-zod" agent skill from https://github.com/secondsky/claude-skills/tree/main/plugins/react-hook-form-zod/skills/react-hook-form-zod into .opencode/skills/react-hook-form-zod/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "react-hook-form-zod", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
react-hook-form-zodType-safe React forms with React Hook Form and Zod validation.
React Hook Form Zod is an agent skill from secondsky/claude-skills. Type-safe React forms with React Hook Form and Zod validation. Use for form schemas, field arrays, multi-step forms, or encountering validation errors, resolver issues, nested field problems.
Its SKILL.md is about 4.8k tokens, which your agent loads only when the skill is triggered. The skill folder holds 21 other files, including scripts and reference files (for example `references/accessibility.md`, `references/error-handling.md` and `references/links-to-official-docs.md`).
It sits in Frontend & Design, covering React components, Forms and validation and Type safety. It works with Zod and React. The repository describes itself as: Production-ready skills for Claude Code CLI - Cloudflare, React, Tailwind v4, and AI integrations. The licence is MIT.
3 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 8837836. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 1 file in scripts/ (Shell, from the files we listed), which the agent can run.
Shell commands in SKILL.md call:
bunFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
github.comreact-hook-form.comzod.devui.shadcn.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
React Hook Form Zod loads about 4.8k tokens when it runs, and up to ~19k if it reads all its reference files. Until then it costs about 53 tokens; SKILL.md has 918 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from secondsky/claude-skills at commit 8837836, republished under its MIT licence (© secondsky). 918 words, ~4,756 tokens.
.claude/skills/react-hook-form-zod/SKILL.md (or your agent's skills folder). This skill also uses 18 other files; get the full folder from GitHub.Status: Production Ready ✅ Last Updated: 2025-11-21 Dependencies: None (standalone) Latest Versions: react-hook-form@7.84.0, zod@4.3.6, @hookform/resolvers@5.2.2
bun add react-hook-form@7.84.0 zod@4.3.6 @hookform/resolvers@5.2.2Why These Packages:
import { useForm } from 'react-hook-form'
import { zodResolver } from '@hookform/resolvers/zod'
import { z } from 'zod'
// 1. Define validation schema
const loginSchema = z.object({
email: z.email({ error: 'Invalid email address' }),
password: z.string().min(8, 'Password must be at least 8 characters'),
})
// 2. Infer TypeScript type from schema
type LoginFormData = z.infer<typeof loginSchema>
function LoginForm() {
// 3. Initialize form with zodResolver
const {
register,
handleSubmit,
formState: { errors, isSubmitting },
} = useForm<LoginFormData>({
resolver: zodResolver(loginSchema),
defaultValues: {
email: '',
password: '',
},
})
// 4. Handle form submission
const onSubmit = async (data: LoginFormData) => {
// Data is guaranteed to be valid here
console.log('Valid data:', data)
}
return (
<form onSubmit={handleSubmit(onSubmit)}>
<div>
<label htmlFor="email">Email</label>
<input id="email" type="email" {...register('email')} />
{errors.email && (
<span role="alert" className="error">
{errors.email.message}
</span>
)}
</div>
<div>
<label htmlFor="password">Password</label>
<input id="password" type="password" {...register('password')} />
{errors.password && (
<span role="alert" className="error">
{errors.password.message}
</span>
)}
</div>
<button type="submit" disabled={isSubmitting}>
{isSubmitting ? 'Logging in...' : 'Login'}
</button>
</form>
)
}CRITICAL:
defaultValues to prevent "uncontrolled to controlled" warningszodResolver(schema) to connect Zod validationz.infer<typeof schema> for full type safetyTemplate: See templates/basic-form.tsx for complete working example
// server/api/login.ts
import { z } from 'zod'
// SAME schema on server
const loginSchema = z.object({
email: z.email({ error: 'Invalid email address' }),
password: z.string().min(8, 'Password must be at least 8 characters'),
})
export async function loginHandler(req: Request) {
try {
const data = loginSchema.parse(await req.json())
// Data is type-safe and validated
return { success: true }
} catch (error) {
if (error instanceof z.ZodError) {
return { success: false, errors: z.flattenError(error).fieldErrors }
}
throw error
}
}Why Server Validation:
Template: See templates/server-validation.tsx
const {
register, // Register input fields
handleSubmit, // Wrap onSubmit handler
formState, // Form state (errors, isValid, isDirty, etc.)
setValue, // Set field value programmatically
getValues, // Get current form values
watch, // Watch field values
reset, // Reset form to defaults
trigger, // Trigger validation manually
control, // For Controller/useController
} = useForm<FormData>({
resolver: zodResolver(schema),
mode: 'onSubmit', // When to validate
defaultValues: {}, // Initial values (REQUIRED)
})Validation Modes:
onSubmit - Validate on submit (best performance)onChange - Validate on every change (live feedback)onBlur - Validate when field loses focus (good balance)all - Validate on submit, blur, and changeReference: See references/rhf-api-reference.md for complete API
import { z } from 'zod'
// Basic types
const schema = z.object({
email: z.email({ error: 'Invalid email' }),
age: z.number().min(18, 'Must be 18+'),
terms: z.boolean().refine(val => val === true, 'Must accept terms'),
})
// Nested objects
const addressSchema = z.object({
user: z.object({
name: z.string(),
email: z.email(),
}),
address: z.object({
street: z.string(),
city: z.string(),
zip: z.string().regex(/^\d{5}$/),
}),
})
// Arrays
const tagsSchema = z.object({
tags: z.array(z.string()).min(1, 'At least one tag required'),
})
// Optional and nullable
const optionalSchema = z.object({
middleName: z.string().optional(),
nickname: z.string().nullable(),
bio: z.string().nullish(), // optional AND nullable
})Reference: See references/zod-schemas-guide.md for complete patterns
✅ Always set defaultValues - Prevents "uncontrolled to controlled" warnings
✅ Use zodResolver for validation - Connects Zod schemas to React Hook Form
✅ Infer types from schema - Use z.infer<typeof schema> for type safety
✅ Validate on server too - Client validation can be bypassed
✅ Use .register() for native inputs - Simple and performant
✅ Use Controller for custom components - For component libraries (MUI, Chakra, etc.)
✅ Handle errors accessibly - Use role="alert" for screen readers
✅ Reset form after submission - Use reset() to clear form state
Form Patterns: See templates/ for:
basic-form.tsx - Simple login/register formsadvanced-form.tsx - Nested objects, arrays, dynamic fieldsshadcn-form.tsx - Integration with shadcn/uimulti-step-form.tsx - Wizard/stepper formsasync-validation.tsx - Async field validation❌ Never skip defaultValues - Causes "uncontrolled to controlled" errors
❌ Never use only client validation - Security vulnerability
❌ Never mutate form values directly - Use setValue() instead
❌ Never ignore accessibility - Always use proper labels and ARIA
❌ Never forget to disable submit when isSubmitting - Prevents double submissions
Performance: See references/performance-optimization.md for:
mode: 'onBlur' vs 'onChange'useWatch vs watch()Accessibility: See references/accessibility.md for:
Error:
Warning: A component is changing an uncontrolled input to be controlledCause: Not setting defaultValues
Solution:
// ❌ BAD
const form = useForm()
// ✅ GOOD
const form = useForm({
defaultValues: {
email: '',
password: '',
}
})Error: Type inference doesn't work correctly
Solution:
// Explicitly type useForm if needed
const form = useForm<z.infer<typeof schema>>({
resolver: zodResolver(schema),
})Source: GitHub Issue #13109
Error:
Module not found: Can't resolve '@hookform/resolvers/zod'Solution:
# Install the resolvers package
bun add @hookform/resolvers@5.2.2Error: Dynamic array fields not working with useFieldArray
Solution:
const { fields, append, remove } = useFieldArray({
control,
name: "items" // Must match schema field name exactly
})Template: See templates/dynamic-fields.tsx
Error: Third-party component (MUI, Chakra) doesn't validate
Solution:
Use Controller instead of register:
<Controller
name="date"
control={control}
render={({ field }) => (
<DatePicker {...field} />
)}
/>Reference: See references/error-handling.md for all patterns
All 12 Errors: See references/top-errors.md for complete documentation
import { useForm } from 'react-hook-form'
import { zodResolver } from '@hookform/resolvers/zod'
import { z } from 'zod'
const schema = z.object({
name: z.string().min(1, 'Name required'),
email: z.email({ error: 'Invalid email' }),
})
type FormData = z.infer<typeof schema>
function MyForm() {
const { register, handleSubmit, formState: { errors } } = useForm<FormData>({
resolver: zodResolver(schema),
defaultValues: { name: '', email: '' }
})
const onSubmit = (data: FormData) => console.log(data)
return (
<form onSubmit={handleSubmit(onSubmit)}>
<input {...register('name')} />
{errors.name && <span>{errors.name.message}</span>}
<button type="submit">Submit</button>
</form>
)
}Template: See templates/basic-form.tsx
import { useForm, useFieldArray } from 'react-hook-form'
const schema = z.object({
items: z.array(
z.object({
name: z.string(),
quantity: z.number().min(1)
})
).min(1, 'At least one item required')
})
function DynamicForm() {
const { control, handleSubmit } = useForm({
resolver: zodResolver(schema),
defaultValues: { items: [{ name: '', quantity: 1 }] }
})
const { fields, append, remove } = useFieldArray({
control,
name: 'items'
})
return (
<form>
{fields.map((field, index) => (
<div key={field.id}>
<input {...register(`items.${index}.name`)} />
<button onClick={() => remove(index)}>Remove</button>
</div>
))}
<button onClick={() => append({ name: '', quantity: 1 })}>
Add Item
</button>
</form>
)
}Template: See templates/dynamic-fields.tsx
const schema = z.object({
username: z.string()
.min(3)
.refine(async (username) => {
const response = await fetch(`/api/check-username?username=${username}`)
const { available } = await response.json()
return available
}, 'Username already taken')
})Template: See templates/async-validation.tsx
function MultiStepForm() {
const [step, setStep] = useState(1)
const form = useForm({
resolver: zodResolver(schema),
mode: 'onBlur' // Validate each step before proceeding
})
const onSubmit = async (data) => {
if (step < 3) {
setStep(step + 1)
} else {
// Final submission
await submitForm(data)
}
}
return (
<form onSubmit={form.handleSubmit(onSubmit)}>
{step === 1 && <Step1Fields />}
{step === 2 && <Step2Fields />}
{step === 3 && <Step3Fields />}
<button type="submit">
{step < 3 ? 'Next' : 'Submit'}
</button>
</form>
)
}Template: See templates/multi-step-form.tsx
import { useForm } from 'react-hook-form'
import { zodResolver } from '@hookform/resolvers/zod'
import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from '@/components/ui/form'
function ShadcnForm() {
const form = useForm({
resolver: zodResolver(schema),
defaultValues: { email: '' }
})
return (
<Form {...form}>
<form onSubmit={form.handleSubmit(onSubmit)}>
<FormField
control={form.control}
name="email"
render={({ field }) => (
<FormItem>
<FormLabel>Email</FormLabel>
<FormControl>
<Input {...field} />
</FormControl>
<FormMessage />
</FormItem>
)}
/>
</form>
</Form>
)
}Reference: See references/shadcn-integration.md for complete patterns
Template: See templates/shadcn-form.tsx
Copy-paste ready examples:
Detailed documentation:
| Reference | Load When... |
|---|---|
top-errors.md | Debugging validation issues, type errors, or "uncontrolled to controlled" warnings |
rhf-api-reference.md | Need complete API for useForm, register, Controller, formState |
zod-schemas-guide.md | Building complex schemas (nested, arrays, conditional, async validation) |
shadcn-integration.md | Using shadcn/ui Form, FormField, FormItem components |
error-handling.md | Custom error display, validation timing, error message patterns |
performance-optimization.md | Form re-renders too much, optimizing watch/useWatch |
accessibility.md | WCAG compliance, screen readers, keyboard navigation |
links-to-official-docs.md | Need official documentation links |
Quick Tips:
mode: 'onBlur' for balance between UX and performanceuseWatch instead of watch() for specific fieldsshouldUnregister: false for conditional fieldswatch() without arguments (watches all fields)Reference: See references/performance-optimization.md for complete strategies
Quick Checklist:
<label htmlFor="fieldId"> for all inputsrole="alert" to error messagesaria-invalid="true" on invalid fieldsReference: See references/accessibility.md for WCAG compliance guide
Common Patterns:
// Email
z.email({ error: 'Invalid email' })
// Password (min 8 chars, 1 uppercase, 1 number)
z.string()
.min(8)
.regex(/[A-Z]/, 'Need uppercase')
.regex(/[0-9]/, 'Need number')
// URL
z.url({ error: 'Invalid URL' })
// Date
z.datetime() // ISO 8601
z.date() // JS Date object
// File upload
z.instanceof(File)
.refine(file => file.size <= 5000000, 'Max 5MB')
.refine(
file => ['image/jpeg', 'image/png'].includes(file.type),
'Only JPEG/PNG allowed'
)
// Custom validation
z.string().refine(
val => val !== 'admin',
'Username "admin" is reserved'
)
// Async validation
z.string().refine(
async (username) => {
const available = await checkUsername(username)
return available
},
'Username already taken'
)Reference: See references/zod-schemas-guide.md for all patterns
Required:
react-hook-form@7.84.0 - Form state managementzod@4.3.6 - Schema validation@hookform/resolvers@5.2.2 - Validation adapterOptional:
@radix-ui/react-label@latest - For shadcn/ui integrationclass-variance-authority@latest - For shadcn/ui stylingReference: See references/links-to-official-docs.md for organized links
Solution: Always set defaultValues → See references/top-errors.md #2
Solution: Explicitly type useForm<z.infer<typeof schema>> → See references/top-errors.md #1
Solution: Install @hookform/resolvers package → See references/top-errors.md #3
Solution: Use Controller instead of register → See references/top-errors.md #5
Solution: Use mode: 'onBlur' and useWatch → See references/performance-optimization.md
This skill is based on production patterns from:
Token Savings: ~60% (comprehensive form patterns with templates) Error Prevention: 100% (all 12 documented issues with solutions) Ready for production! ✅
© secondsky, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 18 other files (scripts, references) in plugins/react-hook-form-zod/skills/react-hook-form-zod of secondsky/claude-skills.
Open the folder on GitHubat commit 8837836
React Hook Form Zod next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| React Hook Form Zod this skillsecondsky/claude-skills | 227 | — | ~4.8k | Automated safety check: Pass | MIT | |
| Buzzformbuildnbuzz/buzzform | 101 | — | ~1.5k | Automated safety check: Pass | MIT | |
| Opik Frontend Patternscomet-ml/opik | 22k | — | ~1.1k | Automated safety check: Pass | Apache-2.0 | |
| Frontend Patterns Templatebybren-llc/safe-agentic-workflow | 421 | — | ~2k | Automated safety check: Pass | MIT | |
| Typescript Patternssoftspark/ai-toolkit | 179 | — | ~1.6k | Automated safety check: Pass | Apache-2.0 | |
| Olore Tanstack Form Latestolorehq/olore | 103 | — | ~1.1k | Automated safety check: Pass | MIT |
buildnbuzz/buzzform
A skill your agent uses when working with BuzzForm schema-driven forms, @buildnbuzz/form-core, @buildnbuzz/form-react, or any related APIs like defineSchema, InferType, FormProvider, useDataField…
comet-ml/opik
Sets the conventions for the Opik React frontend: TanStack Query for data, Zustand for shared state, one-way layer imports and a fix for Google Translate crashes.
bybren-llc/safe-agentic-workflow
Frontend patterns for modern web frameworks, component libraries, auth flows, and analytics. Use when building UI components, creating pages, implementing…
softspark/ai-toolkit
TypeScript types: generics, discriminated unions, Zod, satisfies, branded types.
olorehq/olore
Local TanStack Form documentation reference (latest, v1.33.5).
jasonjgardner/blockbench-mcp-plugin
Zod schema validation best practices for type safety, parsing, and error handling.
secondsky/claude-skills
TanStack AI (alpha) provider-agnostic type-safe chat with streaming for OpenAI, Anthropic, Gemini, Ollama.
secondsky/claude-skills
AutoAnimate (@formkit/auto-animate) zero-config animations for React.
secondsky/claude-skills
MUI Base UI unstyled React components with Floating UI. An agent skill from secondsky/claude-skills.
secondsky/claude-skills
This skill should be used when the user asks to "upload images to Cloudflare", "implement direct creator upload", "configure image transformations", "optimize WebP/AVIF", "create image variants"…
secondsky/claude-skills
Deploy Next.js to Cloudflare Workers via the OpenNext adapter (@opennextjs/cloudflare).
secondsky/claude-skills
Cloudflare Sandboxes SDK for secure code execution in Linux containers at edge.
Categories
Type-safe React forms with React Hook Form and Zod validation. React Hook Form Zod is an agent skill from secondsky/claude-skills. Type-safe React forms with React Hook Form and Zod validation.
React Hook Form Zod fits situations like: multi-step forms; encountering validation errors; resolver issues; nested field problems.
Run `npx skills add secondsky/claude-skills --skill react-hook-form-zod -a claude-code`. Or copy the skill folder (plugins/react-hook-form-zod/skills/react-hook-form-zod in secondsky/claude-skills) into .claude/skills/react-hook-form-zod in your project. Claude Code loads it when a task matches its description.
Run `npx skills add secondsky/claude-skills --skill react-hook-form-zod -a codex`. Or copy the skill folder (plugins/react-hook-form-zod/skills/react-hook-form-zod in secondsky/claude-skills) into .agents/skills/react-hook-form-zod in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add secondsky/claude-skills --skill react-hook-form-zod -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/react-hook-form-zod, .gemini/skills/react-hook-form-zod, .github/skills/react-hook-form-zod and .opencode/skills/react-hook-form-zod in your project.
Going by SKILL.md and its folder, React Hook Form Zod needs a shell for the scripts in its folder and the command-line tools its instructions call (bun). Our summary lists: A Bash shell.
SKILL.md names 4 domains. As links in the text: github.com, react-hook-form.com, zod.dev and ui.shadcn.com. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
React Hook Form Zod is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.8k tokens (SKILL.md is roughly 19k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 14k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with React Hook Form Zod: Buzzform (buildnbuzz/buzzform, 101 stars), Opik Frontend Patterns (comet-ml/opik, 22k stars), Frontend Patterns Template (bybren-llc/safe-agentic-workflow, 421 stars) and Typescript Patterns (softspark/ai-toolkit, 179 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
secondsky (a GitHub user) maintains it in secondsky/claude-skills, which has 227 GitHub stars. The repository holds 169 skills in this directory. The repository was last updated on September 28, 2026.
Source: secondsky/claude-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.