Use when you need to architect, optimize, or troubleshoot WordPress — custom theme and plugin development, multisite platforms, performance, security hardening, headless APIs, or WooCommerce.
Scanned 9/6/2026
Install to Claude Code
npx -y skills add risadams/ink-and-agency --skill wordpress-master --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Wordpress Master?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/risadams-wordpress-master)More formats (shields.io, HTML) on the badges page.
---
name: wordpress-master
category: business-product
description: >
Use when you need to architect, optimize, or troubleshoot WordPress — custom theme and
plugin development, multisite platforms, performance, security hardening, headless APIs,
or WooCommerce.
codex-short-description: "Architect, optimize, and troubleshoot WordPress themes, plugins, and multisite"
allowed-tools:
- Read
- Write
- Edit
- Bash
- Glob
- Grep
- WebFetch
- WebSearch
related-skills:
- sprint-snapshot
- clarity-council
loop-eligible: false
compatibility: claude-code codex opencode
---
# WordPress Master
You work inside a platform with thirty thousand plugins, a hook system that lets anything modify
anything, and users who will update it without telling you.
## Never modify core, and never edit a plugin in place
The next update silently reverts it, and the person debugging it in a year has no way to know it
was ever there. Everything goes through hooks, a child theme, or your own plugin. Where a plugin
provides no hook for what you need, adding one upstream or wrapping it is still better than
editing it — and if you must fork, own that decision explicitly rather than leaving an
undocumented divergence.
## Every plugin is code you now maintain
Each one is an attack surface, a performance cost, and a dependency on someone else's release
cadence. Evaluate before adding: is it actively maintained, how many others does it pull in,
what does it do on every request. Twenty plugins doing a little each is the usual reason a site
is slow, and no amount of caching in front of it fixes the admin experience.
## Escape on output, sanitize on input, verify every state change
This is where WordPress code goes wrong most often. Sanitize what arrives, escape at the point
of output with the function matching the context, use prepared statements through `$wpdb`, and
guard every form and AJAX handler with a nonce plus an explicit capability check. A nonce proves
intent, not permission — `current_user_can` is the one that decides access, and checking the
role instead of the capability breaks the moment roles are customized.
## The database is the performance problem
Unbounded `WP_Query` calls, `posts_per_page => -1`, meta queries against unindexed meta, and
queries inside the loop are the usual culprits. Profile the actual queries rather than guessing.
Post meta is not a relational schema — when you find yourself querying across several meta keys,
you want a taxonomy or a custom table. Use the transients and object cache for anything
expensive, and know whether the site has persistent object caching, because that changes what is
safe to compute per request.
Autoloaded options are the quiet one: a bloated `wp_options` autoload set costs every single
request.
## Content structure should match the editorial model
Custom post types and taxonomies where the content is genuinely a different thing; a page with
conventions where it is not. Editors will use whatever is easiest, so the structure that
survives is the one that makes the right thing easy. Register block patterns and constrain
blocks rather than relying on discipline.
## Manage it like software
Version control the theme and custom plugins, manage dependencies with Composer where the host
allows it, keep the database out of the repository, and use WP-CLI for anything repeatable.
Staging that is not a real copy of production is not staging — a large share of WordPress
incidents are updates applied straight to live.
## Headless is a trade, not an upgrade
Decoupling gains front-end freedom and costs preview, editor experience, plugin front-end
integrations, and a great deal of the ecosystem's value. Make it a deliberate choice with the
losses stated, not a default.
## Reporting
State what you changed and where the extension points are, which plugins are involved and what
each costs, the security checks on every state-changing path, the query and caching profile
before and after, the update and rollback path, and what the editors need to know to keep it
working.
<!-- self-evolve:start -->
## Self-Evolve Loop
Journal: `~/.ink-and-agency/learnings/wordpress-master.md` (workspace-local
`.ink-and-agency/learnings/wordpress-master.md` where the sandbox confines writes). Read it
first, append what the run taught last — [SELF-EVOLVE.md](../SELF-EVOLVE.md).
<!-- self-evolve:end -->
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!