wpcom-remote-management
This skill enables agents to manage live WordPress.com sites through the wpcom_request tool, handling plan-based feature limitations, content and design…
Identity proven by GitHub's verified organisation badge (Automattic)
- Agents
- Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode
- License
- LGPL-2.1 (copyleft)
- Pin
- 870948cpinned Oct 9, 2026
- Context cost
- about 1,700 tokenswhen the skill loads
- GitHub stars
- 533on automattic/studio
- Scripts
- None found
What it does
“Manage one of the user's live WordPress.com sites with wpcom_request, including the plan check, design limits by plan, API namespace selection, endpoint discovery, content/template/theme/plugin operations, response-size limits, and visual verification.”
Generated summary from the skill's own text
This skill enables agents to manage live WordPress.com sites through the wpcom_request tool, handling plan-based feature limitations, content and design operations via REST APIs, and visual verification. The agent checks site plans first to enforce design restrictions on free accounts, then performs content creation, template management, theme switching, and plugin operations using appropriate API namespaces. It stages large request payloads to files and minimizes response sizes to stay within tool limits.
When to use it
- Modifying content, templates, themes, or plugins on a user's WordPress.com site
- Checking WordPress.com site plan and capabilities before making changes
- Managing posts, pages, media, global styles, or themes via REST API
- Verifying site changes with screenshots or DOM inspection
When not to
- Working on local WordPress installations or cloned sites with WP-CLI or Bash
- Adding design features to free WordPress.com plans that lack customization support
- Using custom HTML blocks or decorative comments in generated content
Install
These commands install from the publisher's repository and need no account.
skills CLI
npx skills add automattic/studio --skill wpcom-remote-managementInstalls from the repository's default branch, which may have changed since the commit we checked.
GitHub CLI 2.90 or later
gh skill install automattic/studio wpcom-remote-management@870948cd5cbdba4d05a432c38fa5e8e1e796b3b1Installs the commit we checked (870948c).
Copy by hand
Download the folder at 870948c and put it in .claude/skills/wpcom-remote-management for Claude Code and in .agents/skills/wpcom-remote-management for Codex, Cursor, Gemini CLI, GitHub Copilot and OpenCode.
Claude Code plugin
/plugin install build-with-wordpress@claude-plugins-officialThe publisher's plugin in Claude's official marketplace. It may hold more than this skill, and we have not pinned it.
Copy for your agent
A prompt for any coding agent. It installs this skill from GitHub at the pinned commit, copies the files as they are, and runs nothing unless you ask.
Prompt
Install the agent skill "wpcom-remote-management" by Automattic. Source, pinned to commit 870948cd5cbdba4d05a432c38fa5e8e1e796b3b1: https://github.com/automattic/studio/tree/870948cd5cbdba4d05a432c38fa5e8e1e796b3b1/apps/cli/ai/skills/wpcom-remote-management 1. Download that folder at exactly this commit. Do not use the default branch. 2. Copy every file unchanged, keeping the folder structure, into .claude/skills/wpcom-remote-management/ for Claude Code and .agents/skills/wpcom-remote-management/ for Codex, Cursor, Gemini CLI, GitHub Copilot and OpenCode. Create the folders if they do not exist. 3. Do not edit the files, and do not run any script in the folder unless I ask you to. 4. When you are done, list the files you copied and where you put them. Listing and checks: https://www.agentnative.dev/skills/automattic/wpcom-remote-management
SKILL.md at the pin
---
name: wpcom-remote-management
description: Manage one of the user's live WordPress.com sites with wpcom_request, including the plan check, design limits by plan, API namespace selection, endpoint discovery, content/template/theme/plugin operations, response-size limits, and visual verification.
user-invokable: true
---
# WordPress.com Remote Management
Use this skill for any work on one of the user's WordPress.com sites. These sites are live: change them only with `wpcom_request`, never with WP-CLI, Bash, or local site files. Work on a local copy only when the user asks for one (create a local site with `site_create`, then `site_pull` the WordPress.com site into it).
## First: Check the Plan
Before any change, call `GET /` with `apiNamespace: ""` and read `plan.product_slug`.
- **Free plans** (e.g. `free_plan`) allow content only: posts, pages, templates, template parts, switching themes, and uploading media. They allow no design customization: no custom CSS, inline styles, style attributes on blocks, global styles, custom JavaScript, animations, custom colors, custom fonts, custom layouts, or plugin management. If the user asks for any design change — even a small one like a color or a font — refuse, explain that it requires a paid WordPress.com plan, and stop. Do not try workarounds such as inline styles or style attributes: they produce invalid blocks on WordPress.com.
- **Paid plans** (Personal, Premium, Business, eCommerce) progressively add custom CSS, global styles, plugin management, and advanced customization. Check the specific plan for what it allows; for what a plan tier includes, load the `hosting-plans-helper` skill.
## Block Content
- Use only core WordPress blocks. No custom HTML blocks except for inline SVGs.
- No decorative HTML comments (e.g. `<!-- Hero Section -->`); only block delimiter comments.
- Color content from the active theme's palette using block color-slug attributes (e.g. `{"backgroundColor":"primary","textColor":"base"}`) rather than hardcoded hex values; introduce a custom color only when the palette genuinely lacks one.
- No emojis anywhere in generated content.
## Tool Shape
`wpcom_request` supports both the WordPress REST API and WordPress.com REST API endpoints:
- `siteId`: the site's WordPress.com ID (the active-site line gives it; `site_connected_remote_sites` or `GET !/me/sites` with `apiNamespace: ""` find others)
- `method`: `GET`, `POST`, `PUT`, or `DELETE`
- `path`: relative to `/sites/{siteId}/`, such as `/posts`, `/posts/123`, or `/templates`
- `query`: optional query parameters object
- `body`: optional request body for `POST` and `PUT`
- `bodyFile`: optional staged JSON file path for `POST` and `PUT`; the parsed JSON object becomes the entire request body
- `bodyFiles`: optional map of top-level request body field names to staged file paths for `POST` and `PUT`; each file becomes that field's string value
- `apiNamespace`: defaults to `"wp/v2"`; set to `""` for WordPress.com REST API v1.1, or `"wpcom/v2"` for WordPress.com v2 endpoints
Prefix `path` with `!` only for absolute paths such as `!/me`.
## Namespace Selection
Prefer `wp/v2` for standard WordPress resources:
- Posts, pages, media, categories, tags, users, comments
- Templates, template parts, navigation, global styles, block patterns
- Block types and search
Use WordPress.com v1.1 by setting `apiNamespace: ""` for WordPress.com-specific resources:
- Site info: `GET /`
- Site settings: `POST /settings`
- Plugin management: `GET /plugins`, `POST /plugins/{slug}/install`, `POST /plugins/{slug}` with body `{ active: true }` or `{ active: false }`
- Theme switching: `GET /themes`, `POST /themes/mine` with body `{ theme: "slug" }`
- Media upload from URL: `POST /media/new` with body `{ media_urls: [...] }`
## Common wp/v2 Endpoints
- Posts and pages: `GET /posts`, `GET /posts/{id}`, `POST /posts`, `POST /posts/{id}`, `DELETE /posts/{id}`
- Media: `GET /media`, `POST /media`
- Templates: `GET /templates`, `GET /templates/{id}`, `POST /templates`, `POST /templates/{id}`, `DELETE /templates/{id}`
- Template parts: `GET /template-parts`, `GET /template-parts/{id}`, `POST /template-parts`, `POST /template-parts/{id}`
- Navigation: `GET /navigation`, `POST /navigation`, `POST /navigation/{id}`
- Global styles: `GET /global-styles/{id}`, `POST /global-styles/{id}`
- Categories and tags: `GET /categories`, `POST /categories`, `GET /tags`, `POST /tags`
- Block types: `GET /block-types`, `GET /block-types/{name}`
- Search: `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.
## Response Size Control
Minimize response sizes to avoid exceeding tool output limits:
- Use `_fields` for `wp/v2`.
- Use `fields` for WordPress.com v1.1.
- Exclude heavy fields such as `content` when listing resources.
- Fetch lightweight listings first, then fetch individual resources by ID when full content is needed.
- When using `fields` with v1.1, always include `ID`.
Examples:
```text
GET /posts?_fields=id,slug,title,status
GET /plugins?fields=ID,name,description,URL
```
## Large Request Bodies
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 in the payload folder that `wpcom_request`'s description names (`tmp/ai-payloads/` in Studio's app data) using small `Write` or `Edit` steps, and pass their absolute paths.
Use `bodyFiles` when staged files should become string fields inside the request body:
```text
body: { "status": "publish" }
bodyFiles: { "content": "<payload folder>/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}`:
```text
bodyFile: "<payload folder>/global-styles.json"
```
Do not combine `bodyFile` with `body` or `bodyFiles`.
## Workflow
1. Check the site plan first (see above).
2. Understand the site with lightweight reads, such as `GET /posts` and `GET /themes?status=active`.
3. Make changes with POST requests to create or update content, manage templates, switch themes, or manage plugins.
4. Verify with `take_screenshot` using `viewport: "all"` for desktop and mobile; when you cannot view images, verify from the rendered DOM with `inspect_design` instead.
5. If an operation fails, inspect the error and try a lightweight GET request to discover the available shape before retrying.
Always confirm destructive operations, including deleting posts or deactivating plugins, before proceeding.
From automattic/studio at 870948c, shown as plain text under its license: LGPL-2.1 (copyleft). The license text is in apps/cli/LICENSE.md.
View SKILL.md on GitHub at 870948cFiles
- SKILL.md7.1 KB · 3d7b9fe451bd
1 file, 7.1 KB in total. Each file has a sha256 in the pin's manifest; the first 12 characters are shown.
Skill folder on GitHub at 870948cMore from Automattic
annotate
This skill opens a browser with annotation tools that let users click page elements and leave feedback, then the agent reads those annotations and applies the…
Claude Code, Codex, Cursor +3 · about 1K tokens · pinned 6 days ago
block-content
This skill instructs agents to write editable WordPress block markup for block themes, enforcing use of core blocks over HTML, managing layout cascades, and…
Claude Code, Codex, Cursor +3 · about 4.4K tokens · pinned 6 days ago
hosting-plans-helper
This skill fetches current WordPress.com plan names, pricing, and feature details from live APIs, then answers questions about which plan tier includes…
Claude Code, Codex, Cursor +3 · about 840 tokens · pinned 6 days ago
imagery
This skill guides generating AI images for WordPress sites using the generate_images tool, or alternative image generation tools.
Claude Code, Codex, Cursor +3 · about 2.6K tokens · pinned 6 days ago
liberate
This skill helps agents migrate websites into WordPress by copying the site from a URL or local files using the Studio CLI, then comparing the imported…
Claude Code, Codex, Cursor +4 · about 830 tokens · pinned 6 days ago
need-for-speed
Measures Core Web Vitals and page composition metrics for WordPress sites using synthetic testing, then suggests targeted optimization actions based on…
Claude Code, Codex, Cursor +3 · about 650 tokens · pinned 6 days ago
Related in Frontend and design
plugin-recommendations
This skill guides the agent to recommend and install WordPress plugins for features that core blocks don't provide, including WooCommerce for ecommerce…
by AutomatticOfficial publisher
Claude Code, Codex, Cursor +3 · about 4.6K tokens · pinned 6 days ago
wp-block-development
This skill guides agents through WordPress block development workflows, including creating new blocks, updating block.json metadata, implementing save/render…
by AutomatticOfficial publisher
Contains scripts
Claude Code, Codex, Cursor +3 · about 1.5K tokens · pinned 6 days ago
wp-block-themes
This skill enables agents to develop and debug WordPress block themes by editing theme.json for global settings and styles, managing templates and template…
by AutomatticOfficial publisher
Contains scripts
Claude Code, Codex, Cursor +3 · about 890 tokens · pinned 6 days ago
wp-interactivity-api
This skill helps build and debug WordPress Interactivity API features, including data-wp-* directives, store management, and block view script modules.
by AutomatticOfficial publisher
Claude Code, Codex, Cursor +4 · about 1.4K tokens · pinned 6 days ago
wpds
This skill helps agents build and review UIs using the WordPress Design System, including components, tokens, and patterns.
by AutomatticOfficial publisher
Claude Code, Codex, Cursor +4 · about 640 tokens · pinned 6 days ago
wordpress-block-theming
This skill provides guidance for building WordPress block themes using Full Site Editing architecture.
by AutomatticOfficial publisher
Claude Code, Codex, Cursor +4 · about 4.7K tokens · pinned 6 days ago