Install
$ agentstack add skill-growthenginenowoslawski-coldoutboundskills-deliverability-incident-response ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Deliverability Incident Response
Things break. When they do, you need a playbook — not panic. This skill is the triage decision tree.
The five incident types
| Symptom | Most likely cause | First action | Fix time | |---|---|---|---| | Reply rate dropped sharply | Deliverability — emails in spam | Run spam placement test | 1-14 days | | Bounce rate spiked >3% | Bad list OR domain reputation | Check bounce types | 1-3 days | | Domain blacklisted | Shared IP bad actor OR your domain got flagged | Check blacklists, rotate if needed | 7-30 days | | Inbox blocked in warmup | Warmup network flagged sending patterns | Pause, investigate, maybe replace | 1-7 days | | Gmail marking as promotional | Content triggers (links, images, HTML) | Simplify content | 1-3 days |
Decision tree: "my reply rate dropped"
Step 1: Quantify the drop
Was this week's reply rate 85% → deliverability is fine, look at copy/targeting instead
2. **Check domain authentication** (`/email-deliverability-audit` → `check-domain-auth.ts`)
- Missing DKIM on any domain → fix immediately (see `/zapmail-domain-setup-public` for reconnect steps)
- DMARC policy=reject with alignment failures → temporarily lower to quarantine
3. **Check warmup status** (`/smartlead-inbox-manager` → `list-health.ts`)
- If multiple inboxes blocked in warmup → warmup network flagged you
- If reputation dropped "good" → "fair" on many inboxes → slow down sending volume
4. **Check bounce rate** (`/email-deliverability-audit` → `audit-performance.ts`)
- If bounce >3% → list quality degraded
- If bounce 3% AND mostly_hard_bounces
→ list quality problem, verify with MillionVerifier
bounce_rate > 3% AND mostly_soft_bounces (greylist, temp)
→ domain reputation problem, slow sending
bounce_rate > 5% either type
→ stop the campaign immediately to prevent ISP suspension
Step 2: If list problem
- Export remaining leads from the campaign
- Run through MillionVerifier (batch, ~$2 per 1,000)
- Only reuse emails with status "ok"
- Discard the rest
Step 3: If reputation problem
Slow way down. Cut daily volume 50% per inbox for 2 weeks. Run warmup more aggressively.
Decision tree: "domain blacklisted"
Step 1: Confirm the blacklist
Check:
- Spamhaus, Barracuda, SURBL via
/email-deliverability-audit→ spam-test report → blacklist detail - MX Toolbox (https://mxtoolbox.com/blacklists.aspx) for a second opinion
Step 2: What tier of blacklist?
- Domain on Spamhaus DBL or SURBL → serious. You may need to replace the domain entirely.
- Sending IP on a DNSBL → usually the IP pool's fault (not yours, if on Zapmail shared IPs). Zapmail rotates IPs; wait 1-2 weeks.
- Minor list (e.g., Barracuda) → submit delisting request at their portal. Usually resolved in 3-7 days.
Step 3: Replace vs repair
- Domain 90 days old + blacklisted → try repair. Stop sending for 7 days, submit delisting requests, slowly resume.
- If you replace: archive the old domain, buy a new lookalike via
/zapmail-domain-setup-public, warm it for 2 weeks before reusing.
Decision tree: "inbox blocked in warmup"
Step 1: Why is it blocked?
Smartlead's is_warmup_blocked: true flag usually means:
- Your warmup emails looked like spam to the warmup network
- Too many warmup peers marked them as spam
- The inbox type/provider is rate-limiting
Step 2: Triage
- Check the
blocked_reasonfield (if populated) - If warmup network issue → the inbox reputation may be damaged. Cost-benefit:
- Young inbox (90 days, previously good reputation) → try disabling and re-enabling warmup with lower
total_warmup_per_day(try 15 instead of 40)
- If ISP rate-limit → wait 48h, re-enable warmup
Step 3: Retire workflow (via /smartlead-inbox-manager)
# Tag as retired
npx tsx scripts/tag-inboxes.ts --ids= --add-tag=retired --remove-tag=active
# Disable warmup
npx tsx scripts/set-warmup.ts --mode=disable --ids=
# Replace — buy new domain, create new inbox
# See /zapmail-domain-setup-public
Decision tree: "Gmail marking as promotional"
Step 1: Test on a fresh Gmail account
Send the campaign's email 1 to a fresh @gmail.com account (yours, not in the campaign). Where does it land?
- Primary → you're fine
- Promotions → this is the issue
- Spam → you have a bigger deliverability problem (see above)
Step 2: Promotional-tab triggers (and fixes)
- Multiple links in email → drop to 0-1 links in email 1
- Images / inline images → remove them
- Heavy HTML styling → simplify, fewer tags
- Marketing-style phrases ("click here", "act now", "limited time") → remove
- Unsubscribe in header (List-Unsubscribe) — actually helps deliverability, but formatting must be correct
- Mass signature blocks with logos → simplify to text-only
Step 3: A/B test
Create two versions — your current and a stripped-down version. Send 50 leads each. Check which has better reply rate after 7 days.
The 72-hour "total failure" checklist
If NOTHING is working and you don't know why:
- Pause all campaigns. Stop damage.
- Audit: run
/email-deliverability-auditfull suite - Spam test: run Smart Delivery on 2 sender subsets
- Check SPF/DKIM/DMARC on every domain — if ANY are missing, fix before resuming
- Check Zapmail health dashboard — if their IPs are in trouble, everyone on their pool is too
- Reduce volume 75% for the restart
- Use a known-good copy — don't launch new copy during recovery
- Watch reply rate daily for 7 days post-restart
When to call in experts
- You've been in spam for >2 weeks despite fixes → infrastructure level issue, consider migrating sending platforms
- Multiple domains permanently blacklisted → IP pool issue, switch providers
- Domain reputation never recovers after 4 weeks → retire domain, replace
What to do next
Re-run /email-deliverability-audit --days=7 in 7 days to confirm recovery. Domain/inbox reputation rebuilds slowly — don't re-audit before the 7-day window.
Meanwhile: continue the weekly rhythm via /cold-email-weekly-rhythm, which catches new issues as they emerge.
Or wait: if the incident required replacing domains/inboxes, wait 2 weeks for warmup on the replacements before expecting full recovery.
Related skills
/email-deliverability-audit— the diagnostic suite you run first/smartlead-inbox-manager— tag, rotate, retire inboxes/zapmail-domain-setup-public— replace a burned domain/positive-reply-scoring— confirm recovery (reply rate back to baseline)
The 1% rule sanity check
After fixes, give it at least 200 sends at your normal volume. If reply rate is still <1% — there's a deeper issue. Start the playbook over.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: growthenginenowoslawski
- Source: growthenginenowoslawski/coldoutboundskills
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.