with one click
wpcom-remote-management
Manage a remote WordPress.com site with wpcom_request, including API namespace selection, endpoint discovery, content/template/theme/plugin operations, response-size limits, and visual verification.
Menu
Manage a remote WordPress.com site with wpcom_request, including API namespace selection, endpoint discovery, content/template/theme/plugin operations, response-size limits, and visual verification.
Write editable WordPress block markup for local Studio sites, including core/html limits, block-theme layout rules, full-width sections, validation, and skeleton-first page/CSS recipes.
Choose WordPress plugins and plugin-provided blocks for features that core WordPress blocks do not cover, while keeping generated content editable and avoiding raw HTML fallbacks.
Verify and polish a built or redesigned site by diagnosing rendered-DOM issues against intent and fixing them in a planned, batched screenshot-and-fix loop.
Gather the site name and layout preference before building a WordPress site. Run this before creating any new site.
Plan and execute high-quality visual direction for site creation, redesign, layout, typography, color, motion, and visual polish.
Analyze and optimize a WordPress site's category taxonomy. Exports all posts, uses AI to suggest an improved category structure — merging duplicates, retiring dead categories, creating missing ones, writing descriptions, and re-categorizing posts. Run this when the user wants to clean up or improve their categories.
| name | wpcom-remote-management |
| description | Manage a remote WordPress.com site with wpcom_request, including API namespace selection, endpoint discovery, content/template/theme/plugin operations, response-size limits, and visual verification. |
| user-invokable | true |
Use this skill after the mandatory remote-site plan check, before selecting endpoints or making changes to a WordPress.com site through wpcom_request.
wpcom_request supports both the WordPress REST API and WordPress.com REST API endpoints:
method: GET, POST, PUT, or DELETEpath: relative to /sites/{siteId}/, such as /posts, /posts/123, or /templatesquery: optional query parameters objectbody: optional request body for POST and PUTbodyFile: optional staged JSON file path for POST and PUT; the parsed JSON object becomes the entire request bodybodyFiles: optional map of top-level request body field names to staged file paths for POST and PUT; each file becomes that field's string valueapiNamespace: defaults to "wp/v2"; set to "" for WordPress.com REST API v1.1, or "wpcom/v2" for WordPress.com v2 endpointsPrefix path with ! only for absolute paths such as !/me.
Prefer wp/v2 for standard WordPress resources:
Use WordPress.com v1.1 by setting apiNamespace: "" for WordPress.com-specific resources:
GET /POST /settingsGET /plugins, POST /plugins/{slug}/install, POST /plugins/{slug} with body { active: true } or { active: false }GET /themes, POST /themes/mine with body { theme: "slug" }POST /media/new with body { media_urls: [...] }GET /posts, GET /posts/{id}, POST /posts, POST /posts/{id}, DELETE /posts/{id}GET /media, POST /mediaGET /templates, GET /templates/{id}, POST /templates, POST /templates/{id}, DELETE /templates/{id}GET /template-parts, GET /template-parts/{id}, POST /template-parts, POST /template-parts/{id}GET /navigation, POST /navigation, POST /navigation/{id}GET /global-styles/{id}, POST /global-styles/{id}GET /categories, POST /categories, GET /tags, POST /tagsGET /block-types, GET /block-types/{name}GET /search?search={query}To find the global styles ID, first call GET /themes?status=active; the active theme's _links["wp:user-global-styles"][0].href contains the ID.
Use per_page and page for pagination. Use status to filter by publish status. For creating or updating content, pass block markup in the content field of the request body.
Minimize response sizes to avoid exceeding tool output limits:
_fields for wp/v2.fields for WordPress.com v1.1.content when listing resources.fields with v1.1, always include ID.Examples:
GET /posts?_fields=id,slug,title,status
GET /plugins?fields=ID,name,description,URL
For generated page content, template content, template-part content, global styles, or CSS, do not inline large generated strings in wpcom_request.body.
Stage request payload files under tmp/ai-payloads/ within Studio app data using small Write or Edit steps.
Use bodyFiles when staged files should become string fields inside the request body:
body: { "status": "publish" }
bodyFiles: { "content": "tmp/ai-payloads/home.html" }
The bodyFiles keys must be top-level REST body field names such as content, excerpt, or css, not filenames or nested paths. Do not use keys like home.html, styles.css, content.raw, or styles.color.background.
Use bodyFile when the staged file is the complete JSON request body, especially for endpoints that expect nested JSON objects such as POST /global-styles/{id}:
bodyFile: "tmp/ai-payloads/global-styles.json"
Do not combine bodyFile with body or bodyFiles.
GET /posts and GET /themes?status=active.take_screenshot using viewport: "all" for desktop and mobile.Always confirm destructive operations, including deleting posts or deactivating plugins, before proceeding.