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.
Files changed (129) hide show
  1. package/LICENSE +22 -22
  2. package/README.md +188 -103
  3. package/bin/heraspec.js +4805 -1122
  4. package/bin/heraspec.js.map +4 -4
  5. package/dist/core/templates/skills/CHANGELOG.md +117 -117
  6. package/dist/core/templates/skills/README-template.md +58 -58
  7. package/dist/core/templates/skills/README.md +38 -38
  8. package/dist/core/templates/skills/content-optimization-skill.md +104 -104
  9. package/dist/core/templates/skills/data/design-systems.csv +54 -0
  10. package/dist/core/templates/skills/data/pages-proposed.csv +21 -21
  11. package/dist/core/templates/skills/data/pages.csv +9 -9
  12. package/dist/core/templates/skills/data/typography.csv +57 -57
  13. package/dist/core/templates/skills/deploy-documentation-skill.md +408 -0
  14. package/dist/core/templates/skills/design-system-skill.md +176 -0
  15. package/dist/core/templates/skills/documents/templates/documentation-landing-page.html +63 -63
  16. package/dist/core/templates/skills/documents/templates/documentation.html +49 -49
  17. package/dist/core/templates/skills/documents/templates/landing-script.js +38 -38
  18. package/dist/core/templates/skills/documents/templates/landing-style.css +158 -158
  19. package/dist/core/templates/skills/documents/templates/script.js +56 -56
  20. package/dist/core/templates/skills/documents/templates/style.css +155 -155
  21. package/dist/core/templates/skills/documents/templates/technical-doc-template.md +16 -16
  22. package/dist/core/templates/skills/documents/templates/user-guide-template.md +16 -16
  23. package/dist/core/templates/skills/documents-skill.md +104 -104
  24. package/dist/core/templates/skills/e2e-test-skill.md +119 -119
  25. package/dist/core/templates/skills/git-embed-skill.md +57 -0
  26. package/dist/core/templates/skills/integration-test-skill.md +118 -118
  27. package/dist/core/templates/skills/knowledge/README.md +63 -0
  28. package/dist/core/templates/skills/knowledge/design-systems/airbnb/DESIGN.md +246 -0
  29. package/dist/core/templates/skills/knowledge/design-systems/airtable/DESIGN.md +89 -0
  30. package/dist/core/templates/skills/knowledge/design-systems/apple/DESIGN.md +313 -0
  31. package/dist/core/templates/skills/knowledge/design-systems/bmw/DESIGN.md +180 -0
  32. package/dist/core/templates/skills/knowledge/design-systems/cal/DESIGN.md +259 -0
  33. package/dist/core/templates/skills/knowledge/design-systems/claude/DESIGN.md +312 -0
  34. package/dist/core/templates/skills/knowledge/design-systems/clay/DESIGN.md +304 -0
  35. package/dist/core/templates/skills/knowledge/design-systems/clickhouse/DESIGN.md +281 -0
  36. package/dist/core/templates/skills/knowledge/design-systems/cohere/DESIGN.md +266 -0
  37. package/dist/core/templates/skills/knowledge/design-systems/coinbase/DESIGN.md +129 -0
  38. package/dist/core/templates/skills/knowledge/design-systems/composio/DESIGN.md +307 -0
  39. package/dist/core/templates/skills/knowledge/design-systems/cursor/DESIGN.md +309 -0
  40. package/dist/core/templates/skills/knowledge/design-systems/elevenlabs/DESIGN.md +265 -0
  41. package/dist/core/templates/skills/knowledge/design-systems/expo/DESIGN.md +281 -0
  42. package/dist/core/templates/skills/knowledge/design-systems/figma/DESIGN.md +220 -0
  43. package/dist/core/templates/skills/knowledge/design-systems/framer/DESIGN.md +246 -0
  44. package/dist/core/templates/skills/knowledge/design-systems/hashicorp/DESIGN.md +278 -0
  45. package/dist/core/templates/skills/knowledge/design-systems/ibm/DESIGN.md +332 -0
  46. package/dist/core/templates/skills/knowledge/design-systems/index.json +72 -0
  47. package/dist/core/templates/skills/knowledge/design-systems/intercom/DESIGN.md +146 -0
  48. package/dist/core/templates/skills/knowledge/design-systems/kraken/DESIGN.md +125 -0
  49. package/dist/core/templates/skills/knowledge/design-systems/linear.app/DESIGN.md +367 -0
  50. package/dist/core/templates/skills/knowledge/design-systems/lovable/DESIGN.md +298 -0
  51. package/dist/core/templates/skills/knowledge/design-systems/minimax/DESIGN.md +257 -0
  52. package/dist/core/templates/skills/knowledge/design-systems/mintlify/DESIGN.md +326 -0
  53. package/dist/core/templates/skills/knowledge/design-systems/miro/DESIGN.md +108 -0
  54. package/dist/core/templates/skills/knowledge/design-systems/mistral.ai/DESIGN.md +261 -0
  55. package/dist/core/templates/skills/knowledge/design-systems/mongodb/DESIGN.md +266 -0
  56. package/dist/core/templates/skills/knowledge/design-systems/notion/DESIGN.md +309 -0
  57. package/dist/core/templates/skills/knowledge/design-systems/nvidia/DESIGN.md +293 -0
  58. package/dist/core/templates/skills/knowledge/design-systems/ollama/DESIGN.md +267 -0
  59. package/dist/core/templates/skills/knowledge/design-systems/opencode.ai/DESIGN.md +281 -0
  60. package/dist/core/templates/skills/knowledge/design-systems/pinterest/DESIGN.md +230 -0
  61. package/dist/core/templates/skills/knowledge/design-systems/posthog/DESIGN.md +256 -0
  62. package/dist/core/templates/skills/knowledge/design-systems/raycast/DESIGN.md +268 -0
  63. package/dist/core/templates/skills/knowledge/design-systems/replicate/DESIGN.md +261 -0
  64. package/dist/core/templates/skills/knowledge/design-systems/resend/DESIGN.md +303 -0
  65. package/dist/core/templates/skills/knowledge/design-systems/revolut/DESIGN.md +185 -0
  66. package/dist/core/templates/skills/knowledge/design-systems/runwayml/DESIGN.md +244 -0
  67. package/dist/core/templates/skills/knowledge/design-systems/sanity/DESIGN.md +357 -0
  68. package/dist/core/templates/skills/knowledge/design-systems/sentry/DESIGN.md +262 -0
  69. package/dist/core/templates/skills/knowledge/design-systems/spacex/DESIGN.md +194 -0
  70. package/dist/core/templates/skills/knowledge/design-systems/spotify/DESIGN.md +246 -0
  71. package/dist/core/templates/skills/knowledge/design-systems/stripe/DESIGN.md +322 -0
  72. package/dist/core/templates/skills/knowledge/design-systems/supabase/DESIGN.md +255 -0
  73. package/dist/core/templates/skills/knowledge/design-systems/superhuman/DESIGN.md +252 -0
  74. package/dist/core/templates/skills/knowledge/design-systems/together.ai/DESIGN.md +263 -0
  75. package/dist/core/templates/skills/knowledge/design-systems/uber/DESIGN.md +295 -0
  76. package/dist/core/templates/skills/knowledge/design-systems/vercel/DESIGN.md +310 -0
  77. package/dist/core/templates/skills/knowledge/design-systems/voltagent/DESIGN.md +323 -0
  78. package/dist/core/templates/skills/knowledge/design-systems/warp/DESIGN.md +253 -0
  79. package/dist/core/templates/skills/knowledge/design-systems/webflow/DESIGN.md +92 -0
  80. package/dist/core/templates/skills/knowledge/design-systems/wise/DESIGN.md +173 -0
  81. package/dist/core/templates/skills/knowledge/design-systems/x.ai/DESIGN.md +257 -0
  82. package/dist/core/templates/skills/knowledge/design-systems/zapier/DESIGN.md +328 -0
  83. package/dist/core/templates/skills/knowledge/frameworks/php/codeigniter/rise-cms/profile.json +27 -0
  84. package/dist/core/templates/skills/knowledge/frameworks/php/codeigniter/rise-cms/structure.md +137 -0
  85. package/dist/core/templates/skills/knowledge/frameworks/php/laravel/botble/profile.json +39 -0
  86. package/dist/core/templates/skills/knowledge/frameworks/php/laravel/botble/structure.md +208 -0
  87. package/dist/core/templates/skills/knowledge/frameworks/php/wordpress/core/profile.json +51 -0
  88. package/dist/core/templates/skills/knowledge/frameworks/php/wordpress/core/structure.md +369 -0
  89. package/dist/core/templates/skills/knowledge/index.json +65 -0
  90. package/dist/core/templates/skills/module-codebase-skill.md +110 -110
  91. package/dist/core/templates/skills/plugin-directory-skill.md +396 -396
  92. package/dist/core/templates/skills/project-memory-skill.md +222 -0
  93. package/dist/core/templates/skills/project-memory-skill.vi.md +223 -0
  94. package/dist/core/templates/skills/scripts/CODE_EXPLANATION.md +394 -394
  95. package/dist/core/templates/skills/scripts/SEARCH_ALGORITHMS_COMPARISON.md +421 -421
  96. package/dist/core/templates/skills/scripts/SEARCH_MODES_GUIDE.md +238 -238
  97. package/dist/core/templates/skills/scripts/__pycache__/core.cpython-311.pyc +0 -0
  98. package/dist/core/templates/skills/scripts/core.py +391 -385
  99. package/dist/core/templates/skills/scripts/search.py +1 -1
  100. package/dist/core/templates/skills/smart-explore-skill.md +141 -0
  101. package/dist/core/templates/skills/sourcecode-analyzer-skill.md +210 -0
  102. package/dist/core/templates/skills/sourcecode-analyzer-skill.vi.md +210 -0
  103. package/dist/core/templates/skills/suggestion-skill.md +118 -118
  104. package/dist/core/templates/skills/templates/accessibility-checklist.md +40 -40
  105. package/dist/core/templates/skills/templates/example-prompt-full-theme.md +333 -333
  106. package/dist/core/templates/skills/templates/page-types-guide.md +338 -338
  107. package/dist/core/templates/skills/templates/pages-proposed-summary.md +273 -273
  108. package/dist/core/templates/skills/templates/pre-delivery-checklist.md +42 -42
  109. package/dist/core/templates/skills/templates/prompt-template-full-theme.md +313 -313
  110. package/dist/core/templates/skills/templates/responsive-design.md +40 -40
  111. package/dist/core/templates/skills/ui-ux-skill.md +595 -584
  112. package/dist/core/templates/skills/unit-test-skill.md +111 -111
  113. package/dist/core/templates/skills/ux-element/templates/Controller.php +50 -50
  114. package/dist/core/templates/skills/ux-element/templates/Shortcode.php +23 -23
  115. package/dist/core/templates/skills/ux-element/templates/Template.html +20 -20
  116. package/dist/core/templates/skills/ux-element/templates/Thumbnail.svg +8 -8
  117. package/dist/core/templates/skills/ux-element/templates/View.php +21 -21
  118. package/dist/core/templates/skills/ux-element-skill.md +83 -83
  119. package/dist/core/templates/skills/wordpress-plugin-check-skill.md +151 -76
  120. package/dist/core/templates/skills/wordpress-plugin-standard/templates/admin-dashboard.php +47 -47
  121. package/dist/core/templates/skills/wordpress-plugin-standard/templates/admin-settings.php +60 -60
  122. package/dist/core/templates/skills/wordpress-plugin-standard/templates/assets/admin-css.css +22 -22
  123. package/dist/core/templates/skills/wordpress-plugin-standard/templates/assets/admin-js.js +15 -15
  124. package/dist/core/templates/skills/wordpress-plugin-standard/templates/plugin-main.php +169 -169
  125. package/dist/core/templates/skills/wordpress-plugin-standard/templates/readme.txt +41 -41
  126. package/dist/core/templates/skills/wordpress-plugin-standard/templates/uninstall.php +21 -21
  127. package/dist/core/templates/skills/wordpress-plugin-standard-skill.md +100 -100
  128. package/dist/index.js +4068 -278
  129. 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)