What problem does it solve? Building forms that validate consistently on both client and server is error-prone: schemas drift apart, server errors never reach the right fields, and styling conventions get mixed across versions. This Skill provides a single pattern for composing accessible, validated forms in the Iridium React Router 7 app using one shared Zod schema. ## Core Features & Use Cases - Shared validation schema: Define a Zod v4 schema once and use it with zodResolver on the client and safeParse in the route action, returning structured formError and fieldErrors payloads. - Server error surfacing: Lift per-field errors from the action response back into React Hook Form via setError, with accessible aria-describedby and aria-invalid wiring. - DaisyUI v5 markup conventions: Fieldset/legend structure, alert banners for form-level errors, pending-state submit buttons, and multi-intent submissions. - Use Case: Add a settings page form where the user updates their profile; invalid input shows inline field errors, a taken email returns a field error from the server, and the submit button disables while the fetcher is pending. ## Quick Start Ask the AI to create a new validated form for a create/edit page in this app, following the iridium-form pattern with a shared Zod schema and useFetcher submission.