SpectreSkills
← All recipes

form-builder

v1.0.0

Assemble a form builder end to end — a shared form document, a drag-and-drop editor, a live preview, framework-free embed elements, and pluggable submission destinations. Combine when building a form product that should work in more than one host app.

Formsformsbuilderweb-componentsintegrations
Try it — copy this prompt into Claude Code
Run `npx @spectre-apps/skills recipe form-builder` to install the skills, then use them in order to build a form builder I can host in any admin app: a shared form document, a drag-and-drop canvas with a field palette and inspector, a preview panel that renders the real form, framework-free embed elements, and connectors that deliver a submission after it is saved.

One paste installs the skills and kicks off the whole build.

Install the whole recipe
npx @spectre-apps/skills recipe form-builder

Installs all 5 skills into .claude/skills. Add --user to install globally.

Or add them individually
npx @spectre-apps/skills add form-definition form-builder-canvas form-preview form-web-component form-integrations

5 skills, in order

  1. 01
    form-definitionv1.0.0

    Define the form document an author edits and a renderer draws — field catalog, widths, submission keys, steps, and conditional rules. Trigger when modeling forms, adding a field type, or sharing one form shape across a builder and a public embed.

  2. 02
    form-builder-canvasv1.0.0

    Build the form authoring surface — a field palette, a drag-and-drop canvas that packs fields into rows, and an inspector for the selected field. Trigger when implementing the editor where someone assembles a form.

  3. 03
    form-previewv1.0.0

    Show the in-progress form in a preview panel using the same renderer the published page uses, including unsaved edits, conditional visibility, and multi-step navigation. Trigger when adding or changing the builder's preview.

  4. 04
    form-web-componentv1.0.0

    Publish a form as framework-free custom elements that fetch their configuration and post submissions. Trigger when embedding a form on a page the builder does not control — a storefront, a CMS page, or any other host.

  5. 05
    form-integrationsv1.0.0

    Deliver a saved form submission to outside systems through a catalog of connectors. Trigger when adding a destination such as a spreadsheet, email list, CRM, or webhook, or when wiring what happens after someone submits.

How it fits together

Form builder

Everything required to take a form product from an empty folder to a form someone can build, preview, embed, and connect. The host app — its framework, its component library, its accounts — wraps these pieces. The pieces themselves stay free of that host, so the same builder can sit inside an embedded admin or a standalone dashboard.

Install the skills and work through them in order.

Order

  1. form-definition — the document both sides share: field catalog, widths, submission keys, steps, conditional rules, and save-time warnings. Nothing else has a shape until this exists, and it ships with no UI dependencies.
  2. form-builder-canvas — the authoring surface: palette, drag-and-drop canvas, inspector. It edits the document from step 1.
  3. form-preview — a panel that mounts the real renderer against the in-memory document, unsaved edits included.
  4. form-web-component — that renderer, as custom elements a host page can drop in. They fetch the published document and post submissions.
  5. form-integrations — after the submission row is saved, deliver it to a spreadsheet, a list, a CRM, or a webhook. Connectors are modules behind one interface.

How they lock together

The canvas writes a FormDefinition. The preview and the embed both read it, so a width, a conditional rule, or a step title changes in one renderer. The embed's submit handler persists a row whose keys are the field names, then the dispatcher looks up destination in the integration catalog.

Leave the host's accounts, billing, and navigation outside this recipe. Pass the current account into the builder; keep it out of the form document and out of the custom elements.

Prefer to drop the files in?

Copies every skill in this recipe as one block — each section is headed with the path it belongs at (.claude/skills/<slug>/SKILL.md), so you can paste them straight into your project and reference them in your prompt.