react-formengine-ai-form-builder-cursorrules-prompt-file
Cursor rules for generating React forms from screenshots, PDFs, HTML, or text descriptions with validated FormEngine JSON schema. Renders through RSuite, Material UI, or Mantine.
Install / Use
npx skills add PatrickJS/awesome-cursorrulesInstalls into whichever agent you are using.
Other
Other agent config
Quality Score
Category
CommunicationSupported Platforms
Skill content
View source on GitHubdescription: "Cursor rules for generating React forms from screenshots, PDFs, HTML, or text descriptions with validated FormEngine JSON schema. Renders through RSuite, Material UI, or Mantine." globs: */ alwaysApply: false
FormEngine — AI Form Builder for React
Generate production-ready React forms from a screenshot, PDF, HTML, or text description. The output is a validated FormEngine JSON schema plus a runnable App.tsx — portable data, not throwaway JSX.
Default target: FormEngine Core (MIT, free) via @react-form-builder/core
@react-form-builder/components-rsuite(or Material UI / Mantine).
Source repo: https://github.com/lukinov/ai-form-builder
What you produce — every time
form.json— a normalized FormEngine schema, validated against the real list of component types from the target UI library.App.tsx— a runnable React file that imports the schema and renders it through<FormViewer>.- A short validation report (Screen root, unique keys, layout-only
css, no smuggled HTML markup, valid validation rule keys). - Install command + a link to the free Online FormBuilder (https://formbuilder.formengine.io) so the user can tweak visually.
Hard rules — never violate
Schema invariants
- Root is
type: "Screen"(NOT"Form"). - Every component node has
key(unique within the tree),type(must exist in the chosen library), and usuallyprops. - Every prop value is wrapped:
"label": { "value": "Email" }— never"label": "Email". - Validations live under
schema.validationson the field component that owns the data — never on the Screen root. - Use the correct tooltip/error types:
- RSuite:
RsTooltip/RsErrorMessage - MUI:
MuiTooltip/MuiErrorWrapper - Mantine:
MtTooltip/MtErrorWrapper
- RSuite:
Layout vs. styling
cssandwrapperCssare layout-only — flex, grid, box-model, margin, padding, gap, width/height, alignment. Never color, font, background, border, shadow, radius, opacity, transform.- Visual styling belongs in the UI library's theme provider in
App.tsx(<CustomProvider>/<ThemeProvider>/<MantineProvider>). - The legacy
stylefield is forbidden — usecss/wrapperCss. - The shape is
{ "any": { "object": { "<layout-key>": "<value>" } } }, never a plain CSS string. - No companion
.cssfile alongsideApp.tsx. No rootclassName. No<style>blocks. Nostyled-components.
Plain-text strings only
Every string inside any prop is plain text. No HTML markup of any
kind, anywhere — no <h1>, <p>, <strong>, <small>, <br>, no
style="...", no class="...", no <style> block. Express section
headings and structure with components (RsCard with header prop,
RsHeader, RsDivider) — not embedded HTML.
Validation rule keys — Zod set only
Valid keys: required, nonEmpty, min, max, length, email,
url, uuid, ip, datetime, regex, includes, startsWith,
endsWith, lessThan, moreThan, integer, multipleOf, truthy,
falsy. There is no minLength / maxLength — use min / max
with args.limit.
UI library defaults
- Default to RSuite. Reference library; widest component set
including
RsWizardfor multi-step forms. - Material UI when the user mentions MUI, Material, or their project is on MUI.
- Mantine when the user mentions Mantine or needs a component that's Mantine-only (color picker, rich date pickers, segmented control).
State the choice explicitly in the first sentence of the response.
Common renames — always emit the right name
| Wrong | Right |
|---|---|
| Form | Screen |
| RsForm | RsCard or RsContainer |
| RsSelectPicker | RsDropdown |
| RsRadio | RsRadioGroup |
| RsTextarea | RsTextArea (capital A) |
| RsInputNumber | RsNumberFormat |
| RsUpload | RsUploader |
| MtDatePickerSingle | MtDatePicker |
| MtTextField | MtTextInput |
Side-by-side fields
Use RsContainer with display: flex and children with
wrapperCss.any.object.flex: "1". RSuite has no FlexboxGrid/Stack
adapter — flex on RsContainer is the mechanism.
Section headings
Use RsCard with the header prop, or RsHeader — never <h1> /
<h2> embedded in RsStaticContent content strings.
Conditional rendering
Use renderWhen: { "jsCode": "data.X === Y" } and pair with
validateWhen if validations should also be conditional.
App.tsx — minimal starter
Import only the library's stylesheet. Theme via the library's provider.
No companion CSS. No root className. Layout-level inline styles
(maxWidth, margin, padding) on the wrapping <div> are fine.
import "rsuite/dist/rsuite.min.css";
import { FormViewer, BiDi } from "@react-form-builder/core";
import { view } from "@react-form-builder/components-rsuite";
import formJson from "./form.json";
const getForm = () => JSON.stringify(formJson);
export default function App() {
return (
<div style={{ maxWidth: 720, margin: "40px auto", padding: 16 }}>
<FormViewer
view={view}
getForm={getForm}
onFormDataChange={(d) => console.log(d)}
biDi={BiDi.LTR}
/>
</div>
);
}
Free vs. commercial — stay on the MIT side
FormEngine Core is MIT and free. The Designer and some Premium components (Signature, DataGrid, Rich Text, QR Code, Google Maps) are commercial. Don't emit Premium component types unless the user explicitly asks. Direct people to the free Online FormBuilder (https://formbuilder.formengine.io) for visual editing.
Response shape
Lead paragraph (library + field count) → form.json → App.tsx →
validation checklist → install command → "tweak visually in the Online
FormBuilder" link → 3 next-step doc links into FormEngine Core docs.
Reference
- FormEngine Core docs: https://formengine.io/documentation/formengine-core/
- Forms JSON reference: https://formengine.io/documentation/formengine-core/forms-json/
- Validation: https://formengine.io/documentation/formengine-core/validation/
- Conditional rendering: https://formengine.io/documentation/formengine-core/conditional-rendering/
- Online FormBuilder: https://formbuilder.formengine.io
- llms-full.txt (full machine-readable docs): https://formengine.io/documentation/llms-full.txt
- Source repo for this rule: https://github.com/lukinov/ai-form-builder
Related Skills
momen-cursurrules-prompt-file
40.5kCursor rules for building custom frontends with Momen.app as headless BaaS with GraphQL API, actionflows, AI agents, and Stripe integration.
headroom
65.7kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
Anthropic-Cybersecurity-Skills
27.5k817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATT&CK, NIST CSF 2.0, MITRE ATLAS, D3FEND, NIST AI RMF & MITRE F3 (Fight Fraud) · agentskills.io standard · Works with Claude Code, GitHub Copilot, Codex CLI, Cursor, Gemini CLI & 20+ platforms · 29 security domains ·…
cmux
25.8kOpen source Ghostty-based macOS terminal with vertical tabs and notifications for AI coding agents. Built for multitasking, organization, and programmability.
Languages
Security Score
Audited on May 30, 2026
