react-hook-form
Build and modify forms that use React Hook Form or whose project conventions require it.
Skill by kriscard
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/kriscard-react-hook-form
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: frontend, security, writing
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md and code. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/react-hook-form
What's inside
- Skill name
react-hook-form- Description
- Build and modify forms that use React Hook Form or whose project conventions require it. Use when implementing controlled widgets, schema validation, fetched edit forms, conditional fields, multi-step wizards, field arrays, submission errors, or dirty-state handling. For review or diagnosis, use react-hook-form-audit.
- License
- MIT
- Instructions
- 91 lines in SKILL.md · view on GitHub
Files (8)
- SKILL.md
- actions-boundary.md · references/
- adapters-and-accessibility.md · references/
- field-arrays.md · references/
- server-data-and-lifecycle.md · references/
- testing.md · references/
- version-8.md · references/
- wizards-and-conditionals.md · references/
SKILL.md (first lines)
# React Hook Form Build around four decisions: **ownership**, **schema tree**, **adapter**, and **baseline**. RHF evidence is the invocation boundary; an ordinary React form request does not itself justify introducing the library. ## Process ### 1. Establish the form contract Inspect the installed RHF, React, resolver, schema, data-fetching, and UI-library versions before writing code. Identify: - create or edit form; - submitted value shape and API payload shape; - client snapshot or live server-data ownership; - native input contracts versus controlled adapters; - conditional, array, or wizard branches; - stable v7 APIs versus installed v8 APIs. Completion: the value owner, form type, installed versions, and required branches are explicit. ### 2. Define the schema tree and defaults Create one canonical form-value model. Compose section or wizard schemas into the full schema; when parsing transforms values, distinguish schema input from output types. Supply a complete non-`undefined` default for every tracked field and transform API values at the boundary. Completion: every registered path exists in the typed model and has a valid default; the full submission schema can validate the complete form. ### 3. Build the field boundary Use `register` when a component preserves the native input contract. Use `Controller` or `useController` when a widget exposes a controlled or non-native value/change contract. Apply the accessible field contract to every control. Completion: every field has one registration path, correct value/event/ref wiring, and an associated label, description when present, and error message. ### 4. Implement lifecycle and branches Load the relevant reference before implementing a branch: | Priority | Load when | Reference | | --- | --- | --- | | 1 — High | Fetched edit data, background refresh, mutation, reset, dirty baseline | `references/server-data-and-lifecycle.md` | | 2 — High | UI-library or custom controlled components, accessibility wiring | `references/adapters-and-accessibility.md` | | 3 — High | Wizard, step validation, cross-step rule, conditional or hidden field | `references/wizards-and-conditionals.md` | | 4 — High | Dynamic or nested rows with `useFieldArray` | `references/field-arrays.md` | | 5 — Medium | Installed project uses or is migrating to RHF v8 | `references/version-8.md` | | 6 — Medium | React 19 action or Next.js Server Action appears in the same flow | `references/actions-boundary.md` | | 7 — Medium | Tests requested or affected; async submission, baseline, conditional/wizard, or field-array behavior changed | `references/testing.md` | Completion: every detected branch has loaded and applied its reference; no branch is handled from memory alone. ### 5. Verify Run the project's TypeScript typecheck and fix every error caused by the change. Run focused existing tests when present. When the testing reference was loaded, add or update its behavioral tests. Otherwise tests are optional. Exercise the form manually when runtime tooling is available. Completion: typecheck passes, or unrelated pre-existing failures are named with evidence; modified paths, submission mapping, and failure behavior have all been checked. ## Universal rules 1. **Uncontrolled first.** Native contract means `register`; design-system component does not automatically mean `Controller`. 2. **One registration path.** A controlled field is never also registered. 3. **Complete defaults.** Avoid `undefined`; defaults are the dirty-state comparison baseline. 4. **Validation is a UX choice.** Select `mode` and `reValidateMode` from interaction cost and feedback needs rather than prescribing one mode globally. 5. **Narrow observation.** Use `useWatch` for local reactive UI, `useFormState` for local form state, `getValues` for snapshots, and `subscribe` for non-render effects. 6. **Visible and semantic errors.** Connect labels and descriptions, put `aria-invalid` on the interactive element, and render an associated message. Use `root.*` for form-wide failures. 7. **Caught submission.** Catch transport failures, preserve edits on failure, and prevent duplicate submissions while work is pending. 8. **Serialization is a boundary.** Hidden-field policy, disabled-field omission, coercion, and dirty-only PATCH behavior are explicit domain decisions. 9. **Server validation remains authoritative.** Client validation improves interaction; it never replaces server validation, authorization, or conflict handling. ## Handoff Report the ownership model, schema/default strategy, adapter choices, lifecycle behavior, version gates, changed files, typecheck command and result, tests run or skipped, and remaining risks.
From kriscard/Skills, MIT.
More from kriscard/Skills
- 0.642score
create-note
kriscard
Create an Obsidian Inbox capture, a human-owned Atomic Note draft, or approved reusable knowledge from a conversation.
SkillAFreshness: A★ 14Claude Code +9 - 0.642score
react-hook-form-audit
kriscard
Audit existing React Hook Form code for correctness, accessibility, validation, data ownership, submission, dirty-state, field-array, wizard…
SkillAFreshness: A★ 14Claude Code +9 - 0.642score
ingest
kriscard
Discuss and file an article, URL, video, book note, or selected Inbox source, then reuse a matching Atomic Note or create a human-owned scaffold for the user…
SkillAFreshness: A★ 14Claude Code +9 - 0.642score
vault-audit
kriscard
Audit the vault's PARA and Zettelkasten-inspired Atomic Note organization, linked knowledge, journals, metadata, LLM Wiki quality, and bounded statistics.
SkillAFreshness: A★ 14Claude Code +9 - 0.642score
react
kriscard
React component architecture and data-flow guidance for composition, state ownership, Effects, Suspense, async UI, rendering behavior, and measured performance.
SkillAFreshness: A★ 14Claude Code +9 - 0.642score
pr-review
kriscard
Bug-first, evidence-only review of a pull request or branch-versus-base diff.
SkillAFreshness: A★ 14Claude Code +9 - 0.642score
review
kriscard
Bug-first, evidence-only review of selected code, uncommitted changes, or code modified in the current task.
SkillAFreshness: A★ 14Claude Code +9 - 0.642score
frontend
kriscard
Frontend engineering for browser-facing applications: TypeScript trust boundaries, semantic accessibility, UI systems, responsive browser behavior, security…
SkillAFreshness: A★ 14Claude Code +9 - 0.642score
tweet-today
kriscard
Draft specific Twitter/X posts from a concrete work receipt, lesson, opinion, code detail, or user draft.
SkillAFreshness: A★ 14Claude Code +9 - 0.642score
architect
kriscard
Guides architecture decisions about service/module boundaries, system trade-offs, ADRs, data flow, rendering strategy, scaling strategy, API protocols…
SkillAFreshness: A★ 14Claude Code +9 - 0.639score
spec
kriscard
Builds reviewed requirements, technical design, and an executable implementation plan from an issue URL or requirements text, then stops at approval.
SkillAFreshness: A★ 14Claude Code +9 - 0.639score
docs
kriscard
Write or revise technical documentation around one reader job: reference, operation, review, decision, or product alignment.
SkillAFreshness: A★ 14Claude Code +9
Signals
- Stars
- 14
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Oct 7, 2026 (21 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/kriscard/Skills
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from kriscard
- 0.642score
architect
kriscard
Guides architecture decisions about service/module boundaries, system trade-offs, ADRs, data flow, rendering strategy, scaling strategy, API protocols…
SkillAFreshness: A★ 14Claude Code +9 - 0.642score
pr-review
kriscard
Bug-first, evidence-only review of a pull request or branch-versus-base diff.
SkillAFreshness: A★ 14Claude Code +9 - 0.642score
review
kriscard
Bug-first, evidence-only review of selected code, uncommitted changes, or code modified in the current task.
SkillAFreshness: A★ 14Claude Code +9 - 0.642score
tweet-today
kriscard
Draft specific Twitter/X posts from a concrete work receipt, lesson, opinion, code detail, or user draft.
SkillAFreshness: A★ 14Claude Code +9 - 0.642score
create-note
kriscard
Create an Obsidian Inbox capture, a human-owned Atomic Note draft, or approved reusable knowledge from a conversation.
SkillAFreshness: A★ 14Claude Code +9 - 0.642score
frontend
kriscard
Frontend engineering for browser-facing applications: TypeScript trust boundaries, semantic accessibility, UI systems, responsive browser behavior, security…
SkillAFreshness: A★ 14Claude Code +9
Cite this page
react-hook-form skill. Agent Mart. https://agentmart.dev/skills/kriscard-react-hook-form (last updated 2026-10-24)