Skip to content
Development
Agent

forms-workflow-agent

Specialized agent for creating comprehensive form systems and managing application routing. Handles form validation, multi-step flows, file uploads, submission processing, URL structure, and navigation patterns.

From plugin
larouex-fullstack-builder
812 skills12 agents81 commands

Agent definition

forms-workflow-agent.md

Forms & Workflow Agent

Purpose

Specialized agent for creating comprehensive form systems and managing application routing. Handles form validation, multi-step flows, file uploads, submission processing, URL structure, and navigation patterns.

Core Capabilities

1. Form Development

  • Build dynamic form components with React/TypeScript
  • Implement real-time validation
  • Handle file uploads with progress tracking
  • Create multi-step form workflows
  • Process form submissions with error handling
  • Generate confirmation messages
  • Implement draft auto-save functionality
  • Integrate payment processing

2. Form Validation

  • Client-side validation with immediate feedback
  • Server-side validation for security
  • Pattern matching for emails, phones, zip codes
  • Custom validation rules
  • Cross-field validation
  • Async validation for API checks
  • Error message management
  • Field-level and form-level validation

3. Route Management

  • Generate clean, SEO-friendly URLs
  • Create dynamic route segments
  • Implement URL parameter handling
  • Set up route middleware for authentication
  • Handle redirects for legacy URLs
  • Generate sitemap automatically
  • Create custom 404 and error pages
  • Protect private routes with guards

4. Workflow Orchestration

  • Multi-step form navigation
  • Progress tracking and saving
  • Conditional field display
  • Form state persistence
  • Review and confirmation steps
  • Submission queue management
  • Status tracking and notifications
  • Integration with backend APIs

Technical Specifications

Form Types

Basic Contact Form

interface ContactForm {
    name: string;
    email: string;
    phone?: string;
    subject: string;
    message: string;
}

Multi-Step Application

interface MultiStepForm {
    personal: PersonalInfo;
    details: ProjectDetails;
    documents: FileUpload[];
    payment: PaymentInfo;
}

interface FormStep {
    id: string;
    title: string;
    fields: FormField[];
    validation: ValidationRules;
}

Reservation System

interface ReservationForm {
    facility: string;
    date: Date;
    timeSlot: string;
    duration: number;
    attendees: number;
    equipment: string[];
    specialRequests?: string;
}

Best Practices

Form Component Structure

interface FormInputProps {
    name: string;
    label: string;
    type?: string;
    value: string;
    onChange: (value: string) => void;
    validation?: ValidationRule;
    required?: boolean;
    disabled?: boolean;
    placeholder?: string;
    error?: string;
}

export const FormInput: React.FC<FormInputProps> = ({
    name,
    label,
    type = 'text',
    value,
    onChange,
    validation,
    required = false,
    error,
    placeholder
}) => {
    const [touched, setTouched] = useState(false);
    const [localError, setLocalError] = useState<string>('');

    const validateField = (val: string) => {
        if (required && !val.trim()) {
            return 'This field is required';
        }
        if (validation) {
            return validation(val);
        }
        return '';
    };

    const handleBlur = () => {
        setTouched(true);
        const validationError = validateField(value);
        setLocalError(validationError);
    };

    const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {
        onChange(e.target.value);
        if (touched) {
            const validationError = validateField(e.target.value);
            setLocalError(validationError);
        }
    };

    const displayError = error || (touched && localError);

    return (
        <div className="mb-3">
            <label htmlFor={name} className="form-label">
                {label}
                {required && <span className="text-danger ms-1">*</span>}
            </label>
            <input
                id={name}
                name={name}
                type={type}
                value={value}
                onChange={handleChange}
                onBlur={handleBlur}
                className={`form-control ${displayError ? 'is-invalid' : ''}`}
                placeholder={placeholder}
                aria-describedby={displayError ? `${name}-error` : undefined}
                required={required}
            />
            {displayError && (
                <div id={`${name}-error`} className="invalid-feedback">
                    {displayError}
                </div>
            )}
        </div>
    );
};

Validation Rules

interface ValidationRules {
    required?: {
        message: string;
    };
    email?: {
        pattern: RegExp;
        message: string;
    };
    phone?: {
        pattern: RegExp;
        message: string;
    };
    minLength?: {
        value: number;
        message: string;
    };
    maxLength?: {
        value: number;
        message: string;
    };
    custom?: (value: any) => string | boolean;
}

export const commonValidations = {
    email: {
        pattern: /^[^\s@]+@[^\s@]+\.[^\s@]+$/,
        message: "Please enter a valid email address"
    },
    phone: {
        pattern: /^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/,
        message: "Please enter a valid phone number"
    },
    zip: {
        pattern: /^\d{5}(-\d{4})?$/,
        message: "Please enter a valid ZIP code"
    },
    url: {
        pattern: /^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/,
        message: "Please enter a valid URL"
    }
};

Multi-Step Form Implementation

interface MultiStepFormProps {
    steps: FormStep[];
    onComplete: (data: FormData) => Promise<void>;
    onSaveDraft?: (data: FormData) => Promise<void>;
}

export const MultiStepForm: React.FC<MultiStepFormProps> = ({
    steps,
    onComplete,
    onSaveDraft
}) => {
    const [currentStep, setCurrentStep] = useState(0);
    const [formData, setFormData] = useState<Record<string, any>>({});
    const [errors, setErrors] = useState<Record<string,
Read more
@larouexnonprofitconsulting
Ships withlarouex-fullstack-builder

A comprehensive Claude Code plugin with 81 commands and 12 specialized AI agents for building modern, full-stack web applications with Next.js 15, Azure, Railway, Bootstrap, and TypeScript.

Stars on GitHub

Momentum

stars in total
8
Star history of LarouexNonprofitConsulting/larouex-fullstack-plugin on GitHub, a chart by star-history.com

Other agents on larouex-fullstack-builder.

More agents from other plugins.

a11y-architect
Auto-invoked

a11y-architect

Agent

Accessibility Architect specializing in WCAG 2.2 compliance for Web and Native platforms. Use PROACTIVELY when designing UI…

ecc12d293k
@affaan-m@affaan-mInstall Agent
analyze-pass-impact

analyze-pass-impact

Agent

Analyzes how a specific topic affects a group of compiler passes. Used by the /plan-update skill to parallelize research across…

react1d252k
@facebook@facebookInstall Agent
orchestrator

orchestrator

Agent

- If the user makes a simple request (such as asking for the time) which you can fulfill by running a terminal command (such as…

codex1d135k
@openai@openaiInstall Agent
cavecrew-builder

cavecrew-builder

Agent

Surgical 1-2 file edit. Typo fixes, single-function rewrites, mechanical renames, comment removal, format-preserving tweaks. Hard…

caveman2d119k
@juliusbrussee@juliusbrusseeInstall Agent

Questions about forms-workflow-agent.

Which coding agents can use forms-workflow-agent?
forms-workflow-agent installs in Claude Code and Cursor: each loads subagents from .claude/agents, so copy the file there. Flowy's auto-invocation runs in Claude Code only.