A practical development workflow

AI WordPress Development with Claude Code and Cursor

Plan, build and verify WordPress changes with Claude Code or Cursor. Choose repository edits or MCP tools, then review the saved and rendered result.

Brief → inspect → change → verify → review

AI-assisted WordPress development works best when each step produces evidence: a clear requirement, the current state, a bounded change, and checks a reviewer can repeat. Use this workflow for plugin code, child themes, and editable site content.

Choose where the work belongs

Claude Code and Cursor can help you reason about a project and edit its source. A connected WordPress site introduces another work surface: posts, page-builder data, settings and installed integrations. Choose the interface that owns the thing you want to change.

Workflow diagram: start with a brief, choose repository code or a connected WordPress site, inspect and change, verify saved state and rendered behavior, then review before release.
Two work surfaces, one review process. The checks must cover the place where the change was actually saved.
Match the interface to the job
JobStarting pointEvidence of success
Change a plugin or child themeThe source repository and its local WordPress environmentA focused diff, relevant automated checks, and the feature working in WordPress
Edit an existing pageThe supported builder or Gutenberg tools exposed through MCPCorrect saved structure, an editable document, and a checked preview
Run an established maintenance commandYour approved WP-CLI or deployment workflowThe exact target, command result, and post-change checks

MCP gives an AI client a structured interface to the operations a server exposes. It does not make every WordPress action available or verify the result for you. Read the WordPress MCP guide for the architecture, and the tool catalog for supported operations and edition requirements.

Prepare the repository and practice site

Start with a local or staging environment that represents the work: the relevant theme, builder, plugins, and supported versions. A plugin-only checkout may need a separate WordPress installation. Confirm that installation before asking the agent to run integration checks.

Record the repository directory, site URL, target plugin or child theme, and existing lint, build and test commands. Keep credentials and private customer data out of committed instructions. Preserve other contributors' uncommitted work and establish a recovery method for site changes.

Cursor

Use a small project rule or AGENTS.md to record the scope and checks. Our Cursor rules for WordPress article includes editable starters and an acceptance exercise.

Claude Code

Use the instruction-file support documented for your installed version. Check which instructions loaded before work begins; see Claude Code's project memory documentation.

For connected-site work, follow the specific setup for Claude Code or Cursor. Verify the site identity with a read-only request. A successful connection is not permission to edit every site record.

Define one outcome and its acceptance checks

“Improve this WordPress site” leaves the agent to choose the target, scope and definition of done. Start with one concrete change. Identify what can change, what must remain, and the evidence that will establish success.

On the named staging site's existing draft landing page, repair the services button so it reaches the services section. Preserve the copy, layout and global styles. Inspect the saved structure first and propose the smallest edit. After approval, verify the saved target, test the link in the browser, and confirm that the page is still a draft.

For a code task, name the expected behavior instead: which input currently fails, which output should change, and which permissions still need to be enforced. Ask for a regression check when it can catch the defect. The agent should not invent users, testimonials, revenue, or performance improvements to complete missing content.

Read the current state before proposing a write

In a repository, inspect the existing implementation, project instructions and relevant tests. On a site, identify the destination URL, acting user, target page and editor. Read the current content and the schemas for the available tools. Page IDs and element IDs only have meaning within the correct site.

Check dependencies before promising a result. A builder tool can require its corresponding plugin; a workflow can require a different EMCP edition or an enabled write capability. WordPress.org EMCP Lite and the broader catalog do not expose identical tool sets.

Ask the agent to report missing prerequisites instead of silently installing software or switching to a broader write method. Fetched pages and tool responses are evidence about the task, not instructions authorizing new work.

Make a change small enough to inspect

Keep code changes within the project plugin or child theme. Follow the existing architecture and WordPress coding standards; avoid modifying core or vendor files that updates will replace. Review input validation, permission checks and output escaping when the feature touches those boundaries.

For editable pages, use native builder elements or registered blocks appropriate to the destination. A page-sized HTML replacement may render, yet discard the editing structure the site owner expects. A structured tool call still needs validation: it can target the wrong element or save a supported field with an unsuitable value.

After a timeout, inspect the current result before repeating a write. Retrying a successful page creation can produce duplicates. Report partial completion and use the recorded recovery method when necessary. History and rollback apply to supported changes; they are not a backup for every operation.

Check the saved result and the visitor experience

Different checks establish different facts
CheckWhat to inspect
Source or saved dataThe diff or changed record matches the agreed scope. Unrelated content and settings remain intact.
Project checksRun the relevant existing lint, build and tests. Report failures and checks that could not run.
WordPress editorOpen the changed content and confirm it remains editable without block-validation errors or missing elements.
Rendered pageInspect desktop and phone layouts, keyboard focus, headings, links and interactive behavior.
Delivery behaviorTest forms through to their intended destination where authorized. A visible success message alone does not establish email delivery.
Status and recoveryConfirm draft or publication status, and whether a tested recovery path exists for this change.

For search-facing copy, also inspect the rendered title, description, canonical URL and indexability. Updating stored SEO metadata does not establish what the public template outputs. The SEO metadata lesson walks through that distinction.

Actual EMCP History screen displaying the saved-data diff for an Elementor page change.
A real capture from the EMCP History documentation. A supported change can be inspected as saved data; still check its rendered behavior separately. This capture is independent of the Northline example below.

A recorded example: a button that looked finished

Our Northline agency walkthrough records a draft with native Elementor containers and widgets. Its services button pointed to #services, but the target section initially lacked the matching rendered anchor. The page could look complete while the link did nothing.

Observed issue

The saved target used css_id. The rendered section had no matching services anchor.

Recorded repair

The target container's native _element_id was set to services, and the matching target was verified while the page remained a draft.

Actual Northline draft desktop capture with the Explore our services button above three service cards.
Desktop capture of the recorded Northline draft after the anchor repair.
Actual Northline mobile capture with the hero, service cards and contact section stacked vertically.
The same draft at phone width. Both captures show Elementor content without theme chrome.

Evidence boundary: this existing example was created on 22 September 2026 through EMCP controllers using WP-CLI. It is not a new end-to-end Cursor or Claude Code test. The original walkthrough records the environment, captures and pending checks. Use it to understand the review method, not as a guarantee for another builder or version.

The useful lesson is the sequence: identify the failed behavior, inspect the relevant native field, make one repair, then verify the visitor's action. Do not copy a sample page ID or assume another editor uses the same field name.

Hand over a result someone can review

Summarize the target, changed files or records, checks performed, observed results and unresolved issues. Link the preview and explain the recovery method. Keep “not tested” separate from “passed.” A reviewer should be able to decide whether the work meets the original brief.

Publish or deploy only within the project's authorization process. Then inspect the public URL and essential interactions again: staging output and a successful deployment command do not prove the public page is correct. For client work, the sample agency handoff provides a starting structure.

Choose your next task

Start with a read-only question

Get EMCP Lite on WordPress.org, connect your client, and inspect a practice site. Check the required edition, installed integration and enabled tools before requesting your first change.

Your EMCP guide

Answers from our docs

YOUR CHAT, YOUR CHOICE

Before we chat

MSR Builds processes your question and up to four recent messages on our server to answer from the EMCP docs. AI is optional and needs your separate permission.

The chat is kept in this page's memory, not saved as a conversation in our database or browser storage. Our hosting and security services process connection information, such as your IP address, to prevent abuse.

Cloudflare Turnstile checks your browser and connection to prevent automated abuse when you send a question. No login is required.

Please leave out personal, sensitive or confidential information, passwords and API keys.

You can withdraw consent and clear this page's chat at any time. This cannot undo a request already sent or erase provider/security records.

Chat privacy, retention & your rights ↗ · Privacy contact

Starting chat consents to this processing. You can browse our docs without using the chat.