← ClaudeAtlas

ekx-resendlisted

Transactional email with Resend — sending from a route handler or cron, React Email templates, domain verification and DNS, dry-run mode for local development, and delivery webhooks. Use when sending an alert, receipt, magic link or digest email, when email is not arriving, or when setting up a new sending domain.
Ekinoxis-evm/claude-skills · ★ 0 · Web & Frontend · score 60
Install: claude install-skill Ekinoxis-evm/claude-skills
# Resend Our transactional email vendor across the portfolio. There is a bundled `resend` skill in this Claude installation and a **`resend` MCP server** — both are authoritative over this file for API detail. Docs: https://resend.com/docs --- ## Environment ```bash RESEND_API_KEY= # SECRET RESEND_FROM= # "Ekinoxis <alerts@ekinoxis.xyz>" RESEND_FROM_EMAIL= # same thing, older name — pick one per repo RESEND_DRY_RUN=true # local: log instead of send ``` `RESEND_DRY_RUN` came out of a scheduled scanner and is worth copying everywhere. That scanner emails on every detected opportunity; without a dry-run flag, a local debugging session sends a few hundred real emails and burns the domain's reputation. ```ts if (process.env.RESEND_DRY_RUN === "true") { console.log("[resend:dry-run]", { to, subject }); return { id: "dry-run" }; } ``` --- ## Sending ```ts import { Resend } from "resend"; const resend = new Resend(process.env.RESEND_API_KEY!); const { data, error } = await resend.emails.send({ from: process.env.RESEND_FROM!, to: [user.email], subject: "Oportunidad detectada — spread 4.2%", react: <OpportunityEmail opportunity={opp} />, // or: html / text headers: { "X-Entity-Ref-ID": opportunity.id }, // idempotency hint }); if (error) { // Resend returns { data: null, error } — it does NOT throw. console.error("resend failed", error); } ``` **Resend returns errors, it does not throw.** Code that only wraps the call in