Claude Code skills · updated 2026-10-03
Email deliverability skill for Claude Code — Gmail/Yahoo rules, one-click unsub
Finds SPF, DMARC, unsubscribe and TLS lines that break Gmail/Yahoo bulk rules
On one 34-line nodemailer digest sender it printed 15 findings (10 errors, 5 warnings) from 21 rules, each with file:line, the in-force date and the RFC or guideline it comes from.
Get it on Whop - $12 onceGet it on Gumroad
What it printed on the bundled example
== Bulk Sender Lint — 15 findings (10 errors, 5 warnings) in 1 file · 21 rules
ERROR bulk-sample.js:9 [spf_all_neutral]
SPF ends in ?all or +all, so every server on the internet passes SPF for this domain. A pass that anyone can get is not a pass a receiver will align on. End the record with -all, or ~all while you are still finding senders. (in force since 2024-02-01, 974 days ago) [RFC 7208 section 8; Google Email sender guidelines]
ERROR bulk-sample.js:9 [spf_lookup_limit]
11 lookups in the record, limit is 10. SPF needs more than 10 DNS lookups to evaluate. Over the limit the receiver returns PermError, which DMARC treats as an SPF failure - the record stops working without changing. (in force since 2024-02-01, 974 days ago) [RFC 7208 section 4.6.4]
WARNING bulk-sample.js:10 [dkim_key_short]
55 base64 characters, a 2048-bit key is about 392. The DKIM public key is short enough to be a 1024-bit key. 1024 is the floor; Google's guidelines say use a 2048-bit key where your DNS host allows the longer record. [RFC 6376 section 3.3.3; Google Email sender guidelines]
ERROR bulk-sample.js:10 [dkim_testmode]
DKIM record carries t=y, testing mode. Receivers are told to treat a signature failure as if the message were unsigned, so the signature buys you nothing - and the domain still looks configured. [RFC 6376 section 3.6.1]
What you get
- A scanner Claude runs over every .js/.ts/.py/.rb/.php/.tf/.yml/.zone/.eml file - not a summary from memory
- 21 dated rules: SPF, DKIM, DMARC, BIMI, RFC 8058 one-click unsubscribe, TLS, consumer From domains
- For each finding: file:line, what breaks, 'in force since 2024-02-01' and the source
- Claude proposes the edits and applies them only after you say yes; exit 1 in CI
Install
Unzip into ~/.claude/skills/ (all projects) or your-repo/.claude/skills/ (one repo), then ask Claude Code: "Why are our emails going to spam in Gmail? Check the repo. Don't edit anything yet.". Needs Node 16+.
unzip email-deliverability-check.zip -d ~/.claude/skills/
Ask Claude
“Why are our emails going to spam in Gmail? Check the repo. Don't edit anything yet.”
What it does not do
No live DNS lookups, no test sends, no reputation or spam-rate data; it checks the records and code in your repo.
FAQ
What is a Claude Code skill?
A folder with a SKILL.md and scripts that Claude Code loads when your request matches it. You ask in plain words and Claude runs the scanner the skill carries.
How is this different from asking Claude without the skill?
The skill carries a dated rule table and a scanner that reads every file, so Claude quotes the exact date and line instead of answering from memory.
Does it send my code anywhere?
No live DNS lookups, no test sends, no reputation or spam-rate data; it checks the records and code in your repo.
How do I install it?
Unzip into ~/.claude/skills/ (all projects) or your-repo/.claude/skills/ (one repo), then ask Claude Code: "Why are our emails going to spam in Gmail? Check the repo. Don't edit anything yet.". Needs Node 16+.
What do I get when I buy?
The zip. On Whop it is in your library as a download lesson with the zip attached; on Gumroad it is the product file.