Wp Plugin Directory Guidelines
WordPressOfficialPublished by WordPress
- Skill
- Review and audit
- Software development
- GPL-2.0-or-later
- No issues found
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
Download the skill as a ZIP:
https://mp-staging.autogineer.com/agent-skills/wordpress/wp-plugin-directory-guidelines/downloadUnzip 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.
Check the plugin's license header against the Valid License Headers section below.
Walk through the 18 Guidelines checklist, paying special attention to Guidelines 1, 4, 5, 7, 8, and 17.
Confirm trialware/freemium compliance using the checklist in guideline-review-checklist.md (Guideline 5 section).
For bundled third-party code, verify license compatibility against GPL-Compatible Licenses (Quick) below.
Flag matches from Common GPL Violations (Quick) below.
For edge cases, consult the detailed references and the GNU GPL FAQ.
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:andLicense 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 andLicense URI:in the main plugin file.Do not add restrictions that conflict with GPL freedoms.
Valid License Headers
GPL Versions Summary
| Version | Year | Key Addition |
|---|---|---|
| GPLv1 | 1989 | Base copyleft: share-alike for modifications |
| GPLv2 | 1991 | "Liberty or death" clause (Section 7), clearer distribution terms |
| GPLv3 | 2007 | Anti-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.htmlLicense: GPL-3.0-or-later
License URI: https://www.gnu.org/licenses/gpl-3.0.htmlLicense: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.htmlGPL-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
- ATTRIBUTION.mdAdded by AutoGineer924 B
- LICENSELicence file added by AutoGineer750 B
- SKILL.md7.9 KiB
- references/gpl-compliance.md10.1 KiB
- references/guideline-review-checklist.md25.0 KiB
- references/naming-rules.md6.8 KiB
- references/plugin-check.md7.1 KiB
references/gpl-compliance.md
GPL Compliance (Guideline 1 in Detail)
Verification (Licensing)
Every licensing-related issue must cite Guideline 1 and include the specific file/license value found.
License compatibility claims must match the GPL-Compatible Licenses table or the GNU GPL-Compatible License List.
Use local
references/files when present; otherwise use authoritative external URLs.
Failure modes (Licensing)
If a license is not listed in the compatibility tables, do not guess; check the GNU license list or escalate.
If a plugin uses a dual-license model, verify both licenses independently.
Quick Reference: WordPress GPL Requirements
WordPress is licensed under GPLv2 or later. All plugins distributed via WordPress.org must be:
100% GPL-compatible (code, images, CSS, and all assets)
Include a license declaration in the main plugin file header
Include the full license text or a URI reference to it
Not restrict freedoms granted by the GPL
GPL Versions Summary
| Version | Year | Key Addition |
|---|---|---|
| GPLv1 | 1989 | Base copyleft: share-alike for modifications |
| GPLv2 | 1991 | Patent clause (Section 7), clearer distribution terms |
| GPLv3 | 2007 | Anti-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.htmlLicense: GPL-3.0-or-later
License URI: https://www.gnu.org/licenses/gpl-3.0.htmlLicense: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.htmlAccepted Licenses by the WordPress.org Plugin Directory
Source: Plugin Check - License_Utils trait
The Plugin Directory accepts licenses matching these identifiers (after normalization). The validation uses is_license_gpl_compatible() with the pattern:
GPL|GNU|LGPL|MIT|FreeBSD|New BSD|BSD-3-Clause|BSD 3 Clause|OpenLDAP|Expat|Apache2|MPL20|ISC|CC0|Unlicense|WTFPL|Artistic|Boost|NCSA|ZLib|X11GPL Family (recommended)
| Accepted Values | SPDX Identifier | License URI |
|---|---|---|
GPL-2.0-or-later, GPLv2 or later, GPL-2.0+ | GPL-2.0-or-later | https://www.gnu.org/licenses/gpl-2.0.html |
GPL-2.0-only, GPLv2 | GPL-2.0-only | https://www.gnu.org/licenses/gpl-2.0.html |
GPL-3.0-or-later, GPLv3 or later, GPL-3.0+ | GPL-3.0-or-later | https://www.gnu.org/licenses/gpl-3.0.html |
GPL-3.0-only, GPLv3 | GPL-3.0-only | https://www.gnu.org/licenses/gpl-3.0.html |
GNU General Public License (any version text) | — | — |
LGPL-2.1, LGPLv2.1 | LGPL-2.1-or-later | https://www.gnu.org/licenses/lgpl-2.1.html |
LGPL-3.0, LGPLv3 | LGPL-3.0-or-later | https://www.gnu.org/licenses/lgpl-3.0.html |
Other GPL-Compatible Licenses Accepted
| Identifier | License Name | Notes |
|---|---|---|
MIT | MIT License | Permissive, compatible with GPLv2 and GPLv3 |
Expat | Expat License | Functionally equivalent to MIT |
X11 | X11 License | Permissive; similar to Expat but with extra X Consortium clause |
FreeBSD | BSD 2-Clause (FreeBSD) | Permissive, compatible with GPLv2 and GPLv3 |
New BSD, BSD-3-Clause, BSD 3 Clause | BSD 3-Clause | Permissive, compatible with GPLv2 and GPLv3 |
Apache2, Apache-2.0 | Apache License 2.0 | Compatible with GPLv3 only (NOT GPLv2) |
MPL20, MPL-2.0 | Mozilla Public License 2.0 | Compatible via Section 3.3 |
ISC | ISC License | Permissive, compatible with GPLv2 and GPLv3 |
OpenLDAP | OpenLDAP Public License v2.7 | Permissive; older v2.3 is NOT compatible |
CC0 | Creative Commons Zero | Public domain dedication |
Unlicense | The Unlicense | Public domain dedication |
WTFPL | Do What The F*** You Want To Public License | Permissive, accepted in full text form too |
Artistic | Artistic License 2.0 | Compatible via relicensing option in §4(c)(ii); Artistic 1.0 is NOT compatible |
Boost | Boost Software License 1.0 | Lax permissive, compatible with GPLv2 and GPLv3 |
NCSA | NCSA/University of Illinois Open Source License | Based on Expat + modified BSD; compatible with GPLv2 and GPLv3 |
ZLib | zlib License | Permissive, compatible with GPLv2 and GPLv3 |
Licenses NOT Accepted
Any license not matching the identifiers above will be rejected. Common rejections include:
Proprietary / All Rights Reserved
Creative Commons BY-NC (NonCommercial restriction)
Creative Commons BY-ND (NoDerivatives restriction)
Creative Commons BY-SA (v3.0 and earlier; v4.0 is one-way compatible with GPLv3 but not in the Plugin Check regex)
JSON License ("shall be used for Good, not Evil")
SSPL (Server Side Public License)
BSL (Business Source License)
Commons Clause
Elastic License
Original BSD (4-clause) — advertising clause incompatible with GPL
MPL-1.0 — only MPL 2.0 is GPL-compatible
EPL (Eclipse Public License) — weak copyleft, incompatible with GPL
EUPL (European Union Public License) — copyleft incompatible with GPL without multi-step relicensing
Artistic License 1.0 — vague wording makes it incompatible; use 2.0 instead
OpenLDAP v2.3 (old) — incompatible; v2.7 is accepted
Common GPL Violations in Plugin Review
1. Split Licensing
Plugin claims GPL but restricts premium features:
"Free version is GPL, premium is proprietary" - VIOLATION
All code distributed must be GPL-compatible
2. Obfuscated Code
Minified JavaScript is acceptable IF source is provided
PHP obfuscation (ionCube, Zend Guard, etc.) - VIOLATION (prevents exercise of GPL freedoms)
Encoded/encrypted PHP - VIOLATION
3. Missing License Information
No license header in main file
No license file in the package
Bundled libraries without license documentation
4. Restrictive Clauses
"You may not sell this plugin" - VIOLATION (GPL allows commercial redistribution)
"You may not remove author credits" - Acceptable under GPLv3 Section 7(b), but not as blanket restriction
"For personal use only" - VIOLATION
"You must link back to our site" - VIOLATION (additional restriction)
5. Incompatible Library Inclusion
Including code under GPL-incompatible licenses
Using assets (images, fonts, CSS) under restrictive licenses
Key GPL Concepts for Reviewers
Distribution vs. Private Use
GPL obligations activate upon distribution (conveying to others)
Private modifications do NOT trigger GPL requirements
Publishing on WordPress.org IS distribution
Derivative Works
A WordPress plugin that uses WordPress APIs is generally considered a derivative work
Plugins that merely aggregate with WordPress may have different considerations
When in doubt, the safe approach is GPL-compatible licensing
Source Code Requirement
GPL requires access to "complete corresponding source code"
For WordPress plugins: all PHP, JS source files, build scripts
Minified files must have corresponding source available
The "Or Later" Clause
"GPLv2 or later" allows users to choose GPLv2 OR any later version
"GPLv2 only" means strictly GPLv2 (less flexible but valid)
WordPress itself uses "GPLv2 or later"
Violation Reporting Workflow
When a GPL violation is identified:
Document the violation precisely:
Product name and version
Distributor information
Specific license terms violated
Evidence (screenshots, code snippets)
Contact the copyright holder first
Report to FSF if the code is FSF-copyrighted: [email protected]
For WordPress.org plugins: flag through the plugin review process
Frequently Asked Questions
For comprehensive GPL FAQ answers, see the GNU GPL FAQ.
Common questions during plugin review:
Can a plugin charge money and still be GPL? Yes. GPL allows charging for distribution. The requirement is that recipients get GPL freedoms (use, modify, redistribute).
Does a plugin need to include the full GPL text? GPLv2 Section 1 and GPLv3 Section 4 require giving recipients a copy of the license. A URI reference in the header plus including a LICENSE file is standard practice.
Can a plugin restrict who uses it? No. GPL explicitly prohibits additional restrictions on recipients. "For personal use only" or "non-commercial" clauses are incompatible.
Is minified JS without source a violation? If the plugin only distributes minified JS without any way to obtain the source, this conflicts with GPL's source code requirements. The source should be available (in the package or via a repository).
Can a plugin use CC-BY-SA images? CC-BY-SA 4.0 is one-way compatible with GPLv3 (CC-BY-SA material can be included in GPLv3 works). CC-BY-SA 3.0 is NOT compatible.
What about fonts bundled in plugins? Fonts must be under GPL-compatible licenses. Common acceptable font licenses: OFL (SIL Open Font License), Apache 2.0 (with GPLv3), MIT, GPL with font exception.
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