webiny-website-builder

Builds Website Builder editor components, themes, and CMS-integrated pages with Next.js.

8.0k|673|Updated Jan 9, 2018
One-click install
npx skills add https://github.com/webiny/webiny-js --skill webiny-website-builder
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: webiny-website-builder
Source: https://github.com/webiny/webiny-js/tree/main/skills/user-skills/website-builder
Command: npx skills add https://github.com/webiny/webiny-js --skill webiny-website-builder

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires @webiny/website-builder-nextjs, @webiny/sdk.

What problem does it solve?

Developers building sites with Webiny's Website Builder must correctly wire React components into the iframe-based editor, type input values that are not always primitives, and keep theme files in sync across CSS, Tailwind, and Next.js. This Skill provides the exact patterns, type shapes, and registration APIs to do that without trial and error.

Core Features & Use Cases

  • Editor Component Creation: Build React components and register them with createComponent, defining configurable inputs (text, number, boolean, color, select, file, lexical, object, slot, tags) with correct TypeScript prop types.
  • Theming System: Configure theme.css custom properties, createTheme registration with colors and typography, and the Tailwind bridge so tokens like bg-primary work in components.
  • CMS Data Integration: Build async Server Components that fetch Headless CMS entries via the Webiny SDK at render time.
  • Use Case: A developer needs a FeatureCard component with an image picker and rich text. This Skill shows that file inputs are objects with src/width/height (not strings) and lexical inputs are { html, state } objects, preventing runtime crashes.

Quick Start

Ask the assistant to create a Website Builder editor component with a headline text input and an image input, registered with createComponent in the editorComponents index file.

Frequently Asked Questions about webiny-website-builder

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I create a Website Builder editor component in Webiny?

Create a React component that receives values via the inputs prop typed with ComponentProps<T>, then register it with createComponent in a "use client" file. Provide a namespaced name like "Custom/Banner", a label, a group, and input factories such as createTextInput.

How do I type file and image inputs in Webiny Website Builder components?

File inputs are objects, not strings: { id, name, size, mimeType, src, width, height }. Type them as that full object in your ComponentProps generic and read the URL from .src, otherwise the component compiles but fails at runtime.

Can Website Builder components fetch CMS data as Server Components?

Yes. Async Server Components work even though the registration file uses "use client". Initialize the Webiny SDK with a Read API key and call sdk.cms.listEntries inside the component to fetch Headless CMS entries at render time.

How do I customize the theme in Webiny Website Builder?

Define CSS custom properties in theme.css, register colors, typography, and fonts with createTheme in theme.ts, and bridge variables to Tailwind tokens in tailwind.css. Changing fonts requires updating layout.tsx, tailwind.css, theme.css, and theme.ts together.

Why does renaming a Website Builder component break existing pages?

Component names are stored in page documents as stable identifiers. Renaming a registered component means saved pages can no longer match the name to a React component, so treat names as permanent once pages exist.