From greenlight-vibe
Generates or edits WordPress Gutenberg blocks with Greenshift/GreenLight plugin. Converts HTML/CSS/JS designs or data/charts to paste-ready blocks for Gutenberg editor, or reverses to vanilla code.
npx claudepluginhub wpsoul/greenlight-vibeThis skill uses the workspace's default tool permissions.
Create production-ready WordPress Gutenberg blocks using Greenshift/GreenLight Element block system. All output is HTML with JSON parameters in block comments - ready to paste directly into WordPress Gutenberg code editor or send code via mcp, rest api to site.
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Guides building MCP servers enabling LLMs to interact with external services via tools. Covers best practices, TypeScript/Node (MCP SDK), Python (FastMCP).
Generates original PNG/PDF visual art via design philosophy manifestos for posters, graphics, and static designs on user request.
Create production-ready WordPress Gutenberg blocks using Greenshift/GreenLight Element block system. All output is HTML with JSON parameters in block comments - ready to paste directly into WordPress Gutenberg code editor or send code via mcp, rest api to site.
Always build html first and use there best standards. But keep important rules
<style data-wp-block-html="css">...</style>. All scripts add in section <script data-wp-block-html="js">...</script>. But if you have <link> tags, keep them as they are.Important When you have centered content inside full width section, use next code for such sections. They must be most parent blocks on page
<section class="wp-section alignfull" data-type="section-component">
<div class="wp-content-wrap" data-type="content-area-component">
Your Centered Content
</div>
</section>
Use next styles for sections
.wp-section{display:flex;justify-content:center;flex-direction:column;align-items:center;padding-right:var(--wp--spacing--side, min(3vw, 20px));padding-left:var(--wp--spacing--side, min(3vw, 20px));padding-top:var(--wp--spacing--top, 0px);padding-bottom:var(--wp--spacing--bottom, 0px);margin-top:0px;margin-bottom:0px;position:relative;}
.wp-content-wrap{max-width:100%;width:var(--wp--style--global--wide-size, 1200px);}
You can add background and other styles to each section, you can change padding top and bottom, but always keep alignfull class, --wp--style--global--wide-size variable and --wp--spacing--side variables.
When user asks to add dynamic content, read and follow instructions/dynamic-placeholders.md.
When user asks to build query loops, dynamic loops, archives, or other query-driven layouts, read and follow both:
instructions/dynamic-loops.mdinstructions/dynamic-placeholders.mdImportant!!! Add dynamic placeholders ONLY if user asked to make dynamic content or query loops
Save the HTML from Step 1 to a temporary .html file, then run the converter script located alongside this skill:
node "${CLAUDE_PLUGIN_ROOT}/skills/greenlight-vibe/scripts/convert.js" /path/to/input.html -o /path/to/output.txt
If CLAUDE_PLUGIN_ROOT is not set (standalone/local install), use the path relative to the skill directory:
node scripts/convert.js /path/to/input.html -o /path/to/output.txt
The script is zero-dependency (pure JS, no npm install). It accepts a full HTML page or snippet and outputs ready-to-paste Greenshift block code.
What the script does:
<style> tags and converts CSS into a Style Manager block with dynamicGClasses (local classes), styleAttributes, hover/focus states, selectors, media queries, and keyframes<script> tags and adds them as customJs with customJsEnabled: truegreenshift-blocks/element blocks with correct type (inner, text, no), proper nesting, and mapped attributes (href, src, alt, formAttributes, dynamicAttributes, icon, isVariation, etc.)Usage options:
node scripts/convert.js input.html # output to stdout
node scripts/convert.js input.html -o output.txt # output to file
cat input.html | node scripts/convert.js # pipe from stdin
Check if we have some values in styles that matches or close to one of our existed variables. If yes, replace value with variable and fallback
See instructions/variables.md for complete list of variables.
If you add code as content and save it in wordpress site, read and follow instructions/validate-styles.md for CSS rendering and instructions/validate-scripts.md if you have custom scripts in blocks.
metadata:{"name":"..."} for adding relevant titles to blocks.If user asked for minimal changes, like color change, try to edit blocks code directly and save updated code
If user asked to make bigger changes, you need to make next steps.
Take raw content of page and check if it has greenshift-blocks/element blocks
Save the blocks code to a temporary .html file, then run the deconverter script located alongside this skill:
node "${CLAUDE_PLUGIN_ROOT}/skills/greenlight-vibe/scripts/deconvert.js" /path/to/input.html -o /path/to/output.txt
If CLAUDE_PLUGIN_ROOT is not set (standalone/local install), use the path relative to the skill directory:
node scripts/deconvert.js /path/to/input.html -o /path/to/output.txt
Make the requested changes in the HTML/CSS/JS produced by the deconverter. After editing, run the normal HTML-to-block conversion workflow again and validate the final Greenshift block code.
Return the full updated Greenshift block code and use it as a complete replacement for the original block content. Do not return only a diff or partial fragment. Keep unchanged blocks and attributes as they were unless they must change to support the requested update.