generating-wordpress-fse-blocks
WordPress FSE Theme Code Generator
When to use this skill
- User asks to create a Gutenberg block
- User mentions Full Site Editing or FSE
- User wants to scaffold block.json files
- User asks about WordPress theme.json
- User needs block templates or patterns
Workflow
- Identify block or theme requirement
- Generate block.json with attributes
- Create edit component (React/JSX)
- Create save component
- Add block styles
- Register in PHP
- Update theme.json if needed
Instructions
Step 1: Identify Block Type
| Block Type | Use Case | Complexity |
|---|---|---|
| Static | Content display only | Low |
| Dynamic | Server-rendered, PHP callback | Medium |
| Interactive | Client-side JS behavior | High |
| Inner Blocks | Container with nested blocks | Medium |
Step 2: Create Block Structure
mkdir -p src/blocks/my-block
touch src/blocks/my-block/{block.json,edit.tsx,save.tsx,index.ts,style.scss,editor.scss}
Step 3: Generate Block Files
See examples/block-templates.md for complete templates:
- block.json with attributes and supports
- Edit component with InspectorControls and MediaUpload
- Save component (static) and render.php (dynamic)
- Block registration (JS and PHP)
- Block styles (frontend and editor)
Step 4: Configure theme.json
See examples/theme-json.md for:
- Color palette and typography settings
- Spacing scale configuration
- Layout settings (content/wide)
- Custom font registration
- Block-specific styles
- Template parts and custom templates
Step 5: Setup functions.php
See examples/functions-php.md for:
- Block registration hooks
- Asset enqueueing
- Block category registration
- Block patterns
- Theme support setup
Quick Reference: block.json Attributes
{
"attributes": {
"text": { "type": "string", "default": "" },
"number": { "type": "number", "default": 0 },
"boolean": { "type": "boolean", "default": false },
"array": { "type": "array", "default": [] },
"object": { "type": "object", "default": {} }
}
}
Quick Reference: Block Supports
{
"supports": {
"html": false,
"align": ["wide", "full"],
"color": { "background": true, "text": true },
"spacing": { "margin": true, "padding": true },
"typography": { "fontSize": true }
}
}
Validation
Before completing:
- block.json schema validates
- Block appears in inserter
- Edit component renders in editor
- Save outputs valid HTML
- Styles apply correctly
- PHP render works (if dynamic)
npm run build
npm run lint:js
npm run lint:css
Error Handling
- Block not appearing: Check block.json name matches registration and category exists.
- Validation error: Ensure save output matches stored content exactly.
- Styles not loading: Verify file paths in block.json are correct.
- PHP render not working: Check render.php exists and block.json has
renderkey. - TypeScript errors: Install @wordpress/blocks types:
npm i -D @types/wordpress__blocks.
Resources
More from wesleysmits/agent-skills
writing-product-descriptions
Creates compelling product copy for e-commerce listings. Use when the user asks about product descriptions, e-commerce copy, product pages, marketplace listings, or converting features to benefits.
20writing-long-form-content
Generates comprehensive blog post drafts with proper structure. Use when the user asks to write a full article, create blog content, draft long-form posts, or needs complete written content with SEO optimization.
16writing-youtube-video-scripts
Creates structured video scripts with hooks, segments, and CTAs. Use when the user asks about YouTube scripts, video content, video outlines, talking points, or video intros.
15generating-ebooks-and-lead-magnets
Creates comprehensive ebooks, guides, and downloadable lead magnets with chapter structure and promotional assets. Use when the user asks about ebooks, lead magnets, downloadable guides, gated content, or PDF resources.
11writing-press-releases
Generates professional press releases with headline, dateline, inverted pyramid structure, and boilerplate. Use when the user asks about press releases, media announcements, news releases, PR distribution, or journalist outreach.
11profiling-performance
Runs performance audits and suggests optimizations using Lighthouse and Web Vitals. Use when the user asks about performance, page speed, Core Web Vitals, Lighthouse scores, or wants to optimize rendering and execution.
9