Exit Intent Popup

Rymac exit pop

by oathdriven · MIT license · ★ 28 on GitHub

Rymac exit pop cover

Builds RyMac's exit-intent popup pattern on any landing or sales page: desktop mouse-leave plus the mobile fast-scroll-up trigger, offering a supportive asset that is deliberately NEVER promised on the page itself. Use when the user…

---
name: rymac-exit-pop
description: Builds RyMac's exit-intent popup pattern on any landing or sales page: desktop mouse-leave plus the mobile fast-scroll-up trigger, offering a supportive asset that is deliberately NEVER promised on the page itself. Use when the user asks to "add an exit pop", "build an exit popup", "exit intent", "catch people leaving the page", or when finishing any sales/landing page build. Make sure to use this skill whenever an exit-intent popup or leave-catcher is being designed, built, or critiqued.
argument-hint: [page or site to add the exit pop to, and what asset it offers]
---

# RyMac Exit Pop

Build the exit pop the way RyMac builds them, proven on two live sales
pages (a single-file static site and a Next.js/React app).

## The one law (never break it)

**Never exit pop an offer the page already promises.** The pop offers
something supportive and UNSEEN: the page sells the paid thing, the pop
gives a free thing that helps them even if they never buy. Live example:
a page selling a $100/mo system and a booked call runs a pop offering a
free educational brief whose own bullet says "2 of the 3 fixes don't

Overview

Build the exit pop the way RyMac builds them, proven on two live sales pages (a single-file static site and a Next.js/React app).

Manual install (npx, ZIP)
Claude Codenpx skills add oathdriven/rymac-skills --skill rymac-exit-pop -g -a claude-code
Claude Code (degit)npx degit oathdriven/rymac-skills/skills/rymac-exit-pop#main ~/.claude/skills/rymac-exit-pop
Claude.ai / desktopZip the folder and upload it under Settings → Capabilities → Skills.
Codex, Cursor, other agentsPoint them at SKILL.md. The other files are plain text.

Connects with Agent Alley MCP · agentalley.io/mcp

Files included

  • SKILL.md3.6 KB
Read SKILL.md here
oathdriven/main1 file shown
SKILL.md
Show the full text70 lines

RyMac Exit Pop

Build the exit pop the way RyMac builds them, proven on two live sales pages (a single-file static site and a Next.js/React app).

The one law (never break it)

Never exit pop an offer the page already promises. The pop offers something supportive and UNSEEN: the page sells the paid thing, the pop gives a free thing that helps them even if they never buy. Live example: a page selling a $100/mo system and a booked call runs a pop offering a free educational brief whose own bullet says "2 of the 3 fixes don't involve me." Another page pushes an application call; its pop offers a free roadmap that appears nowhere else on the page. If the pop repeats a page offer, it is not an exit pop, it is a nag.

The offer formula

A mini sales page in one card:

  1. Pattern-interrupt eyebrow (the proven frame is the 🛑 emoji: "🛑 Leaving Empty-Handed? 🛑" / "🛑 WAIT 🛑")
  2. Headline naming the free asset ("Don't leave without your roadmap")
  3. EITHER 3-4 curiosity bullets with bolded numbers (best when the asset is educational) OR an image thumbnail + one-line body (best when the asset is a visual artifact)
  4. Single email input, one CTA button naming the delivery ("Send Me The Free Brief →")
  5. Fine print ("No spam. Unsubscribe anytime.")
  6. Success state that keeps them on the page ("On its way. Check your inbox." + a back-to-page button), never a redirect away
  7. The pop copy must match the asset exactly. One asset, one description, everywhere: if the asset is "3 phases, 9 steps," never describe it as "3 phases" in one place and "9 steps" in another.

The trigger (proven constants, copy them)

  • Arm delay after page load: 1500-3000 ms (never fire on a fast bounce)
  • Desktop: fire when the cursor exits the top of the viewport (mouseout/mouseleave with relatedTarget === null && clientY <= 0)
  • Mobile: fire on scroll UP near the top: y < lastY && y < 300 && y > 0 (direction + position test; passive scroll listener)
  • Frequency: once per page view minimum (a shown flag); once per visitor preferred (localStorage key pattern brand:exitpop:shown)
  • Close on: Escape key, click outside the card, explicit close button
  • Lock body scroll while open, restore on close

Lead capture

  • POST the email to the site's form endpoint / CRM with attribution: utmSource: "exit-pop" plus the landing page URL, so pop leads are always distinguishable
  • Fire the pixel Lead event with a content_name naming the pop asset
  • The capture must be best-effort: if the POST fails, still show success and deliver by fallback; never strand the visitor in an error state

Checklist

  • Confirm the offered asset is NOT promised anywhere on the page
  • Build card + triggers with the constants above
  • Wire capture with exit-pop attribution + pixel event
  • Test: desktop mouse-out, mobile scroll-up at top, Escape, re-arm behavior, success state
  • Copy check: asset name and framing identical to the asset itself
1---
2name: rymac-exit-pop
3description: Builds RyMac's exit-intent popup pattern on any landing or sales page: desktop mouse-leave plus the mobile fast-scroll-up trigger, offering a supportive asset that is deliberately NEVER promised on the page itself. Use when the user asks to "add an exit pop", "build an exit popup", "exit intent", "catch people leaving the page", or when finishing any sales/landing page build. Make sure to use this skill whenever an exit-intent popup or leave-catcher is being designed, built, or critiqued.
4argument-hint: [page or site to add the exit pop to, and what asset it offers]
5---
6 
7# RyMac Exit Pop
8 
9Build the exit pop the way RyMac builds them, proven on two live sales
10pages (a single-file static site and a Next.js/React app).
11 
12## The one law (never break it)
13 
14**Never exit pop an offer the page already promises.** The pop offers
15something supportive and UNSEEN: the page sells the paid thing, the pop
16gives a free thing that helps them even if they never buy. Live example:
17a page selling a $100/mo system and a booked call runs a pop offering a
18free educational brief whose own bullet says "2 of the 3 fixes don't
19involve me." Another page pushes an application call; its pop offers a
20free roadmap that appears nowhere else on the page. If the pop repeats a
21page offer, it is not an exit pop, it is a nag.
22 
23## The offer formula
24 
25A mini sales page in one card:
261. Pattern-interrupt eyebrow (the proven frame is the 🛑 emoji:
27 "🛑 Leaving Empty-Handed? 🛑" / "🛑 WAIT 🛑")
282. Headline naming the free asset ("Don't leave without your roadmap")
293. EITHER 3-4 curiosity bullets with bolded numbers (best when the asset
30 is educational) OR an image thumbnail + one-line body (best when the
31 asset is a visual artifact)
324. Single email input, one CTA button naming the delivery ("Send Me The
33 Free Brief →")
345. Fine print ("No spam. Unsubscribe anytime.")
356. Success state that keeps them on the page ("On its way. Check your
36 inbox." + a back-to-page button), never a redirect away
377. The pop copy must match the asset exactly. One asset, one description,
38 everywhere: if the asset is "3 phases, 9 steps," never describe it as
39 "3 phases" in one place and "9 steps" in another.
40 
41## The trigger (proven constants, copy them)
42 
43- Arm delay after page load: 1500-3000 ms (never fire on a fast bounce)
44- Desktop: fire when the cursor exits the top of the viewport
45 (`mouseout`/`mouseleave` with `relatedTarget === null && clientY <= 0`)
46- Mobile: fire on scroll UP near the top: `y < lastY && y < 300 && y > 0`
47 (direction + position test; passive scroll listener)
48- Frequency: once per page view minimum (a `shown` flag); once per visitor
49 preferred (localStorage key pattern `brand:exitpop:shown`)
50- Close on: Escape key, click outside the card, explicit close button
51- Lock body scroll while open, restore on close
52 
53## Lead capture
54 
55- POST the email to the site's form endpoint / CRM with attribution:
56 `utmSource: "exit-pop"` plus the landing page URL, so pop leads are
57 always distinguishable
58- Fire the pixel Lead event with a content_name naming the pop asset
59- The capture must be best-effort: if the POST fails, still show success
60 and deliver by fallback; never strand the visitor in an error state
61 
62## Checklist
63 
64- [ ] Confirm the offered asset is NOT promised anywhere on the page
65- [ ] Build card + triggers with the constants above
66- [ ] Wire capture with exit-pop attribution + pixel event
67- [ ] Test: desktop mouse-out, mobile scroll-up at top, Escape, re-arm
68 behavior, success state
69- [ ] Copy check: asset name and framing identical to the asset itself
70 
View all files on GitHub →

Details

License
MIT
Stars on the repo
★ 28
Checked
Source
oathdriven/rymac-skills ↗
Creator
oathdriven · 12 listings
View creator

Similar skills

See all →

More from oathdriven

SkillAEO Blog Writeroathdriven/rymac-skills · by oathdrivenWrites SEO + AEO (Answer Engine Optimized) blog posts built to rank on Google AND get cited by AI answer engines (Google AI Overviews, ChatGPT, Perplexity). Runs live SERP recon, writes answer-first, and wires internal + external authority links. Use when someone wants a blog post that ranks and gets quoted by AI, says "write an AEO post", "answer-engine optimization", "get cited by AI Overviews", "rank AND get quoted", or wants the pro version of an SEO article. For quick keyword blog posts use rymac-seo-writer instead.★ 28 GitHub starsSkillConverting Headline Writeroathdriven/rymac-skills · by oathdrivenWrite and rewrite landing-page headlines, hero sections, and their CTAs using a pain + dream-outcome formula, awareness-stage diagnosis, and a curated SaaS swipe file. Use when the user asks to "write a headline", "rewrite the hero", "fix the landing page headline", "give me headline options", "punch up the hero", or works on above-the-fold copy for allodra.ai, sierra6ai.com, or any writing-room landing page. Make sure to use this skill whenever a headline, hero section, subheadline, or CTA button copy is being written or critiqued.★ 28 GitHub starsSkillPaid Traffic Landing Pageoathdriven/rymac-skills · by oathdrivenResearches a niche's pains and builds a single-screen, one-decision landing page for paid ad traffic (Meta/Google/YouTube) — headline-first, message-matched to the ad, with one CTA and a risk-reversal/trust element, nothing else. Use when the user asks to "make a landing page for ads", "build a page for this campaign", "squeeze page", "lead capture page", "opt-in page", or wants to convert paid traffic for a niche. Make sure to use this skill for any ad-destination page; for multi-section marketing websites use website-builder or build-premium-website instead.★ 28 GitHub starsSkillCall Scheduling Funneloathdriven/rymac-skills · by oathdrivenBuilds the conversion plumbing that turns site traffic into scheduled calls: chat scheduler, AI voice agent, emergency escalation that pings a live on-call human, non-emergency booking into one shared calendar engine, and after-hours handling. Use when the user asks to "wire up the call funnel", "add the chat scheduler", "set up the voice agent", "convert traffic into scheduled calls", "handle after-hours calls", or builds any page whose goal is booked calls. Make sure to use this skill whenever call-booking, voice-agent, or emergency-routing plumbing is being designed or built.★ 28 GitHub starsSkillDirect Response Letteroathdriven/rymac-skills · by oathdrivenWrites direct-response P.A.S. (Problem-Agitate-Solution) sales letters in the RyMac voice, in the Dan Kennedy direct-letter tradition, modeled on the proven Sierra-6 letter. A personal letter to one reader with self-identification pain bullets, "you're not alone" normalization, cinematic agitation, an I-was-you origin story, a named-mechanism reveal, imagine future-pacing, and a P.S. close, formatted for skimmers (bold/underline paths). Use when the user asks to "write a sales letter", "write the letter", "P.A.S. letter", "direct sales letter", "Dan Kennedy letter", "pain-agitate-solution copy", says "set up my sales letter voice profile", or needs the letter section of a sales page. Make sure to use this skill whenever long-form persuasive letter copy is being written, rewritten, or critiqued.★ 28 GitHub starsSkillNiche Offer Validatoroathdriven/rymac-skills · by oathdrivenRuns RyMac's offer-validation research method. Fans out parallel subagents to map a niche's pain points in their own words, the psychology of why the pain persists, a competitor matrix, demand proof with a lead-pool count, the niche's unit economics (revenue bands, net margin range, where the margin comes from, the P&L split, average ticket), and a response-behavior audit scoring the niche against your mechanism, then delivers a build/pivot/skip verdict with the underserved wedge, the USP, an affordability call on what the niche can actually pay, a delivery-economics check that YOUR own margin clears a 65% floor (with the lowest price you could charge and the owned-vs-rented cost of your stack), the profit left on the table, and ROI hooks written in their own numbers. Use when the user asks to "research a niche", "validate an offer", "find the pain points", "run niche research", "should I build this", "who else sells this", "what are the margins in X", "can they afford my offer", "what should I price this at", or has an idea or observation about a market. Make sure to use this skill whenever the user is deciding what to build, sell, price, or make content about next.★ 28 GitHub stars