Build or edit any form in a Next.js 16 App Router app through one shared toolkit in lib/forms/, with dirty + valid Save gating — on TanStack Form + Zod (default) or react-hook-form (auto-detected). Use when the user says "form", "edit panel", "create dialog", "settings page", "save button", "dirty state", or reaches for useState to hold field values, raw useForm, hand-rolled dirty tracking, or inline toast.success/error on submit. Also owns multi-step question flows — "questionnaire", "questionario", "survey", "sondaggio", "quiz", "poll", "onboarding flow", "intake form", "wizard", "step-by-step questions", "one question at a time" — which route to the shadcn <Questionnaire />. Refuses outside Next.js 16 web. Not for: React Native forms, search boxes that only filter, reads that populate a form (data-fetching), or state not bound to form fields (state-discipline).
dev-flow) routes here after scaffolding a route that needs persistence.useState to hold field values, raw useForm (bypassing the toolkit), hand-rolled dirty tracking, inline toast.success/toast.error on submit, or <form onSubmit> that calls fetch/services directly./plugin install dev-flow@dev-flow # the whole suite
./install.sh --platform claude # or drop dist/forms.skill into Claude Code