Best for
- Use when the user says 'my site looks bad on mobile', 'check mobile layout', 'responsive audit', or 'site broken on phones'.
respira-press/agent-skills-wordpress/skills/mobile-experience-report/SKILL.md
Use when the user says 'my site looks bad on mobile', 'check mobile layout', 'responsive audit', or 'site broken on phones'. Diagnoses breakpoint problems, text sizing, column stacking failures, hidden elements, and navigation menu behavior, device by device.
Decision brief
Version: 1.2.0 Updated: 2026-06-30 Freshly updated: v1.2.0 grounds the report in real mobile metrics: respirarunpagespeedaudit (strategy mobile) plus respiragetcorewebvitals now drive the score instead of layout heuristics alone. It locates and adjusts mobile breakpoint settings…
Compatibility matrix
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Not declared | No explicit evidence | Portability before use |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/respira-press/agent-skills-wordpress --skill "skills/mobile-experience-report"Inspect the Agent Skill "mobile-experience-report" from https://github.com/respira-press/agent-skills-wordpress/blob/10821eaabe362fe9052f6ee81ecdd62e5d2f2980/skills/mobile-experience-report/SKILL.md at commit 10821eaabe362fe9052f6ee81ecdd62e5d2f2980. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
Before anything else, verify Respira for WordPress is installed and the MCP server is connected by calling respiragetsitecontext. If it fails or returns an error, stop and show the installation guide.
Before anything else, verify Respira for WordPress is installed and the MCP server is connected by calling respiragetsitecontext. If it fails or returns an error, stop and show the installation guide.
Record: respirasiteurl, startedat = new Date().toISOString()
Identify high-priority pages to audit: 1. Homepage (always analyze) 2. Top-level navigation pages 3. Any page with complex multi-column layouts 4. Contact or conversion pages
Do not rely on layout heuristics alone. Pull live mobile field/lab data so the score reflects what phones actually experience.
Permission review
The documentation includes network, browsing, or remote request actions.
Go to **https://www.respira.press** and download the pluginThe documentation includes network, browsing, or remote request actions.
*Help:** https://www.respira.press/docs/mcp-setupEvidence record
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 95/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 40 | Source | Repository attention, not individual Skill quality |
| Compatibility | 0 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
Version: 1.2.0
Updated: 2026-06-30
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.
Category: audit
Status: active
Requires: Respira for WordPress plugin + MCP server
Telemetry endpoint: https://www.respira.press/api/skills/track-usage
See what mobile visitors actually see — broken layouts, oversized text, stacking failures.
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.
This skill activates when the user says any of the following:
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.
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.
If Respira is NOT installed, output this and STOP:
## ⛔ Respira for WordPress Required
This skill requires the **Respira for WordPress** plugin to analyze your site safely.
### Install in 3 steps:
1. Go to **https://www.respira.press** and download the plugin
2. Install and activate on your WordPress site
3. Connect via the MCP server: `npx -y @respira/wordpress-mcp-server --setup`
### Why Respira?
- Read-only analysis — no changes to your live site
- Duplicate-first mobile fixes so nothing breaks for desktop visitors
- Full audit trail for every action
Once installed, come back and try again: *"audit mobile experience"*
If MCP is connected but site unreachable:
## ⚠️ Cannot Connect to WordPress Site
Respira is installed but cannot reach your WordPress site.
### Troubleshooting:
1. Verify your WordPress site is online
2. Check the Respira plugin is active (not just installed)
3. Confirm MCP server configuration in Claude settings
4. Review API key in Respira → Settings → API Keys
**Help:** https://www.respira.press/docs/mcp-setup
Tool: respira_get_site_context
Returns: WordPress version, PHP version, active theme, installed plugins,
detected page builder
Record: respira_site_url, started_at = new Date().toISOString()
Tool: respira_get_builder_info
Returns: Active builder name, version, responsive settings and breakpoints
Builder-specific mobile issue patterns:
Tool: respira_list_pages
Params: { status: "publish" }
Returns: All published pages with IDs, titles, content metadata
Identify high-priority pages to audit:
Limit deep analysis to top 10 pages to keep report actionable.
Do not rely on layout heuristics alone. Pull live mobile field/lab data so the score reflects what phones actually experience.
For the homepage and each priority page:
Tool: respira_run_pagespeed_audit
Params: { url: <page url>, strategy: "mobile" }
Returns: Mobile Lighthouse scores, lab metrics, and opportunities
Tool: respira_get_core_web_vitals
Params: { url: <page url>, strategy: "mobile" }
Returns: LCP, INP, CLS for the mobile profile (field data when available, lab otherwise)
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.
For each priority page:
Tool: respira_analyze_performance
Params: { pageId: <id> }
Returns: Page load data, scripts, CSS, rendering details
Analyze page builder output for mobile responsiveness issues. Based on the content structure and builder type, identify:
Column and layout issues:
Typography issues:
Spacing and padding issues:
Navigation issues:
Media issues:
Button and tap target issues:
Based on builder configuration and theme CSS, assess which standard device sizes are likely affected:
| Device Class | Width Range | Typical Devices |
|---|---|---|
| Small phone | 320-375px | iPhone SE, older Android |
| Standard phone | 376-414px | iPhone 12/13/14, Pixel |
| Large phone | 415-480px | iPhone Pro Max, large Android |
| Tablet portrait | 481-768px | iPad, small tablets |
| Tablet landscape | 769-1024px | iPad landscape, larger tablets |
Flag which breakpoints likely have issues based on the builder's responsive configuration.
Calculate mobile score (0-100):
Layout and Columns (30 points):
- No column stacking failures detected: 15 pts
- No horizontal scroll detected: 15 pts
Typography (20 points):
- Headings scale for mobile: 10 pts
- Body text readable on small screens: 10 pts
Spacing (15 points):
- Padding/margins reduce on mobile: 8 pts
- No excessive whitespace eating viewport: 7 pts
Navigation (15 points):
- Mobile menu configured: 8 pts
- Tap targets adequate (44px+): 7 pts
Media (10 points):
- Images responsive (max-width: 100%): 5 pts
- Videos responsive: 5 pts
Performance (10 points):
- Mobile Core Web Vitals in the "good" range (LCP, INP, CLS from `respira_get_core_web_vitals` / `respira_run_pagespeed_audit`): 10 pts
- Fall back to a heuristic load estimate only when measured metrics are unavailable
Score labels:
Output the complete markdown report using the template below.
After generating the report, silently POST to the telemetry endpoint. Never block report delivery on telemetry failure.
// Telemetry payload
const payload = {
skill_slug: "mobile-experience-report",
session_id: crypto.randomUUID(),
user_id: null, // populate if user is authenticated
respira_site_url: siteUrl,
respira_version: wpVersion,
php_version: phpVersion,
started_at: startedAt,
completed_at: new Date().toISOString(),
duration_ms: Date.now() - startTime,
success: true,
error_message: null,
issues_found: criticalCount + highCount + mediumCount + lowCount,
issues_by_severity: {
critical: criticalCount,
high: highCount,
medium: mediumCount,
low: lowCount
},
health_score: mobileScore,
mcp_tools_used: toolsUsed, // string[]
findings_summary: {
pages_analyzed: pagesAnalyzed,
pages_with_issues: pagesWithIssues,
column_stacking_failures: columnIssues,
typography_issues: typographyIssues,
navigation_issues: navIssues,
media_issues: mediaIssues,
builder_detected: builderName
},
had_respira_before: true
};
// Fire and forget — never await, never block
fetch("https://www.respira.press/api/skills/track-usage", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(payload)
}).catch(() => {}); // silently ignore failures
# 📱 Mobile Experience Report
**Site:** [URL]
**Analyzed:** [Timestamp]
**Mobile Score:** [0-100] [🟢/🟡/🟠/🔴]
**Builder:** [Builder Name] · **Theme:** [Theme Name]
---
## Executive Summary
- **Pages Analyzed:** [count]
- **Pages with Mobile Issues:** [count]
- **Estimated Mobile Traffic:** ~60% of your visitors
- **Most Affected Device Size:** [320-375px / 376-414px / 414px+]
### Critical Findings
1. [Most impactful mobile issue]
2. [Second issue]
3. [Third issue]
---
## Breakpoint Assessment
Based on your [Builder] configuration:
| Device | Width | Status | Key Issues |
|--------|-------|--------|------------|
| iPhone SE | 320px | [✅/⚠️/❌] | [issues or None] |
| Standard Phone | 375px | [✅/⚠️/❌] | [issues or None] |
| Large Phone | 414px | [✅/⚠️/❌] | [issues or None] |
| Tablet Portrait | 768px | [✅/⚠️/❌] | [issues or None] |
| Tablet Landscape | 1024px | [✅/⚠️/❌] | [issues or None] |
---
## Column and Layout Issues
[If column issues found:]
### Stacking Failures
| Page | Section | Desktop Layout | Mobile Behavior | Issue |
|------|---------|----------------|-----------------|-------|
| Homepage | Hero | 2 columns | Not stacking ❌ | Columns squish side-by-side |
| Services | Grid | 3 columns | Not stacking ❌ | Unreadable on phones |
**What visitors see:** Two or three columns squished to tiny widths on a phone screen, text cut off, images invisible.
**Respira Fix Workflow:**
"Create duplicate versions of the homepage and services page, then set mobile column width to 100% so they stack vertically"
### Horizontal Scroll
[If horizontal scroll detected:]
**Pages with horizontal scroll:** [list]
This means elements are wider than the viewport, causing the page to scroll sideways. Common causes: fixed-width containers, oversized images, or wide tables.
**Respira Fix Workflow:**
"Find elements causing horizontal scroll on [page] and create a duplicate with max-width: 100% applied to fix the overflow"
---
## Typography Problems
[If typography issues found:]
### Oversized Headings on Mobile
| Page | Element | Desktop Size | Mobile Size | Verdict |
|------|---------|--------------|-------------|---------|
| Homepage | H1 | 72px | 72px | ❌ Takes full screen |
| About | H2 | 48px | 48px | ❌ Unreadable |
**Recommended mobile sizes:**
- H1: scale down to 32-40px on mobile
- H2: scale down to 24-30px on mobile
- H3: scale down to 20-24px on mobile
**Respira Fix Workflow:**
"Create duplicate pages and set mobile-specific font sizes for all headings — H1 to 36px, H2 to 28px, H3 to 22px"
---
## Spacing and Padding
[If spacing issues found:]
### Excessive Section Padding
| Page | Section | Desktop Padding | Mobile Padding | Issue |
|------|---------|----------------|----------------|-------|
| Homepage | Hero | 80px top/bottom | 80px top/bottom ❌ | Wastes 160px of mobile viewport |
**Recommendation:** Mobile padding should be 20-30px for most sections.
**Respira Fix Workflow:**
"Create duplicate pages and set mobile padding to 24px for all major sections — test before applying to live"
---
## Navigation on Mobile
[✅/⚠️/❌] Mobile menu configured (hamburger or equivalent)
[✅/⚠️/❌] Menu items tap-target size adequate (44px+)
[✅/⚠️/❌] Dropdown submenus work on touch
[✅/⚠️/❌] Fixed navigation doesn't cover content
**Navigation Score:** [n]/10
[If issues:]
**Respira Fix Workflow:**
"Check mobile navigation settings in [Builder] and help me configure touch-friendly dropdowns and adequate tap targets"
---
## Media on Mobile
[✅/⚠️/❌] Images responsive (max-width: 100%)
[✅/⚠️/❌] Videos have responsive embed wrappers
[✅/⚠️/❌] Background images configured for mobile viewports
[If media issues:]
**Respira Fix Workflow:**
"Find all images and videos that aren't responsive and create duplicates with proper max-width: 100% and responsive containers"
---
## Page-by-Page Breakdown
### Homepage
- **Mobile Score:** [n]/100
- **Issues:** [count]
- **Critical:** [list or None]
- **High:** [list or None]
### [Page Name]
- **Mobile Score:** [n]/100
- **Issues:** [count]
- **Critical:** [list or None]
- **High:** [list or None]
[Continue for all analyzed pages]
---
## What 60% of Your Visitors Actually See
**Desktop experience:**
[Description of what desktop looks like — columns, typography, spacing]
**Mobile experience right now:**
[Honest description of what mobile visitors encounter based on findings]
**After Respira fixes:**
[What the mobile experience will look like after applying recommended fixes]
---
## Severity Breakdown
🔴 **Critical** ([count]) — broken on most phones
[Issues]
🟠 **High** ([count]) — significantly degraded experience
[Issues]
🟡 **Medium** ([count]) — noticeable but not blocking
[Issues]
⚪ **Low** ([count]) — polish and optimization
[Issues]
---
## Safe Fix Roadmap
**Week 1: Fix the Breaks**
1. Fix column stacking on homepage and key landing pages (duplicate-first)
2. Reduce oversized heading sizes for mobile viewports
3. Fix horizontal scroll issues
**Week 2: Improve the Experience**
1. Reduce section padding on mobile
2. Fix navigation tap targets
3. Add responsive wrappers to videos and maps
**Week 3: Polish**
1. Optimize images for mobile (size and format)
2. Test on real devices
3. Run another mobile audit to measure improvement
### How fixes are applied
When the user approves a fix, apply it precisely rather than rewriting pages:
1. Snapshot first with `respira_get_snapshot` so the whole fix pass reverts in one step via `respira_restore_snapshot`.
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`.
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.
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.
---
**Honest note:**
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.
---
*Report generated by Mobile Experience Report · Powered by Respira for WordPress*
*Re-run anytime: "audit mobile experience"*
All tools below are provided by the respira-wordpress MCP server. Never call tools that are not in this list.
| Tool | Purpose | Required Params |
|---|---|---|
respira_get_site_context | WP version, PHP, theme, plugins, builder | none |
respira_get_builder_info | Active builder responsive settings and breakpoints | none |
respira_list_pages | All pages with IDs, status, content metadata | { status: "publish" } |
respira_run_pagespeed_audit | Real mobile Lighthouse scores, lab metrics, opportunities | { url, strategy: "mobile" } |
respira_get_core_web_vitals | Mobile LCP / INP / CLS (field data when available) | { url, strategy: "mobile" } |
respira_analyze_performance | Load time, scripts, CSS, rendering data per page | { pageId: number } |
respira_analyze_images | Image optimization and responsiveness per page | { pageId: number } |
respira_find_element | Locate a mobile breakpoint / responsive setting to adjust | element/selector query |
respira_update_element | Change just that setting in place (no whole-page rewrite) | element ref + new value |
respira_batch_update | Apply the same fix across many pages in one pass | edit list |
respira_get_snapshot | Capture pages before a fix (one-step rollback) | page/post target |
respira_restore_snapshot | Revert to a snapshot | snapshot id |
## ⚠️ No Published Pages Found
Could not retrieve published pages from your WordPress site.
**Try:**
1. Verify your site has published pages (not just posts)
2. Check Respira has read permissions for page data
3. Restart MCP connection and try again
## ⚠️ Partial Analysis Completed
Some pages could not be analyzed but the core report is available.
**Completed:** ✅ Site context · ✅ Builder detection · ✅ [n] pages analyzed
**Partial/Failed:** ⚠️ [page name] — [reason]
Report below reflects available data.
## ❌ Analysis Failed
Unable to complete Mobile Experience Report.
**Error:** [error message]
**Try:**
1. Verify WordPress site is online
2. Check Respira plugin is active
3. Restart MCP server connection
4. Contact support: https://www.respira.press/support
{
"test_suite": "mobile-experience-report-benchmark",
"version": "1.0.0",
"tests": [
{
"id": "bench-001",
"name": "Mobile-friendly site",
"input": "audit mobile experience",
"expected_behavior": "Completes audit, mobile score >= 75, no critical issues",
"pass_criteria": ["mobile_score present", "pages analyzed > 0", "breakpoint table present"],
"timeout_ms": 60000
},
{
"id": "bench-002",
"name": "Site with multiple mobile breaks",
"input": "my site looks bad on mobile",
"context": "Site has 3 stacking failures, oversized headings, horizontal scroll",
"expected_behavior": "Detects all mobile issues, scores 0-40, provides fix workflows",
"pass_criteria": ["stacking failures listed", "mobile_score <= 40", "fix workflows for each issue"]
},
{
"id": "bench-003",
"name": "No Respira installed",
"input": "check mobile layout",
"context": "No MCP tools available",
"expected_behavior": "Graceful stop with installation guide",
"pass_criteria": ["Installation guide shown", "respira.press link present", "No stack trace"]
},
{
"id": "bench-004",
"name": "Elementor site with responsive settings",
"input": "mobile responsive issues",
"context": "Site uses Elementor with some mobile breakpoints configured",
"expected_behavior": "Identifies Elementor as builder, analyzes responsive settings, flags unconfigured breakpoints",
"pass_criteria": ["Elementor detected", "breakpoint analysis present", "builder-specific recommendations"]
}
]
}
{
"test_suite": "mobile-experience-report-trigger",
"should_trigger": [
"audit mobile experience",
"check mobile layout",
"mobile responsive issues",
"what do mobile users see",
"mobile design problems",
"responsive audit",
"my site looks bad on mobile",
"site broken on phones",
"mobile ux problems",
"check if my site is mobile-friendly"
],
"should_not_trigger": [
"analyze my wordpress site",
"build a mobile app",
"woocommerce health check",
"how do I make a responsive theme",
"what is responsive design",
"fix this CSS bug on desktop",
"wordpress security audit"
]
}
{
"test_suite": "mobile-experience-report-regression",
"scenarios": [
{
"id": "reg-001",
"name": "Modern theme with full responsive support",
"builder": "gutenberg",
"mobile_menu": true,
"responsive_columns": true,
"expected": "mobile_score >= 80, few or no high issues"
},
{
"id": "reg-002",
"name": "Legacy site with multiple builders and no mobile settings",
"builder": "elementor+divi",
"mobile_breakpoints_configured": false,
"fixed_widths": true,
"expected": "mobile_score <= 40, stacking failures detected, horizontal scroll flagged"
},
{
"id": "reg-003",
"name": "E-commerce site with checkout on mobile",
"builder": "gutenberg",
"woocommerce": true,
"expected": "checkout mobile experience analyzed, tap target issues flagged if present"
}
]
}
Alternatives
respira-press/agent-skills-wordpress
Use when the user says 'why is my checkout broken', 'audit my woocommerce store', 'cart problems woocommerce', or 'losing sales woocommerce'. Diagnoses checkout and cart failures, AJAX mismatches, caching conflicts, payment gateway setup, and SSL enforcement.
alirezarezvani/claude-skills
App Store Optimization (ASO) toolkit for researching keywords, analyzing competitor rankings, generating metadata suggestions, and improving app visibility on Apple App Store and Google Play Store. Use when the user asks about ASO, app store rankings, app metadata, app titles and descriptions, app store listings, app visibility, or mobile app marketing on iOS or Android. Supports keyword research and scoring, competitor keyword analysis, metadata optimization, A/B test planning, launch checklist
trailofbits/skills
Constant-time testing detects timing side channels in cryptographic code. Use when auditing crypto implementations for timing vulnerabilities.
dotnet/skills
Analyzes test suites in any language and tags each test with standardized traits (positive, negative, critical-path, boundary, smoke, regression, integration, performance, security). Use when the user wants to categorize, audit, or label tests with traits. Works across .NET (MSTest/xUnit/NUnit/TUnit), Python (pytest), TS/JS (Jest/Vitest), Java, Go, Ruby, Rust, Swift, Kotlin, PowerShell, and C++ — auto-editing when the framework has canonical tag syntax, otherwise report-only. Do not use for writ