Pre Send QA
cognyai/claude-code-marketing-skills
Pre-flight QA for an email campaign — merge tags, broken links, spam triggers, compliance, mobile rendering — before you hit send
Design, build, and send beautiful HTML email campaigns via Resend.
$ npx skills add irinabuht12-oss/email-campaigns-claude --skill email-campaigns -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install irinabuht12-oss/email-campaigns-claude email-campaigns --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
Claude Code skills documentation · loads skills from .claude/skills/
Install the "email-campaigns" agent skill from https://github.com/irinabuht12-oss/email-campaigns-claude/tree/main into .claude/skills/email-campaigns/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "email-campaigns", 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.
$ npx skills add irinabuht12-oss/email-campaigns-claude --skill email-campaigns -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install irinabuht12-oss/email-campaigns-claude email-campaigns --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "email-campaigns" agent skill from https://github.com/irinabuht12-oss/email-campaigns-claude/tree/main into .agents/skills/email-campaigns/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "email-campaigns", 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 irinabuht12-oss/email-campaigns-claude --skill email-campaigns -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install irinabuht12-oss/email-campaigns-claude email-campaigns --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "email-campaigns" agent skill from https://github.com/irinabuht12-oss/email-campaigns-claude/tree/main into .cursor/skills/email-campaigns/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "email-campaigns", 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.
$ npx skills add irinabuht12-oss/email-campaigns-claude --skill email-campaigns -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install irinabuht12-oss/email-campaigns-claude email-campaigns --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "email-campaigns" agent skill from https://github.com/irinabuht12-oss/email-campaigns-claude/tree/main into .gemini/skills/email-campaigns/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "email-campaigns", 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 irinabuht12-oss/email-campaigns-claude email-campaignsInstalls 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 irinabuht12-oss/email-campaigns-claude --skill email-campaigns -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "email-campaigns" agent skill from https://github.com/irinabuht12-oss/email-campaigns-claude/tree/main into .github/skills/email-campaigns/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "email-campaigns", 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 irinabuht12-oss/email-campaigns-claude --skill email-campaigns -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install irinabuht12-oss/email-campaigns-claude email-campaigns --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "email-campaigns" agent skill from https://github.com/irinabuht12-oss/email-campaigns-claude/tree/main into .opencode/skills/email-campaigns/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "email-campaigns", 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.
email-campaignsDesign, build, and send beautiful HTML email campaigns via Resend.
Email Campaigns is an agent skill from irinabuht12-oss/email-campaigns-claude. Design, build, and send beautiful HTML email campaigns via Resend. Handles asset hosting (images + GIFs on your own CDN), the pre-built email HTML component library (frost-glass cards, hero image, video blocks with blurred backgrounds, CTA buttons, footer), GIF optimization from MP4 source video, and sending via the Resend API. Use when asked to "create an email", "draft a marketing email", "send a campaign", "make an email sequence", or "build an email with Resend". Proactively suggest when the user mentions…
Its SKILL.md is about 2.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 5 other files (for example `README.md`).
It sits in Marketing & SEO, covering Email marketing. It works with Resend and Model Context Protocol. The repository describes itself as: Claude Code skill for HTML email campaigns with Resend. Pull the numbers from your ads via the free Ryze MCP: claude mcp add ryze --transport http https://connector.get-ryze.ai/mcp. The licence is MIT.
8 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 7c30e5d. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
BashReadWriteEditGrepGlobFrom allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
ffmpegnpmnodeFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use npm, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
RESEND_API_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Email Campaigns loads about 2.9k tokens when it runs. Until then it costs about 154 tokens; SKILL.md has 859 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 noted patterns worth knowing about, such as sudo or a known installer.
d-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMDAiIGhlaWdodD0iallowed-tools: Bash, Read, Write, Edit, Grep, GlobAutomated 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 irinabuht12-oss/email-campaigns-claude at commit 7c30e5d, republished under its MIT licence (© irinabuht12-oss). 859 words, ~2,900 tokens.
.claude/skills/email-campaigns/SKILL.md (or your agent's skills folder). This skill also uses 4 other files; get the full folder from GitHub.Build modern, on-brand marketing emails and send them via Resend. This skill encodes a complete pattern: asset hosting, reusable HTML components, GIF tooling, and the Resend send pipeline.
Setup once. In a Next.js or any static-hosted project, create a folder served at the site root:
<project>/public/email-assets/
<campaign-name>/
hero.png
demo.gifAnything in public/ is served at https://yourdomain.com/email-assets/.... Commit + push = instant CDN. No Cloudinary, no S3.
Rules for email-safe assets:
hero-image.jpg ✅, Hero Image.jpg ❌)<video> — always use GIF thumbnail linking to MP4hero-v2.jpg) — email clients cache aggressivelyBefore sending: swap all local paths to absolute URLs (https://yourdomain.com/email-assets/...). Relative paths work in browser preview but break in recipients' inboxes.
Use this building-block inventory. Copy from a previous campaign, don't redesign from scratch.
<body style="margin:0; padding:0; background-color:#ffffff;
font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif;">
<div style="display:none; max-height:0; overflow:hidden; font-size:1px; line-height:1px; color:#fff;">
[PREHEADER — 1 sentence, shown in inbox preview]
</div>
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="background-color:#ffffff;">
<tr><td align="center" style="padding:32px 16px;">
<table width="560" cellpadding="0" cellspacing="0" border="0"
style="max-width:560px; width:100%;">
<!-- MAIN CARD -->
<tr><td>
<table width="100%" cellpadding="0" cellspacing="0" border="0"
style="background-color:#f7fbfe;
background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMDAiIGhlaWdodD0iMjAwIj48ZmlsdGVyIGlkPSJuIj48ZmVUdXJidWxlbmNlIHR5cGU9ImZyYWN0YWxOb2lzZSIgYmFzZUZyZXF1ZW5jeT0iMC44NSIgbnVtT2N0YXZlcz0iMiIgc3RpdGNoVGlsZXM9InN0aXRjaCIvPjwvZmlsdGVyPjxyZWN0IHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbHRlcj0idXJsKCNuKSIgb3BhY2l0eT0iMC4wNiIvPjwvc3ZnPg=='),
linear-gradient(90deg, #edf6fd 0%, #f6fbfe 50%, #fcfdfe 100%);
border-radius:4px;
box-shadow: 0 2px 8px rgba(24,24,27,0.06), 0 8px 24px rgba(24,24,27,0.04);
overflow:hidden;">
<!-- sections go here -->
</table>
</td></tr>
</table>
</td></tr>
</table>
</body>Key tokens:
90deg = left→right.Full-width image flush with card top. Crop the top 3/4 of a wide image (1376×576 cropped from 1376×768) for hero; use the bottom 1/3 (256px) as a footer image inside the card.
Five logos distributed across full card width via width="20%" columns. Each card 72×72, light fill (#f4f4f7 gradient), soft shadow, 3px radius.
<h1 style="font-size:26px; font-weight:700; color:#18181b; letter-spacing:-0.5px;">...</h1>
<p style="font-size:15px; line-height:1.65; color:#3f3f46;">...</p>Keep bullets black • in a 20px cell, text 15px. Avoid green check pills — they look dated.
Pre-blur your brand hero image with ffmpeg to use as a colorful bed behind videos:
ffmpeg -y -i header.png -vf "boxblur=luma_radius=30:luma_power=3" header_blur.pngThen:
<a href="LANDING-URL">
<p>Video title</p>
<table width="100%">
<tr><td style="background-image:url('https://yourdomain.com/email-assets/header_blur.png');
background-size:cover; border-radius:3px; padding:14px;
box-shadow:0 4px 14px rgba(24,24,27,0.1);">
<table width="100%">
<tr><td style="background-color:rgba(255,255,255,0.55);
backdrop-filter:blur(12px);
-webkit-backdrop-filter:blur(12px);
border:1px solid rgba(255,255,255,0.6);
border-radius:3px; padding:10px;
box-shadow:inset 0 1px 0 rgba(255,255,255,0.5);">
<img src="GIF-URL" width="475" style="display:block; width:100%;
max-width:475px; border-radius:3px;">
</td></tr>
</table>
</td></tr>
</table>
</a>In Apple Mail/iOS: backdrop-filter renders real glass. In Gmail/Outlook: the pre-blurred image underneath sells the effect on its own.
Black pill, 4px radius, 14px 24px padding, optional small logo inline:
<table width="100%"><tr><td align="center"
style="border-radius:4px; background-color:#18181b;">
<a href="LANDING-URL" style="display:block; padding:14px 24px;
font-size:14px; font-weight:600; color:#fff;
text-decoration:none;">
<img src="LOGO" width="20" height="20"
style="display:inline-block; vertical-align:middle;
margin-right:8px; border-radius:3px;" alt="">
<span style="vertical-align:middle;">Connect your accounts →</span>
</a>
</td></tr></table>Place one CTA immediately after the first proof video (highest conversion moment) and one at the bottom.
Stick to this. No more than 3 sizes.
For each screen recording:
# Convert MP4 → optimized GIF (720px, 15fps, 2x speed, trim to 8s)
ffmpeg -y -i source.mp4 -t 8 \
-vf "setpts=0.5*PTS,fps=15,scale=720:-1:flags=lanczos,split[s0][s1];\
[s0]palettegen=max_colors=256[p];\
[s1][p]paletteuse=dither=sierra2_4a" \
-loop 0 output.gif
# Check file size — should be under 1.5 MB
ls -lh output.gifIf too big:
dither=bayer:bayer_scale=5If too low quality:
sierra2_4a dithernpm install resendEnv var: RESEND_API_KEY=re_... (get from resend.com dashboard)
From domain: verify your sending domain in Resend settings first (DNS records take ~15 min to propagate). Use hello@yourdomain.com, not a free provider.
// send.mjs
import { Resend } from 'resend';
import fs from 'fs';
const resend = new Resend(process.env.RESEND_API_KEY);
const html = fs.readFileSync('./email.html', 'utf-8');
const { data, error } = await resend.emails.send({
from: 'Ira <hello@get-ryze.ai>',
to: 'you@example.com',
subject: 'Claude Connector for Google/Meta Ads is live',
html,
// Optional plain-text fallback
text: 'We released the Claude connector. Connect in 1 click: https://...',
});
console.log(error ?? data);Run: node send.mjs. Always send to yourself first.
Resend rate-limits at 10 req/sec (free) or 100 req/sec (paid). For larger lists use their batch API:
await resend.batch.send(
recipients.map(email => ({
from: 'Ira <hello@get-ryze.ai>',
to: email,
subject: '...',
html,
}))
);Up to 100 emails per batch call. Chunk your list accordingly.
For a 3-email sequence (day 0, day 3, day 7), use a cron + a sent-state table in Postgres/Supabase:
// Pseudo
const dueToday = await db.campaigns.findMany({
where: { scheduled_date: today, status: 'pending' }
});
for (const c of dueToday) {
await resend.emails.send({ ...c });
await db.campaigns.update({ where: { id: c.id }, data: { status: 'sent' } });
}Resend has webhooks for email.delivered, email.opened, email.clicked — use them to trigger the next email in the sequence rather than fixed timers.
Before you hit send on a real list:
https://...), not relative (/email-assets/...)alt texttarget="_blank"from address is on a verified domain in ResendTo bootstrap a new campaign, copy the most recent working HTML from your repo (e.g. public/email-assets/preview/claude-connector.html) and edit in place. Keep the preview file checked in alongside the campaign folder:
public/email-assets/2026-05-launch/
hero.png
demo.gif
preview.htmlPreview locally at http://localhost:3000/email-assets/2026-05-launch/preview.html.
<video> tags — blocked in Gmail/Outlook<table>s.<body> if you need them on mobile Gmail — it ignores body bg. Put color inside the main card.© irinabuht12-oss, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 4 other files in the repository root of irinabuht12-oss/email-campaigns-claude.
Open the folder on GitHubat commit 7c30e5d
Email Campaigns 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 |
|---|---|---|---|---|---|---|
| Email Campaigns this skillirinabuht12-oss/email-campaigns-claude | 158 | — | ~2.9k | Automated safety check: Notes | MIT | |
| Pre Send QAcognyai/claude-code-marketing-skills | 104 | — | ~2.2k | Automated safety check: Notes | None | |
| Klaviyoasgeirtj/system_prompts_leaks | 69k | — | ~1.1k | Automated safety check: Pass | CC0-1.0 | |
| Subject Line Labcognyai/claude-code-marketing-skills | 104 | — | ~2k | Automated safety check: Notes | None | |
| Email Marketing BibleCosmoBlk/email-marketing-bible | 330 | — | ~4.3k | Automated safety check: Pass | MIT | |
| Klaviyo Analystthatrebeccarae/claude-marketing | 161 | — | ~5k | Automated safety check: Notes | MIT |
cognyai/claude-code-marketing-skills
Pre-flight QA for an email campaign — merge tags, broken links, spam triggers, compliance, mobile rendering — before you hit send
asgeirtj/system_prompts_leaks
Read and manage the user's Klaviyo email and SMS marketing campaigns, newsletters, flows, subscriber lists, and audience segments.
cognyai/claude-code-marketing-skills
Mine your actual subject-line history from Klaviyo / Mailchimp / Rule / Get a Newsletter, find the patterns that work for YOUR list, and generate tuned candidates
CosmoBlk/email-marketing-bible
Email marketing operating manual for AI agents, with hard send-safety gates.
thatrebeccarae/claude-marketing
Klaviyo marketing operations and analyst expertise. An agent skill from thatrebeccarae/claude-marketing.
AgriciDaniel/claude-email
Comprehensive email management and marketing for any business type.
Works with
Design, build, and send beautiful HTML email campaigns via Resend. Email Campaigns is an agent skill from irinabuht12-oss/email-campaigns-claude. Design, build, and send beautiful HTML email campaigns via Resend.
Email Campaigns fits situations like: asked to create an email; draft a marketing email; send a campaign; make an email sequence.
Run `npx skills add irinabuht12-oss/email-campaigns-claude --skill email-campaigns -a claude-code`. Or copy the skill folder (the irinabuht12-oss/email-campaigns-claude repository) into .claude/skills/email-campaigns in your project. Claude Code loads it when a task matches its description.
Run `npx skills add irinabuht12-oss/email-campaigns-claude --skill email-campaigns -a codex`. Or copy the skill folder (the irinabuht12-oss/email-campaigns-claude repository) into .agents/skills/email-campaigns 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 irinabuht12-oss/email-campaigns-claude --skill email-campaigns -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/email-campaigns, .gemini/skills/email-campaigns, .github/skills/email-campaigns and .opencode/skills/email-campaigns in your project.
Going by SKILL.md and its folder, Email Campaigns needs the command-line tools its instructions call (ffmpeg, npm and node) and credentials named RESEND_API_KEY. Our summary lists: Node.js; A credential in RESEND_API_KEY. Its frontmatter pre-approves these tools: Bash, Read, Write, Edit, Grep, Glob.
SKILL.md contains no URLs. Its commands use npm, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (contains a long base64 blob; pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Email Campaigns is published under the MIT licence (from the LICENSE file in the skill folder). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.9k tokens (SKILL.md is roughly 12k 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 Email Campaigns: Pre Send QA (cognyai/claude-code-marketing-skills, 104 stars), Klaviyo (asgeirtj/system_prompts_leaks, 69k stars), Subject Line Lab (cognyai/claude-code-marketing-skills, 104 stars) and Email Marketing Bible (CosmoBlk/email-marketing-bible, 330 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
irinabuht12-oss (a GitHub user) maintains it in irinabuht12-oss/email-campaigns-claude, which has 158 GitHub stars. The repository was last updated on September 8, 2026.
Source: irinabuht12-oss/email-campaigns-claude on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.