| name | add-extension |
| description | Create a block extension to enhance core WordPress blocks |
| argument-hint | ["block-name"] |
| allowed-tools | Read, Write, Edit, Glob, Grep, Bash(mkdir *), Bash(npm run *) |
Create a new block extension to enhance a WordPress core block.
Ask the User For
- Which core block to extend? (e.g., "core/group", "core/heading", "core/button", "core/image")
- What enhancements to add? (e.g., "gradient text", "icon support", "hover effects")
- Needs frontend JavaScript? (Yes/No for interactivity)
What Gets Created
- Extension directory:
src/extensions/[block-name]-enhancements/
index.js with WordPress filters
styles.scss for frontend styles
editor.scss for editor-only styles
frontend.js (if interactive features needed)
Extension Pattern
addFilter('blocks.registerBlockType', 'designsetgo/add-attributes', (settings, name) => {
if (name !== 'core/group') return settings;
return {
...settings,
attributes: {
...settings.attributes,
customAttribute: { type: 'string', default: '' }
}
};
});
addFilter('editor.BlockEdit', 'designsetgo/add-controls', createHigherOrderComponent((BlockEdit) => {
return (props) => {
if (props.name !== 'core/group') return <BlockEdit {...props} />;
return (
<>
<BlockEdit {...props} />
<InspectorControls>
{/* Your controls */}
</InspectorControls>
</>
);
};
}));
addFilter('blocks.getSaveContent.extraProps', 'designsetgo/add-classes', (props, block, attributes) => {
if (block.name !== 'core/group') return props;
return {
...props,
className: classnames(props.className, 'custom-class')
};
});
CRITICAL: Extension vs Custom Block Decision
| Use Extension When | Use Custom Block When |
|---|
| ≤3 simple controls | Complex functionality |
| No DOM restructuring | Need video/media backgrounds |
| CSS-only changes | Interactive components (tabs, accordion) |
| Enhancing existing blocks | Unique UI patterns |
For DesignSetGo: Default to custom blocks for unique features. Extensions only for simple enhancements.
After Creation
Import and initialize in src/index.js:
import './extensions/group-enhancements';
Patterns to Follow
From CLAUDE.md:
- Work WITH WordPress attributes, don't replace them
- Show controls conditionally based on WordPress state
- Don't duplicate WordPress toolbar functionality
- Use WordPress layout system when extending Group block
Reference
See /review-extension command to audit your extension after creation.