heraspec 0.1.12 → 0.1.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +22 -22
- package/README.md +188 -103
- package/bin/heraspec.js +4805 -1122
- package/bin/heraspec.js.map +4 -4
- package/dist/core/templates/skills/CHANGELOG.md +117 -117
- package/dist/core/templates/skills/README-template.md +58 -58
- package/dist/core/templates/skills/README.md +38 -38
- package/dist/core/templates/skills/content-optimization-skill.md +104 -104
- package/dist/core/templates/skills/data/design-systems.csv +54 -0
- package/dist/core/templates/skills/data/pages-proposed.csv +21 -21
- package/dist/core/templates/skills/data/pages.csv +9 -9
- package/dist/core/templates/skills/data/typography.csv +57 -57
- package/dist/core/templates/skills/deploy-documentation-skill.md +408 -0
- package/dist/core/templates/skills/design-system-skill.md +176 -0
- package/dist/core/templates/skills/documents/templates/documentation-landing-page.html +63 -63
- package/dist/core/templates/skills/documents/templates/documentation.html +49 -49
- package/dist/core/templates/skills/documents/templates/landing-script.js +38 -38
- package/dist/core/templates/skills/documents/templates/landing-style.css +158 -158
- package/dist/core/templates/skills/documents/templates/script.js +56 -56
- package/dist/core/templates/skills/documents/templates/style.css +155 -155
- package/dist/core/templates/skills/documents/templates/technical-doc-template.md +16 -16
- package/dist/core/templates/skills/documents/templates/user-guide-template.md +16 -16
- package/dist/core/templates/skills/documents-skill.md +104 -104
- package/dist/core/templates/skills/e2e-test-skill.md +119 -119
- package/dist/core/templates/skills/git-embed-skill.md +57 -0
- package/dist/core/templates/skills/integration-test-skill.md +118 -118
- package/dist/core/templates/skills/knowledge/README.md +63 -0
- package/dist/core/templates/skills/knowledge/design-systems/airbnb/DESIGN.md +246 -0
- package/dist/core/templates/skills/knowledge/design-systems/airtable/DESIGN.md +89 -0
- package/dist/core/templates/skills/knowledge/design-systems/apple/DESIGN.md +313 -0
- package/dist/core/templates/skills/knowledge/design-systems/bmw/DESIGN.md +180 -0
- package/dist/core/templates/skills/knowledge/design-systems/cal/DESIGN.md +259 -0
- package/dist/core/templates/skills/knowledge/design-systems/claude/DESIGN.md +312 -0
- package/dist/core/templates/skills/knowledge/design-systems/clay/DESIGN.md +304 -0
- package/dist/core/templates/skills/knowledge/design-systems/clickhouse/DESIGN.md +281 -0
- package/dist/core/templates/skills/knowledge/design-systems/cohere/DESIGN.md +266 -0
- package/dist/core/templates/skills/knowledge/design-systems/coinbase/DESIGN.md +129 -0
- package/dist/core/templates/skills/knowledge/design-systems/composio/DESIGN.md +307 -0
- package/dist/core/templates/skills/knowledge/design-systems/cursor/DESIGN.md +309 -0
- package/dist/core/templates/skills/knowledge/design-systems/elevenlabs/DESIGN.md +265 -0
- package/dist/core/templates/skills/knowledge/design-systems/expo/DESIGN.md +281 -0
- package/dist/core/templates/skills/knowledge/design-systems/figma/DESIGN.md +220 -0
- package/dist/core/templates/skills/knowledge/design-systems/framer/DESIGN.md +246 -0
- package/dist/core/templates/skills/knowledge/design-systems/hashicorp/DESIGN.md +278 -0
- package/dist/core/templates/skills/knowledge/design-systems/ibm/DESIGN.md +332 -0
- package/dist/core/templates/skills/knowledge/design-systems/index.json +72 -0
- package/dist/core/templates/skills/knowledge/design-systems/intercom/DESIGN.md +146 -0
- package/dist/core/templates/skills/knowledge/design-systems/kraken/DESIGN.md +125 -0
- package/dist/core/templates/skills/knowledge/design-systems/linear.app/DESIGN.md +367 -0
- package/dist/core/templates/skills/knowledge/design-systems/lovable/DESIGN.md +298 -0
- package/dist/core/templates/skills/knowledge/design-systems/minimax/DESIGN.md +257 -0
- package/dist/core/templates/skills/knowledge/design-systems/mintlify/DESIGN.md +326 -0
- package/dist/core/templates/skills/knowledge/design-systems/miro/DESIGN.md +108 -0
- package/dist/core/templates/skills/knowledge/design-systems/mistral.ai/DESIGN.md +261 -0
- package/dist/core/templates/skills/knowledge/design-systems/mongodb/DESIGN.md +266 -0
- package/dist/core/templates/skills/knowledge/design-systems/notion/DESIGN.md +309 -0
- package/dist/core/templates/skills/knowledge/design-systems/nvidia/DESIGN.md +293 -0
- package/dist/core/templates/skills/knowledge/design-systems/ollama/DESIGN.md +267 -0
- package/dist/core/templates/skills/knowledge/design-systems/opencode.ai/DESIGN.md +281 -0
- package/dist/core/templates/skills/knowledge/design-systems/pinterest/DESIGN.md +230 -0
- package/dist/core/templates/skills/knowledge/design-systems/posthog/DESIGN.md +256 -0
- package/dist/core/templates/skills/knowledge/design-systems/raycast/DESIGN.md +268 -0
- package/dist/core/templates/skills/knowledge/design-systems/replicate/DESIGN.md +261 -0
- package/dist/core/templates/skills/knowledge/design-systems/resend/DESIGN.md +303 -0
- package/dist/core/templates/skills/knowledge/design-systems/revolut/DESIGN.md +185 -0
- package/dist/core/templates/skills/knowledge/design-systems/runwayml/DESIGN.md +244 -0
- package/dist/core/templates/skills/knowledge/design-systems/sanity/DESIGN.md +357 -0
- package/dist/core/templates/skills/knowledge/design-systems/sentry/DESIGN.md +262 -0
- package/dist/core/templates/skills/knowledge/design-systems/spacex/DESIGN.md +194 -0
- package/dist/core/templates/skills/knowledge/design-systems/spotify/DESIGN.md +246 -0
- package/dist/core/templates/skills/knowledge/design-systems/stripe/DESIGN.md +322 -0
- package/dist/core/templates/skills/knowledge/design-systems/supabase/DESIGN.md +255 -0
- package/dist/core/templates/skills/knowledge/design-systems/superhuman/DESIGN.md +252 -0
- package/dist/core/templates/skills/knowledge/design-systems/together.ai/DESIGN.md +263 -0
- package/dist/core/templates/skills/knowledge/design-systems/uber/DESIGN.md +295 -0
- package/dist/core/templates/skills/knowledge/design-systems/vercel/DESIGN.md +310 -0
- package/dist/core/templates/skills/knowledge/design-systems/voltagent/DESIGN.md +323 -0
- package/dist/core/templates/skills/knowledge/design-systems/warp/DESIGN.md +253 -0
- package/dist/core/templates/skills/knowledge/design-systems/webflow/DESIGN.md +92 -0
- package/dist/core/templates/skills/knowledge/design-systems/wise/DESIGN.md +173 -0
- package/dist/core/templates/skills/knowledge/design-systems/x.ai/DESIGN.md +257 -0
- package/dist/core/templates/skills/knowledge/design-systems/zapier/DESIGN.md +328 -0
- package/dist/core/templates/skills/knowledge/frameworks/php/codeigniter/rise-cms/profile.json +27 -0
- package/dist/core/templates/skills/knowledge/frameworks/php/codeigniter/rise-cms/structure.md +137 -0
- package/dist/core/templates/skills/knowledge/frameworks/php/laravel/botble/profile.json +39 -0
- package/dist/core/templates/skills/knowledge/frameworks/php/laravel/botble/structure.md +208 -0
- package/dist/core/templates/skills/knowledge/frameworks/php/wordpress/core/profile.json +51 -0
- package/dist/core/templates/skills/knowledge/frameworks/php/wordpress/core/structure.md +369 -0
- package/dist/core/templates/skills/knowledge/index.json +65 -0
- package/dist/core/templates/skills/module-codebase-skill.md +110 -110
- package/dist/core/templates/skills/plugin-directory-skill.md +396 -396
- package/dist/core/templates/skills/project-memory-skill.md +222 -0
- package/dist/core/templates/skills/project-memory-skill.vi.md +223 -0
- package/dist/core/templates/skills/scripts/CODE_EXPLANATION.md +394 -394
- package/dist/core/templates/skills/scripts/SEARCH_ALGORITHMS_COMPARISON.md +421 -421
- package/dist/core/templates/skills/scripts/SEARCH_MODES_GUIDE.md +238 -238
- package/dist/core/templates/skills/scripts/__pycache__/core.cpython-311.pyc +0 -0
- package/dist/core/templates/skills/scripts/core.py +391 -385
- package/dist/core/templates/skills/scripts/search.py +1 -1
- package/dist/core/templates/skills/smart-explore-skill.md +141 -0
- package/dist/core/templates/skills/sourcecode-analyzer-skill.md +210 -0
- package/dist/core/templates/skills/sourcecode-analyzer-skill.vi.md +210 -0
- package/dist/core/templates/skills/suggestion-skill.md +118 -118
- package/dist/core/templates/skills/templates/accessibility-checklist.md +40 -40
- package/dist/core/templates/skills/templates/example-prompt-full-theme.md +333 -333
- package/dist/core/templates/skills/templates/page-types-guide.md +338 -338
- package/dist/core/templates/skills/templates/pages-proposed-summary.md +273 -273
- package/dist/core/templates/skills/templates/pre-delivery-checklist.md +42 -42
- package/dist/core/templates/skills/templates/prompt-template-full-theme.md +313 -313
- package/dist/core/templates/skills/templates/responsive-design.md +40 -40
- package/dist/core/templates/skills/ui-ux-skill.md +595 -584
- package/dist/core/templates/skills/unit-test-skill.md +111 -111
- package/dist/core/templates/skills/ux-element/templates/Controller.php +50 -50
- package/dist/core/templates/skills/ux-element/templates/Shortcode.php +23 -23
- package/dist/core/templates/skills/ux-element/templates/Template.html +20 -20
- package/dist/core/templates/skills/ux-element/templates/Thumbnail.svg +8 -8
- package/dist/core/templates/skills/ux-element/templates/View.php +21 -21
- package/dist/core/templates/skills/ux-element-skill.md +83 -83
- package/dist/core/templates/skills/wordpress-plugin-check-skill.md +151 -76
- package/dist/core/templates/skills/wordpress-plugin-standard/templates/admin-dashboard.php +47 -47
- package/dist/core/templates/skills/wordpress-plugin-standard/templates/admin-settings.php +60 -60
- package/dist/core/templates/skills/wordpress-plugin-standard/templates/assets/admin-css.css +22 -22
- package/dist/core/templates/skills/wordpress-plugin-standard/templates/assets/admin-js.js +15 -15
- package/dist/core/templates/skills/wordpress-plugin-standard/templates/plugin-main.php +169 -169
- package/dist/core/templates/skills/wordpress-plugin-standard/templates/readme.txt +41 -41
- package/dist/core/templates/skills/wordpress-plugin-standard/templates/uninstall.php +21 -21
- package/dist/core/templates/skills/wordpress-plugin-standard-skill.md +100 -100
- package/dist/index.js +4068 -278
- package/package.json +75 -72
|
@@ -1,396 +1,396 @@
|
|
|
1
|
-
# Skill: WordPress Plugin Directory Compliance Check
|
|
2
|
-
|
|
3
|
-
This skill provides a systematic approach to review WordPress plugin source code against the [WordPress Plugin Directory Guidelines](https://developer.wordpress.org/plugins/wordpress-org/detailed-plugin-guidelines/).
|
|
4
|
-
|
|
5
|
-
## Purpose
|
|
6
|
-
|
|
7
|
-
To ensure a WordPress plugin fully complies with all 18 guidelines before submission to WordPress.org Plugin Directory, identifying issues and providing detailed recommendations for user approval before making changes.
|
|
8
|
-
|
|
9
|
-
## Prerequisites
|
|
10
|
-
|
|
11
|
-
1. **Identify Plugin Root**: The agent must identify the root directory of the WordPress plugin being reviewed.
|
|
12
|
-
2. **Plugin Main File**: Locate the main plugin file (with `Plugin Name:` header).
|
|
13
|
-
3. **Readme File**: Check for `readme.txt` or `README.md`.
|
|
14
|
-
|
|
15
|
-
## Required Variables
|
|
16
|
-
|
|
17
|
-
- `{{plugin_path}}`: Absolute path to the plugin root directory.
|
|
18
|
-
- `{{plugin_slug}}`: The plugin's slug (folder name).
|
|
19
|
-
|
|
20
|
-
## Process Flow
|
|
21
|
-
|
|
22
|
-
### Step 1: Gather Plugin Information
|
|
23
|
-
|
|
24
|
-
1. **Find Main Plugin File**:
|
|
25
|
-
```bash
|
|
26
|
-
grep -l "Plugin Name:" {{plugin_path}}/*.php
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
2. **Read Plugin Headers**:
|
|
30
|
-
- Plugin Name
|
|
31
|
-
- Version
|
|
32
|
-
- Author
|
|
33
|
-
- License
|
|
34
|
-
- Text Domain
|
|
35
|
-
|
|
36
|
-
3. **Scan File Structure**:
|
|
37
|
-
```bash
|
|
38
|
-
find {{plugin_path}} -type f \( -name "*.php" -o -name "*.js" -o -name "*.css" \) | head -50
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
### Step 2: Review All 18 Guidelines
|
|
42
|
-
|
|
43
|
-
Perform systematic checks on each guideline:
|
|
44
|
-
|
|
45
|
-
---
|
|
46
|
-
|
|
47
|
-
#### **Guideline 1: GPL Compatibility**
|
|
48
|
-
> "Plugins must be compatible with the GNU General Public License"
|
|
49
|
-
|
|
50
|
-
**Checks:**
|
|
51
|
-
- [ ] Main plugin file has License header?
|
|
52
|
-
- [ ] License is GPL-compatible? (GPLv2 or later recommended)
|
|
53
|
-
- [ ] Third-party libraries have GPL-compatible licenses?
|
|
54
|
-
- [ ] Images and fonts have clear licensing?
|
|
55
|
-
|
|
56
|
-
**Commands:**
|
|
57
|
-
```bash
|
|
58
|
-
grep -r "License:" --include="*.php" {{plugin_path}}
|
|
59
|
-
grep -r "@license" --include="*.php" {{plugin_path}}
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
---
|
|
63
|
-
|
|
64
|
-
#### **Guideline 2: Developer Responsibility**
|
|
65
|
-
> "Developers are responsible for the contents and actions of their plugins"
|
|
66
|
-
|
|
67
|
-
**Checks:**
|
|
68
|
-
- [ ] No code intentionally bypassing guidelines?
|
|
69
|
-
- [ ] All files have confirmed licensing?
|
|
70
|
-
- [ ] Third-party APIs comply with terms of use?
|
|
71
|
-
|
|
72
|
-
---
|
|
73
|
-
|
|
74
|
-
#### **Guideline 3: Stable Version Availability**
|
|
75
|
-
> "A stable version of a plugin must be available from its WordPress Plugin Directory page"
|
|
76
|
-
|
|
77
|
-
**Checks:**
|
|
78
|
-
- [ ] Code on SVN/directory is the latest version?
|
|
79
|
-
- [ ] Not distributing code via alternate methods without updating directory?
|
|
80
|
-
|
|
81
|
-
---
|
|
82
|
-
|
|
83
|
-
#### **Guideline 4: Human Readable Code**
|
|
84
|
-
> "Code must be (mostly) human readable"
|
|
85
|
-
|
|
86
|
-
**Checks:**
|
|
87
|
-
- [ ] No obfuscated code (p,a,c,k,e,r, uglify mangle)?
|
|
88
|
-
- [ ] No obscure variable names ($z12sdf813d)?
|
|
89
|
-
- [ ] Source code or link to development location available in readme?
|
|
90
|
-
- [ ] Build tools documented?
|
|
91
|
-
|
|
92
|
-
**Commands:**
|
|
93
|
-
```bash
|
|
94
|
-
# Find eval() that may contain obfuscated code
|
|
95
|
-
grep -r "eval(" --include="*.php" --include="*.js" {{plugin_path}}
|
|
96
|
-
# Find strange variable names
|
|
97
|
-
grep -rE "\$[a-z][0-9]{3,}" --include="*.php" {{plugin_path}}
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
---
|
|
101
|
-
|
|
102
|
-
#### **Guideline 5: No Trialware**
|
|
103
|
-
> "Trialware is not permitted"
|
|
104
|
-
|
|
105
|
-
**Checks:**
|
|
106
|
-
- [ ] No features locked behind payment?
|
|
107
|
-
- [ ] No time-based trial limits?
|
|
108
|
-
- [ ] No quota restrictions?
|
|
109
|
-
- [ ] No sandbox-only API access?
|
|
110
|
-
|
|
111
|
-
**Commands:**
|
|
112
|
-
```bash
|
|
113
|
-
grep -ri "trial" --include="*.php" {{plugin_path}}
|
|
114
|
-
grep -ri "expired" --include="*.php" {{plugin_path}}
|
|
115
|
-
grep -ri "license_key" --include="*.php" {{plugin_path}}
|
|
116
|
-
grep -ri "is_pro" --include="*.php" {{plugin_path}}
|
|
117
|
-
```
|
|
118
|
-
|
|
119
|
-
---
|
|
120
|
-
|
|
121
|
-
#### **Guideline 6: Software as a Service**
|
|
122
|
-
> "Software as a Service is permitted"
|
|
123
|
-
|
|
124
|
-
**Checks:**
|
|
125
|
-
- [ ] Service provides real functionality, not just license validation?
|
|
126
|
-
- [ ] Service documented in readme?
|
|
127
|
-
- [ ] Link to Terms of Use provided?
|
|
128
|
-
- [ ] Not just a storefront?
|
|
129
|
-
|
|
130
|
-
---
|
|
131
|
-
|
|
132
|
-
#### **Guideline 7: User Tracking Consent**
|
|
133
|
-
> "Plugins may not track users without their consent"
|
|
134
|
-
|
|
135
|
-
**Checks:**
|
|
136
|
-
- [ ] No automatic data collection without consent?
|
|
137
|
-
- [ ] Clear opt-in mechanism?
|
|
138
|
-
- [ ] Privacy policy documented in readme?
|
|
139
|
-
- [ ] Not misleading users to submit information?
|
|
140
|
-
- [ ] Not offloading unrelated assets?
|
|
141
|
-
- [ ] No undocumented external data usage?
|
|
142
|
-
|
|
143
|
-
**Commands:**
|
|
144
|
-
```bash
|
|
145
|
-
# Find external requests
|
|
146
|
-
grep -ri "wp_remote" --include="*.php" {{plugin_path}}
|
|
147
|
-
grep -ri "curl_" --include="*.php" {{plugin_path}}
|
|
148
|
-
grep -ri "file_get_contents.*http" --include="*.php" {{plugin_path}}
|
|
149
|
-
# Find tracking
|
|
150
|
-
grep -ri "analytics" --include="*.php" --include="*.js" {{plugin_path}}
|
|
151
|
-
grep -ri "tracking" --include="*.php" --include="*.js" {{plugin_path}}
|
|
152
|
-
```
|
|
153
|
-
|
|
154
|
-
---
|
|
155
|
-
|
|
156
|
-
#### **Guideline 8: No External Executable Code**
|
|
157
|
-
> "Plugins may not send executable code via third-party systems"
|
|
158
|
-
|
|
159
|
-
**Checks:**
|
|
160
|
-
- [ ] Not serving updates from external servers?
|
|
161
|
-
- [ ] Not installing plugins/themes/add-ons from outside?
|
|
162
|
-
- [ ] Not calling CDN for JS/CSS (except fonts)?
|
|
163
|
-
- [ ] Not using third-party services to manage data lists?
|
|
164
|
-
- [ ] Not using iframes in admin pages?
|
|
165
|
-
|
|
166
|
-
**Commands:**
|
|
167
|
-
```bash
|
|
168
|
-
grep -ri "cdn" --include="*.php" --include="*.js" {{plugin_path}}
|
|
169
|
-
grep -ri "<iframe" --include="*.php" {{plugin_path}}
|
|
170
|
-
grep -ri "wp_remote_get.*\.js" --include="*.php" {{plugin_path}}
|
|
171
|
-
```
|
|
172
|
-
|
|
173
|
-
---
|
|
174
|
-
|
|
175
|
-
#### **Guideline 9: Legal and Ethical Conduct**
|
|
176
|
-
> "Developers and their plugins must not do anything illegal, dishonest, or morally offensive"
|
|
177
|
-
|
|
178
|
-
**Checks:**
|
|
179
|
-
- [ ] No keyword stuffing?
|
|
180
|
-
- [ ] No fake reviews/sockpuppeting?
|
|
181
|
-
- [ ] No copying others' plugins?
|
|
182
|
-
- [ ] No automatic legal compliance claims?
|
|
183
|
-
- [ ] No unauthorized server resource usage (botnet, crypto-mining)?
|
|
184
|
-
|
|
185
|
-
---
|
|
186
|
-
|
|
187
|
-
#### **Guideline 10: External Links and Credits**
|
|
188
|
-
> "Plugins may not embed external links or credits on the public site without explicitly asking the user's permission"
|
|
189
|
-
|
|
190
|
-
**Checks:**
|
|
191
|
-
- [ ] "Powered By" links are optional and default OFF?
|
|
192
|
-
- [ ] Users must opt-in to display credits?
|
|
193
|
-
- [ ] Plugin doesn't require credit for functionality?
|
|
194
|
-
|
|
195
|
-
**Commands:**
|
|
196
|
-
```bash
|
|
197
|
-
grep -ri "powered by" --include="*.php" {{plugin_path}}
|
|
198
|
-
grep -ri "credit" --include="*.php" {{plugin_path}}
|
|
199
|
-
grep -ri "footer_text" --include="*.php" {{plugin_path}}
|
|
200
|
-
```
|
|
201
|
-
|
|
202
|
-
---
|
|
203
|
-
|
|
204
|
-
#### **Guideline 11: Admin Dashboard Experience**
|
|
205
|
-
> "Plugins should not hijack the admin dashboard"
|
|
206
|
-
|
|
207
|
-
**Checks:**
|
|
208
|
-
- [ ] Upgrade prompts are limited and contextual?
|
|
209
|
-
- [ ] Notices are dismissible?
|
|
210
|
-
- [ ] Error messages have resolution guidance?
|
|
211
|
-
- [ ] No excessive dashboard advertising?
|
|
212
|
-
- [ ] No tracking in ads (related to Guideline 7)?
|
|
213
|
-
|
|
214
|
-
**Commands:**
|
|
215
|
-
```bash
|
|
216
|
-
grep -ri "admin_notice" --include="*.php" {{plugin_path}}
|
|
217
|
-
grep -ri "is-dismissible" --include="*.php" {{plugin_path}}
|
|
218
|
-
grep -ri "upgrade" --include="*.php" {{plugin_path}}
|
|
219
|
-
```
|
|
220
|
-
|
|
221
|
-
---
|
|
222
|
-
|
|
223
|
-
#### **Guideline 12: No Spam in Public Pages**
|
|
224
|
-
> "Public facing pages on WordPress.org (readmes) must not spam"
|
|
225
|
-
|
|
226
|
-
**Checks in readme.txt:**
|
|
227
|
-
- [ ] No more than 5 tags?
|
|
228
|
-
- [ ] No undisclosed affiliate links?
|
|
229
|
-
- [ ] No keyword stuffing?
|
|
230
|
-
- [ ] No competitor tags?
|
|
231
|
-
- [ ] Links are direct, not redirected/cloaked?
|
|
232
|
-
|
|
233
|
-
---
|
|
234
|
-
|
|
235
|
-
#### **Guideline 13: WordPress Default Libraries**
|
|
236
|
-
> "Plugins must use WordPress' default libraries"
|
|
237
|
-
|
|
238
|
-
**Checks:**
|
|
239
|
-
- [ ] Not including separate jQuery?
|
|
240
|
-
- [ ] Not including libraries already in WordPress?
|
|
241
|
-
- [ ] Using `wp_enqueue_script()` with standard handles?
|
|
242
|
-
|
|
243
|
-
**WordPress Default Libraries:**
|
|
244
|
-
- jQuery, jQuery UI
|
|
245
|
-
- Backbone.js, Underscore.js
|
|
246
|
-
- React, ReactDOM
|
|
247
|
-
- Lodash
|
|
248
|
-
- Moment.js
|
|
249
|
-
- PHPMailer, PHPass
|
|
250
|
-
|
|
251
|
-
**Commands:**
|
|
252
|
-
```bash
|
|
253
|
-
find {{plugin_path}} -name "jquery*.js" -o -name "jquery*.min.js"
|
|
254
|
-
find {{plugin_path}} -name "underscore*.js" -o -name "backbone*.js"
|
|
255
|
-
find {{plugin_path}} -name "react*.js" -o -name "moment*.js"
|
|
256
|
-
```
|
|
257
|
-
|
|
258
|
-
---
|
|
259
|
-
|
|
260
|
-
#### **Guideline 14: Commit Frequency**
|
|
261
|
-
> "Frequent commits to a plugin should be avoided"
|
|
262
|
-
|
|
263
|
-
**Checks:**
|
|
264
|
-
- [ ] SVN is release repository, not development?
|
|
265
|
-
- [ ] Meaningful commit messages?
|
|
266
|
-
- [ ] No rapid-fire minor commits?
|
|
267
|
-
|
|
268
|
-
---
|
|
269
|
-
|
|
270
|
-
#### **Guideline 15: Version Number Increment**
|
|
271
|
-
> "Plugin version numbers must be incremented for each new release"
|
|
272
|
-
|
|
273
|
-
**Checks:**
|
|
274
|
-
- [ ] Version in main plugin file matches readme.txt?
|
|
275
|
-
- [ ] Correct version format (semantic versioning recommended)?
|
|
276
|
-
- [ ] SVN tag matches version number?
|
|
277
|
-
|
|
278
|
-
**Commands:**
|
|
279
|
-
```bash
|
|
280
|
-
grep -r "Version:" --include="*.php" {{plugin_path}} | head -5
|
|
281
|
-
grep -r "Stable tag:" {{plugin_path}}/readme.txt
|
|
282
|
-
```
|
|
283
|
-
|
|
284
|
-
---
|
|
285
|
-
|
|
286
|
-
#### **Guideline 16: Complete Plugin Required**
|
|
287
|
-
> "A complete plugin must be available at the time of submission"
|
|
288
|
-
|
|
289
|
-
**Checks:**
|
|
290
|
-
- [ ] Plugin is fully functional?
|
|
291
|
-
- [ ] Not a placeholder/coming soon?
|
|
292
|
-
- [ ] Not reserving name for future use?
|
|
293
|
-
|
|
294
|
-
---
|
|
295
|
-
|
|
296
|
-
#### **Guideline 17: Trademark and Copyright**
|
|
297
|
-
> "Plugins must respect trademarks, copyrights, and project names"
|
|
298
|
-
|
|
299
|
-
**Checks:**
|
|
300
|
-
- [ ] Slug doesn't start with trademarked names (WordPress, WooCommerce, etc.) unless authorized?
|
|
301
|
-
- [ ] Plugin name doesn't cause confusion with other products?
|
|
302
|
-
- [ ] Original branding recommended?
|
|
303
|
-
|
|
304
|
-
---
|
|
305
|
-
|
|
306
|
-
#### **Guideline 18: Directory Maintenance Rights**
|
|
307
|
-
> "We reserve the right to maintain the Plugin Directory to the best of our ability"
|
|
308
|
-
|
|
309
|
-
**Notes:** WordPress.org has rights to:
|
|
310
|
-
- Update guidelines at any time
|
|
311
|
-
- Disable/remove plugins for unlisted reasons
|
|
312
|
-
- Grant exceptions
|
|
313
|
-
- Remove developer access
|
|
314
|
-
- Modify plugins without consent for public safety
|
|
315
|
-
|
|
316
|
-
---
|
|
317
|
-
|
|
318
|
-
### Step 3: Generate Compliance Report
|
|
319
|
-
|
|
320
|
-
Create a report using this format:
|
|
321
|
-
|
|
322
|
-
```markdown
|
|
323
|
-
# WordPress Plugin Directory Compliance Report
|
|
324
|
-
|
|
325
|
-
## Plugin Information
|
|
326
|
-
- **Name:** [Plugin Name]
|
|
327
|
-
- **Version:** [Version]
|
|
328
|
-
- **Path:** [Path]
|
|
329
|
-
- **Review Time:** [Date/Time]
|
|
330
|
-
|
|
331
|
-
## Summary
|
|
332
|
-
- ✅ Passed: X/18 guidelines
|
|
333
|
-
- ⚠️ Needs Review: X issues
|
|
334
|
-
- ❌ Violations: X issues
|
|
335
|
-
|
|
336
|
-
## Details by Guideline
|
|
337
|
-
|
|
338
|
-
### ❌ Guideline X: [Guideline Name]
|
|
339
|
-
**Issues Found:**
|
|
340
|
-
- [Issue description]
|
|
341
|
-
- **File:** [file path]
|
|
342
|
-
- **Line:** [line number]
|
|
343
|
-
|
|
344
|
-
**Suggested Fix:**
|
|
345
|
-
\`\`\`php
|
|
346
|
-
// Code suggestion
|
|
347
|
-
\`\`\`
|
|
348
|
-
|
|
349
|
-
### ⚠️ Guideline Y: [Guideline Name]
|
|
350
|
-
**Needs Review:**
|
|
351
|
-
- [Description]
|
|
352
|
-
|
|
353
|
-
---
|
|
354
|
-
|
|
355
|
-
## Recommended Actions
|
|
356
|
-
1. [ ] [Action 1]
|
|
357
|
-
2. [ ] [Action 2]
|
|
358
|
-
...
|
|
359
|
-
```
|
|
360
|
-
|
|
361
|
-
### Step 4: User Confirmation
|
|
362
|
-
|
|
363
|
-
**CRITICAL:** Before making ANY changes, the Agent MUST:
|
|
364
|
-
|
|
365
|
-
1. Present the complete report to the user
|
|
366
|
-
2. Clearly explain each issue with reference to the specific guideline number
|
|
367
|
-
3. Wait for user confirmation on each action item
|
|
368
|
-
4. Only proceed after receiving approval
|
|
369
|
-
|
|
370
|
-
## Useful Commands
|
|
371
|
-
|
|
372
|
-
```bash
|
|
373
|
-
# Check plugin structure overview
|
|
374
|
-
find {{plugin_path}} -type f \( -name "*.php" -o -name "*.js" -o -name "*.css" \) | head -50
|
|
375
|
-
|
|
376
|
-
# Find all external URLs
|
|
377
|
-
grep -rhoE "https?://[a-zA-Z0-9./?=_-]*" --include="*.php" {{plugin_path}} | sort -u
|
|
378
|
-
|
|
379
|
-
# Check enqueued scripts
|
|
380
|
-
grep -r "wp_enqueue_script\|wp_enqueue_style" --include="*.php" {{plugin_path}}
|
|
381
|
-
|
|
382
|
-
# Find admin notices
|
|
383
|
-
grep -r "add_action.*admin_notices" --include="*.php" {{plugin_path}}
|
|
384
|
-
|
|
385
|
-
# Check AJAX handlers
|
|
386
|
-
grep -r "wp_ajax_" --include="*.php" {{plugin_path}}
|
|
387
|
-
|
|
388
|
-
# Find direct database queries
|
|
389
|
-
grep -r "\$wpdb->" --include="*.php" {{plugin_path}}
|
|
390
|
-
```
|
|
391
|
-
|
|
392
|
-
## References
|
|
393
|
-
|
|
394
|
-
- [WordPress Plugin Guidelines](https://developer.wordpress.org/plugins/wordpress-org/detailed-plugin-guidelines/)
|
|
395
|
-
- [GPL Compatible Licenses](https://www.gnu.org/licenses/license-list.html#GPLCompatibleLicenses)
|
|
396
|
-
- [Default Scripts in WordPress](https://developer.wordpress.org/reference/functions/wp_enqueue_script/#default-scripts-and-js-libraries-included-and-registered-by-wordpress)
|
|
1
|
+
# Skill: WordPress Plugin Directory Compliance Check
|
|
2
|
+
|
|
3
|
+
This skill provides a systematic approach to review WordPress plugin source code against the [WordPress Plugin Directory Guidelines](https://developer.wordpress.org/plugins/wordpress-org/detailed-plugin-guidelines/).
|
|
4
|
+
|
|
5
|
+
## Purpose
|
|
6
|
+
|
|
7
|
+
To ensure a WordPress plugin fully complies with all 18 guidelines before submission to WordPress.org Plugin Directory, identifying issues and providing detailed recommendations for user approval before making changes.
|
|
8
|
+
|
|
9
|
+
## Prerequisites
|
|
10
|
+
|
|
11
|
+
1. **Identify Plugin Root**: The agent must identify the root directory of the WordPress plugin being reviewed.
|
|
12
|
+
2. **Plugin Main File**: Locate the main plugin file (with `Plugin Name:` header).
|
|
13
|
+
3. **Readme File**: Check for `readme.txt` or `README.md`.
|
|
14
|
+
|
|
15
|
+
## Required Variables
|
|
16
|
+
|
|
17
|
+
- `{{plugin_path}}`: Absolute path to the plugin root directory.
|
|
18
|
+
- `{{plugin_slug}}`: The plugin's slug (folder name).
|
|
19
|
+
|
|
20
|
+
## Process Flow
|
|
21
|
+
|
|
22
|
+
### Step 1: Gather Plugin Information
|
|
23
|
+
|
|
24
|
+
1. **Find Main Plugin File**:
|
|
25
|
+
```bash
|
|
26
|
+
grep -l "Plugin Name:" {{plugin_path}}/*.php
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
2. **Read Plugin Headers**:
|
|
30
|
+
- Plugin Name
|
|
31
|
+
- Version
|
|
32
|
+
- Author
|
|
33
|
+
- License
|
|
34
|
+
- Text Domain
|
|
35
|
+
|
|
36
|
+
3. **Scan File Structure**:
|
|
37
|
+
```bash
|
|
38
|
+
find {{plugin_path}} -type f \( -name "*.php" -o -name "*.js" -o -name "*.css" \) | head -50
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### Step 2: Review All 18 Guidelines
|
|
42
|
+
|
|
43
|
+
Perform systematic checks on each guideline:
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
#### **Guideline 1: GPL Compatibility**
|
|
48
|
+
> "Plugins must be compatible with the GNU General Public License"
|
|
49
|
+
|
|
50
|
+
**Checks:**
|
|
51
|
+
- [ ] Main plugin file has License header?
|
|
52
|
+
- [ ] License is GPL-compatible? (GPLv2 or later recommended)
|
|
53
|
+
- [ ] Third-party libraries have GPL-compatible licenses?
|
|
54
|
+
- [ ] Images and fonts have clear licensing?
|
|
55
|
+
|
|
56
|
+
**Commands:**
|
|
57
|
+
```bash
|
|
58
|
+
grep -r "License:" --include="*.php" {{plugin_path}}
|
|
59
|
+
grep -r "@license" --include="*.php" {{plugin_path}}
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
#### **Guideline 2: Developer Responsibility**
|
|
65
|
+
> "Developers are responsible for the contents and actions of their plugins"
|
|
66
|
+
|
|
67
|
+
**Checks:**
|
|
68
|
+
- [ ] No code intentionally bypassing guidelines?
|
|
69
|
+
- [ ] All files have confirmed licensing?
|
|
70
|
+
- [ ] Third-party APIs comply with terms of use?
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
#### **Guideline 3: Stable Version Availability**
|
|
75
|
+
> "A stable version of a plugin must be available from its WordPress Plugin Directory page"
|
|
76
|
+
|
|
77
|
+
**Checks:**
|
|
78
|
+
- [ ] Code on SVN/directory is the latest version?
|
|
79
|
+
- [ ] Not distributing code via alternate methods without updating directory?
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
#### **Guideline 4: Human Readable Code**
|
|
84
|
+
> "Code must be (mostly) human readable"
|
|
85
|
+
|
|
86
|
+
**Checks:**
|
|
87
|
+
- [ ] No obfuscated code (p,a,c,k,e,r, uglify mangle)?
|
|
88
|
+
- [ ] No obscure variable names ($z12sdf813d)?
|
|
89
|
+
- [ ] Source code or link to development location available in readme?
|
|
90
|
+
- [ ] Build tools documented?
|
|
91
|
+
|
|
92
|
+
**Commands:**
|
|
93
|
+
```bash
|
|
94
|
+
# Find eval() that may contain obfuscated code
|
|
95
|
+
grep -r "eval(" --include="*.php" --include="*.js" {{plugin_path}}
|
|
96
|
+
# Find strange variable names
|
|
97
|
+
grep -rE "\$[a-z][0-9]{3,}" --include="*.php" {{plugin_path}}
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
#### **Guideline 5: No Trialware**
|
|
103
|
+
> "Trialware is not permitted"
|
|
104
|
+
|
|
105
|
+
**Checks:**
|
|
106
|
+
- [ ] No features locked behind payment?
|
|
107
|
+
- [ ] No time-based trial limits?
|
|
108
|
+
- [ ] No quota restrictions?
|
|
109
|
+
- [ ] No sandbox-only API access?
|
|
110
|
+
|
|
111
|
+
**Commands:**
|
|
112
|
+
```bash
|
|
113
|
+
grep -ri "trial" --include="*.php" {{plugin_path}}
|
|
114
|
+
grep -ri "expired" --include="*.php" {{plugin_path}}
|
|
115
|
+
grep -ri "license_key" --include="*.php" {{plugin_path}}
|
|
116
|
+
grep -ri "is_pro" --include="*.php" {{plugin_path}}
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
#### **Guideline 6: Software as a Service**
|
|
122
|
+
> "Software as a Service is permitted"
|
|
123
|
+
|
|
124
|
+
**Checks:**
|
|
125
|
+
- [ ] Service provides real functionality, not just license validation?
|
|
126
|
+
- [ ] Service documented in readme?
|
|
127
|
+
- [ ] Link to Terms of Use provided?
|
|
128
|
+
- [ ] Not just a storefront?
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
#### **Guideline 7: User Tracking Consent**
|
|
133
|
+
> "Plugins may not track users without their consent"
|
|
134
|
+
|
|
135
|
+
**Checks:**
|
|
136
|
+
- [ ] No automatic data collection without consent?
|
|
137
|
+
- [ ] Clear opt-in mechanism?
|
|
138
|
+
- [ ] Privacy policy documented in readme?
|
|
139
|
+
- [ ] Not misleading users to submit information?
|
|
140
|
+
- [ ] Not offloading unrelated assets?
|
|
141
|
+
- [ ] No undocumented external data usage?
|
|
142
|
+
|
|
143
|
+
**Commands:**
|
|
144
|
+
```bash
|
|
145
|
+
# Find external requests
|
|
146
|
+
grep -ri "wp_remote" --include="*.php" {{plugin_path}}
|
|
147
|
+
grep -ri "curl_" --include="*.php" {{plugin_path}}
|
|
148
|
+
grep -ri "file_get_contents.*http" --include="*.php" {{plugin_path}}
|
|
149
|
+
# Find tracking
|
|
150
|
+
grep -ri "analytics" --include="*.php" --include="*.js" {{plugin_path}}
|
|
151
|
+
grep -ri "tracking" --include="*.php" --include="*.js" {{plugin_path}}
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
|
|
156
|
+
#### **Guideline 8: No External Executable Code**
|
|
157
|
+
> "Plugins may not send executable code via third-party systems"
|
|
158
|
+
|
|
159
|
+
**Checks:**
|
|
160
|
+
- [ ] Not serving updates from external servers?
|
|
161
|
+
- [ ] Not installing plugins/themes/add-ons from outside?
|
|
162
|
+
- [ ] Not calling CDN for JS/CSS (except fonts)?
|
|
163
|
+
- [ ] Not using third-party services to manage data lists?
|
|
164
|
+
- [ ] Not using iframes in admin pages?
|
|
165
|
+
|
|
166
|
+
**Commands:**
|
|
167
|
+
```bash
|
|
168
|
+
grep -ri "cdn" --include="*.php" --include="*.js" {{plugin_path}}
|
|
169
|
+
grep -ri "<iframe" --include="*.php" {{plugin_path}}
|
|
170
|
+
grep -ri "wp_remote_get.*\.js" --include="*.php" {{plugin_path}}
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
#### **Guideline 9: Legal and Ethical Conduct**
|
|
176
|
+
> "Developers and their plugins must not do anything illegal, dishonest, or morally offensive"
|
|
177
|
+
|
|
178
|
+
**Checks:**
|
|
179
|
+
- [ ] No keyword stuffing?
|
|
180
|
+
- [ ] No fake reviews/sockpuppeting?
|
|
181
|
+
- [ ] No copying others' plugins?
|
|
182
|
+
- [ ] No automatic legal compliance claims?
|
|
183
|
+
- [ ] No unauthorized server resource usage (botnet, crypto-mining)?
|
|
184
|
+
|
|
185
|
+
---
|
|
186
|
+
|
|
187
|
+
#### **Guideline 10: External Links and Credits**
|
|
188
|
+
> "Plugins may not embed external links or credits on the public site without explicitly asking the user's permission"
|
|
189
|
+
|
|
190
|
+
**Checks:**
|
|
191
|
+
- [ ] "Powered By" links are optional and default OFF?
|
|
192
|
+
- [ ] Users must opt-in to display credits?
|
|
193
|
+
- [ ] Plugin doesn't require credit for functionality?
|
|
194
|
+
|
|
195
|
+
**Commands:**
|
|
196
|
+
```bash
|
|
197
|
+
grep -ri "powered by" --include="*.php" {{plugin_path}}
|
|
198
|
+
grep -ri "credit" --include="*.php" {{plugin_path}}
|
|
199
|
+
grep -ri "footer_text" --include="*.php" {{plugin_path}}
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
---
|
|
203
|
+
|
|
204
|
+
#### **Guideline 11: Admin Dashboard Experience**
|
|
205
|
+
> "Plugins should not hijack the admin dashboard"
|
|
206
|
+
|
|
207
|
+
**Checks:**
|
|
208
|
+
- [ ] Upgrade prompts are limited and contextual?
|
|
209
|
+
- [ ] Notices are dismissible?
|
|
210
|
+
- [ ] Error messages have resolution guidance?
|
|
211
|
+
- [ ] No excessive dashboard advertising?
|
|
212
|
+
- [ ] No tracking in ads (related to Guideline 7)?
|
|
213
|
+
|
|
214
|
+
**Commands:**
|
|
215
|
+
```bash
|
|
216
|
+
grep -ri "admin_notice" --include="*.php" {{plugin_path}}
|
|
217
|
+
grep -ri "is-dismissible" --include="*.php" {{plugin_path}}
|
|
218
|
+
grep -ri "upgrade" --include="*.php" {{plugin_path}}
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
---
|
|
222
|
+
|
|
223
|
+
#### **Guideline 12: No Spam in Public Pages**
|
|
224
|
+
> "Public facing pages on WordPress.org (readmes) must not spam"
|
|
225
|
+
|
|
226
|
+
**Checks in readme.txt:**
|
|
227
|
+
- [ ] No more than 5 tags?
|
|
228
|
+
- [ ] No undisclosed affiliate links?
|
|
229
|
+
- [ ] No keyword stuffing?
|
|
230
|
+
- [ ] No competitor tags?
|
|
231
|
+
- [ ] Links are direct, not redirected/cloaked?
|
|
232
|
+
|
|
233
|
+
---
|
|
234
|
+
|
|
235
|
+
#### **Guideline 13: WordPress Default Libraries**
|
|
236
|
+
> "Plugins must use WordPress' default libraries"
|
|
237
|
+
|
|
238
|
+
**Checks:**
|
|
239
|
+
- [ ] Not including separate jQuery?
|
|
240
|
+
- [ ] Not including libraries already in WordPress?
|
|
241
|
+
- [ ] Using `wp_enqueue_script()` with standard handles?
|
|
242
|
+
|
|
243
|
+
**WordPress Default Libraries:**
|
|
244
|
+
- jQuery, jQuery UI
|
|
245
|
+
- Backbone.js, Underscore.js
|
|
246
|
+
- React, ReactDOM
|
|
247
|
+
- Lodash
|
|
248
|
+
- Moment.js
|
|
249
|
+
- PHPMailer, PHPass
|
|
250
|
+
|
|
251
|
+
**Commands:**
|
|
252
|
+
```bash
|
|
253
|
+
find {{plugin_path}} -name "jquery*.js" -o -name "jquery*.min.js"
|
|
254
|
+
find {{plugin_path}} -name "underscore*.js" -o -name "backbone*.js"
|
|
255
|
+
find {{plugin_path}} -name "react*.js" -o -name "moment*.js"
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
---
|
|
259
|
+
|
|
260
|
+
#### **Guideline 14: Commit Frequency**
|
|
261
|
+
> "Frequent commits to a plugin should be avoided"
|
|
262
|
+
|
|
263
|
+
**Checks:**
|
|
264
|
+
- [ ] SVN is release repository, not development?
|
|
265
|
+
- [ ] Meaningful commit messages?
|
|
266
|
+
- [ ] No rapid-fire minor commits?
|
|
267
|
+
|
|
268
|
+
---
|
|
269
|
+
|
|
270
|
+
#### **Guideline 15: Version Number Increment**
|
|
271
|
+
> "Plugin version numbers must be incremented for each new release"
|
|
272
|
+
|
|
273
|
+
**Checks:**
|
|
274
|
+
- [ ] Version in main plugin file matches readme.txt?
|
|
275
|
+
- [ ] Correct version format (semantic versioning recommended)?
|
|
276
|
+
- [ ] SVN tag matches version number?
|
|
277
|
+
|
|
278
|
+
**Commands:**
|
|
279
|
+
```bash
|
|
280
|
+
grep -r "Version:" --include="*.php" {{plugin_path}} | head -5
|
|
281
|
+
grep -r "Stable tag:" {{plugin_path}}/readme.txt
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
---
|
|
285
|
+
|
|
286
|
+
#### **Guideline 16: Complete Plugin Required**
|
|
287
|
+
> "A complete plugin must be available at the time of submission"
|
|
288
|
+
|
|
289
|
+
**Checks:**
|
|
290
|
+
- [ ] Plugin is fully functional?
|
|
291
|
+
- [ ] Not a placeholder/coming soon?
|
|
292
|
+
- [ ] Not reserving name for future use?
|
|
293
|
+
|
|
294
|
+
---
|
|
295
|
+
|
|
296
|
+
#### **Guideline 17: Trademark and Copyright**
|
|
297
|
+
> "Plugins must respect trademarks, copyrights, and project names"
|
|
298
|
+
|
|
299
|
+
**Checks:**
|
|
300
|
+
- [ ] Slug doesn't start with trademarked names (WordPress, WooCommerce, etc.) unless authorized?
|
|
301
|
+
- [ ] Plugin name doesn't cause confusion with other products?
|
|
302
|
+
- [ ] Original branding recommended?
|
|
303
|
+
|
|
304
|
+
---
|
|
305
|
+
|
|
306
|
+
#### **Guideline 18: Directory Maintenance Rights**
|
|
307
|
+
> "We reserve the right to maintain the Plugin Directory to the best of our ability"
|
|
308
|
+
|
|
309
|
+
**Notes:** WordPress.org has rights to:
|
|
310
|
+
- Update guidelines at any time
|
|
311
|
+
- Disable/remove plugins for unlisted reasons
|
|
312
|
+
- Grant exceptions
|
|
313
|
+
- Remove developer access
|
|
314
|
+
- Modify plugins without consent for public safety
|
|
315
|
+
|
|
316
|
+
---
|
|
317
|
+
|
|
318
|
+
### Step 3: Generate Compliance Report
|
|
319
|
+
|
|
320
|
+
Create a report using this format:
|
|
321
|
+
|
|
322
|
+
```markdown
|
|
323
|
+
# WordPress Plugin Directory Compliance Report
|
|
324
|
+
|
|
325
|
+
## Plugin Information
|
|
326
|
+
- **Name:** [Plugin Name]
|
|
327
|
+
- **Version:** [Version]
|
|
328
|
+
- **Path:** [Path]
|
|
329
|
+
- **Review Time:** [Date/Time]
|
|
330
|
+
|
|
331
|
+
## Summary
|
|
332
|
+
- ✅ Passed: X/18 guidelines
|
|
333
|
+
- ⚠️ Needs Review: X issues
|
|
334
|
+
- ❌ Violations: X issues
|
|
335
|
+
|
|
336
|
+
## Details by Guideline
|
|
337
|
+
|
|
338
|
+
### ❌ Guideline X: [Guideline Name]
|
|
339
|
+
**Issues Found:**
|
|
340
|
+
- [Issue description]
|
|
341
|
+
- **File:** [file path]
|
|
342
|
+
- **Line:** [line number]
|
|
343
|
+
|
|
344
|
+
**Suggested Fix:**
|
|
345
|
+
\`\`\`php
|
|
346
|
+
// Code suggestion
|
|
347
|
+
\`\`\`
|
|
348
|
+
|
|
349
|
+
### ⚠️ Guideline Y: [Guideline Name]
|
|
350
|
+
**Needs Review:**
|
|
351
|
+
- [Description]
|
|
352
|
+
|
|
353
|
+
---
|
|
354
|
+
|
|
355
|
+
## Recommended Actions
|
|
356
|
+
1. [ ] [Action 1]
|
|
357
|
+
2. [ ] [Action 2]
|
|
358
|
+
...
|
|
359
|
+
```
|
|
360
|
+
|
|
361
|
+
### Step 4: User Confirmation
|
|
362
|
+
|
|
363
|
+
**CRITICAL:** Before making ANY changes, the Agent MUST:
|
|
364
|
+
|
|
365
|
+
1. Present the complete report to the user
|
|
366
|
+
2. Clearly explain each issue with reference to the specific guideline number
|
|
367
|
+
3. Wait for user confirmation on each action item
|
|
368
|
+
4. Only proceed after receiving approval
|
|
369
|
+
|
|
370
|
+
## Useful Commands
|
|
371
|
+
|
|
372
|
+
```bash
|
|
373
|
+
# Check plugin structure overview
|
|
374
|
+
find {{plugin_path}} -type f \( -name "*.php" -o -name "*.js" -o -name "*.css" \) | head -50
|
|
375
|
+
|
|
376
|
+
# Find all external URLs
|
|
377
|
+
grep -rhoE "https?://[a-zA-Z0-9./?=_-]*" --include="*.php" {{plugin_path}} | sort -u
|
|
378
|
+
|
|
379
|
+
# Check enqueued scripts
|
|
380
|
+
grep -r "wp_enqueue_script\|wp_enqueue_style" --include="*.php" {{plugin_path}}
|
|
381
|
+
|
|
382
|
+
# Find admin notices
|
|
383
|
+
grep -r "add_action.*admin_notices" --include="*.php" {{plugin_path}}
|
|
384
|
+
|
|
385
|
+
# Check AJAX handlers
|
|
386
|
+
grep -r "wp_ajax_" --include="*.php" {{plugin_path}}
|
|
387
|
+
|
|
388
|
+
# Find direct database queries
|
|
389
|
+
grep -r "\$wpdb->" --include="*.php" {{plugin_path}}
|
|
390
|
+
```
|
|
391
|
+
|
|
392
|
+
## References
|
|
393
|
+
|
|
394
|
+
- [WordPress Plugin Guidelines](https://developer.wordpress.org/plugins/wordpress-org/detailed-plugin-guidelines/)
|
|
395
|
+
- [GPL Compatible Licenses](https://www.gnu.org/licenses/license-list.html#GPLCompatibleLicenses)
|
|
396
|
+
- [Default Scripts in WordPress](https://developer.wordpress.org/reference/functions/wp_enqueue_script/#default-scripts-and-js-libraries-included-and-registered-by-wordpress)
|