wp-edit-plugin
Skill1 starsChanged 6 months agoMITView on GitHub
Read or write configuration owned by SEO / i18n / e-commerce / custom-field / forms plugins — Yoast, RankMath, WPML, WooCommerce, ACF, Gravity / CF7 / WPForms — on a connected target. Phase = Build.
In this repository14 other files it gives its agents.
- wp-changesSkill
- wp-connectSkill
- wp-contentSkill
- wp-diagnoseSkill
- wp-edit-designSkill
- wp-edit-themeSkill
- wp-execute-phpSkill
- wp-fullSkill
- wp-health-checkSkill
- wp-introspectSkill
- wp-migrateSkill
- wp-pair-setupSkill
- wp-recoverySkill
- wp-scaffoldSkill
The file
We split this skill into the rules it gives an agent
10 rules. About 0 are common, 4 are distinctive, and 6 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈4
Distinctive · estimate
This author's own choices. Worth a look.
6
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 19
If the marker file $GIT_ROOT/.rolepod/parent-active exists, follow the
- Very specific: line 43
NEVER write Woo products via core wp/v2/posts with type=product — /wc/v3/products runs Woo-side hooks (price index, attribute lookup, stock …
- Very specific: line 44
ALWAYS check detected: true in the adapter response before chaining a write — adapters return detected: false cleanly when the plugin is …
- Very specific: line 96
Call *_read first with the relevant scope.
- Distinctive: line 129
Verify by reading back.
- Distinctive: line 133
No durable artifact. The plugins persist their own state.
- Distinctive: line 137
No examples file. The per-adapter request shapes mirror each plugin's REST docs directly.
- Very specific: line 157
After Yoast/RankMath → wp-health-check and confirm the new metas reach the sitemap.
- Distinctive: line 158
After Woo product writes → list-via-read to confirm stock + index update.
- Very specific: line 159
After WPML translation link → wp-content for the actual translated content body.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Mode selection
If the marker file $GIT_ROOT/.rolepod/parent-active exists, follow the
with-rolepod mode — return the edit diff only. The parent's
implement-plan owns verify + review; do not re-run them here.
Otherwise, follow standalone mode — edit + impact analysis + verification suggestion in one flow.
GIT_ROOT=$(git rev-parse --show-toplevel 2>/dev/null) || GIT_ROOT="$PWD"
if [ -f "$GIT_ROOT/.rolepod/parent-active" ]; then
MODE=with-rolepod
else
MODE=standalone
fiWP Edit Plugin
Plugin-specific config writes. Each adapter detects its plugin (REST namespace probe), reads the current state, writes through the plugin's own REST surface (no direct postmeta — that misses plugin-side hooks). Auto-picks the right adapter when multiple plugins of the same family are installed.
Iron Rule
<EXTREMELY-IMPORTANT>
1. NEVER write Yoast post meta via raw `postmeta` calls — Yoast caches SEO in its own `wp_yoast_indexable` table, so a bare postmeta write is a SILENT no-op on the front end. Use `rolepod_wp_seo_set` / `rolepod_wp_yoast_write`, which delete the post's indexable row (forcing a rebuild) and verify by fetching the rendered `<head>`. These run through companion execute-php and are therefore PRODUCTION-BLOCKED — on a prod target, edit via the Yoast UI (never write raw).
2. NEVER write Woo products via core `wp/v2/posts` with `type=product` — `/wc/v3/products` runs Woo-side hooks (price index, attribute lookup, stock cache) that the core endpoint skips.
3. ALWAYS check `detected: true` in the adapter response before chaining a write — adapters return `detected: false` cleanly when the plugin is inactive; writing against a `false` detection throws inscrutable errors at the plugin layer.
4. NEVER issue a WooCommerce refund through `rolepod_wp_rest_request` — raw writes to `/wc/v*/orders|refunds|coupons` are sealed (WC_MONEY_ENDPOINT_BLOCKED) because a raw refund POST defaults `api_refund=true` and moves real money. Use `rolepod_wp_woo_write(op: create_refund)`, which defaults `api_refund=false` (records the refund WITHOUT touching the gateway); a real gateway refund needs BOTH `api_refund=true` AND `confirm=true` (MONEY_OP_NEEDS_CONFIRM).
</EXTREMELY-IMPORTANT>When to use
- "Set SEO title/description for page X" (Yoast or RankMath)
- "Add a WooCommerce product / list orders / change shipping zones"
- "Link the English page to the Thai translation" (WPML)
- "Add an ACF field group" / "set custom field value"
- "Create a contact form" (CF7 / Gravity / WPForms)
Skip when:
- The content is core (post title/content) →
wp-content. - The change is a visual layout (Elementor JSON, theme.json) →
wp-edit-design.
Boundary
Owns:
rolepod_wp_yoast_{read,write}— Yoast SEO.rolepod_wp_rankmath_{read,write}— Rank Math.rolepod_wp_wpml_{read,write}— WPML translations.rolepod_wp_woo_{read,write}— WooCommerce.rolepod_wp_acf_{read,write}— Advanced Custom Fields.rolepod_wp_forms_{read,write}— Gravity / CF7 / WPForms.
Does not own:
- Core REST CRUD →
wp-content. - Layout writes →
wp-edit-design. - Plugin BOOTSTRAP (creating a brand-new plugin) →
wp-scaffold.
Return / hand off:
- The required plugin is not active → tell user to install via REST
wp/v2/plugins+ activate, or via wp-admin. - The user needs a page wrap → after meta write, hand off to
wp-contentfor the page itself.
Inputs to gather
- target_id.
- For SEO:
post_id(for post_meta scope) OR no scope (settings). - For Woo:
scope(products / orders / settings_groups / settings_in_group / shipping_zones / payment_gateways). - For ACF:
scope(field_groups / fields_in_group + group_key / post_meta + post_id). - For WPML:
scope(languages / translations / current). - For Forms:
engine(auto / gravity / cf7 / wpforms) +scope(list_forms / form_detail + form_id / list_entries).
Workflow
1. Detect
Call *_read first with the relevant scope. If detected: false → STOP, tell user to activate the plugin. See references/adapter-detection.md for the per-adapter signal.
2. Read current state
For writes that update an existing entity: read first. For new-entity creates: skip read, proceed to write.
3. Show diff (writes)
Describe the change in plain text. Wait for user OK if the change touches user-visible config (Yoast title appears in search, Woo prices appear in checkout, WPML link affects routing).
4. Write through the adapter
The adapter call surfaces the plugin's native validation errors with their codes intact — do not catch and recoerce.
5. Verify
- Yoast / RankMath: read back the post_meta scope, confirm title/description.
- Woo: list the resource just edited.
- ACF: read field_groups, confirm the new group is present.
- WPML: read the translation pair, confirm the link.
- Forms: read form_detail.
If a matching Rolepod agent is available
rolepod:rolepod-builderwithdomain: writingfor SEO copy quality (Yoast / RankMath).rolepod:rolepod-builderfor Woo pricing / payment-gateway tuning.
If no matching agent is available
- Pick the adapter by user intent.
- Read for detection.
- Diff or new-create.
- Write.
- Verify by reading back.
Output
No durable artifact. The plugins persist their own state; the MCP returns the freshly-read value as confirmation.
Examples
No examples file. The per-adapter request shapes mirror each plugin's REST docs directly.
References
Load before the FIRST write for any given plugin family on this target:
references/adapter-detection.md— per-adapter detection signal, REST namespace, scopes table, common pitfalls (ACF Pro vs free, WooCommerce settings group ordering, WPML licence detect).
Hard stops
detected: false→ STOP. Tell user "the<plugin>plugin is not active on this site; install + activate, then retry."- Adapter returns an HTTP error from the plugin's own REST (e.g. Woo
woocommerce_rest_invalid_id) → STOP, surface verbatim; do not retry with mutated input. - WPML
*_writewithout an active WPML licence → STOP, surface the licence message verbatim; do not silently fall back to Polylang or qTranslate.
Full Rolepod enhancement
Full Rolepod adds bulk SEO meta updates (batch Yoast writes across N posts in one composite call); standalone, batch by iteration.
Next phase
- After Yoast/RankMath →
wp-health-checkand confirm the new metas reach the sitemap. - After Woo product writes → list-via-read to confirm stock + index update.
- After WPML translation link →
wp-contentfor the actual translated content body.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

