Wp Plugin Development
WordPressOfficialPublished by WordPress
- Skill
- Tool integration
- Software development
- GPL-2.0-or-later
- Low risk
- Has scripts
AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
This skill provides a comprehensive procedure for WordPress plugin development, covering the entire lifecycle from initial project structure and hook registration to admin UI implementation, data management, and security best practices. It emphasizes standard WordPress patterns, such as the Settings API and proper activation/deactivation routines, while ensuring code remains secure through nonces, capability checks, and safe database interactions.
What it does
- Guides the setup of plugin architecture, including bootstrap files and hook management.
- Provides procedures for plugin lifecycle events like activation, deactivation, and uninstallation.
- Facilitates the creation of admin interfaces using the WordPress Settings API.
- Enforces security standards including input sanitization, output escaping, and nonce verification.
- Assists in managing persistent data storage and background cron tasks.
- Supports release packaging and verification of plugin functionality.
When to use it
- When starting a new WordPress plugin project from scratch.
- When refactoring existing plugin code to follow modern WordPress standards.
- When adding new settings pages or admin configuration interfaces.
- When implementing background tasks or custom database storage.
- When auditing a plugin for security vulnerabilities or fixing activation issues.
Advantages
- Ensures adherence to official WordPress architectural patterns.
- Reduces common bugs related to plugin lifecycle and hook registration.
- Promotes a security-first approach to plugin development.
- Standardizes the implementation of settings and data storage.
- Provides clear debugging paths for common plugin development failures.
Usage examples
- “Help me set up the activation and deactivation hooks for my new plugin.”
- The agent will guide you to register these hooks in the main plugin file and provide a template for safe activation/deactivation logic.
- “How do I securely add a settings page to my plugin?”
- The agent will walk you through using the Settings API, including registering settings, adding fields, and implementing necessary nonce and capability checks.
Install
Download the skill as a ZIP:
https://autogineer.com/agent-skills/wordpress/wp-plugin-development/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip wp-plugin-development.zip -d .agents/skills
Documentation by WordPress
WP Plugin Development
When to use
Use this skill for plugin work such as:
creating or refactoring plugin structure (bootstrap, includes, namespaces/classes)
adding hooks/actions/filters
activation/deactivation/uninstall behavior and migrations
adding settings pages / options / admin UI (Settings API)
security fixes (nonces, capabilities, sanitization/escaping, SQL safety)
packaging a release (build artifacts, readme, assets)
Inputs required
Repo root + target plugin(s) (path to plugin main file if known).
Where this plugin runs: single site vs multisite; WP.com conventions if applicable.
Target WordPress + PHP versions (affects available APIs and placeholder support in
$wpdb->prepare()).
Procedure
0) Triage and locate plugin entrypoints
Run triage:
node skills/wp-project-triage/scripts/detect_wp_project.mjs
Detect plugin headers (deterministic scan):
node skills/wp-plugin-development/scripts/detect_plugins.mjs
If this is a full site repo, pick the specific plugin under wp-content/plugins/ or mu-plugins/ before changing code.
1) Follow a predictable architecture
Guidelines:
Keep a single bootstrap (main plugin file with header).
Avoid heavy side effects at file load time; load on hooks.
Prefer a dedicated loader/class to register hooks.
Keep admin-only code behind
is_admin()(or admin hooks) to reduce frontend overhead.
See:
references/structure.md
2) Hooks and lifecycle (activation/deactivation/uninstall)
Activation hooks are fragile; follow guardrails:
register activation/deactivation hooks at top-level, not inside other hooks
flush rewrite rules only when needed and only after registering CPTs/rules
uninstall should be explicit and safe (
uninstall.phporregister_uninstall_hook)
See:
references/lifecycle.md
3) Settings and admin UI (Settings API)
Prefer Settings API for options:
register_setting(),add_settings_section(),add_settings_field()sanitize via
sanitize_callback
See:
references/settings-api.md
4) Security baseline (always)
Before shipping:
Validate/sanitize input early; escape output late.
Use nonces to prevent CSRF and capability checks for authorization.
Avoid directly trusting
$_POST/$_GET; usewp_unslash()and specific keys.Use
$wpdb->prepare()for SQL; avoid building SQL with string concatenation.
See:
references/security.md
5) Data storage, cron, migrations (if needed)
Prefer options for small config; custom tables only if necessary.
For cron tasks, ensure idempotency and provide manual run paths (WP-CLI or admin).
For schema changes, write upgrade routines and store schema version.
See:
references/data-and-cron.md
Verification
Plugin activates with no fatals/notices.
Settings save and read correctly (capability + nonce enforced).
Uninstall removes intended data (and nothing else).
Run repo lint/tests (PHPUnit/PHPCS if present) and any JS build steps if the plugin ships assets.
Failure modes / debugging
Activation hook not firing:
hook registered incorrectly (not in main file scope), wrong main file path, or plugin is network-activated
Settings not saving:
settings not registered, wrong option group, missing capability, nonce failure
Security regressions:
nonce present but missing capability checks; or sanitized input not escaped on output
See:
references/debugging.md
Escalation
For canonical detail, consult the Plugin Handbook and security guidelines before inventing patterns.
Files
- ATTRIBUTION.mdAdded by AutoGineer906 B
- LICENSELicence file added by AutoGineer750 B
- SKILL.md3.9 KiB
- references/data-and-cron.md678 B
- references/debugging.md559 B
- references/lifecycle.md854 B
- references/security.md1.5 KiB
- references/settings-api.md703 B
- references/structure.md401 B
- scripts/detect_plugins.mjsScript2.8 KiB
references/security.md
Security guardrails (plugin work)
Use this file when making security fixes or when handling any input/output.
Nonces + permissions
Nonces help prevent CSRF, not authorization.
Always pair nonces with capability checks (
current_user_can()or a more specific capability).
Upstream reference:
Sanitization and escaping
Golden rule:
sanitize/validate on input, escape on output.
Practical rules:
never process the entire
$_POST/$_GETarray; read explicit keysuse
wp_unslash()before sanitizing when neededuse prepared statements for SQL; avoid interpolating user input into queries
Output escaping contexts
Escape at output, using the function that matches the context:
HTML text:
esc_html()HTML attribute:
esc_attr()URL:
esc_url()textarea:
esc_textarea()JavaScript strings:
esc_js()
For JSON data, prefer wp_json_encode() and pass data through WordPress script APIs such as wp_add_inline_script() or wp_localize_script().
For user-provided HTML, restrict allowed markup with wp_kses_post() or wp_kses() before output.
AJAX handlers
For
wp_ajax_*, verify nonce and check capabilities.For
wp_ajax_nopriv_*, assume unauthenticated attacker-controlled traffic.Return JSON with
wp_send_json_success()orwp_send_json_error().Do not expose private data from AJAX responses.
Common review guidance:
Requirements and compatibility
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta
“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.
Needs: Needs Node.js
The author says: Targets WordPress 7.0+ (PHP 7.4.0+). Filesystem-based agent with bash + node. Some workflows require WP-CLI.
Security
What our scanner noticed· Low risk
- Scripts that your agent may run
This skill includes scripts that your agent may run. Read them before you use it.
A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.
Attribution and licence
- Published by
- WordPress
- Publisher
- WordPress (Official)
- Source
- WordPress/agent-skills · skills/wp-plugin-development · commit 7374e6f
- Licence
- GNU General Public License v2.0 or later (redistribution allowed)
- LICENSE (added by AutoGineer from LICENSE)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
AutoGineer is not affiliated with or endorsed by WordPress or WordPress.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download wp-plugin-development.zip