Generated banner for Wp Plugin Directory Guidelines
Generated logo for Wp Plugin Directory Guidelines

Wp Plugin Directory Guidelines

WordPressOfficialPublished by WordPress

  • Skill
  • Review and audit
  • Software development
  • GPL-2.0-or-later
  • No issues found

From the author

Use when reviewing WordPress plugins for GPL compliance, checking license headers or compatibility, evaluating upsell/freemium/trialware patterns, validating plugin naming or trademark rules, checking plugin slugs, running Plugin Check (PCP) to validate plugin changes, interpreting its findings, understanding why a plugin was rejected from WordPress.org, or answering questions about the 18 WordPress.org Plugin Directory guidelines.
— the description by WordPress

AutoGineer summary

Written by AutoGineer from the skill’s own files, not by the author

This skill provides a structured framework for reviewing WordPress plugins to ensure compliance with the 18 official WordPress.org Plugin Directory guidelines. It covers critical areas such as GPL licensing, trademark and naming rules, trialware restrictions, and code quality standards. The skill supports both manual review processes and automated validation using the Plugin Check (PCP) tool, offering clear procedures for identifying violations, interpreting findings, and applying necessary fixes to meet submission requirements.

What it does

  • Audits plugin source code for GPL license compliance and valid header declarations.
  • Evaluates plugins against the 18 WordPress.org Plugin Directory guidelines.
  • Identifies common violations like trialware patterns, obfuscated code, or unauthorized external data collection.
  • Validates plugin naming conventions and trademark usage.
  • Integrates with Plugin Check (PCP) to automate testing and interpret technical findings.
  • Provides actionable remediation steps for rejected plugins.

When to use it

  • Before submitting a new plugin to the WordPress.org repository.
  • When troubleshooting why a plugin was rejected from the directory.
  • During a code audit to ensure third-party libraries are GPL-compatible.
  • When evaluating freemium or upsell models for compliance with directory policies.
  • To verify that plugin naming and slug structures meet official standards.

Advantages

  • Centralizes complex licensing and policy requirements into a single, actionable workflow.
  • Reduces the likelihood of rejection by identifying common pitfalls early.
  • Provides clear, evidence-based reporting for every finding.
  • Supports both manual policy checks and automated technical validation.

Usage examples

“Review my plugin's main file header for GPL compliance.”
The agent checks for the required License and License URI headers, verifies they match the GPL-2.0-or-later standard, and confirms the presence of the full license text or URI.
“Why was my plugin rejected for trialware?”
The agent cross-references the plugin's UI and code against the Guideline 5 checklist to identify restricted teaser patterns or proprietary feature gating.
“Run a Plugin Check audit on my current directory.”
The agent executes the Plugin Check tool, parses the output, and provides a summary of errors or warnings with specific instructions on how to resolve each issue.

Install

  1. Download the skill as a ZIP:

    https://mp-staging.autogineer.com/agent-skills/wordpress/wp-plugin-directory-guidelines/download
  2. Unzip it into the cross-client skills folder of your project:

    mkdir -p .agents/skills && unzip wp-plugin-directory-guidelines.zip -d .agents/skills

Documentation by WordPress

Overview

Authoritative reference for the 18 WordPress.org Plugin Directory guidelines. Covers GPL licensing, plugin naming/trademark rules, trialware restrictions, and all other submission requirements.

When to use

Use this skill when you need to:

  • Review a WordPress plugin for compliance with the WordPress.org Plugin Directory guidelines

  • Check GPL license compatibility for a plugin or its bundled libraries

  • Verify license headers in plugin files

  • Identify common guideline violations before submission

  • Answer questions about what is or is not allowed on WordPress.org

  • Evaluate premium/upsell flows, license checks, or freemium positioning

  • Review "teaser" or "preview" UI for trialware violations

  • Validate plugin changes with Plugin Check and assess errors or warnings in context

Inputs required

  • Plugin source code (or specific files to review)

  • Optional: plugin readme and plugin header metadata for naming and license checks

  • For automated validation: target plugin slug/path, local WordPress environment and command runner, available tests, and whether the task authorizes fixes or only review

Procedure

Scope the review to the request. Conceptual licensing or naming questions do not require a WordPress installation or a full audit.

  1. Check the plugin's license header against the Valid License Headers section below.

  2. Walk through the 18 Guidelines checklist, paying special attention to Guidelines 1, 4, 5, 7, 8, and 17.

  3. Confirm trialware/freemium compliance using the checklist in guideline-review-checklist.md (Guideline 5 section).

  4. For bundled third-party code, verify license compatibility against GPL-Compatible Licenses (Quick) below.

  5. Flag matches from Common GPL Violations (Quick) below.

  6. For edge cases, consult the detailed references and the GNU GPL FAQ.

  7. For source-code reviews or validation after changes, load Plugin Check validation: test, check, assess findings, apply authorized fixes, and retest. It includes commands, reporting requirements, and troubleshooting.

Verification

  • Report evidence for each conclusion using the licensing, naming, or Plugin Check reporting guidance below. Distinguish manual review, executed checks, and proposed next steps.

Failure modes / debugging

  • If automated validation is unavailable, continue manual review and use the prerequisite and coverage fallbacks in Plugin Check validation. Never report an unexecuted check as passed.

Escalation

Use official Plugin Check documentation for tool behavior and the directory guidelines for policy. Surface unresolved policy ambiguity, uncertain findings, and fixes outside the authorized scope for human review.

18-Guideline Review Checklist

Use the detailed, per-guideline checklist in guideline-review-checklist.md. Load this reference file only when a full guideline audit is requested.

GPL Compliance (Guideline 1 in Detail)

Use gpl-compliance.md for full license tables, compatibility nuances, and examples. Keep this inline section as a quick decision aid.

Verification (Licensing)
  • Every licensing-related issue must cite Guideline 1 and include the file path and exact license string.

  • Confirm compatibility claims against GPL-Compatible Licenses (Quick) and escalate ambiguous licenses.

  • When recommending a header correction, provide both literal License: and License URI: values from the examples below. Link to gpl-compliance.md for the compatibility basis; do not merely say to add a matching URI.

Failure modes (Licensing)
  • If a license is not clearly GPL-compatible, do not guess. Check the GNU license list.

  • For dual-license packages, verify both licenses and redistribution terms.

Quick Reference: WordPress GPL Requirements
  • WordPress is GPLv2 or later.

  • Plugins distributed on WordPress.org must be 100% GPL-compatible (code and assets).

  • Include a valid License: header and License URI: in the main plugin file.

  • Do not add restrictions that conflict with GPL freedoms.

Valid License Headers

GPL Versions Summary

VersionYearKey Addition
GPLv11989Base copyleft: share-alike for modifications
GPLv21991"Liberty or death" clause (Section 7), clearer distribution terms
GPLv32007Anti-tivoization, explicit patent grants, compatibility provisions

WordPress uses GPLv2 or later, meaning plugins can use GPLv2, GPLv3, or "GPLv2 or later".

For full license texts, see:

License Compliance Checklist

When reviewing a plugin, verify:

  • [ ] Main plugin file has a valid License: header (e.g., GPL-2.0-or-later, GPL-2.0+, GPLv2 or later)

  • [ ] Main plugin file has a License URI: header pointing to the GPL text

  • [ ] If bundled libraries exist, each has a GPL-compatible license

  • [ ] No "split licensing" (e.g., code GPL but premium features proprietary)

  • [ ] No additional restrictions beyond what GPL allows

  • [ ] No clauses restricting commercial use, modification, or redistribution

  • [ ] No obfuscated code (violates the spirit of source code availability)

Valid License Headers for WordPress Plugins

License: GPL-2.0-or-later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
License: GPL-3.0-or-later
License URI: https://www.gnu.org/licenses/gpl-3.0.html
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
GPL-Compatible Licenses (Quick)
  • Safe defaults: GPL-2.0-or-later, GPL-3.0-or-later.

  • Commonly accepted permissive families: MIT/Expat, BSD, ISC, zlib, Boost.

  • Conditional compatibility requires care: Apache-2.0 and MPL-2.0 (verify usage context).

  • For full accepted and rejected identifiers, use gpl-compliance.md.

Common GPL Violations (Quick)
  • Split licensing that restricts distributed code.

  • Obfuscated or non-corresponding source distribution.

  • Restrictive clauses (non-commercial, no-resale, forced backlink).

  • Bundling GPL-incompatible libraries or assets.

Plugin Naming Rules (Guideline 17)

Use naming-rules.md for full trademark lists, slug blocks, and naming examples. Keep this inline checklist for quick screening.

For naming reviews, cite Guideline 17, explain the applicable trademark or blocked-slug rule, and link to the reference. When proposing a replacement, give both name and slug and explicitly verify lowercase, hyphen separation, and the 50-character limit.

Naming Checklist (Quick)
  • Name is not a placeholder and has at least 5 alphanumeric characters.

  • Header name and readme name match.

  • Name is specific and function-related; avoid keyword stuffing.

  • Trademark/project names appear only after connectors like for, with, using, and.

  • No banned/discouraged terms or trademark portmanteaus.

  • Slug is lowercase, hyphenated, <= 50 chars, and avoids blocked terms.

Files

references/plugin-check.md

Plugin Check validation

Use Plugin Check (PCP) as a validation layer for plugin code reviews and completed changes. It complements the directory checklist, functional tests, and human review; it does not certify approval or correctness.

1. Identify the plugin and environment

  • Inspect the plugin entrypoint, declared WordPress/PHP versions, project instructions, and available lint/build/test commands before reviewing or changing code.

  • Identify the actual plugin slug or source path and a local WordPress installation containing the code being reviewed. Reuse the project's command runner (for example, its existing container wrapper) and configuration.

  • Use a local development/test site, not production. Plugin Check runtime checks execute plugin code.

  • Verify WP-CLI and WordPress are available, then inspect wp help plugin check to confirm supported options. Plugin Check supplies this command; it is not built into WP-CLI alone.

From the local WordPress root, these commands inspect prerequisites:

wp --info
wp core is-installed
wp plugin is-installed plugin-check
wp plugin is-active plugin-check
wp help plugin check

If local environment setup is within the task's authorization, install and activate PCP when missing:

wp plugin install plugin-check --activate

If already installed but inactive, use wp plugin activate plugin-check. Preserve an existing installation rather than reinstalling it. When running outside the WordPress root, add --path=/actual/wordpress/root or use the project's configured runner for every site command.

If tooling is unavailable, continue the source review and give concrete commands adapted to the known environment. Mark automated validation as not run, with the missing prerequisite. An unavailable check is not a pass.

Even when setup is excluded, include the complete follow-up sequence as instructions only: obtain WP-CLI and a local WordPress test site, make the target source available there, install/activate PCP if needed, inspect command help, then run the checks. Do not start at wp plugin check when its prerequisites are missing. For a future site with WP-CLI ready and PCP absent:

wp --path=/actual/wordpress/root core is-installed
wp --path=/actual/wordpress/root plugin install plugin-check --activate
wp --path=/actual/wordpress/root help plugin check
wp --path=/actual/wordpress/root plugin check /actual/path/to/plugin

Replace placeholders with known paths and the target plugin; label unknown paths explicitly. For an existing PCP installation use the inspection/activation steps above instead of reinstalling. Include the runtime loader below when runtime coverage is requested.

2. Run tests and checks

Run the relevant existing lint/tests and required asset builds. Then run Plugin Check against the actual changed plugin. Replace <plugin-slug> before executing:

wp plugin check <plugin-slug>

The article's wp plugin check meu-plugin uses meu-plugin as an example slug, not a fixed target. A source directory can also be checked with wp plugin check /actual/path/to/plugin within a working WordPress environment.

For structured findings, use wp plugin check <plugin-slug> --format=json when supported. Keep errors and warnings visible; do not add exclusions or ignore flags just to make validation pass. Record the command, target, scope, output, and execution failures.

WP-CLI runs static checks by default. Runtime checks also require the target plugin to be installed and active on the local test site. Verify its activation first:

wp plugin is-active <plugin-slug>

If inactive, activate it when local environment setup is authorized: wp plugin activate <plugin-slug>. Otherwise, report runtime checks as not run and label the result static-only. Loading PCP's cli.php alone does not guarantee runtime coverage.

To include runtime checks in a suitable local site, load PCP's actual cli.php before WordPress loads:

wp plugin check <plugin-slug> --require=/actual/path/to/plugin-check/cli.php

Resolve the installed Plugin Check directory instead of assuming the default content directory. If the loader is missing or runtime initialization fails, report that limitation; a static-only result must not be described as runtime validation.

3. Interpret findings before fixing

For each actionable finding, report:

  • Rule/code, severity, and file/line when provided.

  • Why the rule exists and what the source code actually does.

  • Whether it applies, including evidence for any possible false positive.

  • The smallest appropriate correction and any effect on plugin behavior.

Distinguish automated best-practice findings from directory-policy violations; cite the relevant guideline only when it applies. Do not mechanically remove warnings or trust a suggested fix without checking context.

For review-only requests, return the analysis and proposed fixes without modifying the plugin. When fixes are already authorized, apply relevant corrections within that scope without requiring another approval for each finding. Surface uncertain or out-of-scope changes for review.

Optional AI review context

If the installed Plugin Check version includes a prompts/ directory, read relevant prompts as supplementary review criteria alongside the plugin source and task context. Their availability varies; they do not replace the manual checklist or actual check results.

wp plugin check <plugin-slug> --ai is optional. Use it only when installed command help confirms support and the provider setup and use are already authorized. Otherwise, interpret the regular output in the current agent session. Treat AI suggestions about false positives as hypotheses requiring source evidence, not automatic grounds to dismiss findings.

4. Review, retest, and report

After fixes, inspect the diff, rerun affected tests, and repeat Plugin Check with the same target and coverage so results are comparable. Verify affected behavior locally, including permissions and data handling when relevant. Stop when relevant findings are resolved or remaining items have an explicit explanation or blocker; avoid repeated runs without a change or a new diagnostic purpose.

Report the target, actual commands, static/runtime coverage, test results, fixes, remaining findings with rule/code and file/line when available, and checks not performed. Separate a clean Plugin Check result from functional test results and manual policy conclusions. Leave sufficient evidence for human review.

Sources

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.

The author says: Targets WordPress 7.0+ (PHP 7.4.0+). Automated validation requires a local WordPress environment, WP-CLI, and Plugin Check.

Security

No issues found by our static scan· No issues found

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-directory-guidelines · 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.

Download ZIP

The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download wp-plugin-directory-guidelines.zip