A Claude Code plugin (and standalone skill) for converting any HTML/CSS/JavaScript project into a production-ready WordPress Block Theme (Full Site Editing). Author: Md Siddiqur Rahman License: MIT
FAQ
wp-block-theme-converter is a Claude Code plugin with 1 hand-picked skill for development work, indexed on Flowy. Install it with the command on its page. It includes wp-block-theme-converter. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.
> /plugin marketplace add siddik-web/wp-block-theme-converter> /plugin install wp-block-theme-converter@siddik-web
Repo: siddik-web/wp-block-theme-converter
A Claude Code plugin (and standalone skill) for converting any HTML/CSS/JavaScript project into a production-ready WordPress Block Theme (Full Site Editing).
Author: Md Siddiqur Rahman Version: 2.0.0 License: MIT
Converts static HTML/CSS/JavaScript projects into complete, production-ready WordPress block themes that are:
| Command | Purpose |
|---|---|
/convert-to-wp-theme | Full conversion of HTML/CSS/JS project to complete block theme |
/scaffold-wp-theme | Create empty block theme scaffold (no source needed) |
/wp-pattern | Convert single HTML section into a registered block pattern |
/wp-theme-json | Generate theme.json from CSS custom properties / design tokens |
/wp-template | Convert single HTML page into FSE template |
/wp-block | Scaffold a custom block (block.json, edit.js, save.js/render.php, CSS) |
/wp-migrate | Migrate existing WP content (Classic Editor, ACF, widgets, CPTs, shortcodes) to block theme |
/wp-plugin-theme | Declare plugin dependencies and generate plugin-specific CSS / compatibility code |
/wp-variation | Generate a style variation (styles/*.json) β dark mode, color palette swap, font swap |
/wp-classic-to-fse | Convert an existing WordPress classic theme (PHP templates) to FSE block theme |
/wp-debug | Diagnose and fix FSE/block-theme failures β block validation errors, theme.json issues, patterns not showing, DB template overrides, PHP warnings, and more |
This repository is also a Claude Code plugin marketplace. Install it directly from GitHub:
# Run these inside Claude Code:
/plugin marketplace add siddik-web/wp-block-theme-converter
/plugin install wp-block-theme-converter@siddik-web
Installing the plugin registers everything at once:
/convert-to-wp-theme, /wp-debug, β¦)wp-block-theme-converter skill (auto-triggers on WordPress requests)wp-theme-reviewer agent for auditing generated themestheme.json validation hook that runs after editsManage or disable it any time with /plugin.
Download or clone this repository
Place the folder in your Claude Code skills directory:
~/.claude/skills/wp-block-theme-converter/
Restart Claude Code or run claude reload
Verify: type any of the slash commands listed above
wp-block-theme-converter.skillPlace the wp-block-theme-converter/ folder in your skills directory. Path varies by environment:
~/skills/CLAUDE_SKILLS_DIR environment variable/convert-to-wp-theme
I have a 3-page landing site for "Acme Co".
Use Vite 6, no WooCommerce.
[paste HTML/CSS/JS]
/convert-to-wp-theme
Convert my Northaven Co. eCommerce design system to a WooCommerce block theme.
Include all six aesthetics as style variations.
[attach HTML files]
/wp-pattern
Convert this hero section into a WP block pattern:
<section class="hero">
<h1>Welcome</h1>
<p>Subheading</p>
<a href="#" class="btn">CTA</a>
</section>
/wp-block
Scaffold a "Testimonial Slider" custom block with server-side rendering,
an edit.js with InspectorControls, and per-block CSS.
/wp-classic-to-fse
Convert my existing classic PHP theme to a full FSE block theme.
The theme uses a custom page builder and ACF fields.
wp-block-theme-converter/ # Plugin root (also a marketplace)
βββ .claude-plugin/
β βββ plugin.json # Plugin manifest
β βββ marketplace.json # Marketplace entry (installable)
β
βββ SKILL.md # The bundled skill (auto-triggers)
βββ README.md # This file
β
βββ commands/ # 11 slash command definitions
β βββ convert-to-wp-theme.md
β βββ scaffold-wp-theme.md
β βββ wp-block.md
β βββ wp-classic-to-fse.md
β βββ wp-debug.md
β βββ wp-migrate.md
β βββ wp-pattern.md
β βββ wp-plugin-theme.md
β βββ wp-template.md
β βββ wp-theme-json.md
β βββ wp-variation.md
β
βββ agents/ # Subagents
β βββ wp-theme-reviewer.md # Audits a generated block theme
β
βββ hooks/
β βββ hooks.json # PostToolUse theme.json validation
β
βββ references/ # Detailed reference docs
β βββ defaults.md # Default values for placeholders
β βββ methodology.md # 10-phase conversion methodology
β βββ modern-blocks.md # WordPress 6.5+ features (Interactivity API, Block Bindings, etc.)
β βββ file-structure.md # Required output directory layout
β βββ block-conversion-map.md # HTML β WP block lookup table
β βββ theme-json-schema.md # theme.json v3 reference
β βββ quality-rules.md # Non-negotiable do's and don'ts
β βββ multi-turn-strategy.md # Splitting large projects
β βββ woocommerce.md # WC-specific theming
β βββ validation-checklist.md # Post-generation checks
β βββ custom-blocks.md # Custom block development (block.json, edit.js, render.php)
β βββ content-migration.md # Classic-to-block, WP-CLI, ACF, CPTs, page builder migration
β βββ asset-optimization.md # Fonts, images, WebP, lazy load, Core Web Vitals
β βββ plugin-compatibility.md # Plugin detection, CSS conflicts, caching compat
β βββ interactivity-api-advanced.md # Shared store, server hydration, async, focus traps
β βββ accessibility.md # WCAG 2.1 AA, ARIA, skip links, screen reader testing
β βββ ci-cd.md # GitHub Actions, PHPCS, ESLint, Stylelint, deployment
β βββ backward-compatibility.md # Feature availability by WP version, conditional loading
β βββ e2e-testing.md # Playwright, visual regression, a11y scans, CI integration
β βββ i18n.md # i18n functions, plural forms, JS translations, RTL
β
βββ templates/ # Reusable boilerplate
β βββ style.css.tpl
β βββ theme.json.tpl
β βββ functions.php.tpl
β βββ pattern-header.php.tpl
β βββ template-skeleton.html.tpl
β βββ package.json.tpl
β βββ vite.config.js.tpl
β βββ github-actions-ci.yml.tpl
β βββ patterns/
β βββ hero.php.tpl
β βββ features-grid.php.tpl
β βββ testimonials.php.tpl
β βββ pricing-table.php.tpl
β βββ cta-section.php.tpl
β βββ faq-accordion.php.tpl
β βββ team-grid.php.tpl
β βββ stats-row.php.tpl
β
βββ examples/ # Worked examples
β βββ northaven-ecommerce.md # Multi-aesthetic WooCommerce theme
β βββ landing-page-simple.md # Simple SaaS landing page
β
βββ scripts/ # Validation + packaging tooling
βββ doctor.mjs # Runs all four theme-quality checks
βββ validate-skill.mjs # Skill integrity linter
βββ validate-plugin.mjs # Plugin packaging linter
βββ hooks/
βββ theme-json-postwrite.mjs # theme.json validation hook runner
The skill uses Claude's three-level loading:
This means Claude doesn't load the WooCommerce reference for a simple landing page conversion β it only loads what's relevant to the task.
Every conversion follows the same proven phases:
The skill automatically detects large projects and splits delivery across 3 turns:
Triggered when source has 10+ HTML pages OR WooCommerce OR multiple style variations.
Every output is governed by four non-negotiable principles:
Every theme generated follows these non-negotiable rules:
<style> or <script> tagsstyle="" attributes (use block attributes)tagNamewp_enqueue_block_style()Every theme generated by this skill can be verified using the bundled scripts:
# Run all checks at once β exits 0 only if everything passes
node scripts/doctor.mjs path/to/your-theme
# Or run individual checks
node scripts/validate-theme-json.mjs path/to/your-theme # theme.json schema + token checks
node scripts/lint-block-markup.mjs path/to/your-theme # inline styles/scripts, block delimiter integrity
node scripts/check-patterns.mjs path/to/your-theme # pattern headers, slugs, duplicates
node scripts/check-i18n.mjs path/to/your-theme # i18n coverage + anti-patterns
The skill's Step 5 (Verify) instructs Claude to run doctor.mjs and loop until it passes before declaring a theme complete. No npm install required β pure Node stdlib.
If something looks wrong after generation, use /wp-debug:
/wp-debug
My pattern doesn't appear in the inserter and I can't figure out why.
Claude will run through a decision tree, identify the root cause (missing category registration, theme.json conflict, etc.), and offer to apply the fix. See references/troubleshooting.md for the full symptom β cause β fix reference.
Moving off Elementor, Divi, WPBakery, or Beaver Builder? Use /wp-migrate β it now includes full builder-detection and per-builder playbooks. See references/page-builder-migration.md for element-to-block mapping tables, WP-CLI extraction commands, and a worked Elementor example in examples/elementor-to-block-theme.md.
The plugin ships with:
evals/ β trigger/no-trigger/ambiguous test cases per command (see evals/README.md)scripts/validate-skill.mjs β structural linter for the skill itself (checks command files exist, no dead links, frontmatter valid)scripts/validate-plugin.mjs β packaging linter for the plugin manifest, marketplace entry, and componentsscripts/build-skill.sh β produces the distributable .skill zip artifactCHANGELOG.md β full version history.github/workflows/skill-ci.yml β CI: validate-skill, validate-plugin, lint-scripts, doctor against golden theme, markdown lint/convert-to-wp-theme) β provides maximum context window for large outputs/wp-classic-to-fse which handles ACF, CPTs, and page builder contenthttps://schemas.wp.org/trunk/theme.json before deploying/skills/scaffold-wp-theme first, then /wp-pattern per sectionversion: 3 (not 1 or 2)fontFace.src paths actually existhttps://schemas.wp.org/trunk/theme.json/wp-migrate with the ACF field group export (JSON) attachedreferences/content-migration.md documents all supported field types and Block Bindings strategies/wp-migrate β it detects your page builder and applies the correct strategyreferences/page-builder-migration.md for per-builder elementβblock mapping tablesexamples/elementor-to-block-theme.md for a complete worked migration example/wp-debug β describe your symptom and Claude will identify the root causereferences/troubleshooting.md for the full 18-symptom reference with WP-CLI cheat sheetblock.json is in the correct directory and registered via register_block_type()edit.jsnpm run build if using a build step β the editor loads the compiled assetsTo improve this skill:
MIT License β free to use, modify, and distribute.
.claude-plugin/
marketplace.json
plugin.json
.github/
PULL_REQUEST_TEMPLATE.md
workflows/
skill-ci.yml
.gitignore
.markdownlint-cli2.jsonc
agents/
wp-theme-reviewer.md
CHANGELOG.md
commands/
convert-to-wp-theme.md
scaffold-wp-theme.md
wp-block.md
wp-classic-to-fse.md
wp-debug.md
wp-migrate.md
wp-pattern.md
wp-plugin-theme.md
wp-template.md
wp-theme-json.md
wp-variation.md
CONTRIBUTING.md
evals/
convert-to-wp-theme/
ambiguous.md
should-not-trigger.md
should-trigger.md
README.md
examples/
elementor-to-block-theme.md
landing-page-simple.md
northaven-ecommerce.md
hooks/
hooks.json
LICENSE
PRODUCTION_READINESS_PLAN.md
README.md
references/
accessibility.md
asset-optimization.md
backward-compatibility.md
block-conversion-map.md
ci-cd.md
content-migration.md
custom-blocks.md
defaults.md
e2e-testing.md
file-structure.md
i18n.md
interactivity-api-advanced.md
methodology.md
modern-blocks.md
multi-turn-strategy.md
page-builder-migration.md
plugin-compatibility.md
quality-rules.md
theme-json-schema.md
troubleshooting.md
validation-checklist.md
woocommerce.md
scripts/
build-skill.sh
check-i18n.mjs
check-patterns.mjs
doctor.mjs
hooks/
theme-json-postwrite.mjs
lint-block-markup.mjs
README.md
validate-plugin.mjs
validate-skill.mjs
validate-theme-json.mjs
SKILL.md
templates/
functions.php.tpl
github-actions-ci.yml.tpl
package.json.tpl
pattern-header.php.tpl
patterns/
cta-section.php.tpl
faq-accordion.php.tpl
features-grid.php.tpl
hero.php.tpl
pricing-table.php.tpl
stats-row.php.tpl
team-grid.php.tpl
testimonials.php.tpl
woocommerce-product-card.php.tpl
style.css.tpl
template-skeleton.html.tpl
theme.json.tpl
vite.config.js.tplΒ© 2026 Flowy Β· Free and open source
Built for Claude Code Β· Not affiliated with Anthropic