popup-cro
A Claude Code skill that designs popups, modals, slide-ins, and banners that convert without trashing brand perception — exit intent, scroll trigger, sticky bars.
Run popups that convert without alienating users
Trigger phrases
Phrases that activate this skill when typed to Claude Code:
exit intentpopup conversionsmodal optimizationlead capture popupsticky bar
What it does
popup-cro is a Claude Code skill from Corey Haines’s marketing-skills repo. It turns Claude into a popup specialist whose discipline is matching the popup’s job to its trigger — a lead-magnet exit popup needs different copy and timing than an announcement banner — and resisting the dark-pattern path. The skill activates when you mention “exit intent”, “popup conversions”, “modal optimization”, or “sticky bar”.
The output of a session is a popup spec: trigger (exit / scroll / time / page-target), placement (modal / slide-in / banner / sticky bar), audience filter (only first-time visitors, only logged-out, only specific UTM), copy with a clear ask, dismissal UX, and frequency capping.
When to use it
Reach for it when:
- You’re getting traffic that doesn’t convert and want a low-engineering capture layer
- Your existing popup is annoying users — visible in support mentions or NPS
- You’re running an announcement (waitlist, launch, deadline) and need a banner that doesn’t tank pageviews
When not to reach for it:
- The page itself is the conversion problem; popup isn’t the patch
- Your brand can’t afford the perception hit of any interruption — some categories really can’t
Install
The skill is distributed via Corey Haines’s marketing-skills repo. Install via the repo’s recommended path — copy the popup-cro SKILL.md into your project’s .claude/skills/popup-cro/ directory, or use the repo’s plugin install if you’ve set it up.
Once installed, the skill activates on the trigger phrases above. The first time it runs, it will check for .agents/product-marketing-context.md (or .claude/product-marketing-context.md) — populating that file with your product context first dramatically improves output quality across all of Haines’s marketing skills.
What a session looks like
A typical session has three phases:
- Job + trigger fit. What’s the popup’s job — capture an email, surface an offer, nudge to a feature? Each job has a default best trigger (exit for email capture, scroll for content offers, time-on-page for high-intent CTAs).
- Audience + frequency. Who sees it (first-time visitors, segment-specific, logged-out only), and how often (once per session, once per 30 days). Frequency caps prevent the “saw it five times” hatred.
- Copy + dismissal. Headline, body, CTA, the no-thanks copy. Dismissal UX is non-negotiable — a clearly visible close button keeps the popup off the dark-pattern list.
The discipline that makes it work: every popup has a tax on brand perception. If the conversion lift doesn’t outweigh the tax, the popup loses, even when it converts.
Receipts
Honest reporting on what popup-cro produces and where it has limits:
Where it works well:
- Trigger-job matching kills the “exit popup for everything” failure mode
- Frequency caps stop the worst user-experience pattern in one stroke
- Dismissal-UX standards keep the popup defensible at NPS-review time
Where it backfires:
- On mobile, popups have always-bad UX dynamics; the skill is honest about that
- Popups can lift email captures while suppressing the actual product trial — track downstream conversion, not just opt-ins
Pattern that works: ship one popup with strict frequency caps and measure downstream conversion (signup, trial, paid) — not just popup conversion. If downstream metrics flatten or drop, kill it.
Source and attribution
Originally written by Corey Haines. The canonical SKILL.md and any supporting files live in the popup-cro folder of his marketing-skills repository.
License: MIT. You can install, adapt, and redistribute the skill, with attribution preserved.
This page documents the skill from a practitioner’s perspective. For the formal spec and any updates, defer to the source repo.