[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-resend-email-best-practices":3,"mdc--2xj2d4-key":37,"related-org-resend-email-best-practices":446,"related-repo-resend-email-best-practices":556},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":26,"repoUrl":27,"updatedAt":28,"license":29,"forks":30,"topics":31,"repo":32,"sourceUrl":35,"mdContent":36},"email-best-practices","implement email delivery best practices","Use when building email features, emails going to spam, high bounce rates, setting up SPF\u002FDKIM\u002FDMARC authentication, implementing email capture, ensuring compliance (CAN-SPAM, GDPR, CASL), handling webhooks, retry logic, making emails accessible (alt text, headings, contrast, screen readers), or deciding transactional vs marketing.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"resend","Resend","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fresend.jpg",[12,16,19,22,23],{"name":13,"slug":14,"type":15},"Security","security","tag",{"name":17,"slug":18,"type":15},"Operations","operations",{"name":20,"slug":21,"type":15},"Compliance","compliance",{"name":9,"slug":8,"type":15},{"name":24,"slug":25,"type":15},"Email","email",158,"https:\u002F\u002Fgithub.com\u002Fresend\u002Fresend-skills","2026-05-26T13:25:14.185307","MIT",21,[],{"repoUrl":27,"stars":26,"forks":30,"topics":33,"description":34},[],"Agent Skills for working with Resend to send and receive emails.","https:\u002F\u002Fgithub.com\u002Fresend\u002Fresend-skills\u002Ftree\u002FHEAD\u002Fskills\u002Femail-best-practices","---\nname: email-best-practices\ndescription: Use when building email features, emails going to spam, high bounce rates, setting up SPF\u002FDKIM\u002FDMARC authentication, implementing email capture, ensuring compliance (CAN-SPAM, GDPR, CASL), handling webhooks, retry logic, making emails accessible (alt text, headings, contrast, screen readers), or deciding transactional vs marketing.\nlicense: MIT\nmetadata:\n  author: Resend\n  version: \"1.0.2\"\n  homepage: https:\u002F\u002Fresend.com\u002Fagent-skills\n  source: https:\u002F\u002Fgithub.com\u002Fresend\u002Femail-best-practices\n  openclaw:\n    links:\n      repository: https:\u002F\u002Fgithub.com\u002Fresend\u002Femail-best-practices\n      documentation: https:\u002F\u002Fresend.com\u002Fdocs\u002Femail-best-practices-skill\n---\n\n# Email Best Practices\n\nGuidance for building deliverable, compliant, user-friendly emails.\n\n## Architecture Overview\n\n```\n[User] → [Email Form] → [Validation] → [Double Opt-In]\n                                              ↓\n                                    [Consent Recorded]\n                                              ↓\n[Suppression Check] ←──────────────[Ready to Send]\n        ↓\n[Idempotent Send + Retry] ──────→ [Email API]\n                                       ↓\n                              [Webhook Events]\n                                       ↓\n              ┌────────┬────────┬─────────────┐\n              ↓        ↓        ↓             ↓\n         Delivered  Bounced  Complained  Opened\u002FClicked\n                       ↓        ↓\n              [Suppression List Updated]\n                       ↓\n              [List Hygiene Jobs]\n```\n\n## Quick Reference\n\n| Need to... | See |\n|------------|-----|\n| Set up SPF\u002FDKIM\u002FDMARC, fix spam issues | [Deliverability](.\u002Freferences\u002Fdeliverability.md) |\n| Build password reset, OTP, confirmations | [Transactional Emails](.\u002Freferences\u002Ftransactional-emails.md) |\n| Plan which emails your app needs | [Transactional Email Catalog](.\u002Freferences\u002Ftransactional-email-catalog.md) |\n| Build newsletter signup, validate emails | [Email Capture](.\u002Freferences\u002Femail-capture.md) |\n| Send newsletters, promotions | [Marketing Emails](.\u002Freferences\u002Fmarketing-emails.md) |\n| Ensure CAN-SPAM\u002FGDPR\u002FCASL compliance | [Compliance](.\u002Freferences\u002Fcompliance.md) |\n| Decide transactional vs marketing | [Email Types](.\u002Freferences\u002Femail-types.md) |\n| Handle retries, idempotency, errors | [Sending Reliability](.\u002Freferences\u002Fsending-reliability.md) |\n| Process delivery events, set up webhooks | [Webhooks & Events](.\u002Freferences\u002Fwebhooks-events.md) |\n| Manage bounces, complaints, suppression | [List Management](.\u002Freferences\u002Flist-management.md) |\n| Make emails accessible (screen readers, alt text, contrast) | [Accessibility](.\u002Freferences\u002Faccessibility.md) |\n\n## Start Here\n\n**New app?**\nStart with the [Catalog](.\u002Freferences\u002Ftransactional-email-catalog.md) to plan which emails your app needs (password reset, verification, etc.), then set up [Deliverability](.\u002Freferences\u002Fdeliverability.md) (DNS authentication) before sending your first email.\n\n**Spam issues?**\nCheck [Deliverability](.\u002Freferences\u002Fdeliverability.md) first—authentication problems are the most common cause. Gmail\u002FYahoo reject unauthenticated emails.\n\n**Marketing emails?**\nFollow this path: [Email Capture](.\u002Freferences\u002Femail-capture.md) (collect consent) → [Compliance](.\u002Freferences\u002Fcompliance.md) (legal requirements) → [Marketing Emails](.\u002Freferences\u002Fmarketing-emails.md) (best practices).\n\n**Production-ready sending?**\nAdd reliability: [Sending Reliability](.\u002Freferences\u002Fsending-reliability.md) (retry + idempotency) → [Webhooks & Events](.\u002Freferences\u002Fwebhooks-events.md) (track delivery) → [List Management](.\u002Freferences\u002Flist-management.md) (handle bounces).\n\n**Accessibility?**\nMost emails fail basic accessibility checks. See [Accessibility](.\u002Freferences\u002Faccessibility.md) for `lang`\u002F`dir`, presentational tables, headings, alt text, `\u003Ctitle>`, and contrast.\n",{"data":38,"body":46},{"name":4,"description":6,"license":29,"metadata":39},{"author":9,"version":40,"homepage":41,"source":42,"openclaw":43},"1.0.2","https:\u002F\u002Fresend.com\u002Fagent-skills","https:\u002F\u002Fgithub.com\u002Fresend\u002Femail-best-practices",{"links":44},{"repository":42,"documentation":45},"https:\u002F\u002Fresend.com\u002Fdocs\u002Femail-best-practices-skill",{"type":47,"children":48},"root",[49,57,63,70,83,89,304,310,334,350,378,406],{"type":50,"tag":51,"props":52,"children":53},"element","h1",{"id":4},[54],{"type":55,"value":56},"text","Email Best Practices",{"type":50,"tag":58,"props":59,"children":60},"p",{},[61],{"type":55,"value":62},"Guidance for building deliverable, compliant, user-friendly emails.",{"type":50,"tag":64,"props":65,"children":67},"h2",{"id":66},"architecture-overview",[68],{"type":55,"value":69},"Architecture Overview",{"type":50,"tag":71,"props":72,"children":76},"pre",{"className":73,"code":75,"language":55},[74],"language-text","[User] → [Email Form] → [Validation] → [Double Opt-In]\n                                              ↓\n                                    [Consent Recorded]\n                                              ↓\n[Suppression Check] ←──────────────[Ready to Send]\n        ↓\n[Idempotent Send + Retry] ──────→ [Email API]\n                                       ↓\n                              [Webhook Events]\n                                       ↓\n              ┌────────┬────────┬─────────────┐\n              ↓        ↓        ↓             ↓\n         Delivered  Bounced  Complained  Opened\u002FClicked\n                       ↓        ↓\n              [Suppression List Updated]\n                       ↓\n              [List Hygiene Jobs]\n",[77],{"type":50,"tag":78,"props":79,"children":81},"code",{"__ignoreMap":80},"",[82],{"type":55,"value":75},{"type":50,"tag":64,"props":84,"children":86},{"id":85},"quick-reference",[87],{"type":55,"value":88},"Quick Reference",{"type":50,"tag":90,"props":91,"children":92},"table",{},[93,112],{"type":50,"tag":94,"props":95,"children":96},"thead",{},[97],{"type":50,"tag":98,"props":99,"children":100},"tr",{},[101,107],{"type":50,"tag":102,"props":103,"children":104},"th",{},[105],{"type":55,"value":106},"Need to...",{"type":50,"tag":102,"props":108,"children":109},{},[110],{"type":55,"value":111},"See",{"type":50,"tag":113,"props":114,"children":115},"tbody",{},[116,135,152,169,186,203,219,236,253,270,287],{"type":50,"tag":98,"props":117,"children":118},{},[119,125],{"type":50,"tag":120,"props":121,"children":122},"td",{},[123],{"type":55,"value":124},"Set up SPF\u002FDKIM\u002FDMARC, fix spam issues",{"type":50,"tag":120,"props":126,"children":127},{},[128],{"type":50,"tag":129,"props":130,"children":132},"a",{"href":131},".\u002Freferences\u002Fdeliverability.md",[133],{"type":55,"value":134},"Deliverability",{"type":50,"tag":98,"props":136,"children":137},{},[138,143],{"type":50,"tag":120,"props":139,"children":140},{},[141],{"type":55,"value":142},"Build password reset, OTP, confirmations",{"type":50,"tag":120,"props":144,"children":145},{},[146],{"type":50,"tag":129,"props":147,"children":149},{"href":148},".\u002Freferences\u002Ftransactional-emails.md",[150],{"type":55,"value":151},"Transactional Emails",{"type":50,"tag":98,"props":153,"children":154},{},[155,160],{"type":50,"tag":120,"props":156,"children":157},{},[158],{"type":55,"value":159},"Plan which emails your app needs",{"type":50,"tag":120,"props":161,"children":162},{},[163],{"type":50,"tag":129,"props":164,"children":166},{"href":165},".\u002Freferences\u002Ftransactional-email-catalog.md",[167],{"type":55,"value":168},"Transactional Email Catalog",{"type":50,"tag":98,"props":170,"children":171},{},[172,177],{"type":50,"tag":120,"props":173,"children":174},{},[175],{"type":55,"value":176},"Build newsletter signup, validate emails",{"type":50,"tag":120,"props":178,"children":179},{},[180],{"type":50,"tag":129,"props":181,"children":183},{"href":182},".\u002Freferences\u002Femail-capture.md",[184],{"type":55,"value":185},"Email Capture",{"type":50,"tag":98,"props":187,"children":188},{},[189,194],{"type":50,"tag":120,"props":190,"children":191},{},[192],{"type":55,"value":193},"Send newsletters, promotions",{"type":50,"tag":120,"props":195,"children":196},{},[197],{"type":50,"tag":129,"props":198,"children":200},{"href":199},".\u002Freferences\u002Fmarketing-emails.md",[201],{"type":55,"value":202},"Marketing Emails",{"type":50,"tag":98,"props":204,"children":205},{},[206,211],{"type":50,"tag":120,"props":207,"children":208},{},[209],{"type":55,"value":210},"Ensure CAN-SPAM\u002FGDPR\u002FCASL compliance",{"type":50,"tag":120,"props":212,"children":213},{},[214],{"type":50,"tag":129,"props":215,"children":217},{"href":216},".\u002Freferences\u002Fcompliance.md",[218],{"type":55,"value":20},{"type":50,"tag":98,"props":220,"children":221},{},[222,227],{"type":50,"tag":120,"props":223,"children":224},{},[225],{"type":55,"value":226},"Decide transactional vs marketing",{"type":50,"tag":120,"props":228,"children":229},{},[230],{"type":50,"tag":129,"props":231,"children":233},{"href":232},".\u002Freferences\u002Femail-types.md",[234],{"type":55,"value":235},"Email Types",{"type":50,"tag":98,"props":237,"children":238},{},[239,244],{"type":50,"tag":120,"props":240,"children":241},{},[242],{"type":55,"value":243},"Handle retries, idempotency, errors",{"type":50,"tag":120,"props":245,"children":246},{},[247],{"type":50,"tag":129,"props":248,"children":250},{"href":249},".\u002Freferences\u002Fsending-reliability.md",[251],{"type":55,"value":252},"Sending Reliability",{"type":50,"tag":98,"props":254,"children":255},{},[256,261],{"type":50,"tag":120,"props":257,"children":258},{},[259],{"type":55,"value":260},"Process delivery events, set up webhooks",{"type":50,"tag":120,"props":262,"children":263},{},[264],{"type":50,"tag":129,"props":265,"children":267},{"href":266},".\u002Freferences\u002Fwebhooks-events.md",[268],{"type":55,"value":269},"Webhooks & Events",{"type":50,"tag":98,"props":271,"children":272},{},[273,278],{"type":50,"tag":120,"props":274,"children":275},{},[276],{"type":55,"value":277},"Manage bounces, complaints, suppression",{"type":50,"tag":120,"props":279,"children":280},{},[281],{"type":50,"tag":129,"props":282,"children":284},{"href":283},".\u002Freferences\u002Flist-management.md",[285],{"type":55,"value":286},"List Management",{"type":50,"tag":98,"props":288,"children":289},{},[290,295],{"type":50,"tag":120,"props":291,"children":292},{},[293],{"type":55,"value":294},"Make emails accessible (screen readers, alt text, contrast)",{"type":50,"tag":120,"props":296,"children":297},{},[298],{"type":50,"tag":129,"props":299,"children":301},{"href":300},".\u002Freferences\u002Faccessibility.md",[302],{"type":55,"value":303},"Accessibility",{"type":50,"tag":64,"props":305,"children":307},{"id":306},"start-here",[308],{"type":55,"value":309},"Start Here",{"type":50,"tag":58,"props":311,"children":312},{},[313,319,321,326,328,332],{"type":50,"tag":314,"props":315,"children":316},"strong",{},[317],{"type":55,"value":318},"New app?",{"type":55,"value":320},"\nStart with the ",{"type":50,"tag":129,"props":322,"children":323},{"href":165},[324],{"type":55,"value":325},"Catalog",{"type":55,"value":327}," to plan which emails your app needs (password reset, verification, etc.), then set up ",{"type":50,"tag":129,"props":329,"children":330},{"href":131},[331],{"type":55,"value":134},{"type":55,"value":333}," (DNS authentication) before sending your first email.",{"type":50,"tag":58,"props":335,"children":336},{},[337,342,344,348],{"type":50,"tag":314,"props":338,"children":339},{},[340],{"type":55,"value":341},"Spam issues?",{"type":55,"value":343},"\nCheck ",{"type":50,"tag":129,"props":345,"children":346},{"href":131},[347],{"type":55,"value":134},{"type":55,"value":349}," first—authentication problems are the most common cause. Gmail\u002FYahoo reject unauthenticated emails.",{"type":50,"tag":58,"props":351,"children":352},{},[353,358,360,364,366,370,372,376],{"type":50,"tag":314,"props":354,"children":355},{},[356],{"type":55,"value":357},"Marketing emails?",{"type":55,"value":359},"\nFollow this path: ",{"type":50,"tag":129,"props":361,"children":362},{"href":182},[363],{"type":55,"value":185},{"type":55,"value":365}," (collect consent) → ",{"type":50,"tag":129,"props":367,"children":368},{"href":216},[369],{"type":55,"value":20},{"type":55,"value":371}," (legal requirements) → ",{"type":50,"tag":129,"props":373,"children":374},{"href":199},[375],{"type":55,"value":202},{"type":55,"value":377}," (best practices).",{"type":50,"tag":58,"props":379,"children":380},{},[381,386,388,392,394,398,400,404],{"type":50,"tag":314,"props":382,"children":383},{},[384],{"type":55,"value":385},"Production-ready sending?",{"type":55,"value":387},"\nAdd reliability: ",{"type":50,"tag":129,"props":389,"children":390},{"href":249},[391],{"type":55,"value":252},{"type":55,"value":393}," (retry + idempotency) → ",{"type":50,"tag":129,"props":395,"children":396},{"href":266},[397],{"type":55,"value":269},{"type":55,"value":399}," (track delivery) → ",{"type":50,"tag":129,"props":401,"children":402},{"href":283},[403],{"type":55,"value":286},{"type":55,"value":405}," (handle bounces).",{"type":50,"tag":58,"props":407,"children":408},{},[409,414,416,420,422,428,430,436,438,444],{"type":50,"tag":314,"props":410,"children":411},{},[412],{"type":55,"value":413},"Accessibility?",{"type":55,"value":415},"\nMost emails fail basic accessibility checks. See ",{"type":50,"tag":129,"props":417,"children":418},{"href":300},[419],{"type":55,"value":303},{"type":55,"value":421}," for ",{"type":50,"tag":78,"props":423,"children":425},{"className":424},[],[426],{"type":55,"value":427},"lang",{"type":55,"value":429},"\u002F",{"type":50,"tag":78,"props":431,"children":433},{"className":432},[],[434],{"type":55,"value":435},"dir",{"type":55,"value":437},", presentational tables, headings, alt text, ",{"type":50,"tag":78,"props":439,"children":441},{"className":440},[],[442],{"type":55,"value":443},"\u003Ctitle>",{"type":55,"value":445},", and contrast.",{"items":447,"total":555},[448,456,474,490,511,527,544],{"slug":4,"name":4,"fn":5,"description":6,"org":449,"tags":450,"stars":26,"repoUrl":27,"updatedAt":28},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[451,452,453,454,455],{"name":20,"slug":21,"type":15},{"name":24,"slug":25,"type":15},{"name":17,"slug":18,"type":15},{"name":9,"slug":8,"type":15},{"name":13,"slug":14,"type":15},{"slug":457,"name":457,"fn":458,"description":459,"org":460,"tags":461,"stars":26,"repoUrl":27,"updatedAt":473},"react-email","build HTML emails with React Email","Use when building HTML email templates with React components, adding a visual email editor to an application using the React Email visual editor, rendering emails to HTML, or sending emails with Resend. Covers welcome emails, password resets, notifications, order confirmations, newsletters, transactional emails, and the embeddable email editor component.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[462,463,466,469,470],{"name":24,"slug":25,"type":15},{"name":464,"slug":465,"type":15},"Frontend","frontend",{"name":467,"slug":468,"type":15},"React","react",{"name":9,"slug":8,"type":15},{"name":471,"slug":472,"type":15},"Templates","templates","2026-05-26T13:25:11.308896",{"slug":475,"name":475,"fn":476,"description":477,"org":478,"tags":479,"stars":26,"repoUrl":27,"updatedAt":489},"resend-cli","manage Resend platform via CLI","Operate the Resend platform from the terminal — send emails (including React Email .tsx templates via --react-email), manage domains, contacts, broadcasts, templates, webhooks, API keys, logs, automations, and events via the `resend` CLI. Use when the user wants to run Resend commands in the shell, scripts, or CI\u002FCD pipelines, or send\u002Fpreview React Email templates. Always load this skill before running `resend` commands — it contains the non-interactive flag contract and gotchas that prevent silent failures.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[480,483,486,487,488],{"name":481,"slug":482,"type":15},"Automation","automation",{"name":484,"slug":485,"type":15},"CLI","cli",{"name":24,"slug":25,"type":15},{"name":17,"slug":18,"type":15},{"name":9,"slug":8,"type":15},"2026-07-24T05:39:11.114186",{"slug":491,"name":491,"fn":492,"description":493,"org":494,"tags":495,"stars":508,"repoUrl":509,"updatedAt":510},"resend-brand","create Resend brand and marketing materials","Use when creating Resend marketing materials, documents, presentations, or visual content. Triggers for Resend brand, Resend style, or Resend visual identity requests.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[496,499,502,505],{"name":497,"slug":498,"type":15},"Branding","branding",{"name":500,"slug":501,"type":15},"Creative","creative",{"name":503,"slug":504,"type":15},"Design","design",{"name":506,"slug":507,"type":15},"Marketing","marketing",39,"https:\u002F\u002Fgithub.com\u002Fresend\u002Fdesign-skills","2026-07-14T05:44:56.364329",{"slug":512,"name":512,"fn":513,"description":514,"org":515,"tags":516,"stars":508,"repoUrl":509,"updatedAt":526},"resend-design-skills","access Resend design resources","Use when needing Resend design resources. Routes to brand guidelines and visual identity.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[517,518,519,522,523],{"name":497,"slug":498,"type":15},{"name":503,"slug":504,"type":15},{"name":520,"slug":521,"type":15},"Design System","design-system",{"name":9,"slug":8,"type":15},{"name":524,"slug":525,"type":15},"UI Components","ui-components","2026-04-06T18:51:12.604703",{"slug":528,"name":528,"fn":529,"description":530,"org":531,"tags":532,"stars":541,"repoUrl":542,"updatedAt":543},"migrate-sendgrid","migrate SendGrid integrations to Resend","Use when migrating SendGrid email integration to Resend - detects @sendgrid\u002Fmail, sgMail, sendgrid-ruby, sendgrid-go, sendgrid-java, sendgrid-php, or SENDGRID_API_KEY patterns.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[533,534,537,538],{"name":24,"slug":25,"type":15},{"name":535,"slug":536,"type":15},"Migration","migration",{"name":9,"slug":8,"type":15},{"name":539,"slug":540,"type":15},"SendGrid","sendgrid",0,"https:\u002F\u002Fgithub.com\u002Fresend\u002Fresend-migration-skill","2026-04-06T18:51:17.827518",{"slug":545,"name":545,"fn":546,"description":547,"org":548,"tags":549,"stars":541,"repoUrl":542,"updatedAt":554},"resend-migrate","migrate email providers to Resend","Use when migrating from SendGrid, Mailgun, or Postmark to Resend - detects @sendgrid\u002Fmail, sgMail, SENDGRID_API_KEY, mailgun, postmark imports and routes to the appropriate provider migration sub-skill.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[550,551,552,553],{"name":24,"slug":25,"type":15},{"name":535,"slug":536,"type":15},{"name":9,"slug":8,"type":15},{"name":539,"slug":540,"type":15},"2026-04-06T18:51:16.542148",7,{"items":557,"total":582},[558,566,574],{"slug":4,"name":4,"fn":5,"description":6,"org":559,"tags":560,"stars":26,"repoUrl":27,"updatedAt":28},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[561,562,563,564,565],{"name":20,"slug":21,"type":15},{"name":24,"slug":25,"type":15},{"name":17,"slug":18,"type":15},{"name":9,"slug":8,"type":15},{"name":13,"slug":14,"type":15},{"slug":457,"name":457,"fn":458,"description":459,"org":567,"tags":568,"stars":26,"repoUrl":27,"updatedAt":473},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[569,570,571,572,573],{"name":24,"slug":25,"type":15},{"name":464,"slug":465,"type":15},{"name":467,"slug":468,"type":15},{"name":9,"slug":8,"type":15},{"name":471,"slug":472,"type":15},{"slug":475,"name":475,"fn":476,"description":477,"org":575,"tags":576,"stars":26,"repoUrl":27,"updatedAt":489},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[577,578,579,580,581],{"name":481,"slug":482,"type":15},{"name":484,"slug":485,"type":15},{"name":24,"slug":25,"type":15},{"name":17,"slug":18,"type":15},{"name":9,"slug":8,"type":15},3]