Email Audit
AgriciDaniel/claude-email
Audits email domain deliverability setup (SPF, DKIM, DMARC, MX records, blacklists, TLS) and generates health score (0-100) with prioritized fix list.
Agent skill
by growthenginenowoslawski in growthenginenowoslawski/coldoutboundskills
Triage playbook for when cold email deliverability breaks. An agent skill from growthenginenowoslawski/coldoutboundskills.
$ npx skills add growthenginenowoslawski/coldoutboundskills --skill deliverability-incident-response -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install growthenginenowoslawski/coldoutboundskills deliverability-incident-response --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/growthenginenowoslawski/coldoutboundskills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/deliverability-incident-response .claude/skills/deliverability-incident-response && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "deliverability-incident-response" agent skill from https://github.com/growthenginenowoslawski/coldoutboundskills/tree/main/skills/deliverability-incident-response into .claude/skills/deliverability-incident-response/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "deliverability-incident-response", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/growthenginenowoslawski/coldoutboundskills/tree/main/skills/deliverability-incident-responseType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add growthenginenowoslawski/coldoutboundskills --skill deliverability-incident-response -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install growthenginenowoslawski/coldoutboundskills deliverability-incident-response --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/growthenginenowoslawski/coldoutboundskills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/deliverability-incident-response .agents/skills/deliverability-incident-response && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "deliverability-incident-response" agent skill from https://github.com/growthenginenowoslawski/coldoutboundskills/tree/main/skills/deliverability-incident-response into .agents/skills/deliverability-incident-response/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "deliverability-incident-response", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add growthenginenowoslawski/coldoutboundskills --skill deliverability-incident-response -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install growthenginenowoslawski/coldoutboundskills deliverability-incident-response --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/growthenginenowoslawski/coldoutboundskills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/deliverability-incident-response .cursor/skills/deliverability-incident-response && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "deliverability-incident-response" agent skill from https://github.com/growthenginenowoslawski/coldoutboundskills/tree/main/skills/deliverability-incident-response into .cursor/skills/deliverability-incident-response/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "deliverability-incident-response", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/growthenginenowoslawski/coldoutboundskills.git --path skills/deliverability-incident-response--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add growthenginenowoslawski/coldoutboundskills --skill deliverability-incident-response -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install growthenginenowoslawski/coldoutboundskills deliverability-incident-response --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/growthenginenowoslawski/coldoutboundskills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/deliverability-incident-response .gemini/skills/deliverability-incident-response && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "deliverability-incident-response" agent skill from https://github.com/growthenginenowoslawski/coldoutboundskills/tree/main/skills/deliverability-incident-response into .gemini/skills/deliverability-incident-response/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "deliverability-incident-response", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install growthenginenowoslawski/coldoutboundskills deliverability-incident-responseInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add growthenginenowoslawski/coldoutboundskills --skill deliverability-incident-response -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/growthenginenowoslawski/coldoutboundskills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/deliverability-incident-response .github/skills/deliverability-incident-response && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "deliverability-incident-response" agent skill from https://github.com/growthenginenowoslawski/coldoutboundskills/tree/main/skills/deliverability-incident-response into .github/skills/deliverability-incident-response/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "deliverability-incident-response", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add growthenginenowoslawski/coldoutboundskills --skill deliverability-incident-response -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install growthenginenowoslawski/coldoutboundskills deliverability-incident-response --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/growthenginenowoslawski/coldoutboundskills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/deliverability-incident-response .opencode/skills/deliverability-incident-response && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "deliverability-incident-response" agent skill from https://github.com/growthenginenowoslawski/coldoutboundskills/tree/main/skills/deliverability-incident-response into .opencode/skills/deliverability-incident-response/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "deliverability-incident-response", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
deliverability-incident-responseTriage playbook for when cold email deliverability breaks. An agent skill from growthenginenowoslawski/coldoutboundskills.
Deliverability Incident Response is an agent skill from growthenginenowoslawski/coldoutboundskills. Triage playbook for when cold email deliverability breaks. Decision-tree guidance for "I landed in spam", "bounce rate spiked", "domain blacklisted", "inbox blocked in warmup", "reply rate dropped". Tells you what to check first, what to fix, and how long the fix takes. Pair with /email-deliverability-audit for diagnosis.
Its SKILL.md is about 3.5k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Backend & APIs, covering Transactional email, Email management and Incident response. The repository describes itself as: Open-source Claude Code skills for cold email and outbound sales. Grade campaigns, export Prospeo searches, scrape Google Maps — all from Claude Code. The licence is MIT.
12 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 25c5d85. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
npxFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
mxtoolbox.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Deliverability Incident Response loads about 3.5k tokens when it runs. Until then it costs about 89 tokens; SKILL.md has 1,703 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from growthenginenowoslawski/coldoutboundskills at commit 25c5d85, republished under its MIT licence (© growthenginenowoslawski). 1,703 words, ~3,495 tokens.
.claude/skills/deliverability-incident-response/SKILL.md (or your agent's skills folder).Things break. When they do, you need a playbook — not panic. This skill is the triage decision tree.
| 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 |
Was this week's reply rate < 50% of last 4 weeks' average?
Yes → real drop, continue triage
No → noise, wait another weekIf drop is real:
Are ALL campaigns dropping, or just one?
All → fleet-level issue (infrastructure or copy pattern)
One → campaign-specific (targeting, copy, list)Smartlead Smart Delivery spam test (/email-deliverability-audit → run-spam-test.ts)
Check domain authentication (/email-deliverability-audit → check-domain-auth.ts)
/zapmail-domain-setup-public for reconnect steps)Check warmup status (/smartlead-inbox-manager → list-health.ts)
Check bounce rate (/email-deliverability-audit → audit-performance.ts)
Time-ordered actions:
DKIM_INVALID, HTML_MESSAGE, LINK_REDIRECT. Each has a specific fix.50 sends before a bounce rate means anything. Below that, one dead address reads as 2% and two read as 4% — straight through the 3% line. 30 classified bounces attributed to that specific sending domain before the bounce composition means anything. A domain with no sampled bounces has a 0% sender-originated share purely by construction, which looks exactly like a rotten list — and that is how an unmeasured domain gets a confident "go revalidate your list" verdict.
Hard-vs-soft is too coarse to act on. The enhanced SMTP status code in the bounce DSN tells
you whose fault it is. Pull the DSN from the bounced lead's message history and take the first
[45].\d+.\d+ code in the body — DSN templates repeat the code and often quote unrelated
examples further down in the "more info for admins" boilerplate.
| Bucket | Codes | Reading | Action |
|---|---|---|---|
| LIST | 5.1.1, 5.1.10, 5.1.0, 5.2.1, 5.4.1, 5.5.0 | The mailbox does not exist. | Revalidate the list. Keep verified-valid only; a catch-all result is a not found, not a pass. |
| SENDER (auth) | 5.7.1, 5.7.0, 5.7.23, 5.7.26, 5.7.509, 5.7.520 | We were refused on policy or authentication. | Fix SPF/DKIM/DMARC first, re-check in 7 days. Fixable — do not replace the domain. |
| BURNED | 5.7.606-5.7.614, or DSN text naming a blocklist/Spamhaus | The recipient world has specifically banned this sender. | /inbox-lifecycle-manager as a cancel candidate. DNS fixes will not help. |
| THROTTLE | any 4.x.x — 4.7.x, 4.4.2, 4.4.7, 4.2.2 | Temporary. Greylisting or rate limiting. | Cut daily volume per inbox by 50% for a week. Never cancel a domain on 4.x codes. |
| NOISE | 5.2.2 (mailbox full), 5.3.4 (too large), 5.7.133 (restricted distribution group) | Recipient-side configuration. Not a reputation signal. | Count them so the denominator is honest, then exclude them from every share calculation. |
⛔ 5.7.133 is noise, full stop. It means "the group only accepts messages from inside its
organization" — someone else's distribution-list setting. It is frequently the single most common
code in a real sample, and bucketing it as a sender problem will manufacture "burned domain" cancel
candidates out of nothing.
Then compute, per sending domain (not per client — a client-level split cannot tell you which domain to act on):
sender_share = SENDER / (SENDER + LIST + BURNED) # noise and throttle excluded
burned_share = BURNED / (SENDER + LIST + BURNED)burned_share > 20% (≥30 classified bounces)
→ BURNED, at any bounce rate. Evaluate this FIRST, before the rate gate — a domain
that is majority-blocklisted at a 2.5% bounce rate is still burned.
bounce_rate > 3% AND sender_share < 25%
→ list quality problem. Revalidate.
bounce_rate > 3% AND sender_share 25-50%
→ both diseases at once. Fix the auth gap FIRST, then revalidate. Do not go chase
the list when 40% of the failures are yours.
bounce_rate > 3% AND sender_share > 50% AND auth incomplete
→ SENDER_AUTH. Fixable. Fix the record, re-check in 7 days.
bounce_rate > 3% AND sender_share > 50% AND auth clean
→ BURNED. Configuration is clean and we are still refused.
bounce_rate > 5% either way
→ stop the campaign immediately to prevent ISP suspension, then classify.
rising 4.x share, low permanent bounce
→ throttle. Cut volume. Do not cancel.A bounced row does not tell you which domain sent it; attribution only exists after you pull the
message history. So you cannot stratify by domain up front. Spend a global budget and enforce the
floor afterwards: sample evenly across the in-window roster (roster[::step], never offset=0
only, which is time-biased), budget roughly 30 × (domains you need a verdict on) × 1.5, and mark
any domain that ends up under 30 attributed bounces as insufficient sample rather than judging it.
⚠️ Bounced-lead rosters typically return a campaign's entire history with no date parameter. Filter client-side on the sent date, or bounces from a campaign that finished six months ago will drive this week's decision.
⚠️ Message-history fetches fail transiently. Retry 3+ times with backoff before recording "no DSN available" — on a real run, 61 of 64 apparently body-less leads returned a body on retry.
Slow way down. Cut daily volume 50% per inbox for 2 weeks. Run warmup more aggressively.
Check:
/email-deliverability-audit → spam-test report → blacklist detail/inbox-lifecycle-manager.)/zapmail-domain-setup-public, warm it for 2 weeks before reusing.Smartlead's is_warmup_blocked: true flag usually means:
blocked_reason field (if populated)total_warmup_per_day (try 15 instead of 40)/smartlead-inbox-manager)# Tag as retired
npx tsx scripts/tag-inboxes.ts --ids=<id> --add-tag=retired --remove-tag=active
# Disable warmup
npx tsx scripts/set-warmup.ts --mode=disable --ids=<id>
# Replace — buy new domain, create new inbox
# See /zapmail-domain-setup-publicSend the campaign's email 1 to a fresh @gmail.com account (yours, not in the campaign). Where does it land?
Create two versions — your current and a stripped-down version. Send 50 leads each. Check which has better reply rate after 7 days.
If NOTHING is working and you don't know why:
/email-deliverability-audit full suiteRe-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.
/email-deliverability-audit — the diagnostic suite you run first/inbox-lifecycle-manager — when the verdict is "this domain is burned", the cancel/replace/buy decision/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)After fixes, give it at least 200 sends at your normal volume before you judge whether the fix worked. Below 200, a reply rate cannot distinguish a broken domain from an unlucky week.
/inbox-lifecycle-manager for replacement. (It will
still refuse to cancel a domain under 30 days old — young is not the same as burned.)And give it time: reputation rebuilds slowly. Re-auditing after 2 days tells you nothing.
© growthenginenowoslawski, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/deliverability-incident-response of growthenginenowoslawski/coldoutboundskills.
Open the folder on GitHubat commit 25c5d85
Deliverability Incident Response next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Deliverability Incident Response this skillgrowthenginenowoslawski/coldoutboundskills | 753 | — | ~3.5k | Automated safety check: Pass | MIT | |
| Email AuditAgriciDaniel/claude-email | 130 | — | ~3k | Automated safety check: Notes | MIT | |
| Cold Outreachericrisco/rsc-harness | 180 | — | ~4.1k | Automated safety check: Pass | MIT | |
| Email ManagerLeoYeAI/openclaw-master-skills | 2.2k | — | ~5.5k | Automated safety check: Pass | MIT | |
| Himalaya Email CLIPrismer-AI/PrismerCloud | 1.6k | 2 repos | ~2.3k | Automated safety check: Pass | MIT | |
| Deliverability QAaaron-he-zhu/aaron-marketing-skills | 2.9k | 2 repos | ~3.6k | Automated safety check: Pass | Apache-2.0 |
AgriciDaniel/claude-email
Audits email domain deliverability setup (SPF, DKIM, DMARC, MX records, blacklists, TLS) and generates health score (0-100) with prioritized fix list.
ericrisco/rsc-harness
A skill your agent uses when writing a cold email or LinkedIn DM to a stranger and its cadence: first-touch copy under a word ceiling, 4-7 step bump sequences, per-inbox volume and warm-up limits…
LeoYeAI/openclaw-master-skills
When user asks to write email, draft reply, manage inbox, email template, follow up email, cold email, professional email, email subject line, thank you email, apology email, meeting request email…
Prismer-AI/PrismerCloud
Operates a mailbox from the terminal with the external Himalaya CLI over IMAP, SMTP, Notmuch or Sendmail, separate from any built-in email gateway adapter.
aaron-he-zhu/aaron-marketing-skills
A skill your agent uses when the user asks to "run a deliverability pre-flight before I send", "check my SPF/DKIM/DMARC/BIMI", "why am I landing in spam / promotions", or "score my sender reputation…
tokencanopy/e2a
Conversationally configure and operate a policy-first, always-on local e2a email agent.
growthenginenowoslawski/coldoutboundskills
Diagnostic audit for a running cold email program. An agent skill from growthenginenowoslawski/coldoutboundskills.
growthenginenowoslawski/coldoutboundskills
Conversational intake for cold email campaigns. An agent skill from growthenginenowoslawski/coldoutboundskills.
growthenginenowoslawski/coldoutboundskills
META skill — build the largest possible qualified lead list for any request, end to end.
growthenginenowoslawski/coldoutboundskills
Autonomous cold email campaign launcher. An agent skill from growthenginenowoslawski/coldoutboundskills.
growthenginenowoslawski/coldoutboundskills
Use the Blitz API to find decision-makers at specific companies when you already have a list of company domains.
growthenginenowoslawski/coldoutboundskills
Compare reply rates, bounce rates, and positive reply rates broken down by inbox type (SMTP / Gmail / Outlook) for a Smartlead account.
Triage playbook for when cold email deliverability breaks. An agent skill from growthenginenowoslawski/coldoutboundskills. Deliverability Incident Response is an agent skill from growthenginenowoslawski/coldoutboundskills. Triage playbook for when cold email deliverability breaks.
Deliverability Incident Response fits situations like: tasks that involve Transactional email; tasks that involve Email management; tasks that involve Incident response.
Run `npx skills add growthenginenowoslawski/coldoutboundskills --skill deliverability-incident-response -a claude-code`. Or copy the skill folder (skills/deliverability-incident-response in growthenginenowoslawski/coldoutboundskills) into .claude/skills/deliverability-incident-response in your project. Claude Code loads it when a task matches its description.
Run `npx skills add growthenginenowoslawski/coldoutboundskills --skill deliverability-incident-response -a codex`. Or copy the skill folder (skills/deliverability-incident-response in growthenginenowoslawski/coldoutboundskills) into .agents/skills/deliverability-incident-response in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add growthenginenowoslawski/coldoutboundskills --skill deliverability-incident-response -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/deliverability-incident-response, .gemini/skills/deliverability-incident-response, .github/skills/deliverability-incident-response and .opencode/skills/deliverability-incident-response in your project.
Going by SKILL.md and its folder, Deliverability Incident Response needs the command-line tools its instructions call (npx). Our summary lists: Node.js.
SKILL.md names 1 domain. As links in the text: mxtoolbox.com. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Deliverability Incident Response is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.5k tokens (SKILL.md is roughly 14k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Deliverability Incident Response: Email Audit (AgriciDaniel/claude-email, 130 stars), Cold Outreach (ericrisco/rsc-harness, 180 stars), Email Manager (LeoYeAI/openclaw-master-skills, 2.2k stars) and Himalaya Email CLI (Prismer-AI/PrismerCloud, 1.6k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
growthenginenowoslawski (a GitHub user) maintains it in growthenginenowoslawski/coldoutboundskills, which has 753 GitHub stars. The repository holds 49 skills in this directory. The repository was last updated on October 5, 2026.
Source: growthenginenowoslawski/coldoutboundskills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.