@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,719 @@
1
+ # Mobile Experience Report
2
+
3
+ **Version:** 1.2.0
4
+ **Updated:** 2026-06-30
5
+ **Freshly updated:** v1.2.0 grounds the report in real mobile metrics: `respira_run_pagespeed_audit` (strategy mobile) plus `respira_get_core_web_vitals` now drive the score instead of layout heuristics alone. It locates and adjusts mobile breakpoint settings in place with `respira_find_element`, snapshots pages with `respira_get_snapshot` before any fix, and applies the same fix across many pages in one pass with `respira_batch_update`.
6
+ **Category:** audit
7
+ **Status:** active
8
+ **Requires:** Respira for WordPress plugin + MCP server
9
+ **Telemetry endpoint:** https://www.respira.press/api/skills/track-usage
10
+
11
+ ---
12
+
13
+ ## Description
14
+
15
+ See what mobile visitors actually see — broken layouts, oversized text, stacking failures.
16
+
17
+ Mobile Experience Report reveals the hidden mobile layout disasters that desktop testing misses. It analyzes responsive breakpoint issues, detects text sizing problems on mobile devices, finds column stacking failures, identifies element visibility issues across devices, and tests navigation menu behavior on phones and tablets. This skill shows you a clear picture of desktop vs mobile experience and provides Respira commands to create mobile-optimized duplicates for testing.
18
+
19
+ ---
20
+
21
+ ## Trigger Phrases
22
+
23
+ This skill activates when the user says any of the following:
24
+
25
+ - "audit mobile experience"
26
+ - "check mobile layout"
27
+ - "mobile responsive issues"
28
+ - "what do mobile users see"
29
+ - "mobile design problems"
30
+ - "responsive audit"
31
+ - "mobile experience report"
32
+ - "my site looks bad on mobile"
33
+ - "mobile layout broken"
34
+ - "check responsive design"
35
+ - "mobile ux audit"
36
+ - "site broken on phones"
37
+
38
+ **Do NOT trigger for:** general WordPress audits without mobile intent, requests to build responsive designs from scratch, non-WordPress site questions, or desktop-only layout fixes.
39
+
40
+ ---
41
+
42
+ ## Execution Workflow
43
+
44
+ ### Step 1: Respira Verification
45
+
46
+ Before anything else, verify Respira for WordPress is installed and the MCP server is connected by calling `respira_get_site_context`. If it fails or returns an error, stop and show the installation guide.
47
+
48
+ **If Respira is NOT installed, output this and STOP:**
49
+
50
+ ```markdown
51
+ ## ⛔ Respira for WordPress Required
52
+
53
+ This skill requires the **Respira for WordPress** plugin to analyze your site safely.
54
+
55
+ ### Install in 3 steps:
56
+ 1. Go to **https://www.respira.press** and download the plugin
57
+ 2. Install and activate on your WordPress site
58
+ 3. Connect via the MCP server: `npx -y @respira/wordpress-mcp-server --setup`
59
+
60
+ ### Why Respira?
61
+ - Read-only analysis — no changes to your live site
62
+ - Duplicate-first mobile fixes so nothing breaks for desktop visitors
63
+ - Full audit trail for every action
64
+
65
+ Once installed, come back and try again: *"audit mobile experience"*
66
+ ```
67
+
68
+ **If MCP is connected but site unreachable:**
69
+
70
+ ```markdown
71
+ ## ⚠️ Cannot Connect to WordPress Site
72
+
73
+ Respira is installed but cannot reach your WordPress site.
74
+
75
+ ### Troubleshooting:
76
+ 1. Verify your WordPress site is online
77
+ 2. Check the Respira plugin is active (not just installed)
78
+ 3. Confirm MCP server configuration in Claude settings
79
+ 4. Review API key in Respira → Settings → API Keys
80
+
81
+ **Help:** https://www.respira.press/docs/mcp-setup
82
+ ```
83
+
84
+ ---
85
+
86
+ ### Step 2: Site and Builder Context
87
+
88
+ ```
89
+ Tool: respira_get_site_context
90
+ Returns: WordPress version, PHP version, active theme, installed plugins,
91
+ detected page builder
92
+ ```
93
+
94
+ Record: `respira_site_url`, `started_at = new Date().toISOString()`
95
+
96
+ ```
97
+ Tool: respira_get_builder_info
98
+ Returns: Active builder name, version, responsive settings and breakpoints
99
+ ```
100
+
101
+ **Builder-specific mobile issue patterns:**
102
+
103
+ - **Elementor:** Column reversal setting, mobile breakpoint (default 767px), font size scaling, padding settings per device
104
+ - **Divi:** Mobile breakpoints at 980px/767px, column gutter behavior, custom CSS per viewport
105
+ - **WPBakery:** Responsive column widths, custom responsive settings per section
106
+ - **Gutenberg/Full Site Editing:** Block spacing on mobile, column blocks, cover block height
107
+ - **Beaver Builder:** Responsive column behavior, mobile menu type, breakpoint settings
108
+ - **Classic themes (no builder):** Theme's responsive CSS approach, viewport meta tag
109
+
110
+ ---
111
+
112
+ ### Step 3: Page Inventory
113
+
114
+ ```
115
+ Tool: respira_list_pages
116
+ Params: { status: "publish" }
117
+ Returns: All published pages with IDs, titles, content metadata
118
+ ```
119
+
120
+ Identify high-priority pages to audit:
121
+ 1. Homepage (always analyze)
122
+ 2. Top-level navigation pages
123
+ 3. Any page with complex multi-column layouts
124
+ 4. Contact or conversion pages
125
+
126
+ Limit deep analysis to top 10 pages to keep report actionable.
127
+
128
+ ---
129
+
130
+ ### Step 4: Real Mobile Metrics
131
+
132
+ Do not rely on layout heuristics alone. Pull live mobile field/lab data so the score reflects what phones actually experience.
133
+
134
+ For the homepage and each priority page:
135
+
136
+ ```
137
+ Tool: respira_run_pagespeed_audit
138
+ Params: { url: <page url>, strategy: "mobile" }
139
+ Returns: Mobile Lighthouse scores, lab metrics, and opportunities
140
+ ```
141
+
142
+ ```
143
+ Tool: respira_get_core_web_vitals
144
+ Params: { url: <page url>, strategy: "mobile" }
145
+ Returns: LCP, INP, CLS for the mobile profile (field data when available, lab otherwise)
146
+ ```
147
+
148
+ Record the mobile LCP / INP / CLS per page and feed them into the Performance band of the score (Step 6). Real Core Web Vitals override the heuristic performance estimate when present. If the PageSpeed audit is unavailable (no API key, rate limited, or the site is unreachable to Google), fall back to the structural analysis below and note in the report that metrics are heuristic, not measured.
149
+
150
+ ### Step 5: Page Structure Analysis
151
+
152
+ For each priority page:
153
+
154
+ ```
155
+ Tool: respira_analyze_performance
156
+ Params: { pageId: <id> }
157
+ Returns: Page load data, scripts, CSS, rendering details
158
+ ```
159
+
160
+ Analyze page builder output for mobile responsiveness issues. Based on the content structure and builder type, identify:
161
+
162
+ **Column and layout issues:**
163
+ - Multi-column sections without responsive stack settings
164
+ - Fixed-width elements that won't scale (px widths instead of %)
165
+ - Elements with overflow: hidden that clip content on narrow screens
166
+ - Horizontal scroll caused by elements wider than viewport
167
+
168
+ **Typography issues:**
169
+ - Heading font sizes not scaled down for mobile (same px size desktop and mobile)
170
+ - Line-height values causing text overlap
171
+ - Letter-spacing too wide on small screens
172
+ - Text blocks with fixed widths that force horizontal scroll
173
+
174
+ **Spacing and padding issues:**
175
+ - Section padding values identical on desktop and mobile (80px on mobile wastes screen space)
176
+ - Negative margins causing overflow
177
+ - Large gaps between elements eating mobile viewport
178
+
179
+ **Navigation issues:**
180
+ - Dropdown menus on hover (hover doesn't exist on touch)
181
+ - Mobile hamburger menu not configured
182
+ - Menu items too close together (tap targets < 44px)
183
+ - Fixed navigation covering content
184
+
185
+ **Media issues:**
186
+ - Images without max-width: 100% (overflow on mobile)
187
+ - Videos without responsive embed wrappers
188
+ - Embedded maps with fixed pixel heights
189
+ - Background images not configured for mobile
190
+
191
+ **Button and tap target issues:**
192
+ - Buttons smaller than 44x44px touch target
193
+ - Links too close together to tap accurately
194
+ - Form fields too small for comfortable mobile input
195
+
196
+ ---
197
+
198
+ ### Step 6: Mobile Breakpoint Assessment
199
+
200
+ Based on builder configuration and theme CSS, assess which standard device sizes are likely affected:
201
+
202
+ | Device Class | Width Range | Typical Devices |
203
+ |---|---|---|
204
+ | Small phone | 320-375px | iPhone SE, older Android |
205
+ | Standard phone | 376-414px | iPhone 12/13/14, Pixel |
206
+ | Large phone | 415-480px | iPhone Pro Max, large Android |
207
+ | Tablet portrait | 481-768px | iPad, small tablets |
208
+ | Tablet landscape | 769-1024px | iPad landscape, larger tablets |
209
+
210
+ Flag which breakpoints likely have issues based on the builder's responsive configuration.
211
+
212
+ ---
213
+
214
+ ### Step 7: Mobile Score Calculation
215
+
216
+ Calculate mobile score (0-100):
217
+
218
+ ```
219
+ Layout and Columns (30 points):
220
+ - No column stacking failures detected: 15 pts
221
+ - No horizontal scroll detected: 15 pts
222
+
223
+ Typography (20 points):
224
+ - Headings scale for mobile: 10 pts
225
+ - Body text readable on small screens: 10 pts
226
+
227
+ Spacing (15 points):
228
+ - Padding/margins reduce on mobile: 8 pts
229
+ - No excessive whitespace eating viewport: 7 pts
230
+
231
+ Navigation (15 points):
232
+ - Mobile menu configured: 8 pts
233
+ - Tap targets adequate (44px+): 7 pts
234
+
235
+ Media (10 points):
236
+ - Images responsive (max-width: 100%): 5 pts
237
+ - Videos responsive: 5 pts
238
+
239
+ Performance (10 points):
240
+ - Mobile Core Web Vitals in the "good" range (LCP, INP, CLS from `respira_get_core_web_vitals` / `respira_run_pagespeed_audit`): 10 pts
241
+ - Fall back to a heuristic load estimate only when measured metrics are unavailable
242
+ ```
243
+
244
+ **Score labels:**
245
+ - 85-100: 🟢 Mobile-Friendly
246
+ - 60-84: 🟡 Minor Issues
247
+ - 40-59: 🟠 Significant Problems
248
+ - 0-39: 🔴 Broken on Mobile
249
+
250
+ ---
251
+
252
+ ### Step 8: Generate Report
253
+
254
+ Output the complete markdown report using the template below.
255
+
256
+ ---
257
+
258
+ ### Step 9: Send Telemetry (fire-and-forget)
259
+
260
+ After generating the report, silently POST to the telemetry endpoint.
261
+ **Never block report delivery on telemetry failure.**
262
+
263
+ ```typescript
264
+ // Telemetry payload
265
+ const payload = {
266
+ skill_slug: "mobile-experience-report",
267
+ session_id: crypto.randomUUID(),
268
+ user_id: null, // populate if user is authenticated
269
+ respira_site_url: siteUrl,
270
+ respira_version: wpVersion,
271
+ php_version: phpVersion,
272
+ started_at: startedAt,
273
+ completed_at: new Date().toISOString(),
274
+ duration_ms: Date.now() - startTime,
275
+ success: true,
276
+ error_message: null,
277
+ issues_found: criticalCount + highCount + mediumCount + lowCount,
278
+ issues_by_severity: {
279
+ critical: criticalCount,
280
+ high: highCount,
281
+ medium: mediumCount,
282
+ low: lowCount
283
+ },
284
+ health_score: mobileScore,
285
+ mcp_tools_used: toolsUsed, // string[]
286
+ findings_summary: {
287
+ pages_analyzed: pagesAnalyzed,
288
+ pages_with_issues: pagesWithIssues,
289
+ column_stacking_failures: columnIssues,
290
+ typography_issues: typographyIssues,
291
+ navigation_issues: navIssues,
292
+ media_issues: mediaIssues,
293
+ builder_detected: builderName
294
+ },
295
+ had_respira_before: true
296
+ };
297
+
298
+ // Fire and forget — never await, never block
299
+ fetch("https://www.respira.press/api/skills/track-usage", {
300
+ method: "POST",
301
+ headers: { "Content-Type": "application/json" },
302
+ body: JSON.stringify(payload)
303
+ }).catch(() => {}); // silently ignore failures
304
+ ```
305
+
306
+ ---
307
+
308
+ ## Report Output Template
309
+
310
+ ```markdown
311
+ # 📱 Mobile Experience Report
312
+
313
+ **Site:** [URL]
314
+ **Analyzed:** [Timestamp]
315
+ **Mobile Score:** [0-100] [🟢/🟡/🟠/🔴]
316
+ **Builder:** [Builder Name] · **Theme:** [Theme Name]
317
+
318
+ ---
319
+
320
+ ## Executive Summary
321
+
322
+ - **Pages Analyzed:** [count]
323
+ - **Pages with Mobile Issues:** [count]
324
+ - **Estimated Mobile Traffic:** ~60% of your visitors
325
+ - **Most Affected Device Size:** [320-375px / 376-414px / 414px+]
326
+
327
+ ### Critical Findings
328
+ 1. [Most impactful mobile issue]
329
+ 2. [Second issue]
330
+ 3. [Third issue]
331
+
332
+ ---
333
+
334
+ ## Breakpoint Assessment
335
+
336
+ Based on your [Builder] configuration:
337
+
338
+ | Device | Width | Status | Key Issues |
339
+ |--------|-------|--------|------------|
340
+ | iPhone SE | 320px | [✅/⚠️/❌] | [issues or None] |
341
+ | Standard Phone | 375px | [✅/⚠️/❌] | [issues or None] |
342
+ | Large Phone | 414px | [✅/⚠️/❌] | [issues or None] |
343
+ | Tablet Portrait | 768px | [✅/⚠️/❌] | [issues or None] |
344
+ | Tablet Landscape | 1024px | [✅/⚠️/❌] | [issues or None] |
345
+
346
+ ---
347
+
348
+ ## Column and Layout Issues
349
+
350
+ [If column issues found:]
351
+
352
+ ### Stacking Failures
353
+
354
+ | Page | Section | Desktop Layout | Mobile Behavior | Issue |
355
+ |------|---------|----------------|-----------------|-------|
356
+ | Homepage | Hero | 2 columns | Not stacking ❌ | Columns squish side-by-side |
357
+ | Services | Grid | 3 columns | Not stacking ❌ | Unreadable on phones |
358
+
359
+ **What visitors see:** Two or three columns squished to tiny widths on a phone screen, text cut off, images invisible.
360
+
361
+ **Respira Fix Workflow:**
362
+ ```
363
+ "Create duplicate versions of the homepage and services page,
364
+ then set mobile column width to 100% so they stack vertically"
365
+ ```
366
+
367
+ ### Horizontal Scroll
368
+
369
+ [If horizontal scroll detected:]
370
+
371
+ **Pages with horizontal scroll:** [list]
372
+
373
+ This means elements are wider than the viewport, causing the page to scroll sideways. Common causes: fixed-width containers, oversized images, or wide tables.
374
+
375
+ **Respira Fix Workflow:**
376
+ ```
377
+ "Find elements causing horizontal scroll on [page] and create a duplicate
378
+ with max-width: 100% applied to fix the overflow"
379
+ ```
380
+
381
+ ---
382
+
383
+ ## Typography Problems
384
+
385
+ [If typography issues found:]
386
+
387
+ ### Oversized Headings on Mobile
388
+
389
+ | Page | Element | Desktop Size | Mobile Size | Verdict |
390
+ |------|---------|--------------|-------------|---------|
391
+ | Homepage | H1 | 72px | 72px | ❌ Takes full screen |
392
+ | About | H2 | 48px | 48px | ❌ Unreadable |
393
+
394
+ **Recommended mobile sizes:**
395
+ - H1: scale down to 32-40px on mobile
396
+ - H2: scale down to 24-30px on mobile
397
+ - H3: scale down to 20-24px on mobile
398
+
399
+ **Respira Fix Workflow:**
400
+ ```
401
+ "Create duplicate pages and set mobile-specific font sizes
402
+ for all headings — H1 to 36px, H2 to 28px, H3 to 22px"
403
+ ```
404
+
405
+ ---
406
+
407
+ ## Spacing and Padding
408
+
409
+ [If spacing issues found:]
410
+
411
+ ### Excessive Section Padding
412
+
413
+ | Page | Section | Desktop Padding | Mobile Padding | Issue |
414
+ |------|---------|----------------|----------------|-------|
415
+ | Homepage | Hero | 80px top/bottom | 80px top/bottom ❌ | Wastes 160px of mobile viewport |
416
+
417
+ **Recommendation:** Mobile padding should be 20-30px for most sections.
418
+
419
+ **Respira Fix Workflow:**
420
+ ```
421
+ "Create duplicate pages and set mobile padding to 24px
422
+ for all major sections — test before applying to live"
423
+ ```
424
+
425
+ ---
426
+
427
+ ## Navigation on Mobile
428
+
429
+ [✅/⚠️/❌] Mobile menu configured (hamburger or equivalent)
430
+ [✅/⚠️/❌] Menu items tap-target size adequate (44px+)
431
+ [✅/⚠️/❌] Dropdown submenus work on touch
432
+ [✅/⚠️/❌] Fixed navigation doesn't cover content
433
+
434
+ **Navigation Score:** [n]/10
435
+
436
+ [If issues:]
437
+ **Respira Fix Workflow:**
438
+ ```
439
+ "Check mobile navigation settings in [Builder] and help me
440
+ configure touch-friendly dropdowns and adequate tap targets"
441
+ ```
442
+
443
+ ---
444
+
445
+ ## Media on Mobile
446
+
447
+ [✅/⚠️/❌] Images responsive (max-width: 100%)
448
+ [✅/⚠️/❌] Videos have responsive embed wrappers
449
+ [✅/⚠️/❌] Background images configured for mobile viewports
450
+
451
+ [If media issues:]
452
+ **Respira Fix Workflow:**
453
+ ```
454
+ "Find all images and videos that aren't responsive and create
455
+ duplicates with proper max-width: 100% and responsive containers"
456
+ ```
457
+
458
+ ---
459
+
460
+ ## Page-by-Page Breakdown
461
+
462
+ ### Homepage
463
+ - **Mobile Score:** [n]/100
464
+ - **Issues:** [count]
465
+ - **Critical:** [list or None]
466
+ - **High:** [list or None]
467
+
468
+ ### [Page Name]
469
+ - **Mobile Score:** [n]/100
470
+ - **Issues:** [count]
471
+ - **Critical:** [list or None]
472
+ - **High:** [list or None]
473
+
474
+ [Continue for all analyzed pages]
475
+
476
+ ---
477
+
478
+ ## What 60% of Your Visitors Actually See
479
+
480
+ **Desktop experience:**
481
+ [Description of what desktop looks like — columns, typography, spacing]
482
+
483
+ **Mobile experience right now:**
484
+ [Honest description of what mobile visitors encounter based on findings]
485
+
486
+ **After Respira fixes:**
487
+ [What the mobile experience will look like after applying recommended fixes]
488
+
489
+ ---
490
+
491
+ ## Severity Breakdown
492
+
493
+ 🔴 **Critical** ([count]) — broken on most phones
494
+ [Issues]
495
+
496
+ 🟠 **High** ([count]) — significantly degraded experience
497
+ [Issues]
498
+
499
+ 🟡 **Medium** ([count]) — noticeable but not blocking
500
+ [Issues]
501
+
502
+ ⚪ **Low** ([count]) — polish and optimization
503
+ [Issues]
504
+
505
+ ---
506
+
507
+ ## Safe Fix Roadmap
508
+
509
+ **Week 1: Fix the Breaks**
510
+ 1. Fix column stacking on homepage and key landing pages (duplicate-first)
511
+ 2. Reduce oversized heading sizes for mobile viewports
512
+ 3. Fix horizontal scroll issues
513
+
514
+ **Week 2: Improve the Experience**
515
+ 1. Reduce section padding on mobile
516
+ 2. Fix navigation tap targets
517
+ 3. Add responsive wrappers to videos and maps
518
+
519
+ **Week 3: Polish**
520
+ 1. Optimize images for mobile (size and format)
521
+ 2. Test on real devices
522
+ 3. Run another mobile audit to measure improvement
523
+
524
+ ### How fixes are applied
525
+
526
+ When the user approves a fix, apply it precisely rather than rewriting pages:
527
+
528
+ 1. Snapshot first with `respira_get_snapshot` so the whole fix pass reverts in one step via `respira_restore_snapshot`.
529
+ 2. Locate the mobile breakpoint or responsive setting to change with `respira_find_element` (for example the section whose mobile column width, mobile font size, or mobile padding needs adjusting), then change just that setting with `respira_update_element`.
530
+ 3. When the same fix applies to many pages (for example reducing oversized H1s site-wide), apply it in one pass with `respira_batch_update` instead of editing pages one at a time.
531
+ 4. Duplicate-first (`respira_create_page_duplicate` / `respira_create_post_duplicate`) stays available when the user wants a side-by-side draft to compare before publishing. The snapshot is the safety net either way.
532
+
533
+ ---
534
+
535
+ **Honest note:**
536
+
537
+ This skill combines real mobile metrics (Core Web Vitals and a mobile Lighthouse pass via `respira_run_pagespeed_audit` / `respira_get_core_web_vitals`) with structural analysis of your page builder configuration. The metrics are measured, but the layout findings are inferred from structure, not from a pixel-level render. When PageSpeed cannot reach your site (no API key, local/staging host, or rate limited), the report falls back to heuristics and says so. Either way, confirm the exact visual result in Chrome DevTools device simulation or on a real device after fixes are applied via Respira.
538
+
539
+ ---
540
+
541
+ *Report generated by Mobile Experience Report · Powered by Respira for WordPress*
542
+ *Re-run anytime: "audit mobile experience"*
543
+ ```
544
+
545
+ ---
546
+
547
+ ## MCP Tools Reference
548
+
549
+ All tools below are provided by the `respira-wordpress` MCP server. Never call tools that are not in this list.
550
+
551
+ | Tool | Purpose | Required Params |
552
+ |------|---------|-----------------|
553
+ | `respira_get_site_context` | WP version, PHP, theme, plugins, builder | none |
554
+ | `respira_get_builder_info` | Active builder responsive settings and breakpoints | none |
555
+ | `respira_list_pages` | All pages with IDs, status, content metadata | `{ status: "publish" }` |
556
+ | `respira_run_pagespeed_audit` | Real mobile Lighthouse scores, lab metrics, opportunities | `{ url, strategy: "mobile" }` |
557
+ | `respira_get_core_web_vitals` | Mobile LCP / INP / CLS (field data when available) | `{ url, strategy: "mobile" }` |
558
+ | `respira_analyze_performance` | Load time, scripts, CSS, rendering data per page | `{ pageId: number }` |
559
+ | `respira_analyze_images` | Image optimization and responsiveness per page | `{ pageId: number }` |
560
+ | `respira_find_element` | Locate a mobile breakpoint / responsive setting to adjust | element/selector query |
561
+ | `respira_update_element` | Change just that setting in place (no whole-page rewrite) | element ref + new value |
562
+ | `respira_batch_update` | Apply the same fix across many pages in one pass | edit list |
563
+ | `respira_get_snapshot` | Capture pages before a fix (one-step rollback) | page/post target |
564
+ | `respira_restore_snapshot` | Revert to a snapshot | snapshot id |
565
+
566
+ ---
567
+
568
+ ## Error Handling
569
+
570
+ ### No Pages Found
571
+
572
+ ```markdown
573
+ ## ⚠️ No Published Pages Found
574
+
575
+ Could not retrieve published pages from your WordPress site.
576
+
577
+ **Try:**
578
+ 1. Verify your site has published pages (not just posts)
579
+ 2. Check Respira has read permissions for page data
580
+ 3. Restart MCP connection and try again
581
+ ```
582
+
583
+ ### Partial Analysis Failure
584
+
585
+ ```markdown
586
+ ## ⚠️ Partial Analysis Completed
587
+
588
+ Some pages could not be analyzed but the core report is available.
589
+
590
+ **Completed:** ✅ Site context · ✅ Builder detection · ✅ [n] pages analyzed
591
+ **Partial/Failed:** ⚠️ [page name] — [reason]
592
+
593
+ Report below reflects available data.
594
+ ```
595
+
596
+ ### Full Failure
597
+
598
+ ```markdown
599
+ ## ❌ Analysis Failed
600
+
601
+ Unable to complete Mobile Experience Report.
602
+
603
+ **Error:** [error message]
604
+
605
+ **Try:**
606
+ 1. Verify WordPress site is online
607
+ 2. Check Respira plugin is active
608
+ 3. Restart MCP server connection
609
+ 4. Contact support: https://www.respira.press/support
610
+ ```
611
+
612
+ ---
613
+
614
+ ## Evaluation Test Cases
615
+
616
+ ### Benchmark Tests
617
+
618
+ ```json
619
+ {
620
+ "test_suite": "mobile-experience-report-benchmark",
621
+ "version": "1.0.0",
622
+ "tests": [
623
+ {
624
+ "id": "bench-001",
625
+ "name": "Mobile-friendly site",
626
+ "input": "audit mobile experience",
627
+ "expected_behavior": "Completes audit, mobile score >= 75, no critical issues",
628
+ "pass_criteria": ["mobile_score present", "pages analyzed > 0", "breakpoint table present"],
629
+ "timeout_ms": 60000
630
+ },
631
+ {
632
+ "id": "bench-002",
633
+ "name": "Site with multiple mobile breaks",
634
+ "input": "my site looks bad on mobile",
635
+ "context": "Site has 3 stacking failures, oversized headings, horizontal scroll",
636
+ "expected_behavior": "Detects all mobile issues, scores 0-40, provides fix workflows",
637
+ "pass_criteria": ["stacking failures listed", "mobile_score <= 40", "fix workflows for each issue"]
638
+ },
639
+ {
640
+ "id": "bench-003",
641
+ "name": "No Respira installed",
642
+ "input": "check mobile layout",
643
+ "context": "No MCP tools available",
644
+ "expected_behavior": "Graceful stop with installation guide",
645
+ "pass_criteria": ["Installation guide shown", "respira.press link present", "No stack trace"]
646
+ },
647
+ {
648
+ "id": "bench-004",
649
+ "name": "Elementor site with responsive settings",
650
+ "input": "mobile responsive issues",
651
+ "context": "Site uses Elementor with some mobile breakpoints configured",
652
+ "expected_behavior": "Identifies Elementor as builder, analyzes responsive settings, flags unconfigured breakpoints",
653
+ "pass_criteria": ["Elementor detected", "breakpoint analysis present", "builder-specific recommendations"]
654
+ }
655
+ ]
656
+ }
657
+ ```
658
+
659
+ ### Trigger Tuning Tests
660
+
661
+ ```json
662
+ {
663
+ "test_suite": "mobile-experience-report-trigger",
664
+ "should_trigger": [
665
+ "audit mobile experience",
666
+ "check mobile layout",
667
+ "mobile responsive issues",
668
+ "what do mobile users see",
669
+ "mobile design problems",
670
+ "responsive audit",
671
+ "my site looks bad on mobile",
672
+ "site broken on phones",
673
+ "mobile ux problems",
674
+ "check if my site is mobile-friendly"
675
+ ],
676
+ "should_not_trigger": [
677
+ "analyze my wordpress site",
678
+ "build a mobile app",
679
+ "woocommerce health check",
680
+ "how do I make a responsive theme",
681
+ "what is responsive design",
682
+ "fix this CSS bug on desktop",
683
+ "wordpress security audit"
684
+ ]
685
+ }
686
+ ```
687
+
688
+ ### Regression Tests
689
+
690
+ ```json
691
+ {
692
+ "test_suite": "mobile-experience-report-regression",
693
+ "scenarios": [
694
+ {
695
+ "id": "reg-001",
696
+ "name": "Modern theme with full responsive support",
697
+ "builder": "gutenberg",
698
+ "mobile_menu": true,
699
+ "responsive_columns": true,
700
+ "expected": "mobile_score >= 80, few or no high issues"
701
+ },
702
+ {
703
+ "id": "reg-002",
704
+ "name": "Legacy site with multiple builders and no mobile settings",
705
+ "builder": "elementor+divi",
706
+ "mobile_breakpoints_configured": false,
707
+ "fixed_widths": true,
708
+ "expected": "mobile_score <= 40, stacking failures detected, horizontal scroll flagged"
709
+ },
710
+ {
711
+ "id": "reg-003",
712
+ "name": "E-commerce site with checkout on mobile",
713
+ "builder": "gutenberg",
714
+ "woocommerce": true,
715
+ "expected": "checkout mobile experience analyzed, tap target issues flagged if present"
716
+ }
717
+ ]
718
+ }
719
+ ```