# Dismiss Newsletter Popup

> Dismisses newsletter / "subscribe" / "sign up for emails" popups that appear after a short delay or scroll trigger on content sites.

- **Type:** Skill
- **Install:** `agentstack add skill-bettyguo-browser-skills-dismiss-newsletter-popup`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [bettyguo](https://agentstack.voostack.com/s/bettyguo)
- **Installs:** 0
- **Category:** [Agent Skills](https://agentstack.voostack.com/c/agent-skills)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [bettyguo](https://github.com/bettyguo)
- **Source:** https://github.com/bettyguo/browser-skills/tree/main/skills/dismiss-newsletter-popup

## Install

```sh
agentstack add skill-bettyguo-browser-skills-dismiss-newsletter-popup
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# Dismiss Newsletter Popup

## When to invoke

After a few seconds on a content site (news, blogs, retail), a popup
appears offering a newsletter signup. The dismiss controls are typically:
a small "x" in the corner, a "no thanks" link, or pressing Escape.

The matcher fires this skill when the DOM contains a newsletter marker
*and* the page is not in initial-load (these popups typically appear
after a delay).

## Recipe

1. wait_for_dom_ready timeout=2s
2. wait extra=200ms
3. try_each selectors=[
     "[class*='newsletter' i] button[aria-label*='close' i]",
     "[id*='newsletter' i] button[aria-label*='close' i]",
     "[class*='subscribe' i] button[aria-label*='close' i]",
     "[class*='newsletter' i] button:has-text('No thanks')",
     "[class*='subscribe' i] button:has-text('No thanks')",
     "[class*='newsletter' i] button:has-text('Maybe later')",
     "button.newsletter-dismiss",
     "button.email-signup-close",
     "[data-testid*='newsletter-close']",
     "[data-testid*='email-signup-close']",
   ] action=click on_success=stop timeout=1000ms
4. press_key key=Escape

## Success criteria

- assert no_visible_element selector="[class*='newsletter' i][role='dialog']" OR no_change_was_needed

## When NOT to use

- The user explicitly wants to subscribe — don't auto-dismiss.

## Known failures

- **Popups that block scroll until interacted with:** Escape doesn't always close them; the close button is small and unlabeled. Vision fallback for these.
- **Popups inside cross-origin iframes:** can't be clicked through Playwright's default context.
- **Multiple newsletter popups stacked:** v0.1 dismisses one; agent re-invokes for the next.

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [bettyguo](https://github.com/bettyguo)
- **Source:** [bettyguo/browser-skills](https://github.com/bettyguo/browser-skills)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-bettyguo-browser-skills-dismiss-newsletter-popup
- Seller: https://agentstack.voostack.com/s/bettyguo
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
