Build Designer Extensions for custom Webflow Designer functionality. Lists available templates, initializes extension projects from templates (default/react/typescript-alt), bundles extensions for upload, and serves locally for development.
npx skills add https://github.com/webflow/webflow-skills --skill webflow-cli:designer-extension
Create and develop Designer Extensions for Webflow with template selection, local development server, and bundling for distribution.
ALWAYS use Bash tool for all Webflow CLI operations:
webflow extension commands via Bash toolwebflow --versionwebflow auth login (if needed)Package Manager Detection:
package-lock.json (npm), pnpm-lock.yaml (pnpm), yarn.lock (yarn)webflow --version to confirm CLI is installedwebflow extension listdefault - Basic HTML/CSS/JavaScript templatereact - React-based templatetypescript-alt - Alternative TypeScript templatewebflow extension init <project-name> <template>10. Show schema structure: Display the 5 schema fields:
name (required) - Extension name as it appears in WebflowapiVersion (required) - API version (2)publicDir (required) - Directory to build from (dist)appIntents (optional) - Element types that can create connectionsappConnections (optional) - Connection configurations11. Install dependencies: Run npm install in project directory
12. Start dev server: Execute webflow extension serve [port]
13. Show dev server info:
14. Provide loading instructions:
15. Run bundle command: Execute webflow extension bundle
16. Show bundle output: Display bundle.zip location and size
17. Provide upload instructions: Guide for uploading to Webflow
18. Document next steps: Testing and distribution guidance
User prompt:
Show me the available Designer Extension templates
Response:
🔍 Designer Extension Templates
Listing available templates...
Executing: webflow extension list
Output:
Available templates:
1. default - Basic HTML, CSS, and JavaScript
2. react - React-based extension
3. typescript-alt - Alternative TypeScript template
To create a new extension:
webflow extension init <project-name> <template>
Example:
webflow extension init my-extension react
User prompt:
Create a new Designer Extension called gallery-manager using React
Step 1: Initialize Project
📋 Initialize Designer Extension
Project name: gallery-manager
Template: react
Executing: webflow extension init gallery-manager react
Output:
✓ Created extension project at ./gallery-manager
✓ Generated project structure
✓ Created webflow.json with extension schema
✓ Set up React template
📁 Project Structure:
./gallery-manager/
├── webflow.json # Extension schema
├── package.json # Dependencies
├── src/
│ ├── index.html
│ ├── index.tsx
│ └── styles.css
├── dist/ # Build output
└── README.md
Installing dependencies...
Executing: cd gallery-manager && npm install
✓ Dependencies installed (45 packages)
Step 2: Show Schema
📋 Extension Schema (webflow.json)
Reading webflow.json...
{
"name": "Gallery Manager",
"apiVersion": "2",
"publicDir": "dist",
"appIntents": {},
"appConnections": []
}
Schema Fields:
✓ name (required) - Extension name in Webflow
✓ apiVersion (required) - API version: 2
✓ publicDir (required) - Build directory: dist
appIntents (optional) - Element connection types
appConnections (optional) - Connection configs
Extension ready for development!
User prompt:
Run the extension on my local dev server
Default Port (1337):
🚀 Starting Development Server
Executing: webflow extension serve
Output:
✓ Building extension
✓ Starting dev server
✓ Extension ready
📋 Development Server Running
Local URL: http://localhost:1337
Status: ✓ Active
How to Load in Designer:
1. Open Webflow Designer
2. Open any site
3. Load extension from URL: http://localhost:1337
Press Ctrl+C to stop server
Custom Port:
User: "Run on port 3000 instead"
🚀 Starting Development Server
Executing: webflow extension serve 3000
Output:
✓ Building extension
✓ Starting dev server on port 3000
✓ Extension ready
📋 Development Server Running
Local URL: http://localhost:3000
Status: ✓ Active
Load in Designer: http://localhost:3000
User prompt:
Bundle my extension for upload
Step 1: Bundle
📦 Bundling Extension
Executing: webflow extension bundle
Output:
✓ Building production bundle
✓ Creating bundle.zip
✓ Bundle created successfully
Bundle Details:
- File: bundle.zip
- Location: ./dist/bundle.zip
- Size: 245 KB
✅ Bundle ready for upload!
Step 2: Upload Instructions
📤 Upload Instructions
Your extension is bundled and ready to upload.
Upload Steps:
1. Go to Webflow Designer Extensions dashboard
2. Upload bundle.zip
3. Test the extension
4. Submit for review (if distributing)
Bundle location: ./dist/bundle.zip
User prompt:
Create a new Designer Extension for managing colors
Step 1: List Templates
🔍 Designer Extension Workflow
First, let me show available templates.
Executing: webflow extension list
Available templates:
1. default - Basic HTML/CSS/JavaScript
2. react - React-based (recommended)
3. typescript-alt - TypeScript alternative
Which template would you like to use? (default/react/typescript-alt)
*User selects: react*
Step 2: Initialize
📋 Creating Extension
Project name: color-manager
Template: react
Executing: webflow extension init color-manager react
✓ Project created at ./color-manager
✓ webflow.json generated
✓ React template configured
Installing dependencies...
✓ npm install complete
📋 Extension Schema:
{
"name": "Color Manager",
"apiVersion": "2",
"publicDir": "dist",
"appIntents": {},
"appConnections": []
}
Step 3: Start Development
🚀 Starting Dev Server
Executing: webflow extension serve
✓ Server running at http://localhost:1337
Load in Designer:
1. Open Webflow Designer
2. Load extension from: http://localhost:1337
3. Start developing!
Server running... (Press Ctrl+C to stop)
Installation Check:
# Check if CLI is installed
webflow --version
# If not installed, guide user:
npm install -g @webflow/cli
Authentication (if needed):
# Site authentication if required
webflow auth login
List Templates Command:
webflow extension list
Available Templates:
Init Command:
webflow extension init <project-name> <template>
Arguments:
<project-name> (required) - Name of the new project directory<template> (required) - One of: default, react, typescript-altExample Commands:
# Initialize with default template
webflow extension init my-extension default
# Initialize with React template
webflow extension init my-extension react
# Initialize with TypeScript template
webflow extension init my-extension typescript-alt
Project Structure After Init:
/project-name/
├── webflow.json # Extension schema (required)
├── package.json # Dependencies
├── src/ # Source files
│ ├── index.html
│ ├── index.tsx (or .js)
│ └── styles.css
├── dist/ # Build output directory
└── README.md
Schema in webflow.json:
{
"name": "<Your Extension Name>",
"apiVersion": "2",
"publicDir": "dist",
"appIntents": {
"image": ["manage"],
"form": ["manage"]
},
"appConnections": [
"myAppImageConnection",
"myAppFormConnection"
]
}
Schema Fields:
| Field | Description | Default | Required |
| ---------------- | --------------------------------------------------- | ------- | -------- |
| name | Extension name as it appears in Webflow | - | Yes |
| apiVersion | API version to use for extension | 2 | Yes |
| publicDir | Directory to build and serve extension from | dist | Yes |
| appIntents | Element types that can create connections | {} | No |
| appConnections | Connection configurations for extension | [] | No |
Required Fields:
name - Must be unique and descriptiveapiVersion - Currently must be "2"publicDir - Directory where built files are placed (default: "dist")Optional Fields:
appIntents - Defines which element types can connect to your extension{"image": ["manage"], "form": ["manage"]}appConnections - Array of connection identifiers["myAppImageConnection", "myAppFormConnection"]Serve Command:
# Serve on default port (1337)
webflow extension serve
# Serve on custom port
webflow extension serve 3000
Arguments:
[port] (optional) - Port number to serve on (default: 1337)Development Server:
Loading in Designer:
Bundle Command:
webflow extension bundle
Output:
bundle.zip file in project directorypublicDirBundle Contents:
CLI Not Installed:
❌ Webflow CLI Not Found
Designer Extensions require the Webflow CLI.
Installation:
npm install -g @webflow/cli
After installation, verify:
webflow --version
Documentation: https://developers.webflow.com/cli
Invalid Template:
❌ Invalid Template
Error: Template "vue" not found
Available templates:
- default
- react
- typescript-alt
Retry with valid template:
webflow extension init my-extension react
Port Already in Use:
❌ Development Server Failed to Start
Error: Port 1337 is already in use
Solutions:
1. Stop other process on port 1337
2. Use different port:
webflow extension serve 3000
Find process using port:
lsof -ti:1337 | xargs kill -9
Missing webflow.json:
❌ Extension Schema Not Found
Error: webflow.json not found in current directory
This directory is not an extension project.
Solutions:
1. Initialize new extension:
webflow extension init <name> <template>
2. Navigate to existing extension directory
3. Create webflow.json with required schema
Bundle Failed:
❌ Bundle Creation Failed
Error: Build failed with errors
Common Causes:
- Missing dependencies (run: npm install)
- Build errors in source files
- Invalid webflow.json schema
- Missing publicDir directory
Fix errors and retry:
webflow extension bundle
Reading Extension Files:
Always use Read tool (never modify):
# View extension schema
Read: webflow.json
# View package dependencies
Read: package.json
# View source files
Read: src/index.html
Read: src/index.tsx
Discovering Project Files:
Use Glob tool to find files:
# Find all source files
Glob: src/**/*
# Find configuration files
Glob: *.json
# Find built files
Glob: dist/**/*
Never Use Write/Edit Tools:
For Init:
📋 Creating Extension...
[████████████████████████] 100%
✓ Project created
✓ Dependencies installed
Elapsed: 12s
For Bundle:
📦 Bundling Extension...
[████████████████████████] 100%
✓ Bundle created: bundle.zip
Elapsed: 5s
For Serve:
🚀 Starting Server...
[████████████████████████] 100%
✓ Server ready at http://localhost:1337
Elapsed: 3s
Template Selection:
Development Workflow:
Schema Configuration:
Local Development:
Bundling:
Workflow: list templates → init → serve → develop → bundle → upload
Key Commands:
webflow extension list - Show available templateswebflow extension init <project-name> <template> - Create new extensionwebflow extension serve [port] - Start dev server (default: 1337)webflow extension bundle - Create bundle.zip for uploadTemplates: default, react, typescript-alt
Schema Fields (webflow.json):
name (required) - Extension nameapiVersion (required) - API version (2)publicDir (required) - Build directoryappIntents (optional) - Element connection typesappConnections (optional) - Connection configsDev Server: http://localhost:1337 (or custom port)
Bundle Output: bundle.zip in project directory
Documentation: https://developers.webflow.com/designer/reference/introduction
Guide for creating high-quality MCP (Model Context Protocol) servers that enable LLMs to interact with external services through well-designed tools. Use when building MCP servers to integrate external APIs or services, whether in Python (FastMCP) or Node/TypeScript (MCP SDK).
Automatically creates user-facing changelogs from git commits by analyzing commit history, categorizing changes, and transforming technical commits into clear, customer-friendly release notes. Turns hours of manual changelog writing into minutes of automated generation.
Use when implementation is complete, all tests pass, and you need to decide how to integrate the work - guides completion of development work by presenting structured options for merge, PR, or cleanup
Guide for creating high-quality MCP (Model Context Protocol) servers that enable LLMs to interact with external services through well-designed tools. Use when building MCP servers to integrate external APIs or services, whether in Python (FastMCP) or Node/TypeScript (MCP SDK).
React Native and Expo best practices for building performant mobile apps. Use when building React Native components, optimizing list performance, implementing animations, or working with native modules. Triggers on tasks involving React Native, Expo, mobile performance, or native platform APIs.
React and Next.js performance optimization guidelines from Vercel Engineering. This skill should be used when writing, reviewing, or refactoring React/Next.js code to ensure optimal performance patterns. Triggers on tasks involving React components, Next.js pages, data fetching, bundle optimization, or performance improvements.
Next.js best practices - file conventions, RSC boundaries, data patterns, async APIs, metadata, error handling, route handlers, image/font optimization, bundling
Use when starting feature work that needs isolation from current workspace or before executing implementation plans - creates isolated git worktrees with smart directory selection and safety verification
Take webflow/webflow-cli:designer-extension from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.
The instructions reference npm.
Without those the skill loads but fails at the first command.