Designer-led WordPress build workflow
How the system works: components, responsibilities, validation, and recovery.
What the system does
A WordPress build workflow where the designer runs the system and signs off at each gate. AI agents do the implementation, validation, and deployment work. A developer is involved only for issues that fall outside documented patterns.
The remaining sections explain the responsibilities split, the build loop the agent runs, the underlying architecture, the four review agent agents that participate, what each agent actually checks and uses, what the starter project includes, how failures are handled, and current implementation status.
Designer and agent responsibilities
Runs the system. Signs off at every gate.
- Triggers builds
- Reviews work and adjusts in plain language
- Signs off at each gate
- Decides what ships
Does the work.
- Reads the Figma
- Writes theme code and block patterns
- Runs figma, security, accessibility, and responsive checks
- Fixes its own mistakes when checks fail
- Deploys to staging and production
- Handles git, SSH, and server admin
What happens when the designer requests a build
When the designer triggers a build, the system runs a full cycle: the primary agent builds, dispatches the four review agents to check the work, fixes its own mistakes when checks fail, and presents the validated result. The designer signs off or sends it back. The same agents re-run as CI gates before deploy.
System layers
Four layers, ordered by designer proximity. The designer operates the system from the top layer only. Code moves from local to production through staging.
Per-layer detail:
Designer surface
Three windows on the designer's machine: Claude Code (or Studio Code) running in a terminal, a web browser pointed at the local site URL, and Figma open in a desktop app or browser tab. Claude Code is the only interface the designer types into; the browser and Figma are for viewing.
Agent layer
Claude Code with four MCP servers configured per project: Figma MCP for design source, Playwright MCP for visual validation, the WordPress MCP Adapter for site operations, and Filesystem MCP for project files. Five slash commands, four skills, and four review agent sub-agents are registered in the project's .claude/ directory.
Local site (WordPress Studio)
WebAssembly-compiled PHP with SQLite — no Docker, no MySQL service, no Apache config. The starter project's wp-content mounts directly into Studio's site folder; Claude's file edits show up immediately. The WordPress MCP Adapter plugin runs inside this local site.
WPEngine production
Two environments: staging for pre-production review, production for the live site. Deploys via SFTP (theme files, custom plugins, must-use plugins). Promotion from staging to production uses WPEngine's environment-copy API. Cache flushed via WP-CLI over WPEngine's SSH gateway.
Primary agent and four review agents
The primary agent handles the build. Four review agents review every change at workflow boundaries. The same agents also run as CI gates before deploys.
What the build agent does
Reads Figma frames via Figma MCP. Writes theme code and block patterns via Filesystem MCP. Creates pages and configures plugins via the WordPress MCP Adapter. Takes screenshots via Playwright MCP. Dispatches agents at workflow boundaries. Integrates findings — auto-fixes safe issues, surfaces judgment calls for the designer.
Where the agents run
Each agent runs inline during build (dispatched by the primary, fast feedback to the designer). The same agent definition also runs in CI against the pre-deploy build (last-mile gate). Both contexts read the same agent files in .claude/agents/. Critical findings in either context block the deploy.
What each agent checks and uses
Each agent runs after the primary builds. Some checks auto-fix; others flag for the primary to address. All four also run as CI gates against the pre-deploy build.
Figma review
Checks visual fidelity between the Figma source and the rendered local site.
Tools
- Figma MCP — source frames and tokens
- Playwright MCP — site screenshots at viewports
- Claude vision — image-to-image diff judgment
Checks
- Color and typography match
- Layout structure and component placement
- Spacing within tolerance
- Asset use matches the design system
Auto-fix: some style discrepancies. Layout-level differences flagged.
Security
Reviews any custom code touched during the build against WordPress security patterns.
Tools
- PHPCS with WordPress Coding Standards security ruleset
- PHPStan with phpstan-wordpress
- Claude prompt-based audits against an explicit checklist
Checks
- Hardcoded credentials or secrets
- SQL injection vectors; missing $wpdb->prepare()
- Output escaping (esc_html, esc_attr, esc_url)
- Missing form nonces and nonce verification
- Capability checks on admin actions
- Dangerous functions (eval, exec, etc.)
Auto-fix: none. Findings flagged for the primary.
Accessibility
WCAG 2.2 AA conformance against rendered pages plus judgment-based review.
Tools
- @axe-core/playwright — automated rule engine
- Playwright MCP — navigation and rendering
- Claude judgment — interpretation and structural review
Checks
- Alt text on informational images
- Color contrast — 4.5:1 normal, 3:1 large
- Visible focus indicators on interactive elements
- Keyboard navigation reachability
- Form labels associated with inputs
- Heading hierarchy and ARIA correctness
Auto-fix: alt text, contrast adjustments, focus styles, form labels. Structural decisions flagged.
Responsive
Validates layout behavior across mobile, tablet, and desktop viewports.
Tools
- Playwright MCP — viewport screenshots at 375, 768, 1440
- Figma MCP — comparison to responsive frames when present
- Claude vision — layout structure comparison
Checks
- No horizontal scroll at any viewport
- Text not overflowing containers
- Images scaled appropriately for viewport
- Touch targets ≥ 44x44px on mobile
- Navigation transforms correctly (hamburger, etc.)
Auto-fix: image srcset, basic responsive CSS. Layout-level breakage flagged.
The protocols and tools the agents talk through
Six interfaces connect the agent layer to everything else. The agent calls them; the designer doesn't see them. Four are MCP (Model Context Protocol) servers; two are traditional tools wrapped in scripts. Together they let the agent read designs, write code, drive the local browser, edit files, deploy, and version-control.
Figma MCP
The agent's source of truth for what to build. Reads the Figma file structure — frames, components, styles, design tokens — and returns it in a form the agent can reason about.
What it does
- Fetches file metadata and frame trees
- Retrieves specific frames by node ID
- Extracts design tokens — colors, typography, spacing, shadows
- Returns component structures with computed styles
- Downloads image and asset exports
Used by
- Primary build agent — initial reads of frames
- Figma review agent — comparison source for visual diffs
- Responsive agent — checks against Figma's responsive frames
Auth: Figma API token in the project .env; never exposed to the designer.
WordPress MCP Adapter
Structured WordPress operations exposed as MCP tools. Runs as a plugin inside the local WP Studio site. Replaces the older REST API + WP-CLI ad-hoc approach with a unified, permission-aware protocol.
What it does
- Creates and updates posts, pages, custom post types
- Inserts and edits Gutenberg blocks within content
- Manages navigation menus and menu items
- Sets WordPress options and theme settings
- Lists, activates, deactivates, and configures plugins
- Manages users, roles, and capabilities
- Queries content with structured filters
- Runs WP-CLI commands inside the site context
Used by
- Primary build agent — most page-building operations
- Content import workflow — bulk post creation
- Pull-content workflow — DB sync from staging
Auth: Local-only access; the plugin auto-authorizes the designer's machine.
Playwright MCP
Browser automation. Navigates URLs, takes screenshots, evaluates JavaScript in page context. Used wherever the agent needs to see what the rendered site actually looks like.
What it does
- Navigates to local or remote URLs
- Takes screenshots at specified viewports — 375, 768, 1440
- Evaluates JavaScript inside the loaded page
- Inspects DOM elements and computed styles
- Runs axe-core in the page context for a11y checks
- Performs interactions — click, type, scroll — for end-to-end testing
Used by
- Figma review agent — captures rendered output for visual diff
- Responsive agent — viewport screenshots
- Accessibility agent — runs axe-core, navigates, inspects
- Primary build agent — final-state verification screenshots
Auth: none — runs locally against local URLs.
Filesystem MCP
Direct read and write access to project files. The agent's primary interface for editing theme code, design tokens, block patterns, and any other file-based config.
What it does
- Reads files — theme PHP, CSS, JS, JSON, MD, any text
- Writes files — creates new, updates existing in place
- Lists directory contents recursively
- Checks file existence and metadata
- Moves and renames files
Used by
- Primary build agent — edits
style.css,theme.json,functions.php, templates, block patterns - All agents — read project configuration and conventions
- CSS iteration workflow — write-test-screenshot loop
Auth: scoped to the project directory; cannot reach files outside the project root.
WPEngine deploy interfaces
Three traditional tools wrapped in scripts handle the connection to WPEngine. Not MCP — these existed before MCP and stay because they're well-understood and fast.
SFTP
- Uploads theme and plugin files to staging and production
- Excludes
.env,wp-content/uploads/, and other non-deploy paths - Wrapped in
scripts/wpe-sftp.shfor repeatable use
SSH (WPEngine gateway)
- Runs WP-CLI commands remotely against staging or production
- Flushes cache, updates plugins, queries DB, manages cron
- Wrapped in
scripts/wpe-wp.sh
WPEngine REST API
- Environment management — copy staging → production
- Triggers on-demand backups before risky operations
- Invalidates the global edge cache
- Wrapped in
scripts/wpe-api.sh
Used by the /deploy-staging command, the /promote-to-production command, and the /pull-content workflow.
Git
Version control. Both the designer and the agent operate on the same repository, but the designer never types git commands — the agent commits automatically at workflow boundaries.
What it does
- Tracks changes to project files
- Auto-commits at workflow boundaries — after successful builds, before deploys, after promotions
- Auto-pushes to the Newfangled Git host on commit
- Tags deploys (e.g.,
staging-2026-05-22-1430) so rollbacks have anchors - Triggers CI workflows on push
Used by
- Primary build agent — auto-commits after successful build cycles
- Deploy slash commands — tag releases
- CI pipeline — pulls latest, runs validation, gates deploys
Auth: HTTPS credentials cached at OS level; designer never enters them manually.
What the agent does when the designer says X
Three workflows the designer triggers most often. For each: what they say, the sequence of interface calls the agent makes behind the scenes, and what they see back.
Build a page from a Figma frame
Designer says
"Build the homepage from the Hero frame in Figma."
Agent does
- Filesystem MCP — reads
CLAUDE.mdfor project context, conventions, and Figma file URL - Figma MCP — fetches the Hero frame and its component tree
- Figma MCP — extracts design tokens (colors, typography, spacing) from the frame and the file's design system
- Filesystem MCP — reads current
theme.json,style.css, and existing block patterns - Reconciles new tokens against existing — adds new ones, flags any conflicts
- Filesystem MCP — writes updated
theme.jsonand any new block-pattern files - WordPress MCP Adapter — creates the Home page, sets it as the front page
- WordPress MCP Adapter — inserts the new block patterns as the page content
- WordPress MCP Adapter — flushes WordPress cache
- Playwright MCP — navigates to local URL, screenshots at 375 / 768 / 1440
- Dispatches the four review agents — figma review, security, accessibility, responsive
- Integrates findings — auto-fixes safe issues, surfaces judgment calls
- Git — commits with a descriptive message; auto-pushes
- Presents result to designer with screenshot links and a plain-language summary
Designer sees
- The local site rendering the new homepage at the local URL
- The agent's summary of what was built and which design tokens were used
- Any agent findings that need designer attention (e.g., "the hero's hover state isn't in the Figma; I used your standard interaction pattern")
Iterate on CSS or design tokens
Designer says
"Make the hero taller and the CTA button green."
Agent does
- Identifies the target — usually the current page or last-edited frame from conversation context
- Filesystem MCP — reads current
theme.json,style.css, and the affected block pattern - Locates the relevant rules — hero block CSS, CTA button styles, height tokens, color tokens
- Prefers updating design tokens over hardcoded values; updates the token only if the change is semantic ("brand green" not "this one element")
- Filesystem MCP — writes the updated CSS / theme.json / pattern files
- WordPress MCP Adapter — flushes cache
- Playwright MCP — captures before/after screenshots of the affected page area
- Dispatches relevant agents — accessibility (for contrast, e.g., new green vs. white text) and responsive (does the taller hero still work at 375?)
- Auto-fixes contrast or layout issues if the change broke something fixable
- Git — commits the CSS change
- Presents diff to designer — old vs. new screenshot, any findings
Designer sees
- The updated local site reflecting the change
- A before/after comparison for the changed area
- Any agent concerns ("the new green doesn't meet 4.5:1 contrast against white text; I adjusted to the nearest brand-compliant green")
Build out the rest of the site and enter content
Designer says
"Build the About, Services, and Contact pages from their Figma frames." Or later: "Import the team bios from this Google Doc as team-member posts."
Agent does
- For each new page:
- Figma MCP — fetches the matching frame
- Filesystem MCP — checks for existing block patterns that match the layout
- Filesystem MCP — writes any new block patterns needed
- WordPress MCP Adapter — creates the page
- WordPress MCP Adapter — inserts blocks/patterns into the page
- WordPress MCP Adapter — updates the primary navigation menu to include the new pages
- WordPress MCP Adapter — configures Yoast SEO meta for each new page (or leaves defaults)
- Playwright MCP — screenshots each created page at three viewports
- Dispatches the four review agents against each new page
- Auto-fixes safe issues
- For content import:
- Reads the source — file, URL, pasted text, or doc
- Parses into structured posts — title, body, taxonomies, featured image
- WordPress MCP Adapter — creates each post via batch operation
- WordPress MCP Adapter — uploads featured images and attaches them
- Git — commits and pushes
- Presents a summary — what was created, where to view it, what needs designer review
Designer sees
- All new pages live on the local site
- Updated navigation including the new pages
- For content imports: a summary of how many posts were created and any parsing ambiguities
- Screenshots of each new page for review
What every workflow has in common
Each workflow follows the same shape — designer triggers, agent reads context, agent makes calls across the interfaces, agent validates, agent commits, designer sees pre-validated work.
Universal sequence
- Read context (Filesystem MCP, CLAUDE.md, conversation history)
- Read source (Figma MCP, designer instructions, existing project state)
- Make changes (Filesystem MCP, WordPress MCP Adapter)
- Validate (Playwright MCP for rendering, dispatched agents for review)
- Auto-fix safe issues; flag the rest
- Commit (Git)
- Present result with screenshots and summary
What stays constant
- The designer triggers with plain language
- The agent uses the same interfaces for every workflow
- The review agents always run before the designer sees the work
- Git is always invisible to the designer
What the starter project includes
Every new project begins with the same baseline. Per-client configuration is applied on top.
Theme and plugins
- Newfangled base theme
- Per-client child theme
- newfangled-tracking
- newfangled-gated-content
- newfangled-gravityforms-acton
- WordPress MCP Adapter
- Gravity Forms (license-managed)
- ACF Pro (license-managed)
- Yoast SEO
The .claude directory
- MCP configuration (Figma, Playwright, WordPress, Filesystem)
- Slash commands: deploy-staging, promote-to-production, check-quality, reset-local, pull-content
- Skills: build-from-figma, add-content-type, add-form-with-marketing-automation, set-up-gated-content
- Agent agents: figma-review, security, accessibility, responsive
- Project-level CLAUDE.md
Scripts and config
- SFTP wrapper for WPEngine deploys
- WP-CLI wrapper over SSH gateway
- REST API wrapper for environment copy
- Per-environment .env templates
- GitHub Actions CI workflows
- Lighthouse CI configuration
- Playwright config for visual regression
Recovery and escalation
Most failures have a documented one-line recovery the designer runs. Anything outside the documented patterns escalates to a developer.
Common failures
- Studio site won't boot — restart Studio, then restart the site
- Claude can't connect to Figma MCP — re-authenticate Figma, restart Claude Code
- Claude can't connect to WordPress MCP — verify Studio site is running
- Deploy times out — retry the slash command
- Quality gate fails — review findings, ask Claude to fix specific issues
- Local site is in an unexpected state — run /reset-local
- Staging shows stale assets — flush staging cache
Escalation paths
- Any production issue — always escalate
- SSH or SFTP authentication errors — ops territory
- WPEngine environment-copy fails mid-promotion
- Plugin update breaks something
- PHP fatal error outside the theme
- Repository state diverged from main
- CI gate consistently misdiagnoses an issue
What is and isn't built
-
Architecture spec — complete
Nine planning files at
docs/newfangled-planning/planning/covering: system overview, designer's end-to-end workflow, local setup and starter project, agent configuration, designer-initiated workflows, deployment, marketing stack integration, failure modes and onboarding, and agent agents and quality gates. -
Starter repository — pending
Engineering work: assemble the base theme and child theme scaffold, build or migrate the four custom plugins (tracking, gated content, Gravity-Forms-to-Act-On, and the MCP Adapter), configure the .claude directory with the four MCP servers and four review agent agents, write the five slash commands, write the SFTP and WP-CLI wrappers, set up the GitHub Actions CI pipeline. Estimated three to five focused days.
-
Designer onboarding documentation — pending
Depends on the starter. Includes the first-time setup walkthrough, the common-operations cheatsheet, and the troubleshooting guide. Screenshots taken against the working starter.
-
First project use — pending
Depends on the starter. Apply to the next WordPress build after Frontier. Capture friction; update the starter before the second project. Expected: many small refinements, possibly a few structural changes to the workflow.