From automation
Complete guide to implementing an Inquiry Process (multi-step form wizard) using @finstreet/forms and @finstreet/ui. Use when building, modifying, or debugging any inquiry process in the finstreet context.
npx claudepluginhub joshuarweaver/cascade-code-languages-misc-1 --plugin finstreet-fe-claude-pluginsThis skill uses the workspace's default tool permissions.
An Inquiry Process is a multi-step form wizard that collects information from the user. It uses the `ProgressBar` from `@finstreet/forms/ProgressBar` and layout components from `@finstreet/ui`.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Searches prompts.chat for AI prompt templates by keyword or category, retrieves by ID with variable handling, and improves prompts via AI. Use for discovering or enhancing prompts.
Checks Next.js compilation errors using a running Turbopack dev server after code edits. Fixes actionable issues before reporting complete. Replaces `next build`.
An Inquiry Process is a multi-step form wizard that collects information from the user. It uses the ProgressBar from @finstreet/forms/ProgressBar and layout components from @finstreet/ui.
InquiryProcess
└── layout.tsx (ProgressBarProvider wraps all steps)
├── {Purpose}ProgressBar — shows step progress
└── {children} — each step is a Next.js page with a Form
Before creating any files, invoke the automation:path-resolver skill with your input parameters (featureName, featureType=inquiryProcess, product, role) to resolve the correct paths. Use the returned Feature Path as the base directory for the inquiry process feature.
features/{purpose}InquiryProcess/
├── components/
│ ├── {Purpose}ProgressBar.tsx
│ └── {StepName}Page.tsx ← Feature page component per step
├── forms/
│ └── {stepName}/
│ └── get{StepName}DefaultValues.ts ← Default values transformer per step
├── utils/
│ └── get{Purpose}InitialProgressState.ts
└── {Purpose}InquiryProcess.types.ts
app/{role}/{purpose}-inquiry/[inquiryId]/
├── layout.tsx ← NOT inside the feature dir
└── (inquiry)/
└── {step-slug}/
└── page.tsx ← Thin Next.js page per step
ALWAYS create files in this exact sequence:
{Purpose}InquiryProcess.types.tsutils/get{Purpose}InitialProgressState.tscomponents/{Purpose}ProgressBar.tsxlayout.tsx (path provided from context/routes)// ProgressBar state + provider
import { ProgressBarProvider, ProgressBarState } from '@finstreet/forms/ProgressBar'
// ProgressBar hook (inside hook functions)
import { useProgressBar, ProgressBarSteps } from '@finstreet/forms/ProgressBar'
// Validity (used inside each step's Form component)
import { Validity } from "@finstreet/forms/ProgressBar";
// UI components
import {
ProgressBar,
ProgressBarGroup,
} from "@finstreet/ui/components/patterns/ProgressBar";
import { ProgressStep } from "@/shared/components/ProgressStep";
import {
FormLayout,
FormLayoutArea as Area,
} from "@finstreet/ui/components/pageLayout/Layout/FormLayout";
import { Panel } from "@finstreet/ui/components/base/Panel";
import { Box } from "@styled-system/jsx";
// Navigation
import { usePathname, useParams } from 'next/navigation'
// Portal context
import { usePortal } from "@/shared/context/portal/portalContext";
// Routes
import { routes } from "@/routes";
// Translations
import { useExtracted } from 'next-intl'
// Backend (only when layout fetches data)
import { fetchWithErrorHandling } from "@/shared/backend/fetchWithErrorHandling";
usePortal() inside the progress bar hook to resolve route pathsfetchWithErrorHandling