用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/InugamiDev/ultrathink-oss --skill react-hook-form命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
Unified design foundations — design system architecture, tokens, component specs, visual principles, creative vision, figma integration, plus brand design system loader (66 real brands via DESIGN.md). Absorbs design, design-system, design-systems, design-principles, design-router, creative-vision, figma, design-md.
Render, summarize, and present markdown documents and structured content in multiple output modes
Ultra UI skill - combines Google's DESIGN.md spec (machine-readable design tokens) with the ui-ux-pro-max knowledge base (91 styles, 161 palettes, 73 font pairings, 161 products, 104 UX guidelines, 25 chart types). Generates lint-clean DESIGN.md files, validates token references and WCAG contrast, exports Tailwind/DTCG tokens, and diffs design systems version-over-version.
基于 SOC 职业分类
正在显示 SKILL.md
| name | react-hook-form |
| description | Performant, flexible forms with minimal re-renders using React Hook Form |
| layer | domain |
| category | forms |
| triggers | ["react hook form","useForm","useFieldArray","hookform","rhf"] |
| inputs | [{"form_requirements":"Fields, validation rules, submission behavior"},{"ui_library":"Controlled components in use (Select, DatePicker, etc.)"}] |
| outputs | [{"form_implementation":"useForm setup with validation and submission"},{"schema":"Zod schema with @hookform/resolvers integration"}] |
| linksTo | ["react","forms","zod","typescript-frontend"] |
| linkedFrom | ["forms","react","nextjs"] |
| riskLevel | low |
Performant, flexible forms with minimal re-renders. Embraces uncontrolled inputs by default and isolates component re-renders for optimal performance.
useForm hook -- register, handleSubmit, watch, formState (errors, isSubmitting, isDirty):
const { register, handleSubmit, watch, formState: { errors, isSubmitting } } = useForm<T>({
resolver: zodResolver(schema), defaultValues: { ... },
mode: 'onBlur', // onSubmit | onChange | onBlur | onTouched | all
});
Zod integration via @hookform/resolvers:
import { zodResolver } from '@hookform/resolvers/zod';
const form = useForm({ resolver: zodResolver(mySchema) }); // z.infer<typeof mySchema>
Controller for controlled components (Select, DatePicker, etc.):
<Controller name="role" control={control} render={({ field }) => (
<Select onValueChange={field.onChange} value={field.value}>{/* options */}</Select>
)} />
useFieldArray for dynamic fields:
const { fields, append, remove, move } = useFieldArray({ control, name: 'items' });
// fields.map((f, i) => <input key={f.id} {...register(`items.${i}.name`)} />)
FormProvider + useFormContext for form composition:
<FormProvider {...methods}><StepOne /><StepTwo /></FormProvider>
// Child: const { register } = useFormContext<T>();
Server actions -- validate client-side with RHF, then call useFormState(serverAction, init) on success.
DevTools -- import { DevTool } from '@hookform/devtools' for a floating state inspector in dev.
| Anti-Pattern | Fix |
|---|---|
watch() entire form | watch('field') or useWatch to limit re-renders |
register on controlled components | Use Controller instead |
Missing key={field.id} in useFieldArray | Always key by field.id |
mode: 'onChange' by default | Use onBlur or onTouched |
Recreating defaultValues each render | Memoize or define outside component |
setValue in loops | Batch with reset() or shouldValidate: false |
react -- forms -- zod -- typescript-frontend