Use when optimizing landing pages, signup flows, checkout processes, or any user-facing page for higher conversion rates - before A/B testing.
79%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Passed
No findings from the security scan
Fix and improve this skill with Tessl
tessl review fix ./skills/cro/SKILL.mdAudit pages and flows for conversion friction - identifying drop-off points, persuasion gaps, and technical blockers - then produce prioritized recommendations with testable A/B hypotheses.
Target: $ARGUMENTS
@marketing Growth mode needs structured CRO analysis/seo-audit)/design-review)/copywriting)# Find the page/component code
find $TARGET -type f \( -name "*.tsx" -o -name "*.vue" -o -name "*.svelte" -o -name "*.astro" \) | head -20Identify the conversion goal:
Map the user flow:
## User Flow
[Entry point] → [Step 1] → [Step 2] → ... → [Conversion]
Example:
Landing page → Pricing section → Signup form → Email verification → DashboardCheck for conversion killers:
| Friction Type | What to Look For | Impact |
|---|---|---|
| Form friction | Too many fields, required fields, no autofill | HIGH |
| Cognitive load | Too many choices, unclear hierarchy, wall of text | HIGH |
| Trust deficit | No social proof, no security badges, unclear pricing | HIGH |
| Speed friction | Slow loading, heavy JS, unoptimized images | HIGH |
| Navigation friction | Can't find CTA, buried below fold, confusing layout | MEDIUM |
| Mobile friction | Small touch targets, horizontal scroll, unreadable text | MEDIUM |
| Copy friction | Unclear value prop, jargon, no urgency | MEDIUM |
| Technical friction | Broken forms, validation errors, payment failures | CRITICAL |
# Count form fields (friction indicator)
grep -rn "<input\|<select\|<textarea" $TARGET --include="*.tsx" --include="*.vue" 2>/dev/null | wc -l
# Check for form validation UX
grep -rn "onBlur\|onChange.*validation\|zod\|yup\|formik\|react-hook-form\|vee-validate" $TARGET --include="*.tsx" --include="*.vue" 2>/dev/null | head -10
# Check for loading/performance issues
grep -rn "useEffect\|onMounted\|onMount" $TARGET --include="*.tsx" --include="*.vue" --include="*.svelte" 2>/dev/null | head -10
# Check image optimization
grep -rn "<img\|<Image" $TARGET --include="*.tsx" --include="*.vue" 2>/dev/null | grep -v "next/image\|nuxt-img\|loading=" | head -10Evaluate each persuasion principle:
| Principle | Implementation | Status |
|---|---|---|
| Reciprocity | Free value before asking (free trial, guide, tool) | [Present/Missing] |
| Scarcity | Limited time/quantity indicators (genuine, not fake) | [Present/Missing] |
| Authority | Expert endorsements, certifications, press logos | [Present/Missing] |
| Social Proof | Testimonials, user count, ratings, case studies | [Present/Missing] |
| Liking | Relatable brand voice, user stories, team photos | [Present/Missing] |
| Commitment | Micro-conversions (email first, then full signup) | [Present/Missing] |
| Unity | Shared identity ("Join 10,000 developers like you") | [Present/Missing] |
# Check for social proof elements
grep -rn "testimonial\|review\|rating\|customer\|users\|trusted" $TARGET --include="*.tsx" --include="*.vue" --include="*.astro" 2>/dev/null | head -10
# Check for trust signals
grep -rn "secure\|ssl\|encrypted\|guarantee\|money-back\|badge" $TARGET --include="*.tsx" --include="*.vue" 2>/dev/null | head -10| Check | Best Practice |
|---|---|
| Headline clarity | Value proposition clear in <3 seconds |
| Above-the-fold | CTA visible without scrolling |
| CTA text | Action verb + benefit (not "Submit" or "Click here") |
| CTA contrast | Visually distinct from surrounding content |
| Value before form | User understands benefit before filling fields |
| Objection handling | FAQ, guarantees, or trust signals near CTA |
| Urgency | Genuine deadline or limited availability (if applicable) |
# Check CTA button text
grep -rn "type=\"submit\"\|<button\|<Button" $TARGET --include="*.tsx" --include="*.vue" 2>/dev/null | head -10
# Check for "Submit" or generic CTA text (anti-pattern)
grep -rn ">Submit<\|>Click here<\|>Send<\|>Go<" $TARGET --include="*.tsx" --include="*.vue" 2>/dev/null | head -5Performance directly impacts conversion (every 100ms delay = -1% conversion):
| Check | Impact on Conversion |
|---|---|
| Page load time | +1s load time = -7% conversion (Google) |
| Mobile responsiveness | 53% abandon if >3s load on mobile |
| Form error recovery | Inline validation saves 22% form abandonment |
| Payment options | Each additional payment method = +5-10% checkout conversion |
| Loading states | Skeleton screens reduce perceived wait time by 30% |
# Check for skeleton/loading states
grep -rn "skeleton\|Skeleton\|loading\|isLoading\|isPending" $TARGET --include="*.tsx" --include="*.vue" 2>/dev/null | head -10
# Check for error boundary/handling in forms
grep -rn "error\|Error\|catch\|onError\|isError" $TARGET --include="*.tsx" --include="*.vue" 2>/dev/null | head -10
# Bundle size indicators
find $TARGET -name "*.tsx" -o -name "*.ts" | xargs wc -l 2>/dev/null | sort -rn | head -10For each finding, produce:
### Recommendation [N]: [Title]
**Finding:** [What's wrong]
**Impact:** HIGH | MEDIUM | LOW
**Effort:** S (< 2h) | M (2-4h) | L (4-8h)
**Priority:** [Impact/Effort ratio]
**A/B Hypothesis:**
> If we [change], then [metric] will [improve] because [reason].
**Implementation:**
- File: [file:line]
- Change: [specific change]Prioritize by: HIGH impact + LOW effort first (quick wins).
Before claiming the CRO audit is complete:
| Excuse | Reality |
|---|---|
| "Our conversion rate is fine" | Fine compared to what? Industry benchmarks? Last month? Without data, you're guessing. |
| "We need more traffic, not better conversion" | Doubling conversion is cheaper than doubling traffic. Optimize what you have first. |
| "Users will figure it out" | Users won't. They'll leave. Average attention span is 8 seconds. Remove friction or lose them. |
| "We can't change the design" | CRO isn't redesign. Changing CTA text from "Submit" to "Start Free Trial" is a 5-minute code change. |
| "A/B testing is too complex" | You don't need a testing platform to start. Ship Variant B, measure, compare. Manual A/B is still A/B. |
| "Our product is too technical for CRO" | Technical products still need clear value propositions. Complexity in product ≠ complexity in messaging. |
| "We already did CRO" | CRO is continuous. User behavior changes, competitors evolve, pages degrade. Audit quarterly. |
──── /cro ────
Target: $ARGUMENTS
Conversion Goal: [signup | purchase | download | contact]
User Flow: [entry] → ... → [conversion]
Friction Score: [N]/100 (lower = more friction)
Persuasion Score: [N]/7 principles present
Findings:
CRITICAL: N
HIGH: N
MEDIUM: N
LOW: N
Top Recommendations:
1. [HIGH/S] [recommendation] → Hypothesis: [if/then]
2. [HIGH/M] [recommendation] → Hypothesis: [if/then]
3. [MEDIUM/S] [recommendation] → Hypothesis: [if/then]
Quick Wins: N (HIGH impact, LOW effort)
Total Recommendations: N
──── CRO audit complete ────fernandezbaptiste/specialist-agent
cd716d9
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.