readdle/spark-cli-skills/recipe-unsubscribe-audit
Claude Code and agent skill by readdle/spark-cli-skills
- community
Checking that the SKILL.md file is still in the repository.
Full unsubscribe audit: scan inbox, archive, and GateKeeper for newsletter senders, classify by volume and engagement, detect phishing and duplicate subscriptions, then unsubscribe via spark action or extracted footer links.
Install
npx vskill@latest install readdle/spark-cli-skills/recipe-unsubscribe-auditSKILL.md
Recipe: Unsubscribe Audit
Audit every newsletter pool, recommend unsubscribe candidates backed by engagement data, and execute only after the user approves the list. Spark supplies the data (senders, volumes, read flags, bodies); the agent owns classification, duplicate verification, and execution.
Prerequisite: Read the use-spark base skill for command reference and filter syntax.
Access level required: triage.
Steps
Step 1: Scan all three pools
An inbox-only scan misses most of the volume. Check all three:
Step 2: Aggregate and classify
Count per sender: emails per 30 days and unread rate (from the Flags column). Classify into tiers:
| Tier | Signal | Action | |
|---|---|---|---|
| Unsubscribe | Pure marketing/drip, ~100% unread | Recommend removal | |
| Consider | High volume, partial engagement | User's call; suggest digest or auto-summary | |
| Keep | Mostly read | Leave alone | |
| Transactional | Invoices, PINs, order/security notices | Exclude from the audit | |
| Phishing | See below | Mark as spam — NEVER unsubscribe | |
| App-nag | Instagram/LinkedIn-style notification mail | Fix in the app's notification settings |
Phishing tripwire: brand name in the display name but an unrelated sender domain (e.g. "SpotifyUS" from mail@jhbuilder.com), urgent billing/security subjects. Clicking anything — including unsubscribe — confirms the address is live. Flag prominently; recommend mark-as-spam instead. The same applies to everything already in the Spam folder: never unsubscribe there.
Present the classification and wait for the user to confirm or amend the list before acting. Expect them to rescue a few senders.
Step 3: Verify duplicate copies before acting
When the same newsletter arrives 2+ times, do NOT assume two subscriptions:
- Compare
To:headers of the copies viaspark thread <id>. Different addresses → genuinely separate subscriptions; unsubscribe the unwanted copy using the link from that specific copy (tokens are per-subscription). - Substack: decode the
https://substack.com/redirect/2/<base64url-JSON>unsubscribe link; the payload'sufield is the subscription ID. Sameuin both copies → one subscription delivered twice (alias/forward). Unsubscribing kills it entirely — report instead of acting. - Same
To:, same account (e.g. Patreon) → same situation; skip and report.
Step 4: Unsubscribe approved senders
For each approved sender, try Spark's built-in mechanism first:
If the command is unavailable in the installed CLI version or the sender has no List-Unsubscribe mechanism, fall back to footer-link extraction:
Then complete each link in a browser (agent-driven browser automation or hand the list to the user). Browser rules: one-click confirmations are common; preference centers need "unsubscribe from all marketing" + save; never type personal data (pre-filled email fields are fine); login walls, captchas, and errors → record as blocked and move on. Footers vary by language and ESP — if the pattern misses, read the last ~25 lines of the body and pick the actual unsubscribe link, not adjacent tracking links.
For senders that should be blocked entirely (cold outreach, spam-adjacent):
Step 5: Tame the keepers
For high-volume senders the user keeps:
Step 6: Report
Summarize: senders removed, emails/month saved, blocked items with manual next steps, app-nag senders to fix in-app, phishing marked as spam, and duplicates that need account-level fixes (e.g. Substack account settings, forwarding rules).
Tips
- Engagement data makes recommendations credible: "30 emails/month, 100% unread" beats "looks like marketing".
- Shell loops abort on a failing
grep— dump pages to temp files first, parse second, and append|| true. - Click-tracker redirect links (SendGrid, Braze, e.zoom.us, klclick, webengage) are fine — the browser follows them to the real unsubscribe page.
- Sendy footers contain both
/l/...(tracking) and/unsubscribe/...links — pick the latter. unsubscribevia the mailing list's own mechanism is cleaner than blocking; reserveblockContact/blockDomainfor senders that ignore unsubscribes.- Run this recipe quarterly; subscriptions regrow.
Security
- Security scanPassed, 95 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/recipe-unsubscribe-audit/SKILL.md
Popularity
- Repository stars
- 145
- Repository forks
- 7
- 7-day trend score
- 25
Stars and forks are for the whole GitHub repository, not this skill alone. Refreshed 14 Sep 2026, a month ago.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/readdle/spark-cli-skills/recipe-unsubscribe-audit)