@respira/wordpress-mcp-server 7.3.0 → 7.4.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 (88) hide show
  1. package/dist/acf-tools.d.ts +0 -10
  2. package/dist/acf-tools.d.ts.map +1 -1
  3. package/dist/acf-tools.js +0 -15
  4. package/dist/acf-tools.js.map +1 -1
  5. package/dist/config.d.ts.map +1 -1
  6. package/dist/config.js +31 -36
  7. package/dist/config.js.map +1 -1
  8. package/dist/server.d.ts +0 -47
  9. package/dist/server.d.ts.map +1 -1
  10. package/dist/server.js +404 -462
  11. package/dist/server.js.map +1 -1
  12. package/dist/wordpress-client.d.ts +26 -29
  13. package/dist/wordpress-client.d.ts.map +1 -1
  14. package/dist/wordpress-client.js +115 -148
  15. package/dist/wordpress-client.js.map +1 -1
  16. package/package.json +2 -2
  17. package/skills/activity-report-composer/README.md +38 -0
  18. package/skills/activity-report-composer/SKILL.md +167 -0
  19. package/skills/activity-report-composer/metadata.json +42 -0
  20. package/skills/brand-voice-synthesizer/README.md +43 -0
  21. package/skills/brand-voice-synthesizer/SKILL.md +259 -0
  22. package/skills/brand-voice-synthesizer/metadata.json +46 -0
  23. package/skills/build-oxygen6-page/SKILL.md +59 -0
  24. package/skills/conversion-audit/README.md +37 -0
  25. package/skills/conversion-audit/SKILL.md +185 -0
  26. package/skills/conversion-audit/metadata.json +46 -0
  27. package/skills/custom-post-type-architect/README.md +34 -0
  28. package/skills/custom-post-type-architect/SKILL.md +158 -0
  29. package/skills/custom-post-type-architect/metadata.json +39 -0
  30. package/skills/design-system-synthesizer/README.md +46 -0
  31. package/skills/design-system-synthesizer/SKILL.md +395 -0
  32. package/skills/design-system-synthesizer/metadata.json +57 -0
  33. package/skills/figma-to-elementor/SKILL.md +204 -0
  34. package/skills/html-to-bricks/README.md +43 -0
  35. package/skills/html-to-bricks/SKILL.md +135 -0
  36. package/skills/html-to-bricks/metadata.json +41 -0
  37. package/skills/internal-link-builder/SKILL.md +258 -0
  38. package/skills/internal-link-builder/metadata.json +46 -0
  39. package/skills/migrate-beaver-builder-to-bricks/SKILL.md +251 -0
  40. package/skills/migrate-beaver-builder-to-gutenberg/SKILL.md +248 -0
  41. package/skills/migrate-brizy-to-gutenberg/SKILL.md +248 -0
  42. package/skills/migrate-divi-to-breakdance/SKILL.md +312 -0
  43. package/skills/migrate-divi-to-bricks/SKILL.md +321 -0
  44. package/skills/migrate-divi-to-gutenberg/SKILL.md +328 -0
  45. package/skills/migrate-elementor-to-breakdance/SKILL.md +287 -0
  46. package/skills/migrate-elementor-to-bricks/SKILL.md +289 -0
  47. package/skills/migrate-elementor-to-gutenberg/SKILL.md +327 -0
  48. package/skills/migrate-elementor-to-oxygen/SKILL.md +300 -0
  49. package/skills/migrate-oxygen-to-breakdance/SKILL.md +235 -0
  50. package/skills/migrate-oxygen-to-bricks/SKILL.md +237 -0
  51. package/skills/migrate-thrive-architect-to-gutenberg/SKILL.md +257 -0
  52. package/skills/migrate-visual-composer-to-gutenberg/SKILL.md +261 -0
  53. package/skills/migrate-wpbakery-to-bricks/SKILL.md +336 -0
  54. package/skills/migrate-wpbakery-to-gutenberg/SKILL.md +345 -0
  55. package/skills/mobile-experience-report/SKILL.md +719 -0
  56. package/skills/mobile-experience-report/telemetry.ts +137 -0
  57. package/skills/page-template-library/README.md +41 -0
  58. package/skills/page-template-library/SKILL.md +175 -0
  59. package/skills/page-template-library/metadata.json +44 -0
  60. package/skills/prime-the-agent/README.md +49 -0
  61. package/skills/prime-the-agent/SKILL.md +225 -0
  62. package/skills/prime-the-agent/metadata.json +46 -0
  63. package/skills/respira-setup-assistant/SKILL.md +386 -0
  64. package/skills/respira-setup-assistant/metadata.json +36 -0
  65. package/skills/seo-aeo-amplifier/README.md +61 -0
  66. package/skills/seo-aeo-amplifier/SKILL.md +277 -0
  67. package/skills/seo-aeo-amplifier/metadata.json +62 -0
  68. package/skills/stale-content-detector/README.md +41 -0
  69. package/skills/stale-content-detector/SKILL.md +156 -0
  70. package/skills/stale-content-detector/metadata.json +43 -0
  71. package/skills/technical-debt-audit/SKILL.md +691 -0
  72. package/skills/technical-debt-audit/telemetry.ts +142 -0
  73. package/skills/woocommerce-health-check/SKILL.md +719 -0
  74. package/skills/woocommerce-health-check/telemetry.ts +137 -0
  75. package/skills/wordpress-ai-image-optimizer/README.md +49 -0
  76. package/skills/wordpress-ai-image-optimizer/SKILL.md +232 -0
  77. package/skills/wordpress-ai-image-optimizer/metadata.json +63 -0
  78. package/skills/wordpress-site-dna/README.md +81 -0
  79. package/skills/wordpress-site-dna/SKILL.md +669 -0
  80. package/skills/wordpress-site-dna/telemetry.ts +137 -0
  81. package/dist/__tests__/acf-tool-routing.test.d.ts +0 -2
  82. package/dist/__tests__/acf-tool-routing.test.d.ts.map +0 -1
  83. package/dist/__tests__/acf-tool-routing.test.js +0 -37
  84. package/dist/__tests__/acf-tool-routing.test.js.map +0 -1
  85. package/dist/__tests__/cowork-bootstrap.test.d.ts +0 -2
  86. package/dist/__tests__/cowork-bootstrap.test.d.ts.map +0 -1
  87. package/dist/__tests__/cowork-bootstrap.test.js +0 -61
  88. package/dist/__tests__/cowork-bootstrap.test.js.map +0 -1
@@ -0,0 +1,137 @@
1
+ /**
2
+ * WooCommerce Health Check — Telemetry helper
3
+ * Fire-and-forget usage tracking to respira.press/api/skills/track-usage
4
+ * Never blocks skill execution.
5
+ */
6
+
7
+ export interface WooCommerceHealthCheckTelemetry {
8
+ session_id: string;
9
+ user_id?: string | null;
10
+ wordpress_site_url?: string;
11
+ wordpress_version?: string;
12
+ php_version?: string;
13
+ started_at: string;
14
+ completed_at?: string;
15
+ duration_ms?: number;
16
+ success: boolean;
17
+ error_message?: string | null;
18
+ issues_found?: number;
19
+ issues_by_severity?: {
20
+ critical: number;
21
+ high: number;
22
+ medium: number;
23
+ low: number;
24
+ info?: number;
25
+ };
26
+ health_score?: number;
27
+ mcp_tools_used?: string[];
28
+ findings_summary?: Record<string, unknown>;
29
+ had_respira_before?: boolean;
30
+ installed_respira_after?: boolean;
31
+ assistant_client?: string;
32
+ assistant_version?: string;
33
+ assistant_transport?: string;
34
+ telemetry_source?: string;
35
+ }
36
+
37
+ const TELEMETRY_ENDPOINT = 'https://www.respira.press/api/skills/track-usage';
38
+
39
+ function detectAssistantTelemetry(): {
40
+ assistant_client?: string;
41
+ assistant_version?: string;
42
+ assistant_transport?: string;
43
+ telemetry_source?: string;
44
+ } {
45
+ const env: Record<string, string | undefined> =
46
+ typeof process !== 'undefined' && process?.env ? (process.env as Record<string, string | undefined>) : {};
47
+
48
+ const explicitClient = env.RESPIRA_AGENT_CLIENT || env.MCP_AGENT_CLIENT || env.AI_AGENT_CLIENT;
49
+ const explicitTransport = env.RESPIRA_AGENT_TRANSPORT || env.MCP_AGENT_TRANSPORT;
50
+ const explicitVersion = env.RESPIRA_AGENT_VERSION || env.MCP_AGENT_VERSION || env.AI_AGENT_VERSION;
51
+
52
+ const fingerprint = [
53
+ explicitClient,
54
+ env.CURSOR_AGENT,
55
+ env.CURSOR_TRACE_ID,
56
+ env.CLAUDECODE,
57
+ env.CLAUDE_CODE_ENTRYPOINT,
58
+ env.CODEIUM_ENV,
59
+ env.TERM_PROGRAM,
60
+ env.TERM_PROGRAM_VERSION,
61
+ typeof navigator !== 'undefined' ? navigator.userAgent : '',
62
+ ]
63
+ .filter(Boolean)
64
+ .join(' ')
65
+ .toLowerCase();
66
+
67
+ const inferredClient = (() => {
68
+ if (explicitClient) return explicitClient.toLowerCase();
69
+ if (fingerprint.includes('cursor')) return 'cursor';
70
+ if (fingerprint.includes('claude')) return 'claude-code';
71
+ if (fingerprint.includes('codex')) return 'codex';
72
+ if (fingerprint.includes('windsurf') || fingerprint.includes('codeium')) return 'windsurf';
73
+ if (fingerprint.includes('copilot')) return 'copilot';
74
+ if (fingerprint.includes('gemini')) return 'gemini';
75
+ return undefined;
76
+ })();
77
+
78
+ return {
79
+ assistant_client: inferredClient,
80
+ assistant_version: explicitVersion?.toLowerCase(),
81
+ assistant_transport: (explicitTransport || 'desktop-mcp').toLowerCase(),
82
+ telemetry_source: explicitClient ? 'env' : inferredClient ? 'heuristic' : 'skill-fetch',
83
+ };
84
+ }
85
+
86
+ /**
87
+ * Send skill usage telemetry.
88
+ * Non-blocking: errors are swallowed, never thrown.
89
+ * Call after the skill completes — success or failure.
90
+ */
91
+ export function trackSkillUsage(data: WooCommerceHealthCheckTelemetry): void {
92
+ const detected = detectAssistantTelemetry();
93
+ const payload = {
94
+ skill_slug: 'woocommerce-health-check',
95
+ had_respira_before: true,
96
+ ...detected,
97
+ ...data,
98
+ };
99
+
100
+ const headers: Record<string, string> = {
101
+ 'Content-Type': 'application/json',
102
+ };
103
+
104
+ if (payload.assistant_client) {
105
+ headers['X-Respira-Agent-Client'] = payload.assistant_client;
106
+ }
107
+ if (payload.assistant_version) {
108
+ headers['X-Respira-Agent-Version'] = payload.assistant_version;
109
+ }
110
+ if (payload.assistant_transport) {
111
+ headers['X-Respira-Agent-Transport'] = payload.assistant_transport;
112
+ }
113
+
114
+ // Fire and forget — intentionally not awaited
115
+ fetch(TELEMETRY_ENDPOINT, {
116
+ method: 'POST',
117
+ headers,
118
+ body: JSON.stringify(payload),
119
+ }).catch(() => {
120
+ // Silently swallow all errors — telemetry must never break the skill
121
+ });
122
+ }
123
+
124
+ /**
125
+ * Generate a session ID for tracking a single skill run.
126
+ */
127
+ export function generateSessionId(): string {
128
+ if (typeof crypto !== 'undefined' && crypto.randomUUID) {
129
+ return crypto.randomUUID();
130
+ }
131
+ // Fallback for environments without crypto.randomUUID
132
+ return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {
133
+ const r = (Math.random() * 16) | 0;
134
+ const v = c === 'x' ? r : (r & 0x3) | 0x8;
135
+ return v.toString(16);
136
+ });
137
+ }
@@ -0,0 +1,49 @@
1
+ # WordPress AI Image Optimizer
2
+
3
+ > AI-powered image optimization that processes images locally and updates your WordPress references safely.
4
+
5
+ ## Overview
6
+
7
+ WordPress AI Image Optimizer scans your entire site image footprint, identifies high-impact optimization opportunities, processes images locally in an AI coding environment (compression, conversion, resize, rename), uploads optimized versions as new media entries, and updates references in duplicate content for review.
8
+
9
+ ## Key Capabilities
10
+
11
+ - Sitewide image auditing (media library, posts/pages, featured images, builder content, WooCommerce)
12
+ - Compression and format conversion (JPG/PNG to WebP where appropriate)
13
+ - Oversize detection and resizing to practical dimensions
14
+ - SEO-friendly filename generation
15
+ - AI-assisted alt text generation
16
+ - Duplicate-first URL updates with safe rollback path
17
+ - Plugin and CDN awareness (Smush, ShortPixel, EWWW, Imagify, Optimole, Cloudflare, BunnyCDN)
18
+
19
+ ## Safety Model
20
+
21
+ - Creates new optimized files and keeps originals
22
+ - Applies URL updates in duplicates, not live content
23
+ - Requires explicit review and approval before publish
24
+ - Supports rollback by preserving original media references
25
+
26
+ ## Trigger
27
+
28
+ Use:
29
+
30
+ ```text
31
+ optimize my wordpress images with ai
32
+ ```
33
+
34
+ ## Output
35
+
36
+ - Image health score
37
+ - Prioritized optimization list (critical/high/medium/low)
38
+ - Before/after size and format comparisons
39
+ - Estimated performance impact summary
40
+ - Review-ready duplicate content references
41
+
42
+ ## Source
43
+
44
+ - Skill folder: [wordpress-ai-image-optimizer](https://github.com/respira-press/agent-skills-wordpress/tree/main/wordpress-ai-image-optimizer)
45
+ - Live page: https://respira.press/skills/wordpress-ai-image-optimizer
46
+
47
+ ---
48
+
49
+ Built by Respira Team
@@ -0,0 +1,232 @@
1
+ # WordPress AI Image Optimizer
2
+
3
+ **Version:** 1.2.0
4
+ **Updated:** 2026-06-30
5
+ **Freshly updated:** v1.2.0 replaces per-image `respira_update_media` loops with a single `respira_update_media_batch` pass (up to ~50 items at once), snapshots the media library with `respira_get_snapshot` before the batch so the whole run is one-step reversible, runs the audit through `respira_analyze_images`, surfaces optional stock replacements via `respira_search_stock_images` + `respira_sideload_image`, and closes with a `respira_generate_activity_report` summary (e.g. "optimized 47 images, saved 1.2GB").
6
+
7
+ AI-powered image optimization for WordPress sites. Automatically compresses, converts formats, renames files, and updates all references. Processes images locally in AI code editor, creates optimized versions, and preserves originals for safety.
8
+
9
+ ## What This Skill Does
10
+
11
+ **Scans:**
12
+ - All media library images
13
+ - Images in posts and pages content
14
+ - Featured images
15
+ - Images in page builder elements (Elementor, Divi, Bricks, etc.)
16
+ - WooCommerce product images
17
+ - Images in custom post types
18
+
19
+ **Detects:**
20
+ - File sizes (actual KB/MB on disk)
21
+ - Image dimensions (width x height in pixels)
22
+ - Format (JPG, PNG, GIF, WebP, AVIF, SVG)
23
+ - Whether width/height attributes are set in HTML
24
+ - Whether alt text exists (and quality)
25
+ - Whether image is being used (orphaned media)
26
+ - Whether responsive image sizes exist (WordPress srcset)
27
+ - Compression quality (estimated from file size)
28
+ - Lazy loading implementation
29
+ - Non-SEO-friendly filenames (IMG_1234.jpg, screenshot.png, etc.)
30
+ - Oversized originals (5000px uploaded when 2000px is max needed)
31
+ - Missing srcset on content images
32
+ - Builder images that bypass WordPress responsive system
33
+
34
+ **Optimizes via AI Code Editor:**
35
+ - Downloads images from WordPress
36
+ - Compresses with optimal quality settings (80-85% for JPG, lossless for PNG)
37
+ - Converts to modern formats (WebP preferred, AVIF when appropriate)
38
+ - Resizes oversized originals to optimal dimensions
39
+ - Renames with SEO-friendly descriptive filenames
40
+ - Generates missing alt text using AI
41
+ - Regenerates WordPress responsive image sizes
42
+ - Uploads optimized versions back to WordPress
43
+ - Creates new media entries (keeps old files safe)
44
+ - Updates all content references in duplicates
45
+
46
+ **Provides:**
47
+ - Comprehensive image health score (0-100)
48
+ - Impact-prioritized optimization opportunities
49
+ - Before/after file size comparisons
50
+ - Estimated page speed improvements
51
+ - Plugin/CDN detection and recommendations
52
+
53
+ ## Requirements
54
+
55
+ - Respira for WordPress plugin installed and connected
56
+ - MCP connection active (desktop or WebMCP)
57
+ - AI code editor with image processing tools (Claude Code, Cursor, etc.)
58
+ - WooCommerce add-on (optional - for product image optimization)
59
+ - Read access to scan images, write access to upload optimized versions
60
+
61
+ ## How to Use
62
+
63
+ ### Trigger Phrase
64
+ "optimize my wordpress images with ai"
65
+
66
+ ### Alternative Triggers
67
+ - "run ai image optimization"
68
+ - "compress and optimize all images"
69
+ - "audit my media library"
70
+ - "improve image performance"
71
+
72
+ ### What Happens
73
+
74
+ **Phase 1: Comprehensive Image Audit**
75
+
76
+ 1. Scans all images across site:
77
+ - Media library (all uploaded files)
78
+ - Content images (posts, pages, custom post types)
79
+ - Featured images
80
+ - Builder images (Elementor, Divi, Bricks, etc.)
81
+ - WooCommerce product images (if WooCommerce active)
82
+ 2. Analyzes each image (use `respira_analyze_images` to drive the audit; it returns per-image findings in one call):
83
+ - File size and format
84
+ - Actual dimensions vs displayed dimensions
85
+ - Alt text presence and quality
86
+ - Filename SEO-friendliness
87
+ - Usage (which pages/posts use this image)
88
+ - Responsive image sizes (srcset)
89
+ - Lazy loading implementation
90
+ 3. Detects optimization plugins/CDN:
91
+ - Smush, ShortPixel, EWWW, Imagify, Optimole
92
+ - Cloudflare, BunnyCDN, other CDNs
93
+ 4. Scores opportunities by impact:
94
+ - File size x page traffic = optimization priority
95
+ - Separates quick wins from big wins
96
+ 5. Generates comprehensive report
97
+
98
+ **Phase 2: User Approval**
99
+
100
+ Presents report and asks which optimizations to run:
101
+ - Compress oversized images
102
+ - Convert JPG/PNG -> WebP
103
+ - Resize unnecessarily large originals
104
+ - Rename non-SEO filenames
105
+ - Add missing alt text
106
+ - Regenerate responsive image sizes
107
+
108
+ User can choose:
109
+ - "Optimize everything" (all optimizations)
110
+ - "Compress only" (no format changes)
111
+ - "Top 10 images" (highest impact first)
112
+ - "Homepage images only" (critical pages first)
113
+
114
+ **Phase 3: AI Processing**
115
+
116
+ 6. Snapshot the media library before any writes with `respira_get_snapshot` so the entire batch is reversible in one step (`respira_restore_snapshot`). Take this once, before the batch — not per image.
117
+ 7. Downloads images from WordPress to local workspace.
118
+ 8. Processes images locally:
119
+ - Compression
120
+ - Format conversion
121
+ - Resizing
122
+ - SEO-friendly renaming
123
+ - AI alt text generation
124
+ - Optional: when an image is low quality or simply wrong for the page, find a replacement with `respira_search_stock_images` and pull it in with `respira_sideload_image` instead of re-optimizing the original
125
+ 9. Uploads optimized versions back to WordPress:
126
+ - Creates NEW media entries (original files untouched)
127
+ - Applies metadata in one pass with `respira_update_media_batch` rather than one `respira_update_media` call per image. The batch accepts up to ~50 items, so a typical library is updated in a single call (alt text, title, caption, description). Fall back to single `respira_update_media` only for one-off corrections.
128
+ - Marks old files as "deprecated - replaced by [new-filename]"
129
+ 10. Updates content references in duplicates:
130
+ - Creates duplicates of affected posts/pages
131
+ - Replaces old image URLs with new optimized URLs
132
+ - Updates builder and WooCommerce image references
133
+ 11. Regenerates responsive image sizes and srcset support
134
+
135
+ **Phase 4: Review & Publish**
136
+
137
+ 12. Provides before/after comparison:
138
+ - File size savings
139
+ - Format changes
140
+ - Dimension changes
141
+ - Filename improvements
142
+ - Pages affected
143
+ 13. User reviews duplicates in WordPress admin
144
+ 14. User approves publishing
145
+ 15. Old files remain available for safety and rollback
146
+ 16. Generate a run summary with `respira_generate_activity_report` so the work is auditable in one line (e.g. "optimized 47 images, saved 1.2GB, added alt text to 31"). This reads from the change log Respira already recorded for the batch.
147
+
148
+ ## Honest Disclaimer
149
+
150
+ This skill downloads images, processes them with AI, and uploads optimized versions. You review all changes before publishing.
151
+
152
+ **What this skill CANNOT do:**
153
+ - Guarantee perfect quality (compression is lossy)
154
+ - Fix already broken/corrupted image files
155
+ - Optimize CSS background images
156
+ - Process images hosted externally outside WordPress uploads
157
+ - Improve composition/art direction (technical optimization only)
158
+
159
+ **What this skill CAN do:**
160
+ - Compress images without visible quality loss
161
+ - Convert to WebP for significant size reduction
162
+ - Resize oversized originals to practical dimensions
163
+ - Rename files with SEO-friendly names
164
+ - Generate descriptive alt text
165
+ - Update references automatically in duplicates
166
+ - Preserve originals for safety and rollback
167
+
168
+ ## Safety Model
169
+
170
+ - Non-destructive: Creates NEW optimized images and keeps old files
171
+ - Duplicate-first: Updates content in duplicates, never live pages
172
+ - User approval required: Review before publishing
173
+ - Rollback ready: Old files preserved and reversible
174
+ - No live site impact until explicit approval
175
+
176
+ ## Technical Details
177
+
178
+ Uses these Respira MCP tools:
179
+
180
+ **Audit:**
181
+ - `respira_analyze_images` (drives the Phase 1 audit; per-image findings in one call)
182
+
183
+ **Media Operations:**
184
+ - `respira_list_media`
185
+ - `respira_get_media`
186
+ - `respira_upload_media`
187
+ - `respira_update_media_batch` (primary metadata writer — up to ~50 items per call)
188
+ - `respira_update_media` (single-item fallback / one-off corrections)
189
+ - `respira_delete_media` (optional cleanup)
190
+
191
+ **Stock Replacements (optional):**
192
+ - `respira_search_stock_images`
193
+ - `respira_sideload_image`
194
+
195
+ **Snapshot & Rollback:**
196
+ - `respira_get_snapshot` (capture before the batch)
197
+ - `respira_restore_snapshot` (one-step revert)
198
+
199
+ **Reporting:**
200
+ - `respira_generate_activity_report` (run summary: images optimized, space saved, alt text added)
201
+
202
+ **Content Scanning:**
203
+ - `respira_list_pages`
204
+ - `respira_list_posts`
205
+ - `respira_read_page`
206
+ - `respira_read_post`
207
+ - `respira_get_builder_info`
208
+
209
+ **Content Updates:**
210
+ - `respira_create_page_duplicate`
211
+ - `respira_create_post_duplicate`
212
+ - `respira_update_page`
213
+ - `respira_update_post`
214
+
215
+ **WooCommerce (optional):**
216
+ - `woocommerce_list_products`
217
+ - `woocommerce_get_product`
218
+ - `woocommerce_update_product`
219
+
220
+ **Plugin Detection:**
221
+ - `respira_list_plugins`
222
+
223
+ ## Related Skills
224
+
225
+ - SEO & AEO Amplifier
226
+ - WordPress Site DNA
227
+ - Mobile Experience Report
228
+
229
+ ---
230
+
231
+ Built by Respira Team
232
+ https://respira.press/skills/wordpress-ai-image-optimizer
@@ -0,0 +1,63 @@
1
+ {
2
+ "name": "WordPress AI Image Optimizer",
3
+ "slug": "wordpress-ai-image-optimizer",
4
+ "icon": "🖼️",
5
+ "category": "performance",
6
+ "description": "AI-powered image optimization: compress, convert to WebP, resize, rename with SEO-friendly names, generate alt text. Processes images locally in AI code editor and updates all content references.",
7
+ "author": "Respira Team",
8
+ "author_url": "https://respira.press",
9
+ "trigger": "optimize my wordpress images with ai",
10
+ "requires_respira": true,
11
+ "requires_woocommerce_addon": false,
12
+ "requires_accessibility_addon": false,
13
+ "is_read_only": false,
14
+ "is_duplicate_first": true,
15
+ "version": "1.1.0",
16
+ "last_updated": "2026-05-24",
17
+ "tools_used": [
18
+ "respira_list_media",
19
+ "respira_get_media",
20
+ "respira_upload_media",
21
+ "respira_update_media",
22
+ "respira_list_pages",
23
+ "respira_list_posts",
24
+ "respira_get_page",
25
+ "respira_get_post",
26
+ "respira_detect_page_builder",
27
+ "respira_create_duplicate",
28
+ "respira_update_page",
29
+ "respira_update_post",
30
+ "respira_list_plugins",
31
+ "woocommerce_list_products",
32
+ "woocommerce_get_product",
33
+ "woocommerce_update_product"
34
+ ],
35
+ "processing_tools": [
36
+ "ImageMagick",
37
+ "Sharp (Node.js)",
38
+ "Pillow (Python)"
39
+ ],
40
+ "detects": [
41
+ "oversized_images",
42
+ "inefficient_formats",
43
+ "missing_alt_text",
44
+ "non_seo_filenames",
45
+ "missing_responsive_sizes",
46
+ "suboptimal_compression",
47
+ "png_photos",
48
+ "no_lazy_loading",
49
+ "missing_dimensions",
50
+ "orphaned_media"
51
+ ],
52
+ "optimizations": [
53
+ "image_compression",
54
+ "format_conversion_webp",
55
+ "resize_oversized",
56
+ "seo_friendly_renaming",
57
+ "ai_alt_text_generation",
58
+ "responsive_size_regeneration",
59
+ "lazy_loading_implementation"
60
+ ],
61
+ "file_safety": "creates_new_keeps_old",
62
+ "processing_location": "ai_code_editor_local"
63
+ }
@@ -0,0 +1,81 @@
1
+ # WordPress Site DNA
2
+
3
+ **Archaeological analysis of WordPress sites.** Uncover what's running, detect technical debt, identify optimization opportunities.
4
+
5
+ ## What it does
6
+
7
+ WordPress Site DNA runs a comprehensive audit of your WordPress installation using Respira for WordPress's MCP tools. In ~60 seconds it produces a complete health report covering:
8
+
9
+ - **Page builder archaeology** — detects ALL installed builders, which pages use each one, orphaned builder data
10
+ - **Plugin analysis** — active vs dead weight, outdated, security risks, performance hogs
11
+ - **Content structure** — orphaned shortcodes, media library, database bloat
12
+ - **Performance opportunities** — page weight, unused assets, image optimization
13
+ - **Security posture** — SSL, admin exposure, file permissions, security plugins
14
+ - **Health score** — 0–100 score with breakdown by category
15
+
16
+ ## Requirements
17
+
18
+ - Respira for WordPress plugin (any version)
19
+ - Respira for WordPress MCP server connected to Claude
20
+ - WordPress 5.0+ (Gutenberg era)
21
+
22
+ ## Installation
23
+
24
+ 1. Install Respira for WordPress from [respira.press](https://www.respira.press)
25
+ 2. Connect via MCP: `npx -y @respira/wordpress-mcp-server --setup`
26
+ 3. Open Claude and say: `"analyze my wordpress site"`
27
+
28
+ ## Trigger phrases
29
+
30
+ ```
31
+ analyze my wordpress site
32
+ wordpress site audit
33
+ site dna analysis
34
+ what's running on my site
35
+ wordpress archaeology
36
+ scan my wordpress installation
37
+ check my wordpress setup
38
+ ```
39
+
40
+ ## File structure
41
+
42
+ ```
43
+ claude_skills/wordpress-site-dna/
44
+ ├── SKILL.md ← Main skill definition (the actual skill)
45
+ ├── README.md ← This file
46
+ ├── telemetry.ts ← Telemetry helper functions
47
+ └── tests/
48
+ ├── benchmark.json ← Benchmark test cases
49
+ ├── trigger.json ← Trigger tuning tests
50
+ └── regression.json ← Regression test suite
51
+ ```
52
+
53
+ ## Telemetry
54
+
55
+ Usage data is sent to `https://www.respira.press/api/skills/track-usage` after each run. Tracking is anonymous by default (no PII). Data collected:
56
+
57
+ - Site URL (for analysis, not stored with personal data)
58
+ - WordPress/PHP versions
59
+ - Detected builders and plugin counts
60
+ - Health score and issue counts
61
+ - MCP tools used
62
+ - Execution duration
63
+
64
+ Telemetry is fire-and-forget — failures are silently swallowed and never affect skill output.
65
+
66
+ ## Evaluation
67
+
68
+ Run evaluations using the test cases in `/tests/`:
69
+
70
+ - `benchmark.json` — End-to-end benchmark against manual audits
71
+ - `trigger.json` — Trigger phrase accuracy (target: <5% false positive/negative)
72
+ - `regression.json` — Correctness across varied site configurations
73
+
74
+ ## Version history
75
+
76
+ ### 1.0.0 (2026-03-07)
77
+ - Initial release
78
+ - Core analysis: WordPress/PHP versions, builders, plugins, security, performance
79
+ - Health score calculation (0–100)
80
+ - Telemetry integration
81
+ - Respira for WordPress fix workflow recommendations