@mytechtoday/augment-extensions 0.1.1 → 0.2.0

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 (79) hide show
  1. package/augment-extensions/domain-rules/wordpress/README.md +163 -0
  2. package/augment-extensions/domain-rules/wordpress/module.json +32 -0
  3. package/augment-extensions/domain-rules/wordpress/rules/coding-standards.md +617 -0
  4. package/augment-extensions/domain-rules/wordpress/rules/directory-structure.md +270 -0
  5. package/augment-extensions/domain-rules/wordpress/rules/file-patterns.md +423 -0
  6. package/augment-extensions/domain-rules/wordpress/rules/gutenberg-blocks.md +493 -0
  7. package/augment-extensions/domain-rules/wordpress/rules/performance.md +568 -0
  8. package/augment-extensions/domain-rules/wordpress/rules/plugin-development.md +510 -0
  9. package/augment-extensions/domain-rules/wordpress/rules/project-detection.md +251 -0
  10. package/augment-extensions/domain-rules/wordpress/rules/rest-api.md +501 -0
  11. package/augment-extensions/domain-rules/wordpress/rules/security.md +564 -0
  12. package/augment-extensions/domain-rules/wordpress/rules/theme-development.md +388 -0
  13. package/augment-extensions/domain-rules/wordpress/rules/woocommerce.md +441 -0
  14. package/augment-extensions/domain-rules/wordpress-plugin/README.md +139 -0
  15. package/augment-extensions/domain-rules/wordpress-plugin/examples/ajax-plugin.md +1599 -0
  16. package/augment-extensions/domain-rules/wordpress-plugin/examples/custom-post-type-plugin.md +1727 -0
  17. package/augment-extensions/domain-rules/wordpress-plugin/examples/gutenberg-block-plugin.md +428 -0
  18. package/augment-extensions/domain-rules/wordpress-plugin/examples/gutenberg-block.md +422 -0
  19. package/augment-extensions/domain-rules/wordpress-plugin/examples/mvc-plugin.md +1623 -0
  20. package/augment-extensions/domain-rules/wordpress-plugin/examples/object-oriented-plugin.md +1343 -0
  21. package/augment-extensions/domain-rules/wordpress-plugin/examples/rest-endpoint.md +734 -0
  22. package/augment-extensions/domain-rules/wordpress-plugin/examples/settings-page-plugin.md +1350 -0
  23. package/augment-extensions/domain-rules/wordpress-plugin/examples/simple-procedural-plugin.md +503 -0
  24. package/augment-extensions/domain-rules/wordpress-plugin/examples/singleton-plugin.md +971 -0
  25. package/augment-extensions/domain-rules/wordpress-plugin/module.json +53 -0
  26. package/augment-extensions/domain-rules/wordpress-plugin/rules/activation-hooks.md +770 -0
  27. package/augment-extensions/domain-rules/wordpress-plugin/rules/admin-interface.md +874 -0
  28. package/augment-extensions/domain-rules/wordpress-plugin/rules/ajax-handlers.md +629 -0
  29. package/augment-extensions/domain-rules/wordpress-plugin/rules/asset-management.md +559 -0
  30. package/augment-extensions/domain-rules/wordpress-plugin/rules/context-providers.md +709 -0
  31. package/augment-extensions/domain-rules/wordpress-plugin/rules/cron-jobs.md +736 -0
  32. package/augment-extensions/domain-rules/wordpress-plugin/rules/database-management.md +1057 -0
  33. package/augment-extensions/domain-rules/wordpress-plugin/rules/documentation-standards.md +463 -0
  34. package/augment-extensions/domain-rules/wordpress-plugin/rules/frontend-functionality.md +478 -0
  35. package/augment-extensions/domain-rules/wordpress-plugin/rules/gutenberg-blocks.md +818 -0
  36. package/augment-extensions/domain-rules/wordpress-plugin/rules/internationalization.md +416 -0
  37. package/augment-extensions/domain-rules/wordpress-plugin/rules/migration.md +667 -0
  38. package/augment-extensions/domain-rules/wordpress-plugin/rules/performance-optimization.md +878 -0
  39. package/augment-extensions/domain-rules/wordpress-plugin/rules/plugin-architecture.md +693 -0
  40. package/augment-extensions/domain-rules/wordpress-plugin/rules/plugin-structure.md +352 -0
  41. package/augment-extensions/domain-rules/wordpress-plugin/rules/rest-api.md +818 -0
  42. package/augment-extensions/domain-rules/wordpress-plugin/rules/scaffolding-workflow.md +624 -0
  43. package/augment-extensions/domain-rules/wordpress-plugin/rules/security-best-practices.md +866 -0
  44. package/augment-extensions/domain-rules/wordpress-plugin/rules/testing-patterns.md +1165 -0
  45. package/augment-extensions/domain-rules/wordpress-plugin/rules/testing.md +414 -0
  46. package/augment-extensions/domain-rules/wordpress-plugin/rules/vscode-integration.md +751 -0
  47. package/augment-extensions/domain-rules/wordpress-plugin/rules/woocommerce-integration.md +949 -0
  48. package/augment-extensions/domain-rules/wordpress-plugin/rules/wordpress-org-submission.md +458 -0
  49. package/augment-extensions/examples/gutenberg-block-plugin/README.md +101 -0
  50. package/augment-extensions/examples/gutenberg-block-plugin/examples/testimonial-block.md +428 -0
  51. package/augment-extensions/examples/gutenberg-block-plugin/module.json +40 -0
  52. package/augment-extensions/examples/rest-api-plugin/README.md +98 -0
  53. package/augment-extensions/examples/rest-api-plugin/examples/task-manager-api.md +1299 -0
  54. package/augment-extensions/examples/rest-api-plugin/module.json +40 -0
  55. package/augment-extensions/examples/woocommerce-extension/README.md +98 -0
  56. package/augment-extensions/examples/woocommerce-extension/examples/product-customizer.md +763 -0
  57. package/augment-extensions/examples/woocommerce-extension/module.json +40 -0
  58. package/augment-extensions/workflows/wordpress-plugin/README.md +232 -0
  59. package/augment-extensions/workflows/wordpress-plugin/ai-prompts.md +839 -0
  60. package/augment-extensions/workflows/wordpress-plugin/bead-decomposition-patterns.md +854 -0
  61. package/augment-extensions/workflows/wordpress-plugin/examples/complete-plugin-example.md +540 -0
  62. package/augment-extensions/workflows/wordpress-plugin/examples/custom-post-type-example.md +1083 -0
  63. package/augment-extensions/workflows/wordpress-plugin/examples/feature-addition-workflow.md +669 -0
  64. package/augment-extensions/workflows/wordpress-plugin/examples/plugin-creation-workflow.md +597 -0
  65. package/augment-extensions/workflows/wordpress-plugin/examples/secure-form-handler-example.md +925 -0
  66. package/augment-extensions/workflows/wordpress-plugin/examples/security-audit-workflow.md +752 -0
  67. package/augment-extensions/workflows/wordpress-plugin/examples/wordpress-org-submission-workflow.md +773 -0
  68. package/augment-extensions/workflows/wordpress-plugin/module.json +49 -0
  69. package/augment-extensions/workflows/wordpress-plugin/rules/best-practices.md +942 -0
  70. package/augment-extensions/workflows/wordpress-plugin/rules/development-workflow.md +702 -0
  71. package/augment-extensions/workflows/wordpress-plugin/rules/submission-workflow.md +728 -0
  72. package/augment-extensions/workflows/wordpress-plugin/rules/testing-workflow.md +775 -0
  73. package/cli/dist/cli.js +5 -1
  74. package/cli/dist/cli.js.map +1 -1
  75. package/cli/dist/commands/show.d.ts.map +1 -1
  76. package/cli/dist/commands/show.js +41 -0
  77. package/cli/dist/commands/show.js.map +1 -1
  78. package/modules.md +52 -0
  79. package/package.json +1 -1
@@ -0,0 +1,422 @@
1
+ # Gutenberg Block Example
2
+
3
+ ## Overview
4
+
5
+ This example demonstrates a complete custom Gutenberg block with block.json metadata, edit component, save function, block styles, PHP registration, and testing steps.
6
+
7
+ **Use Case**: Custom content blocks for WordPress editor
8
+ **Complexity**: Medium
9
+ **Prerequisites**: Node.js, npm, @wordpress/scripts
10
+
11
+ ---
12
+
13
+ ## Complete Example: "Call to Action Block"
14
+
15
+ A custom Gutenberg block for displaying call-to-action sections with title, description, button, and customizable colors.
16
+
17
+ ---
18
+
19
+ ## Directory Structure
20
+
21
+ ```
22
+ cta-block/
23
+ ├── cta-block.php # Main plugin file
24
+ ├── package.json # NPM dependencies
25
+ ├── src/
26
+ │ ├── block.json # Block metadata
27
+ │ ├── index.js # Block registration
28
+ │ ├── edit.js # Edit component
29
+ │ ├── save.js # Save component
30
+ │ ├── editor.scss # Editor styles
31
+ │ └── style.scss # Frontend styles
32
+ └── build/ # Compiled files (generated)
33
+ ```
34
+
35
+ ---
36
+
37
+ ## 1. Main Plugin File
38
+
39
+ ### File: `cta-block.php`
40
+
41
+ ```php
42
+ <?php
43
+ /**
44
+ * Plugin Name: Call to Action Block
45
+ * Description: Custom Gutenberg block for call-to-action sections
46
+ * Version: 1.0.0
47
+ * Requires at least: 6.0
48
+ * Requires PHP: 7.4
49
+ * Author: Your Name
50
+ * License: GPL-2.0+
51
+ * Text Domain: cta-block
52
+ */
53
+
54
+ if (!defined('ABSPATH')) {
55
+ exit;
56
+ }
57
+
58
+ /**
59
+ * Register the block
60
+ */
61
+ function cta_block_register() {
62
+ register_block_type(__DIR__ . '/build');
63
+ }
64
+ add_action('init', 'cta_block_register');
65
+ ```
66
+
67
+ ---
68
+
69
+ ## 2. Block Metadata
70
+
71
+ ### File: `src/block.json`
72
+
73
+ ```json
74
+ {
75
+ "$schema": "https://schemas.wp.org/trunk/block.json",
76
+ "apiVersion": 3,
77
+ "name": "cta-block/call-to-action",
78
+ "version": "1.0.0",
79
+ "title": "Call to Action",
80
+ "category": "widgets",
81
+ "icon": "megaphone",
82
+ "description": "Display a call-to-action section with title, description, and button",
83
+ "keywords": ["cta", "call to action", "button"],
84
+ "textdomain": "cta-block",
85
+ "supports": {
86
+ "html": false,
87
+ "align": ["wide", "full"],
88
+ "color": {
89
+ "background": true,
90
+ "text": true
91
+ },
92
+ "spacing": {
93
+ "padding": true,
94
+ "margin": true
95
+ }
96
+ },
97
+ "attributes": {
98
+ "title": {
99
+ "type": "string",
100
+ "source": "html",
101
+ "selector": ".cta-title"
102
+ },
103
+ "description": {
104
+ "type": "string",
105
+ "source": "html",
106
+ "selector": ".cta-description"
107
+ },
108
+ "buttonText": {
109
+ "type": "string",
110
+ "source": "html",
111
+ "selector": ".cta-button"
112
+ },
113
+ "buttonUrl": {
114
+ "type": "string",
115
+ "source": "attribute",
116
+ "selector": ".cta-button",
117
+ "attribute": "href"
118
+ },
119
+ "backgroundColor": {
120
+ "type": "string",
121
+ "default": "#0073aa"
122
+ },
123
+ "textColor": {
124
+ "type": "string",
125
+ "default": "#ffffff"
126
+ }
127
+ },
128
+ "editorScript": "file:./index.js",
129
+ "editorStyle": "file:./editor.css",
130
+ "style": "file:./style.css"
131
+ }
132
+ ```
133
+
134
+ ---
135
+
136
+ ## 3. Block Registration
137
+
138
+ ### File: `src/index.js`
139
+
140
+ ```javascript
141
+ import { registerBlockType } from '@wordpress/blocks';
142
+ import Edit from './edit';
143
+ import save from './save';
144
+ import metadata from './block.json';
145
+ import './editor.scss';
146
+ import './style.scss';
147
+
148
+ registerBlockType(metadata.name, {
149
+ edit: Edit,
150
+ save,
151
+ });
152
+ ```
153
+
154
+ ---
155
+
156
+ ## 4. Edit Component
157
+
158
+ ### File: `src/edit.js`
159
+
160
+ ```javascript
161
+ import { __ } from '@wordpress/i18n';
162
+ import { useBlockProps, RichText, InspectorControls, URLInput } from '@wordpress/block-editor';
163
+ import { PanelBody, ColorPicker } from '@wordpress/components';
164
+
165
+ export default function Edit({ attributes, setAttributes }) {
166
+ const { title, description, buttonText, buttonUrl, backgroundColor, textColor } = attributes;
167
+
168
+ const blockProps = useBlockProps({
169
+ style: {
170
+ backgroundColor,
171
+ color: textColor,
172
+ },
173
+ });
174
+
175
+ return (
176
+ <>
177
+ <InspectorControls>
178
+ <PanelBody title={__('Color Settings', 'cta-block')}>
179
+ <p>{__('Background Color', 'cta-block')}</p>
180
+ <ColorPicker
181
+ color={backgroundColor}
182
+ onChangeComplete={(value) => setAttributes({ backgroundColor: value.hex })}
183
+ />
184
+ <p>{__('Text Color', 'cta-block')}</p>
185
+ <ColorPicker
186
+ color={textColor}
187
+ onChangeComplete={(value) => setAttributes({ textColor: value.hex })}
188
+ />
189
+ </PanelBody>
190
+ </InspectorControls>
191
+
192
+ <div {...blockProps} className="cta-block">
193
+ <RichText
194
+ tagName="h2"
195
+ className="cta-title"
196
+ value={title}
197
+ onChange={(value) => setAttributes({ title: value })}
198
+ placeholder={__('Enter title...', 'cta-block')}
199
+ />
200
+ <RichText
201
+ tagName="p"
202
+ className="cta-description"
203
+ value={description}
204
+ onChange={(value) => setAttributes({ description: value })}
205
+ placeholder={__('Enter description...', 'cta-block')}
206
+ />
207
+ <div className="cta-button-wrapper">
208
+ <RichText
209
+ tagName="span"
210
+ className="cta-button"
211
+ value={buttonText}
212
+ onChange={(value) => setAttributes({ buttonText: value })}
213
+ placeholder={__('Button text...', 'cta-block')}
214
+ />
215
+ <URLInput
216
+ value={buttonUrl}
217
+ onChange={(value) => setAttributes({ buttonUrl: value })}
218
+ />
219
+ </div>
220
+ </div>
221
+ </>
222
+ );
223
+ }
224
+ ```
225
+
226
+ ---
227
+
228
+ ## 5. Save Function
229
+
230
+ ### File: `src/save.js`
231
+
232
+ ```javascript
233
+ import { useBlockProps, RichText } from '@wordpress/block-editor';
234
+
235
+ export default function save({ attributes }) {
236
+ const { title, description, buttonText, buttonUrl, backgroundColor, textColor } = attributes;
237
+
238
+ const blockProps = useBlockProps.save({
239
+ style: {
240
+ backgroundColor,
241
+ color: textColor,
242
+ },
243
+ });
244
+
245
+ return (
246
+ <div {...blockProps} className="cta-block">
247
+ <RichText.Content tagName="h2" className="cta-title" value={title} />
248
+ <RichText.Content tagName="p" className="cta-description" value={description} />
249
+ {buttonText && buttonUrl && (
250
+ <a href={buttonUrl} className="cta-button">
251
+ <RichText.Content tagName="span" value={buttonText} />
252
+ </a>
253
+ )}
254
+ </div>
255
+ );
256
+ }
257
+ ```
258
+
259
+ ---
260
+
261
+ ## 6. Styles
262
+
263
+ ### File: `src/style.scss`
264
+
265
+ ```scss
266
+ .cta-block {
267
+ padding: 2rem;
268
+ text-align: center;
269
+ border-radius: 8px;
270
+
271
+ .cta-title {
272
+ margin: 0 0 1rem;
273
+ font-size: 2rem;
274
+ font-weight: bold;
275
+ }
276
+
277
+ .cta-description {
278
+ margin: 0 0 1.5rem;
279
+ font-size: 1.125rem;
280
+ }
281
+
282
+ .cta-button {
283
+ display: inline-block;
284
+ padding: 0.75rem 1.5rem;
285
+ background: rgba(255, 255, 255, 0.2);
286
+ border-radius: 4px;
287
+ text-decoration: none;
288
+ font-weight: 600;
289
+ transition: all 0.3s ease;
290
+
291
+ &:hover {
292
+ background: rgba(255, 255, 255, 0.3);
293
+ transform: translateY(-2px);
294
+ }
295
+ }
296
+ }
297
+ ```
298
+
299
+ ### File: `src/editor.scss`
300
+
301
+ ```scss
302
+ .cta-block {
303
+ .cta-button-wrapper {
304
+ margin-top: 1rem;
305
+
306
+ .components-base-control {
307
+ margin-top: 0.5rem;
308
+ }
309
+ }
310
+ }
311
+ ```
312
+
313
+ ---
314
+
315
+ ## 7. Package Configuration
316
+
317
+ ### File: `package.json`
318
+
319
+ ```json
320
+ {
321
+ "name": "cta-block",
322
+ "version": "1.0.0",
323
+ "description": "Call to Action Gutenberg Block",
324
+ "scripts": {
325
+ "build": "wp-scripts build",
326
+ "start": "wp-scripts start",
327
+ "lint:js": "wp-scripts lint-js",
328
+ "format": "wp-scripts format"
329
+ },
330
+ "devDependencies": {
331
+ "@wordpress/scripts": "^27.0.0"
332
+ }
333
+ }
334
+ ```
335
+
336
+ ---
337
+
338
+ ## 8. Installation & Build
339
+
340
+ ```bash
341
+ # Install dependencies
342
+ npm install
343
+
344
+ # Development mode (watch for changes)
345
+ npm start
346
+
347
+ # Production build
348
+ npm run build
349
+ ```
350
+
351
+ ---
352
+
353
+ ## 9. Testing Steps
354
+
355
+ ### Manual Testing
356
+
357
+ 1. **Activate Plugin**
358
+ - Upload plugin to `wp-content/plugins/`
359
+ - Activate in WordPress admin
360
+
361
+ 2. **Add Block to Editor**
362
+ - Create/edit a post or page
363
+ - Click "+" to add block
364
+ - Search for "Call to Action"
365
+ - Add block to content
366
+
367
+ 3. **Test Block Functionality**
368
+ - Enter title text
369
+ - Enter description text
370
+ - Enter button text
371
+ - Enter button URL
372
+ - Change background color in sidebar
373
+ - Change text color in sidebar
374
+
375
+ 4. **Test Frontend Display**
376
+ - Save/publish post
377
+ - View on frontend
378
+ - Verify styles are applied
379
+ - Test button link works
380
+ - Test responsive design
381
+
382
+ 5. **Test Block Validation**
383
+ - Save and reload editor
384
+ - Verify no validation errors
385
+ - Verify content persists correctly
386
+
387
+ ### Automated Testing
388
+
389
+ ```javascript
390
+ // tests/e2e/cta-block.test.js
391
+ describe('CTA Block', () => {
392
+ beforeEach(async () => {
393
+ await createNewPost();
394
+ });
395
+
396
+ it('should insert block', async () => {
397
+ await insertBlock('Call to Action');
398
+ expect(await page.$('.cta-block')).toBeTruthy();
399
+ });
400
+
401
+ it('should allow editing title', async () => {
402
+ await insertBlock('Call to Action');
403
+ await page.type('.cta-title', 'Test Title');
404
+ const title = await page.$eval('.cta-title', el => el.textContent);
405
+ expect(title).toBe('Test Title');
406
+ });
407
+ });
408
+ ```
409
+
410
+ ---
411
+
412
+ ## Best Practices Demonstrated
413
+
414
+ ✅ **block.json** - Modern block metadata format
415
+ ✅ **@wordpress/scripts** - Official build tools
416
+ ✅ **InspectorControls** - Settings sidebar
417
+ ✅ **RichText** - Editable content
418
+ ✅ **Color customization** - User-controlled colors
419
+ ✅ **Proper sanitization** - Secure attribute handling
420
+ ✅ **Internationalization** - Translation-ready strings
421
+ ✅ **Responsive design** - Mobile-friendly styles
422
+