m26-resend-email
M26 Resend email automation
Assume the upstream layout scripts/emails/ exists (or will be materialized). All procedures below use cd into scripts/emails, a venv, and python <script>.py unless the user is in a full monorepo from the repository root, where python -m scripts.emails.<name> is also valid.
First: materialize scripts/emails
If the folder is missing, obtain a sparse checkout of only that path (not the whole monorepo working tree). Full step-by-step commands, Windows junctions, and Linux symlinks live in scripts/emails/MINIMAL_CLONE.md in the upstream repo.
Minimum idea:
- Clone with
--filter=blob:none --sparse, thengit sparse-checkout init --no-coneandgit sparse-checkout set --no-cone '/scripts/emails/'. cd scripts/emails, create.venv,pip install -r requirements.txt, copy.envfrom.env.example(or from another machine — see below).- Updates:
git pullfrom the sparse clone root.
New machine / copied workspace: Copy .env and every file paths inside it (service account JSON, Gmail OAuth client JSON, gmail_token.json, etc.), then edit paths so they match the new filesystem. Copying .env alone often breaks because paths still point at the old PC. Agents should ask for missing keys or files before sending. Full checklist: references/required-credentials.md.
Do not run python scripts/emails/foo.py from the monorepo root (path through scripts/emails/). Either cd scripts/emails and run python foo.py, or from full repo use python -m scripts.emails.foo.
Secrets stay in .env or the environment — never commit API keys, webhook secrets, or Gmail token files.
Core scripts (from scripts/emails)
| Script | Role |
|---|---|
send_campaign.py |
Batch sends via Resend + Google Sheet rows |
sync_replies_gmail.py |
Pull inbox replies (Resend webhooks do not replace this) |
webhook_server.py |
Receives Resend events → Sheet columns (opened_N, clicked_N, …) |
reply_followups.py |
Threaded Gmail/Resend replies |
build_utm_link.py |
Build tracked links with consistent UTM params |
Details, flags, and examples: scripts/emails/README.md. Operational guardrails: scripts/emails/AGENTS.md.
Resend behavior (short)
- Opens/clicks: Emitted when domain-level open/click tracking is enabled in Resend; webhooks can fire
email.opened/ click events. Open rates are imperfect (clients blocking images, etc.). - Inbox replies: Not a substitute for
sync_replies_gmail.pybefore follow-up sends.
UTM and readable links
Put long query strings in the HTML href (or Markdown [visible text](url)). Visible copy stays short; parameters stay on the URL. Parameter pattern and generators: see references/utm-and-links.md.
Idempotency and safety
send_campaign: idempotency keys tie to campaign + chunk; reuse within 24h with a different body → 409. Use a test campaign id or--idempotency-suffixfor experiments.- Before production sends:
--dry-run,--show-selected, validate templates.
When to load bundled references
- Clone/symlink mechanics, sparse-checkout pitfalls →
references/clone-and-layout.md .env, paths, copied key files, webhook vs send-only, PostHog →references/required-credentials.md- UTM + link presentation →
references/utm-and-links.md - Checklists (reply sync timing, batch columns, GIF env vars) →
references/operational-rules.md
Upstream canonical copies evolve in scripts/emails/MINIMAL_CLONE.md and scripts/emails/AGENTS.md; refresh this skill when those change materially.
More from jarmen423/skills
frontend-design
Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, artifacts, posters, or applications (examples include websites, landing pages, dashboards, React components, HTML/CSS layouts, or when styling/beautifying any web UI). Generates creative, polished code and UI design that avoids generic AI aesthetics.
15xlsx
Comprehensive spreadsheet creation, editing, and analysis with support for formulas, formatting, data analysis, and visualization. When Claude needs to work with spreadsheets (.xlsx, .xlsm, .csv, .tsv, etc) for: (1) Creating new spreadsheets with formulas and formatting, (2) Reading or analyzing data, (3) Modify existing spreadsheets while preserving formulas, (4) Data analysis and visualization in spreadsheets, or (5) Recalculating formulas
14runpod-serverless
Create serverless endpoint templates and endpoints on RunPod.io. Supports Python/Node.js runtimes, GPU selection (3090, A100, etc.), and idempotent configuration. Use this skill when a user wants to set up a new serverless endpoint or template on RunPod.
13qwen3-tts
Build text-to-speech applications using Qwen3-TTS, a powerful speech generation system supporting voice clone, voice design, and custom voice synthesis. Use when creating TTS applications, generating speech from text, cloning voices from audio samples, designing new voices via natural language descriptions, or fine-tuning TTS models. Supports 10 languages (Chinese, English, Japanese, Korean, German, French, Russian, Portuguese, Spanish, Italian).
13skill-creator
Guide for creating effective skills. This skill should be used when users want to create a new skill (or update an existing skill) that extends Claude's capabilities with specialized knowledge, workflows, or tool integrations.
13webapp-testing
Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.
13