skills/design-to-wp-block/SKILL.md
Create WordPress block patterns from Figma designs or screenshots using the design-specialist agent. Auto-activates when user provides a Figma URL or design mockup and asks to create a WordPress block pattern, component, or section. Invoke when user says "create a WordPress block from this design", "convert this Figma to a block pattern", or provides a design reference with WordPress context.
npx skillsauth add kanopi/cms-cultivator design-to-wp-blockInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Create production-ready WordPress block patterns from Figma designs or screenshots using the design-specialist agent.
Arguments: [design-source] [pattern-name] [theme-namespace]
When Task() is unavailable but design data can be accessed:
wp-content/themes/{theme}/patterns/{pattern-slug}.php with proper WordPress pattern headersesc_html_e(), esc_attr_e())wp-content/themes/{theme}/assets/styles/scss/patterns/_{pattern-slug}.scss
@prefers-reduced-motion support_{pattern-slug}-editor.scss for block editor stylingNote for Tier 1 with Figma: Figma MCP tools are only available in the main Claude Code conversation, not subagents. Fetch design context in the main conversation before activating this skill.
When running in Claude Code with Task() and Figma MCP available:
Step 1: Fetch Design Data in Main Conversation
If design source is a Figma URL:
ToolSearch(query: "select:mcp__plugin_figma_figma__get_design_context")
mcp__plugin_figma_figma__get_design_context(fileKey, nodeId, clientLanguages: "html,css,php", clientFrameworks: "wordpress")
mcp__plugin_figma_figma__get_screenshot(fileKey, nodeId)
Extract: colors (hex), typography, spacing, layout structure, component hierarchy.
Step 2: Spawn design-specialist for code generation
Agent(subagent_type="cms-cultivator:design-specialist:design-specialist",
prompt="Create a WordPress block pattern from the provided design specifications.
## Design Specifications (Pre-Fetched)
{extracted colors, typography, spacing, layout structure}
## Pattern Details
- Pattern Name: {pattern-name}
- Theme: {theme-namespace or auto-detect}
## Requirements
- Native WordPress blocks only (Group, Cover, Heading, Paragraph, Buttons, Image, Columns)
- Pattern file: wp-content/themes/{theme}/patterns/{pattern-slug}.php
- Mobile-first, WCAG AA, 44px touch targets
## Output Required
Return the structured report including:
- Generated file paths
- SCSS paths section (component name, front-end path, editor path)
- Design specifications section (colors, typography, spacing)
- Test page URL and screenshots directory")
Step 3: Spawn responsive-styling-specialist using the SCSS paths and design specs from Step 2 output:
Agent(subagent_type="cms-cultivator:responsive-styling-specialist:responsive-styling-specialist",
prompt="Generate mobile-first responsive SCSS for the {pattern-name} WordPress block pattern.
Component: {component from design-specialist output}
File paths:
- Front-end: {front-end SCSS path from design-specialist output}
- Editor: {editor SCSS path from design-specialist output}
Design specifications:
{colors, typography, spacing from design-specialist output}
Requirements:
- Mobile-first (base → 768px → 1024px)
- WCAG AA color contrast (4.5:1 normal text, 3:1 large text)
- Touch-friendly targets (44px minimum)
- Proper focus indicators (2px outline)
- Reduced motion support
- Generate TWO files: front-end SCSS and editor SCSS (prefixed with .editor-styles-wrapper)")
Step 4: Spawn browser-validator-specialist using the test page URL from Step 2 output:
Agent(subagent_type="cms-cultivator:browser-validator-specialist:browser-validator-specialist",
prompt="Validate the WordPress block pattern implementation.
Test URL: {test page URL from design-specialist output}
Design reference: {original design source}
Validation requirements:
- Test responsive breakpoints: 320px, 768px, 1024px+
- Capture screenshots at each breakpoint
- Check WCAG AA accessibility (contrast, keyboard nav, focus indicators, semantic HTML)
- Validate interactions (hover, click, focus states)
- Check JavaScript console for errors
- Compare with original design reference
- Generate detailed technical report with file paths and remediation steps
Save screenshots to: {screenshots dir from design-specialist output}")
Step 5: Report — present the block pattern file paths, CSS paths, and browser validation results to the user.
Path: wp-content/themes/{theme}/patterns/{pattern-slug}.php
<?php
/**
* Title: Hero CTA
* Slug: my-theme/hero-cta
* Categories: features, call-to-action
* Description: Full-width hero section with heading, text, and CTA
*/
?>
<!-- wp:group {"className":"hero-cta-pattern"} -->
<div class="wp-block-group hero-cta-pattern">
<!-- wp:heading {"level":1} -->
<h1><?php esc_html_e( 'Your Heading Here', 'my-theme' ); ?></h1>
<!-- /wp:heading -->
...
</div>
<!-- /wp:group -->
Path: wp-content/themes/{theme}/assets/styles/scss/patterns/_{pattern-slug}.scss
Path: wp-content/themes/{theme}/assets/styles/scss/patterns/_{pattern-slug}-editor.scss
.editor-styles-wrapperWordPress 6.0+: Patterns in /patterns/ directory auto-discovered — no registration needed.
Auto-enqueue editor styles (add once to functions.php):
function my_theme_setup() {
add_theme_support( 'editor-styles' );
$styles = glob( get_template_directory() . '/assets/styles/css/patterns/*-editor.css' );
foreach ( $styles as $path ) {
add_editor_style( str_replace( get_template_directory() . '/', '', $path ) );
}
}
add_action( 'after_setup_theme', 'my_theme_setup' );
ddev theme-build # Compile SCSS
ddev wp cache flush # Clear cache
ddev pa11y [test-url] # Accessibility test
tools
Strategist-focused site audit for discovery and pre-discovery. Given a site URL and optional qualitative research data, navigates the site via CoWork, audits against all 21 UX Laws from lawsofux.com, reviews content hierarchy, synthesises qualitative data, runs Lighthouse, and produces two deliverables — a Project Knowledge Summary (Markdown for Claude Desktop Projects) and a polished, iterable HTML Artifact for client sharing. Use when a strategist, UX lead, or PM asks for a discovery audit, UX laws audit, content hierarchy review, pre-discovery site review, "audit this site for strategy", "strategist audit", "UX audit", or pastes a site URL with discovery context. Not for developer audits — use accessibility-audit, performance-audit, or live-site-audit for those.
development
Provide story point estimation guidance with hour calculations for software development tasks. Uses Fibonacci sequence (1, 2, 3, 5, 8, 13, 21, 34+) and converts story points to hours. Includes platform-specific adjustments and velocity calculations.
tools
Perform a full QA review of a Teamwork task by reading the task and all its comments for context, extracting the multi-dev URL, generating dynamic validation steps tailored to the task type, and using CoWork browser automation to execute those steps on the multi-dev environment. Produces a structured validation report with pass/fail per step, screenshots, internal notes, and a client-facing summary — all shown in chat. Use this skill whenever the user asks to QA, test, validate, or review a Teamwork task or multi-dev environment — even if they just say "can you QA this?" or paste a Teamwork link. Also triggers for phrases like "run QA on", "check the multi-dev", "validate this task", "test the dev link", or "review the ticket". Works across Drupal/CMS updates, WordPress/plugin updates, bug fixes, new feature development, and general web development tasks.
tools
Generate a client-facing project heartbeat / status update message for a Kanopi project, ready to be posted as a Teamwork message. Use this skill whenever the user asks to write, draft, generate, or send a project update, heartbeat, status update, or progress report to a client. Also triggers when the user says things like "time for a project update", "draft the heartbeat", "write up the update for [project]", or "it's been two weeks, let's send an update". Always use this skill — even if the user doesn't say "heartbeat" — whenever the intent is to summarise recent project activity for a client audience.