Conversion Rate Optimization skill for Codex
Find the leak before rewriting the hero. Codex quantifies drop-off by funnel step and segment before suggesting anything, then reviews the leaking step for clarity, relevance, friction, anxiety and distraction, checks for JavaScript errors, slow pages and mobile traps, and folds in recordings and survey evidence. Each hypothesis is scored and routed to fix now, A/B test or monitor, using a sample-size check on actual traffic.
curl -fsSL codexskills.dev/install.sh \ | sh -s -- conversion-rate-optimization Installs to ~/.agents/skills/conversion-rate-optimization/ for every project on this machine.
curl -fsSL codexskills.dev/cli.mjs -o codex-skills.mjsnode codex-skills.mjs install conversion-rate-optimization The CLI also searches, updates and removes skills. Run it with no arguments to pick from a list. Needs Node 20.12+.
curl -fsSL codexskills.dev/install.sh \ | sh -s -- --project conversion-rate-optimization Installs to .agents/skills/conversion-rate-optimization/ in the current repository. Commit it and everyone who runs Codex there gets it.
curl -fsSLO codexskills.dev/downloads/conversion-rate-optimization.zipunzip -o conversion-rate-optimization.zip -d ~/.agents/skills/ The archive holds the skill folder with its generated agents/openai.yaml. Unzip into .agents/skills/ to scope it to a repo.
& ([scriptblock]::Create((irm codexskills.dev/install.ps1))) conversion-rate-optimization PowerShell 5.1 or 7. Installs to %USERPROFILE%\.agents\skills\. Add -Project for the current repo.
104-line POSIX script. No sudo, no telemetry. Read install.sh
Use it in Codex
Start a prompt with $conversion-rate-optimization, or pick it from /skills.
You can also just describe the task: Codex reads the description below and loads the playbook when your request matches.
What Codex reads before loading it
Runs conversion rate optimization audits on landing pages, signup and checkout flows — funnel data analysis, heuristic review (clarity, relevance, motivation, friction, anxiety, distraction), form and mobile friction, page speed impact, qualitative evidence from recordings and surveys — and turns findings into prioritized, testable hypotheses with sample-size reality checks. Use when conversion is low or dropped, asked to "audit this landing page", "why aren't people signing up", "improve checkout", or to build a CRO test backlog.
Use it when
- Conversion is low or fell and nobody knows which step leaks
- Building a prioritized backlog of conversion experiments
- Reviewing a signup, checkout or lead form for friction
- Deciding whether there is enough traffic to A/B test a change
Use something else when
- You already have a hypothesis and need the experiment designed and analyzed: use ab-testing
- You need new landing page copy written: use landing-page-copy
How to check the result
Each recommendation cites the funnel step, its drop-off number and evidence, and test candidates include a sample-size estimate; after shipping, the step's conversion is compared by segment against the baseline.
The mistake it prevents
Redesigning the landing page when the data shows users leave at a broken mobile form two steps later.
Done well: every recommendation names the funnel step it fixes, the evidence behind it (data, recording, survey quote, heuristic), the hypothesis in a testable form, and whether the site has enough traffic to test it or should simply ship the fix.
Ground rules
- Find where people drop before deciding why. A beautiful hero rewrite does nothing if the leak is at the payment step.
- Separate fixes from experiments: broken things (errors, slow pages, unreadable mobile forms) get fixed now; uncertain improvements get tested or shipped with monitoring.
- No dark patterns: fake scarcity, hidden costs revealed at the end, pre-checked add-ons, confirmshaming, hard-to-cancel flows. They lift short-term numbers and create refunds, chargebacks and legal exposure (consumer-protection rules increasingly target them).
- Codex cannot see real users. Ask for analytics exports, recordings or survey data; without them, label findings as heuristic and lower confidence.
Workflow
- [ ] 1. Define the conversion and the funnel steps
- [ ] 2. Quantify drop-off by step, device, source
- [ ] 3. Heuristic review of the leaking steps
- [ ] 4. Technical friction: errors, speed, mobile
- [ ] 5. Qualitative evidence
- [ ] 6. Write hypotheses and prioritize
- [ ] 7. Decide: ship, test, or research more
1. Define
- Primary conversion (paid order, qualified lead, activated signup) and micro-steps. Optimize for the outcome the business values; more low-quality leads is not a win.
- Read
AGENTS.mdand find the funnel in code (routes, form components, checkout handlers) so findings point to files.
2. Quantify
Build a step table from analytics (GA4 funnel exploration, PostHog funnel, or SQL):
| Step | Users | Step conversion | Mobile | Desktop | Notes |
|---|---|---|---|---|---|
| Landing page view | 40,000 | — | 64% of traffic | ||
| Pricing view | 9,200 | 23% | 18% | 31% | Mobile gap |
| Signup start | 3,100 | 34% | 33% | 35% | |
| Signup complete | 1,240 | 40% | 22% | 52% | Largest leak, mobile |
- Segment by device, traffic source, new vs returning, country. Leaks are usually concentrated in one segment.
- Compare with the step’s own history, not industry benchmarks; benchmarks vary too much by business to be targets.
3. Heuristic review
Review the leaking step against these questions, citing the element and location:
| Factor | Questions |
|---|---|
| Clarity | Can a first-time visitor say what this is, who it is for and what to do next within 5 seconds? Is the primary action obvious? |
| Relevance | Does the page match the ad, email or query that brought them (message match)? |
| Motivation | Are the concrete benefits, outcomes and price visible where the decision is made? |
| Friction | How many fields, steps, required accounts, unexpected costs? Can anything be removed, deferred or autofilled? |
| Anxiety | Are trust signals present at the point of risk: security, guarantees, cancellation terms, real reviews, support contact? |
| Distraction | Competing CTAs, navigation, popups or promos that pull away from the main action? |
Forms deserve their own pass:
- Remove fields not needed now (ask for company size after signup).
- Correct input types and
autocompleteattributes (email,tel,given-name,postal-code,cc-numbervia the payment provider’s fields). - Inline validation on blur with specific messages; never clear the form on error.
- Show password rules up front; allow paste; offer social or passkey sign-in where appropriate.
- Show total cost (tax, shipping) before the final step; offer guest checkout.
4. Technical friction
- JavaScript errors and failed API calls at the step (browser console, error tracking, server logs). A validation bug on one browser can halve conversion silently.
- Speed: slow LCP and INP on the step correlate with abandonment; field data targets are
LCP ≤ 2.5 s and INP ≤ 200 ms at p75. Diagnosis belongs to
core-web-vitals. - Mobile: tap targets, keyboard covering the CTA, sticky elements hiding fields, horizontal scroll, modals that cannot be dismissed.
- Test the real flow on a phone-sized viewport with a throttled connection.
5. Qualitative evidence
- Session recordings filtered to users who dropped at the step: look for rage clicks, dead clicks, field re-entry, back-and-forth navigation.
- On-page or exit survey with one question (“What, if anything, stopped you from signing up today?”); 50–200 answers are usually enough to see themes.
- Support tickets and sales call notes for objections.
- Quote evidence verbatim in findings (anonymized).
6. Hypotheses and prioritization
Write each as: Because [evidence], we believe [change] for [segment] will increase [metric] because [mechanism].
Score with a simple model and sort:
| Hypothesis | Evidence strength (1–3) | Expected impact (1–3) | Effort (1–3, 3 = easy) | Score |
|---|---|---|---|---|
| Remove 4 optional fields from mobile signup | 3 (recordings + drop data) | 3 | 3 | 27 |
| Show annual price per month on pricing | 2 | 2 | 3 | 12 |
7. Ship, test or research
Check traffic before proposing an A/B test. Approximate users needed per variant for a two-sided test at 95% confidence and 80% power:
from math import ceil
from statistics import NormalDist
def users_per_variant(baseline: float, relative_lift: float, alpha=0.05, power=0.8) -> int:
p1, p2 = baseline, baseline * (1 + relative_lift)
z = NormalDist().inv_cdf(1 - alpha / 2) + NormalDist().inv_cdf(power)
var = p1 * (1 - p1) + p2 * (1 - p2)
return ceil(z * z * var / (p2 - p1) ** 2)
print(users_per_variant(0.04, 0.10)) # 4% baseline, +10% relative lift -> about 39,000 per variant
| Situation | Decision |
|---|---|
| Clear bug or accessibility failure | Fix and ship; monitor the step |
| Enough traffic for the minimum lift you care about within 2–4 weeks | A/B test (design in ab-testing) |
| Too little traffic | Ship changes backed by strong evidence, monitor before/after with seasonality in mind, or test on a higher-traffic upstream step |
| Weak evidence and low traffic | Research more (surveys, user tests) before changing |
Gotchas
- Optimizing a micro-conversion (clicks on “Start trial”) can lower the real one (activated trials). Always track the downstream metric.
- Peeking at test results daily and stopping on the first significant day inflates false positives.
- Before/after comparisons are confounded by campaigns, seasonality and traffic mix; segment and annotate.
- Copy changes that promise more than the product delivers raise conversion and churn.
Landing page copywriting belongs to
landing-page-copy. - Popups that appear immediately on mobile hurt both conversion and Google’s page experience expectations.
Output template
# CRO audit: signup flow (data 2026-09-01..30)
**Conversion:** activated signup (created first project within 24h)
**Biggest leak:** signup form, mobile: 22% complete vs 52% desktop (n=2,050 mobile starts)
## Fix now
1. Mobile keyboard hides "Create account" button (recording ids 4, 9, 17); sticky CTA
above keyboard. File: components/SignupForm.tsx.
2. Password rule revealed only after submit; show rules inline.
## Test (traffic allows ~10% MDE in 3 weeks)
3. Remove company size + role fields from signup, ask in onboarding. Score 27.
## Ship with monitoring (insufficient traffic to test)
4. Add cancellation terms under pricing CTA (survey: 31% cite "lock-in" worry).
## Research
5. Pricing page desktop vs mobile gap: run 5 remote user tests. What the zip contains
SKILL.md plus the interface file below. Nothing runs on install.
agents/openai.yaml
Gives the Codex app a display name, a one-line description and a starter prompt for this skill.
interface:
display_name: "Conversion Rate Optimization"
short_description: "Find the leak before rewriting the hero"
default_prompt: "$conversion-rate-optimization Our signup conversion dropped from 3% to 2% this month, audit the flow" About this skill
Written and maintained by the Codex Skills editors to the same editorial standard as every skill here: a selective description, a real workflow, known pitfalls and a way to verify the work. First published , last updated . MIT licensed. Something wrong or out of date? Tell us.