skills/diagnostics/email-diagnostics/SKILL.md
Diagnose email problems and plan email infrastructure. Use when emails land in spam, bounce rates spike, deliverability drops, open rates decline, providers throttle sending, you need to set up email for a new product, or you're not sure which email skill to use.
npx skillsauth add chunkydotdev/email-skills email-diagnosticsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
The starting point for any email problem or project. This skill routes you to the right diagnostic steps and the right specialized skills - so you fix the actual cause, not the symptom you noticed first.
This skill references all other skills in this collection. Each diagnostic path tells you exactly which skills to load for the detailed guidance.
| Your situation | Jump to | |---|---| | Emails landing in spam | Spam diagnosis | | Bounce rate spiking | Bounce diagnosis | | Listed on a blocklist | Blocklist response | | Open rates dropping | Engagement diagnosis | | Getting throttled (421 errors) | Throttling diagnosis | | Complaint rate rising | Complaint diagnosis | | Setting up email from scratch | Greenfield setup | | Migrating providers | Migration plan | | Scaling send volume | Scale plan | | Setting up inbound email | Inbound setup | | Giving an AI agent its own inbox | Agent inbox | | AI agent sending email | Agent diagnostics | | Compliance request or complaint | Compliance response | | General health check | 5-minute audit |
The most common email problem. Work through these checks in order - each step is cheaper than the next, and most problems are caught in the first three.
Run these DNS checks against your sending domain:
dig TXT example.com # SPF record
dig TXT sel._domainkey.example.com # DKIM (replace sel with your selector)
dig TXT _dmarc.example.com # DMARC record
Send a test email and check the headers for:
spf=passdkim=passdmarc=passIf anything fails, stop here. Load domain-authentication and fix it before investigating further. Authentication failures cause immediate spam placement or rejection at most providers since November 2025.
Check these in order:
If reputation is damaged, load sender-reputation for the recovery playbook.
Content is only ~10% of the placement decision, but it can be the tipping point:
Load spam-filter-avoidance for the full content checklist.
If authentication, reputation, and content all look clean, the problem is almost certainly engagement:
Load inbox-placement for the engagement signal hierarchy and fatigue scoring model. Load suppression-lists for list hygiene.
domain-authentication - fix any auth failures firstsender-reputation - if reputation is damagedspam-filter-avoidance - if content triggers are presentinbox-placement - for engagement optimizationsuppression-lists - for list hygieneemail-warmup - if you need to rebuild after fixing root causeHealthy bounce rate is under 1%. Warning at 1-2%. Above 2% is dangerous - providers will throttle or block you.
The fix depends entirely on whether they're hard or soft:
| Bounce type | SMTP codes | Meaning | Action | |---|---|---|---| | Hard (permanent) | 5.1.1, 5.1.2, 5.2.1, 5.7.1 | Address doesn't exist, domain gone, blocked | Suppress immediately, never retry | | Soft (temporary) | 4.2.1, 4.2.2, 4.3.1, 4.7.0 | Mailbox full, server down, rate limited | Retry with backoff (1h, 4h, 24h), suppress after 3 failures in 30 days |
If hard bounces are climbing:
If soft bounces are piling up:
Load bounce-handling for SMTP code reference, retry strategies, and provider-specific webhook formats. Load suppression-lists for automated suppression workflows.
A Spamhaus SBL listing can drop delivery rates by 90% within hours. This is an emergency.
| Blocklist | Self-service removal? | Typical timeline | |---|---|---| | Spamhaus SBL | Yes, via lookup tool | Hours to days | | Spamhaus XBL | Automatic after cleanup | 30 minutes | | Barracuda BRBL | Yes, via removal form | Hours | | SpamCop | Automatic | 24-48 hours | | SORBS | Varies by list type | Days |
You need to re-warm. Your reputation took a hit and sending at full volume immediately will put you right back.
sender-reputation for the recovery playbook (timeline: 2-12+ weeks depending on damage).email-warmup - start at 25% of normal volume with your most engaged segment.sender-monitoring - set up alerts so you catch the next problem before it becomes a blocklist event.Declining open rates over 2+ weeks usually means placement is degrading. This is the slow-motion version of going to spam - your emails are being deprioritized, not outright filtered.
| Cause | Signal | Fix |
|---|---|---|
| Sending to disengaged recipients | High volume, low engagement | Suppress recipients with no engagement in 90+ days |
| Reputation degradation | Postmaster Tools shows declining domain reputation | Load sender-reputation for recovery |
| Content fatigue | Steady decline across all segments | Load email-copywriting, test new approaches with ab-testing |
| Tab placement change | Gmail open rates specifically dropped | Emails moved to Promotions - load inbox-placement |
| Frequency too high | Unsubscribe rate climbing alongside open rate drop | Reduce frequency or move to digests - load notification-design |
421 SMTP responses mean the receiving provider is telling you to slow down. Retrying at the same rate makes it worse.
| Code | Provider | Meaning | |---|---|---| | 421-4.7.28 | Gmail | Unusual rate of unsolicited mail | | 421-4.7.26 | Gmail | Unauthenticated mail rate-limited | | 421 4.3.2 | Microsoft | Too many concurrent connections | | 421 TS03 | Yahoo | Too many concurrent SMTP connections |
email-warmup.Load rate-limiting for multi-window rate limit implementation and per-domain throttling. Load bounce-handling for soft bounce retry strategies.
Google enforces 0.3% as a hard limit. Above 0.1% is already a warning. Complaints are the single most damaging signal to your reputation.
email-compliance for unsubscribe requirements (RFC 8058, one-click) and consent management.suppression-lists for automated complaint suppression (suppress immediately on complaint, permanently).notification-design if the problem is frequency-related - implement preference centers and digests.The correct sequence matters. Skipping steps or doing them out of order creates problems that are expensive to fix later.
If you're building for an AI agent that needs to send and receive autonomously, consider an agent-native inbox provider instead of wiring up a traditional ESP. Load inbox-providers for the comparison. If you go the agent-native route, the provider handles most of phases 1-2 below. If you're building on a traditional ESP, follow the full sequence.
mail.example.com for transactional, news.example.com for marketing. Load provider-setup for the full decision framework.p=none on DMARC. Load domain-authentication.provider-setup.webhook-processing.email-warmup.sender-monitoring.rate-limiting.suppression-lists.email-compliance.| Use case | Skill to load |
|---|---|
| Password resets, receipts, notifications | transactional-email |
| Welcome sequences, onboarding | onboarding-emails |
| Drip campaigns, nurture | email-sequences |
| Product notifications | notification-design |
| Sales outreach | cold-outreach |
email-copywriting for copy and template-design for HTML.ab-testing once you have enough volume (minimum 200-300 sends per variant for meaningful results).Provider migrations are where most reputation damage happens - because people forget to carry their suppression lists.
suppression-lists.provider-setup.email-warmup.sender-monitoring.Scaling too fast damages reputation. Scaling too slowly costs opportunity. Here's how to do it right.
| Current volume | Target volume | Approach | |---|---|---| | Under 10K/month | 10K-50K | Ramp gradually over 2-4 weeks | | 10K-50K/month | 50K-100K | Consider dedicated IP, 4-6 week ramp | | 50K-100K/month | 100K-500K | Dedicated IP required, 6-8 week ramp | | 100K+ /month | 500K+ | Multi-IP, separate mail streams, 8+ weeks |
If your consistent volume will exceed 50K/month, load provider-setup for the shared vs dedicated IP decision. Below 50K/month, dedicated IPs are counterproductive - low volume makes them look suspicious.
rate-limiting)suppression-lists, bounce-handling)rate-limiting)sender-monitoring)provider-setup)Receiving and processing email is a different problem from sending. Here's the setup sequence.
| Provider | Best for | Key trait | |---|---|---| | Postmark | Stateless thread association via MailboxHash | JSON payload, clean parsing | | SendGrid | High volume inbound | Posts as multipart/form-data, not JSON | | Mailgun | Auto-stripping quoted replies | Routes with stripped-text/stripped-html | | SES | AWS-native, raw MIME | S3 store + SNS notify, US/EU regions only |
Load inbound-processing for provider setup, MIME parsing, and content extraction.
Once you can receive and parse email, you need to classify it:
Load reply-classification for the full taxonomy, keyword scoring, confidence thresholds, and routing rules.
Link inbound messages to conversations:
Load thread-management for threading headers, provider differences (Gmail vs Outlook), and quoted reply stripping.
Inbound email is an attack vector. Before any AI agent processes email content:
Load email-security for the full security pipeline including prompt injection detection, BEC patterns, and attachment scanning.
If your AI agent needs to send and receive email autonomously, you have two paths: build on a traditional ESP or use an agent-native inbox provider.
| Capability | Traditional ESP (build yourself) | Agent inbox provider (built in) | |---|---|---| | Sending | API call | API call | | Receiving | Configure inbound webhooks, parse MIME | Built-in inbox, parsed and classified | | Suppression | Query your own suppression database | Checked automatically, send rejected if suppressed | | Rate limiting | Implement sliding window counters | Enforced at infrastructure layer | | Deduplication | Track dedupe keys yourself | Built-in | | Prompt injection scanning | Build detection pipeline | Built-in before agent sees content | | Reply classification | Build or integrate classifier | Built-in (interested, OOO, objection, etc.) |
Use a traditional ESP if your agent only sends occasional transactional email, you already have email infrastructure, or volume is under 100 emails/day. Load provider-setup.
Use an agent-native inbox provider if your agent sends at scale, handles replies, or operates autonomously. The build-vs-buy calculation tips toward agent-native providers quickly when you factor in suppression, rate limiting, deduplication, and safety scanning. Load inbox-providers.
| Need | Recommendation |
|---|---|
| Policy enforcement, deliverability guardrails | Molted Email |
| Many inboxes, email-as-identity | AgentMail |
| Agent self-provisioning, zero human setup | LobsterMail |
| Graduated trust, start sandboxed | MailMolt |
| Just sending, no inbound, no agent autonomy | Traditional ESP (provider-setup) |
Load inbox-providers for full provider comparison, setup steps, and safety architecture.
AI agents have specific failure modes that humans don't. If an agent is sending email and something's going wrong, check these first.
| Symptom | Likely cause | Fix |
|---|---|---|
| Bounce rate exploding | Agent guessing email addresses | Validate addresses before sending, never construct addresses programmatically without verification |
| Volume spike triggering blocks | Agent retry loop, no rate limiting | Per-recipient cooldowns (10 min minimum), deduplication, multi-window rate limits |
| Sending entire daily quota in minutes | No hourly rate cap | Set hourly limits, not just daily - load rate-limiting |
| Reputation burning fast | Agent ignoring bounce/complaint signals | Implement negative signal budgets - auto-pause when thresholds crossed |
| Prompt injection in outbound | Agent processing inbound email into outbound | Treat email content as data, never as instructions - load email-security |
| Duplicate emails flooding recipients | No deduplication | Dedupe keys: <skill>:<flow>:<entity>:<event> with TTL |
If you're building these yourself on a traditional ESP, you need all of the following. Agent-native inbox providers (load inbox-providers) handle most of this at the infrastructure layer.
sender-reputation for the scoring model.Legal email compliance spans three jurisdictions with different rules. Getting it wrong has real penalties.
email-compliance and suppression-lists.This creates a paradox: you must delete personal data, but you must also prevent future sending. The solution:
Keep: email address, suppression flag, reason code (legal_request), date, jurisdiction. Delete: name, company, demographics, send history, engagement data, CRM fields, consent records beyond what's needed for suppression.
Load suppression-lists for the full GDPR erasure workflow.
email-compliance.email-compliance.Run this periodically, or any time you want a quick snapshot of your email health. Each check takes under a minute.
Send a test email to yourself. Check headers for:
spf=pass with alignmentdkim=pass with alignmentdmarc=passIf anything fails, load domain-authentication.
If reputation is degraded, load sender-reputation.
| Metric | Healthy | Investigate | |---|---|---| | Hard bounce rate | < 0.5% | > 0.5% | | Total bounce rate | < 1% | > 2% | | Complaint rate | < 0.1% | > 0.1% | | Unsubscribe rate | < 0.5% | > 1% | | Delivery rate | > 98% | < 95% |
If any metric is in the "investigate" column, load sender-monitoring for alert configuration and bounce-handling or suppression-lists for the fix.
List-Unsubscribe and List-Unsubscribe-Post headers present?If anything is missing, load email-compliance.
When you're not sure where to start, walk this tree:
Is authentication passing? (SPF, DKIM, DMARC all pass)
NO --> Fix authentication first (domain-authentication)
YES
|
v
Is your domain on any blocklist?
YES --> Emergency: stop marketing sends, fix cause, request delisting
(sender-reputation, sender-monitoring)
NO
|
v
Is complaint rate above 0.1%?
YES --> Fix unsubscribe flow, check consent, reduce frequency
(email-compliance, suppression-lists, notification-design)
NO
|
v
Is bounce rate above 2%?
YES --> Classify hard vs soft, clean list, check for bad segments
(bounce-handling, suppression-lists)
NO
|
v
Is delivery rate below 95%?
YES --> Check per-provider breakdown, look for throttling
(sender-monitoring, rate-limiting)
NO
|
v
Are open rates declining?
YES --> Check engagement segments, content quality, tab placement
(inbox-placement, email-copywriting, ab-testing)
NO
|
v
Your email health looks good. Focus on optimization:
- Test subject lines and content (ab-testing)
- Optimize send timing (email-sequences)
- Improve templates (template-design)
- Build preference centers (notification-design)
Quick reference for all 26 skills organized by the problem you're solving.
| Problem | Primary skills | Supporting skills |
|---|---|---|
| Landing in spam | domain-authentication, sender-reputation | spam-filter-avoidance, inbox-placement |
| High bounce rate | bounce-handling, suppression-lists | sender-monitoring, webhook-processing |
| Blocklist listing | sender-reputation, sender-monitoring | email-warmup, suppression-lists |
| Getting throttled | rate-limiting, bounce-handling | email-warmup, sender-monitoring |
| Complaints rising | email-compliance, suppression-lists | notification-design, email-copywriting |
| Open rates declining | inbox-placement, email-copywriting | ab-testing, sender-reputation |
| Goal | Skills in order |
|---|---|
| Email from scratch | domain-authentication -> provider-setup -> email-warmup -> sender-monitoring |
| Transactional email | transactional-email -> template-design -> bounce-handling |
| Onboarding sequence | onboarding-emails -> email-sequences -> email-copywriting |
| Marketing campaigns | email-copywriting -> template-design -> ab-testing -> inbox-placement |
| Cold outreach | cold-outreach -> email-warmup -> reply-classification |
| Product notifications | notification-design -> template-design -> rate-limiting |
| Inbound processing | inbound-processing -> reply-classification -> thread-management -> email-security |
| Agent inbox (send + receive) | inbox-providers -> domain-authentication -> email-security |
| Provider migration | provider-setup -> suppression-lists -> email-warmup -> sender-monitoring |
data-ai
Choose and configure an email service provider. Use when setting up email for a new project, comparing providers, migrating between providers, or adding failover.
development
Set up SPF, DKIM, and DMARC email authentication. Use when configuring a new sending domain, debugging spam/rejection issues, adding email providers, or preparing for Google/Yahoo/Microsoft bulk sender requirements.
development
Design and send transactional emails. Use when building password resets, receipts, shipping notifications, account alerts, or separating transactional from marketing streams.
development
Build welcome and activation email sequences. Use when designing signup flows, driving users to key actions, converting trials to paid, or reducing early churn.