What this prompt does
This prompt scaffolds a complete WordPress [theme_type] theme named [theme_name] for a [site_type] site. It generates a theme.json with a [color_count]-color palette plus typography and spacing tokens, block patterns for your [patterns], template parts (header, footer, sidebar), custom templates from [templates], custom post types from [post_types] with meta boxes, taxonomies from [taxonomies], a functions.php with proper enqueuing, Customizer options for [customizer_options], responsive design via [css_approach], and performance touches like lazy loading and critical CSS.
The structure works because modern WordPress theming starts from theme.json and full-site editing, not scattered PHP templates. Defining the token palette first means every pattern and template inherits consistent colors, type, and spacing. The [theme_type] variable decides whether you get a block (FSE) theme or a classic one, while [patterns] and [templates] determine how much reusable layout the editor gets out of the box.
When to use it
- You're starting a custom theme and want a
theme.jsontoken foundation, not a starter clone - You need block patterns for
[patterns]like hero, pricing, and FAQ ready for editors - You want custom post types from
[post_types]and taxonomies wired up from the start - You're building a
[site_type]site and want full-site-editing template parts in place - You need Customizer options for
[customizer_options]so clients can self-serve - You want performance baked in — lazy loading, asset optimization, critical CSS
Example output
Expect a theme skeleton: a theme.json with your [color_count] palette and tokens, block pattern files, header/footer/sidebar template parts, the custom templates, registered post types with meta boxes, taxonomies, a functions.php with clean enqueuing and theme supports, Customizer settings, a style.css header, and a screenshot.png placeholder. It targets theme unit test compatibility.
Pro tips
- Set
[theme_type]deliberately — "block (FSE)" gives full-site editing, while a classic theme suits sites that aren't ready for it - Define
[color_count]to match a real palette; an inflated number produces unused tokens that clutter the editor - Use
[css_approach]consistently withtheme.jsontokens so colors and spacing stay single-sourced - Pick
[patterns]and[templates]your editors will actually reuse rather than every possible layout - Treat the generated
functions.phpenqueuing as a baseline and confirm dependencies and versions before shipping - Validate against the theme unit test data — generated themes often miss edge cases like long titles and nested comments