skills/design-analyzer/SKILL.md
Automatically extract technical requirements from design references when user mentions Figma, uploads images, or says "implement this design". Analyzes colors, typography, spacing, layout, and maps to WordPress blocks or Drupal paragraph fields. Provides detailed specifications for developers including exact values, responsive behavior, and accessibility requirements.
npx skillsauth add kanopi/cms-cultivator design-analyzerInstall 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.
Fetch and extract technical requirements from design references (Figma URLs, screenshots, mockups) for CMS component implementation.
CRITICAL FIRST STEP: This skill MUST actively fetch design data using available tools (Figma MCP, Read tool) before performing any analysis. Never guess or infer design specifications - always fetch the actual design first.
Accurate design-to-code translation requires systematic extraction of technical specifications.
This skill automatically activates when:
Before analyzing a design, determine:
WordPress:
Drupal:
Layout patterns:
Interactive elements:
Always extract:
Check for accessibility:
Analyze breakpoints:
Common responsive patterns:
User provides design reference
↓
Identify source type (Figma/image/wireframe)
↓
Determine target platform (WordPress/Drupal)
↓
Extract visual specs (colors/typography/spacing)
↓
Check accessibility (contrast/touch targets)
↓
Map to CMS components (blocks/paragraphs)
↓
Document responsive behavior
↓
Output structured technical spec
CRITICAL: This skill actively FETCHES design data before analysis:
Figma URLs:
Screenshots:
Mockups: Identify design system elements, spacing, typography
Wireframes: Extract structure and content relationships
Before any analysis, you MUST fetch the actual design data:
STEP 1: Load Figma MCP Tools
Use ToolSearch to load Figma tools FIRST:
ToolSearch(query: "select:mcp__plugin_figma_figma__get_design_context")
ToolSearch(query: "select:mcp__plugin_figma_figma__get_screenshot")
STEP 2: Parse Figma URL
URL format: https://figma.com/design/{fileKey}?node-id={nodeId}
Example: https://figma.com/design/ABC123XYZ?node-id=16981-81661
Extract:
- fileKey: "ABC123XYZ"
- nodeId: "16981:81661" (IMPORTANT: Replace hyphen with colon!)
STEP 3: Fetch Design Context
Call Figma MCP to get design structure and code:
mcp__plugin_figma_figma__get_design_context(
fileKey: {extracted fileKey},
nodeId: {extracted nodeId with colon},
clientLanguages: "html,css,scss",
clientFrameworks: "wordpress" | "drupal"
)
Returns:
- React/Tailwind code (will need conversion to native WordPress/Drupal)
- Exact CSS values (colors, spacing, typography from Figma)
- Image asset URLs (valid for 7 days)
- Design token information
STEP 4: Get Visual Screenshot
Call Figma MCP to get visual reference:
mcp__plugin_figma_figma__get_screenshot(
fileKey: {same fileKey},
nodeId: {same nodeId with colon},
clientLanguages: "html,css,scss",
clientFrameworks: "wordpress" | "drupal"
)
Returns: Visual image for analysis
STEP 5: Extract Design Specifications
From the Figma data, extract:
STEP 6: Download Image Assets Locally
# Create directory for pattern/paragraph assets
mkdir -p {theme-path}/assets/images/patterns
# Download each image asset
cd {theme-path}/assets/images/patterns
curl -o {descriptive-filename}.png "{figma-asset-url}"
curl -o {descriptive-filename-2}.jpg "{figma-asset-url-2}"
Update code references to use local paths:
OLD: src="https://www.figma.com/api/mcp/asset/..."
NEW: src="<?php echo esc_url( get_template_directory_uri() . '/assets/images/patterns/{filename}.png' ); ?>"
STEP 1: Read Image File
Use Read tool to load the image:
Read(file_path: {screenshot-path})
STEP 2: Visual Analysis
Analyze the image visually:
DO NOT PROCEED until you have:
Ask clarifying questions:
What type of component is this?
- WordPress block pattern?
- Drupal paragraph type?
- Custom theme component?
What's the primary purpose?
- Hero section?
- Content display?
- Interactive element?
- Navigation?
Examine and document:
Layout Structure:
- Sections and their relationships
- Container widths (full-width, contained, etc.)
- Visual hierarchy (what's most prominent)
Content Elements:
- Headings (identify h1, h2, h3 levels)
- Body text and captions
- Images and media placement
- Buttons and CTAs
- Icons and decorative elements
Map to Core Blocks:
- Group: Container/wrapper
- Cover: Full-width sections with background images
- Heading: H1-H6 headings
- Paragraph: Body text
- Buttons/Button: CTAs
- Image: Individual images
- Gallery: Image collections
- Columns/Column: Multi-column layouts
- Spacer: Vertical spacing
- Separator: Dividers
Map to Paragraph Fields:
- Text (plain): Short text fields
- Text (formatted, long): Body/description fields
- Link: CTA buttons, navigation
- Entity reference (Media): Images, videos
- Boolean: Toggle features
- List (text): Select options
- Entity reference (Taxonomy): Categories/tags
Determine how layout changes:
Mobile (320px-767px):
- Single column layouts
- Stacked elements
- Larger touch targets
- Simplified navigation
Tablet (768px-1023px):
- 2-column layouts where appropriate
- Adjusted typography
- Moderate spacing
Desktop (1024px+):
- Multi-column layouts
- Full typography scale
- Maximum spacing
- Hover states prominent
Extract specific values:
Colors:
primary: #HEXCODE
secondary: #HEXCODE
text: #HEXCODE
background: #HEXCODE
Typography:
heading-1: [size]px / [line-height] / [weight]
heading-2: [size]px / [line-height] / [weight]
body: [size]px / [line-height] / [weight]
Spacing:
section-padding: [value]
element-margin: [value]
gap: [value]
Identify needs:
Semantic Structure:
- Proper heading hierarchy
- Landmark regions
- Form labels
- Button text
ARIA Needs:
- Labels for icon-only buttons
- Descriptions for complex widgets
- Live regions for dynamic content
- Hidden content for screen readers
Contrast:
- Check all text against backgrounds
- Verify minimum 4.5:1 for body text
- Verify minimum 3:1 for large text/UI
Document behavior:
For each interactive element:
- What triggers it (click, hover, focus)
- What changes (visual, content, navigation)
- Animation/transition details
- Keyboard interaction requirements
- Accessible alternatives
When analysis is complete, provide structured output:
component_analysis:
type: "block_pattern" | "paragraph_type" | "theme_component"
name: "descriptive-name"
cms: "wordpress" | "drupal"
structure:
sections:
- name: "hero"
elements:
- type: "heading"
level: "h1"
content: "Main Heading Text"
- type: "paragraph"
content: "Supporting text"
- type: "button"
style: "primary"
text: "Call to Action"
wordpress_blocks:
- "core/cover"
- "core/heading"
- "core/paragraph"
- "core/buttons"
drupal_fields:
- name: "field_heading"
type: "string"
cardinality: 1
- name: "field_body"
type: "text_long"
cardinality: 1
- name: "field_cta"
type: "link"
cardinality: 1
styling:
colors:
primary: "#0073aa"
secondary: "#23282d"
text: "#1e1e1e"
background: "#ffffff"
typography:
heading_1:
mobile: "2rem / 1.2 / 700"
tablet: "2.5rem / 1.2 / 700"
desktop: "3rem / 1.2 / 700"
body:
mobile: "1rem / 1.6 / 400"
tablet: "1.125rem / 1.6 / 400"
desktop: "1.25rem / 1.6 / 400"
spacing:
section_padding:
mobile: "2rem"
tablet: "3rem"
desktop: "4rem"
element_gap: "1.5rem"
layout:
max_width: "1200px"
columns:
mobile: 1
tablet: 2
desktop: 3
responsive:
breakpoints:
mobile: "320px"
tablet: "768px"
desktop: "1024px"
behavior:
- "Stack columns on mobile"
- "Reduce heading sizes"
- "Adjust padding/margins"
interactions:
- element: "CTA button"
trigger: "hover"
effect: "background color change"
css: "transition: background-color 0.3s ease"
- element: "Image"
trigger: "click"
effect: "Open lightbox"
requires: "JavaScript"
accessibility:
requirements:
- "Heading hierarchy: h1 → h2"
- "Alt text for hero image"
- "Button has descriptive text"
- "Color contrast: all text 4.5:1 or better"
- "Focus indicators on interactive elements"
concerns:
- "Icon-only button needs aria-label"
- "Decorative image should have empty alt"
implementation_notes:
- "Use CSS Grid for desktop 3-column layout"
- "Background image should be lazy-loaded"
- "Consider reduced motion preferences"
- "Test with keyboard navigation"
This skill provides critical context for:
/design-to-block CommandProvides:
/design-to-paragraph CommandProvides:
/design-validate CommandProvides:
User provides Figma URL:
"Create a WordPress block pattern from this Figma design: https://figma.com/design/ABC123?node-id=100-200"
Skill Response:
I'll fetch and analyze this Figma design for WordPress implementation.
[Step 1: Load Figma tools with ToolSearch]
[Step 2: Parse URL - fileKey: ABC123, nodeId: 100:200]
[Step 3: Call mcp__plugin_figma_figma__get_design_context]
[Step 4: Call mcp__plugin_figma_figma__get_screenshot]
[Step 5: Extract design specifications from Figma data]
[Step 6: Download image assets locally]
Design Analysis Complete:
- Type: Hero section with overlaid text
- Fetched from Figma: node-id=100:200
- WordPress Blocks Needed: Cover, Heading, Paragraph, Buttons
- Layout: Full-width (1200px max-width), centered content
- Colors (from Figma):
- Background overlay: #000000 (40% opacity)
- Text: #FFFFFF
- Button: #0073AA
- Button hover: #005A87
- Typography (from Figma):
- Heading: Montserrat Bold, 48px/1.2, desktop → 32px mobile
- Body: Inter Regular, 18px/1.6
- Spacing (from Figma):
- Section padding: 120px vertical, 40px horizontal
- Element gap: 24px
- Images (downloaded):
- Hero background: /assets/images/patterns/hero-bg.jpg
- Responsive: Text scales down, padding reduces on mobile
- Accessibility:
- Text contrast 7:1 (exceeds WCAG AA)
- Need alt text for background image
Ready to generate the block pattern with exact Figma specifications.
User uploads image and says:
"Create a WordPress block pattern from this hero design"
Skill Response:
I'll analyze this design for WordPress implementation.
[Step 1: Read image file]
[Step 2: Perform visual analysis]
Design Analysis Complete:
- Type: Hero section with overlaid text
- WordPress Blocks Needed: Cover, Heading, Paragraph, Buttons
- Layout: Full-width background image with centered content
- Colors (estimated from screenshot):
- Dark overlay: ~#000000 (40% opacity)
- Text: white
- Typography (estimated):
- Heading: ~3rem on desktop, ~2rem mobile
- Body: ~1.125rem
- Responsive: Text size reduces, padding adjusts
- Accessibility: Need alt text for background image, ensure text contrast
Note: Values estimated from screenshot. For exact specifications, provide Figma URL.
Ready to generate the block pattern. Shall I proceed?
Learn to quickly identify these patterns:
For each pattern, know the typical WordPress blocks or Drupal fields needed.
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.