К основному содержанию
скилл CX Codex

react-hook-form — скилл для Claude Code: что делает и как установить

Оптимизирует клиентские формы на React Hook Form 7.82.0 и защищает от лишних ререндеров при подписках на поля, валидации и интеграции UI-библиотек.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add pproenca/dot-skills --skill react-hook-form -a claude-code
Открыть на GitHub

Что делает react-hook-form

Скилл содержит 35 правил в 7 категориях для клиентских форм с библиотекой React Hook Form. Он разбирает частые ошибки конфигурации useForm, учит изолировать ререндеры через useWatch вместо вызова watch в теле рендера и корректно передавать свойства контроллеров в компоненты shadcn или Ant Design.

База правил проверена на версии 7.82.0 и затрагивает метод resetDefaultValues() вместе с поведением опции disabled в useFieldArray. Скилл не рассчитан на серверные формы React 19 с useActionState и Server Actions, поэтому для работы с серверными экшенами он не подойдёт.

Какие задачи решает

  • устранить лишние ререндеры при подписке на поля через useWatch
  • настроить связь контролируемых компонентов shadcn и MUI с useController
  • обновить исходные значения формы через resetDefaultValues после сохранения
  • обработать ошибки валидации и настроить отложенный показ через delayError

Примеры запросов агенту

  • Проверь форму на лишние ререндеры и перепиши подписки с watch на useWatch
  • Подключи компонент Select из shadcn к useController по правилам react-hook-form
  • Настрой useFieldArray с уникальными id и безопасным порядком CRUD-операций

Как установить react-hook-form

1Через Skills CLI (Vercel)

npx skills add pproenca/dot-skills --skill react-hook-form -a claude-code

2Вручную: положить файлы

~/.claude/skills/react-hook-form/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/react-hook-form/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о react-hook-form

Как установить react-hook-form в Claude Code?

Выполните в терминале команду: npx skills add pproenca/dot-skills --skill react-hook-form -a claude-code.

Для какой версии библиотеки рассчитан скилл?

Правила проверены на версии react-hook-form 7.82.0. Они учитывают работу метода resetDefaultValues() и особенности опции disabled для useFieldArray.

Подходит ли скилл для форм с React 19 Server Actions?

Нет, скилл сфокусирован только на клиентской валидации. Для работы с useActionState и Server Actions автор рекомендует использовать скилл react-19.

Исходный текст

SKILL.md · MIT
---
name: react-hook-form
description: React Hook Form performance optimization for client-side form validation using useForm, useWatch, useController, useFieldArray, the subscribe() API, and the Watch / FormStateSubscribe / FieldArray render-prop components. Covers RHF 7.82 additions including resetDefaultValues() and the disabled field-array option. This skill should be used when building client-side controlled forms with React Hook Form library. This skill does NOT cover React 19 Server Actions, useActionState, or server-side form handling (use react-19 skill for those).
---

# React Hook Form Best Practices by Community

Comprehensive performance optimization guide for React Hook Form applications. Contains 35 rules across 7 categories, each naming a decision that goes wrong by default. Verified against react-hook-form **7.82.0**.

## When to Apply

Reference these guidelines when:
- Writing new forms with React Hook Form
- Configuring useForm options (mode, defaultValues, validation)
- Subscribing to form values with watch / useWatch / subscribe
- Integrating controlled UI components (MUI, shadcn, Ant Design)
- Managing dynamic field arrays with useFieldArray
- Handling async submit, server errors, and submit lifecycle state
- Reviewing forms for performance issues

## When NOT to Use This Skill

- **React 19 Server Actions / `useActionState`** — use the `react-19` skill instead
- **Deeply nested, fully type-safe forms** — TanStack Form may be a better fit for forms with complex nested schemas; this skill assumes you've already chosen RHF
- **Single-input or trivial forms** — uncontrolled `<form>` + `FormData` is often simpler than pulling in any library

## Rule Categories by Priority

| Priority | Category | Impact | Prefix |
|----------|----------|--------|--------|
| 1 | Form Configuration | CRITICAL | `formcfg-` |
| 2 | Field Subscription | CRITICAL | `sub-` |
| 3 | Controlled Components | HIGH | `ctrl-` |
| 4 | Validation Patterns | HIGH | `valid-` |
| 5 | State Management | MEDIUM-HIGH | `formstate-` |
| 6 | Field Arrays | MEDIUM-HIGH | `array-` |
| 7 | Integration Patterns | MEDIUM | `integ-` |

## Quick Reference

### 1. Form Configuration (CRITICAL)

- `formcfg-default-values` - Always Provide defaultValues for Form Initialization
- `formcfg-useeffect-dependency` - Depend on formState Slices, Not on formState Itself
- `formcfg-validation-mode` - Justify Any mode Other Than the Default onSubmit
- `formcfg-revalidate-mode` - Keep Default reValidateMode Unless Validation Is Expensive
- `formcfg-should-unregister` - Keep shouldUnregister Off Unless Hidden Fields Must Leave the Payload
- `formcfg-transformed-values-generic` - Pass the Third useForm Generic When the Resolver Transforms Values
- `formcfg-async-default-values` - Use Async defaultValues for Server Data
- `formcfg-disabled-prop` - Use the HTML disabled Attribute for Visual Disabling, Not register's disabled Option
- `formcfg-values-prop` - Use the values Prop to Keep a Form in Sync with Server Data

### 2. Field Subscription (CRITICAL)

- `sub-avoid-watch-in-render` - Avoid Calling watch() in Render for One-Time Reads
- `sub-memo-cannot-beat-context` - React.memo Cannot Stop Context-Driven Re-renders Under FormProvider
- `sub-subscribe-outside-react` - Use subscribe() to React to Form Changes Outside the React Lifecycle
- `sub-render-prop-components` - Use the Render-Prop Components to Isolate Re-renders Without a Child Component
- `sub-useformcontext-sparingly` - Use useFormContext Sparingly for Deep Nesting
- `sub-usewatch-over-watch` - Use useWatch Instead of watch for Isolated Re-renders
- `sub-watch-specific-fields` - Watch Specific Fields Instead of Entire Form

### 3. Controlled Components (HIGH)

- `ctrl-usecontroller-isolation` - Isolate Controlled Inputs in Dedicated Child Components
- `ctrl-controller-field-props` - Wire Controller Field Props Correctly for UI Libraries

### 4. Validation Patterns (HIGH)

- `valid-resolver-caching` - Build the Validation Schema Once, Outside the Render Path
- `valid-valueasnumber-empty-nan` - Handle the NaN valueAsNumber Produces for an Empty Input
- `valid-server-errors` - Surface Server Errors via setError('root.serverError', ...)
- `valid-delay-error` - Use delayError to Debounce Rapid Error Display

### 5. State Management (MEDIUM-HIGH)

- `formstate-avoid-isvalid-with-onsubmit` - Avoid isValid with onSubmit Mode for Button State
- `formstate-destructure-formstate` - Read Every formState Property You Depend On During Render
- `formstate-reset-default-values` - Rebase Defaults with resetDefaultValues After a Successful Save
- `formstate-handlesubmit-oninvalid` - Use handleSubmit's Second Argument to Handle a Rejected Submit
- `formstate-useformstate-isolation` - Use useFormState for Isolated State Subscriptions
- `formstate-async-submit-lifecycle` - Wrap Async Submit Handlers in try/catch and Reset on isSubmitSuccessful

### 6. Field Arrays (MEDIUM-HIGH)

- `array-separate-crud-operations` - Separate Sequential Field Array Operations
- `array-use-field-id-as-key` - Use field.id as Key in useFieldArray Maps
- `array-unique-fieldarray-per-name` - Use Single useFieldArray Instance Per Field Name
- `array-disabled-silently-noops` - useFieldArray's disabled Option Makes Every Mutation a Silent No-op

### 7. Integration Patterns (MEDIUM)

- `integ-value-transform` - Transform Values at Controller Level for Type Coercion
- `integ-shadcn-form-import` - Verify shadcn Form Component Import Source
- `integ-shadcn-select-wiring` - Wire shadcn Select with onValueChange Instead of Spread

## How to Use

Read individual reference files for detailed explanations and code examples:

- [Section definitions](references/_sections.md) - Category structure and impact levels
- [Rule template](assets/templates/_template.md) - Template for adding new rules
- Reference files: `references/{prefix}-{slug}.md`

## Related Skills

- For schema validation with Zod resolver, see `zod` skill
- For React 19 server actions, see `react-19` skill
- For UI/UX form design, see `frontend-design` skill

## Full Compiled Document

For the complete guide with all rules expanded: `AGENTS.md`

© pproenca · MIT · pproenca/dot-skills

Похожие скиллы

Всё по теме «Фронтенд и UI» →
react-hook-form-zod ovachiever Скилл учит агента собирать формы на React Hook Form с валидацией через Zod. Одна схема работает и на клиенте, и на сервере. CX Codex +1 722установок shadcn-component-review mattbx Проверяет готовые компоненты и раскладки на соответствие паттернам shadcn: отступы, семантические токены, состав примитивов и правила выбранного визуального стиля. CX Codex +1 635установок shadcn PyModel Скилл с набором правил для работы с shadcn/ui: архитектура компонентов, доступность, темы, формы и таблицы. Пригодится, когда агент пишет или правит UI на React. CX Codex +1 458установок tanstack-form tanstack-skills Скилл учит ассистента создавать формы на базе TanStack Form с типизацией TypeScript, валидацией через Zod или Valibot и динамическими массивами полей. CX Codex +1 4 300установок clerk-custom-ui clerk Скилл по Clerk: агент собирает свою форму входа на хуках useSignIn и useSignUp либо перекрашивает готовые компоненты под бренд. CX Codex +1 55 200установок mantine-form mantinedev Скилл для сборки форм на @mantine/form: валидация, схемы zod и valibot, вложенные поля и массивы. Пригодится, когда агент пишет формы в Mantine. CX Codex +1 2 700установок

Из того же набора45

vitest Скилл даёт ИИ-агенту 44 правила для написания, отладки и ускорения тестов на Vitest. Помогает настроить моки, изолировать окружение и разобрать нестабильные проверки. CX Codex +1 6 100установок emilkowal-animations Набор из 58 правил веб-анимации на базе подходов Эмиля Ковальски для React и CSS. Помогает настроить кривые плавности, жесты и тайминги. CX Codex +1 2 800установок nuqs Скилл с 39 правилами по nuqs: типизированные парсеры, адаптеры, интеграция с Server Components и оптимизация обновлений URL. Пригодится, когда агент пишет или рефакторит код с URL-состоянием. CX Codex +1 2 300установок clean-architecture Скилл с 42 правилами из книги Роберта Мартина: подсказывает агенту, куда направлять зависимости и где проводить границы слоёв. CX Codex +1 2 000установок code-simplifier Скилл для ИИ-агентов: чистит недавно изменённый код, снижает вложенность и дублирование, сохраняя поведение программы. CX Codex +1 1 600установок expo-react-native-performance Набор из 42 правил оптимизации приложений на Expo и React Native. Помогает настроить запуск, списки на FlashList, анимации и рендеринг без ручного поиска узких мест. CX Codex +1 1 500установок framer-motion Скилл оптимизирует анимации Framer Motion в React: предотвращает лишние ререндеры, уменьшает размер бандла и настраивает переходы жестов или скролла. CX Codex +1 1 100установок msw Скилл с 45 правилами по MSW v2: настройка, хендлеры, интеграция с тестами, GraphQL. Пригодится, когда агент пишет или правит моки HTTP-запросов. CX Codex +1 842установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой