[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M70GEHDFN0HF0PY0EARACWDG":3,"skill-same:01M70GEHDFN0HF0PY0EARACWDG":77},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":28,"publishedAt":49,"linkOnly":50,"markdownContent":51,"markdownBody":52,"frontMatter":53,"refName":55,"commitSha":56,"skillDirectory":57,"forksCount":58,"repositoryHtmlUrl":59,"repositoryHomepageUrl":6,"ownerHtmlUrl":60,"ownerBlogUrl":6,"ownerDescription":61,"updatedAt":62,"install":63,"resources":76},"01M70GEHDFN0HF0PY0EARACWDG","mailtrap-email-integration",null,"Guides agents through integrating transactional email sending via Mailtrap's Email API, including sandbox testing, domain verification, and API authentication. Use when implementing email-sending features, debugging delivery issues, or setting up safe dev\u002Fstaging email testing.","mdnaimul22\u002Fhuman-skills","mdnaimul22","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F64520358?v=4","01M70FH95MH2H796Q01TYSFZ03","Naimul","01M70FH96798CQR4YHA13F17GA",3,"MIT","https:\u002F\u002Fgithub.com\u002Fmdnaimul22\u002Fhuman-skills\u002Fblob\u002Fmain\u002Fskills\u002Fstorage\u002Faffaan-m_ECC\u002Fmailtrap-email-integration\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000005","邮件与沟通","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48],"email","integration","mailtrap email integration","sandbox","domain","transactional","safe","features","delivery","email api","verification","guides","api","when","debugging","implementing","issues","up","testing","authentication","2026-11-10 10:12:30",false,"---\nname: mailtrap-email-integration\ndescription: Guides agents through integrating transactional email sending via Mailtrap's Email API, including sandbox testing, domain verification, and API authentication. Use when implementing email-sending features, debugging delivery issues, or setting up safe dev\u002Fstaging email testing.\norigin: ECC\n---\n\n# Mailtrap Email Integration\n\nPatterns for adding transactional email sending to an application using Mailtrap's Email API and Sandbox, covering authentication, environment separation, and common delivery pitfalls.\n\n## When to Activate\n\n- Implementing a \"send email\" feature (signup confirmation, password reset, notifications, receipts)\n- Debugging why emails aren't arriving in dev\u002Fstaging\n- Setting up a project's first email-sending integration\n- Reviewing code that calls an email API directly without sandbox separation\n\n## Core Concepts\n\n**Sandbox vs. Production separation.** Mailtrap provides a Sandbox API that captures emails without delivering them, used for dev\u002Fstaging so test emails never reach real inboxes. Production sending uses a separate, verified-domain endpoint. Never point a dev environment at the production sending endpoint.\n\n**Authentication.** Requests use a Bearer token in the `Authorization` header. Tokens are scoped per project; sandbox and production typically use different tokens.\n\n**Domain verification.** Production sending requires verifying a sending domain via DNS records (SPF, DKIM, DMARC) before Mailtrap will deliver to real recipients. Skipping this causes silent delivery failures or spam-folder placement.\n\n## Code Examples\n\n```typescript\n\u002F\u002F Sending via Mailtrap's Email API (production)\nasync function sendEmail(to: string, subject: string, html: string) {\n  const response = await fetch(\"https:\u002F\u002Fsend.api.mailtrap.io\u002Fapi\u002Fsend\", {\n    method: \"POST\",\n    headers: {\n      \"Authorization\": `Bearer ${process.env.MAILTRAP_API_TOKEN}`,\n      \"Content-Type\": \"application\u002Fjson\",\n    },\n    body: JSON.stringify({\n      from: { email: \"no-reply@yourverifieddomain.com\", name: \"Your App\" },\n      to: [{ email: to }],\n      subject,\n      html,\n    }),\n  });\n\n  if (!response.ok) {\n    throw new Error(`Email send failed: ${response.status}`);\n  }\n  return response.json();\n}\n```\n\n```typescript\n\u002F\u002F Same call, routed to Sandbox in non-production environments\nconst MAILTRAP_ENDPOINT = process.env.NODE_ENV === \"production\"\n  ? \"https:\u002F\u002Fsend.api.mailtrap.io\u002Fapi\u002Fsend\"\n  : `https:\u002F\u002Fsandbox.api.mailtrap.io\u002Fapi\u002Fsend\u002F${process.env.MAILTRAP_INBOX_ID}`;\n```\n\n## Anti-Patterns\n\n| Anti-Pattern | Why It's a Problem | Instead |\n| --- | --- | --- |\n| Using the production sending endpoint in dev\u002Ftest | Real test emails reach real inboxes, risking spam complaints and leaked test data | Route non-production environments to the Sandbox endpoint |\n| Hardcoding API tokens in source | Credential leak risk if committed to version control | Load tokens from environment variables \u002F secrets manager |\n| Sending before domain verification completes | Emails silently fail or land in spam | Verify SPF\u002FDKIM\u002FDMARC records before enabling production sending |\n| No retry\u002Ferror handling on send failures | Silent notification failures (e.g., user never gets password reset email) | Check response status, log failures, surface actionable errors |\n\n## Best Practices\n\n- Keep sandbox and production tokens in separate environment variables, never share one token across environments\n- Verify sending domain DNS records before any production launch involving email\n- Log delivery failures with enough context to debug (recipient, template, timestamp, response code)\n- Treat email sending as a fallible network call: wrap in try\u002Fcatch, never assume success\n\n## Related Skills\n\n`api-and-interface-design`, `security-and-hardening`, `ci-cd-and-automation`\n","# Mailtrap Email Integration\n\nPatterns for adding transactional email sending to an application using Mailtrap's Email API and Sandbox, covering authentication, environment separation, and common delivery pitfalls.\n\n## When to Activate\n\n- Implementing a \"send email\" feature (signup confirmation, password reset, notifications, receipts)\n- Debugging why emails aren't arriving in dev\u002Fstaging\n- Setting up a project's first email-sending integration\n- Reviewing code that calls an email API directly without sandbox separation\n\n## Core Concepts\n\n**Sandbox vs. Production separation.** Mailtrap provides a Sandbox API that captures emails without delivering them, used for dev\u002Fstaging so test emails never reach real inboxes. Production sending uses a separate, verified-domain endpoint. Never point a dev environment at the production sending endpoint.\n\n**Authentication.** Requests use a Bearer token in the `Authorization` header. Tokens are scoped per project; sandbox and production typically use different tokens.\n\n**Domain verification.** Production sending requires verifying a sending domain via DNS records (SPF, DKIM, DMARC) before Mailtrap will deliver to real recipients. Skipping this causes silent delivery failures or spam-folder placement.\n\n## Code Examples\n\n```typescript\n\u002F\u002F Sending via Mailtrap's Email API (production)\nasync function sendEmail(to: string, subject: string, html: string) {\n  const response = await fetch(\"https:\u002F\u002Fsend.api.mailtrap.io\u002Fapi\u002Fsend\", {\n    method: \"POST\",\n    headers: {\n      \"Authorization\": `Bearer ${process.env.MAILTRAP_API_TOKEN}`,\n      \"Content-Type\": \"application\u002Fjson\",\n    },\n    body: JSON.stringify({\n      from: { email: \"no-reply@yourverifieddomain.com\", name: \"Your App\" },\n      to: [{ email: to }],\n      subject,\n      html,\n    }),\n  });\n\n  if (!response.ok) {\n    throw new Error(`Email send failed: ${response.status}`);\n  }\n  return response.json();\n}\n```\n\n```typescript\n\u002F\u002F Same call, routed to Sandbox in non-production environments\nconst MAILTRAP_ENDPOINT = process.env.NODE_ENV === \"production\"\n  ? \"https:\u002F\u002Fsend.api.mailtrap.io\u002Fapi\u002Fsend\"\n  : `https:\u002F\u002Fsandbox.api.mailtrap.io\u002Fapi\u002Fsend\u002F${process.env.MAILTRAP_INBOX_ID}`;\n```\n\n## Anti-Patterns\n\n| Anti-Pattern | Why It's a Problem | Instead |\n| --- | --- | --- |\n| Using the production sending endpoint in dev\u002Ftest | Real test emails reach real inboxes, risking spam complaints and leaked test data | Route non-production environments to the Sandbox endpoint |\n| Hardcoding API tokens in source | Credential leak risk if committed to version control | Load tokens from environment variables \u002F secrets manager |\n| Sending before domain verification completes | Emails silently fail or land in spam | Verify SPF\u002FDKIM\u002FDMARC records before enabling production sending |\n| No retry\u002Ferror handling on send failures | Silent notification failures (e.g., user never gets password reset email) | Check response status, log failures, surface actionable errors |\n\n## Best Practices\n\n- Keep sandbox and production tokens in separate environment variables, never share one token across environments\n- Verify sending domain DNS records before any production launch involving email\n- Log delivery failures with enough context to debug (recipient, template, timestamp, response code)\n- Treat email sending as a fallible network call: wrap in try\u002Fcatch, never assume success\n\n## Related Skills\n\n`api-and-interface-design`, `security-and-hardening`, `ci-cd-and-automation`\n",{"name":5,"origin":54,"description":7},"ECC","main","74715deacdc69119d739f38916f8ee4f0f979ebf","skills\u002Fstorage\u002Faffaan-m_ECC\u002Fmailtrap-email-integration",0,"https:\u002F\u002Fgithub.com\u002Fmdnaimul22\u002Fhuman-skills","https:\u002F\u002Fgithub.com\u002Fmdnaimul22","AI Agents Workflows Automation | Specializing in Python, FastAPI, MCP Agents & Custom ERP.","2026-11-11 21:16:57",{"source":8,"skillName":5,"commands":64,"prompt":74,"zipAvailable":75},[65,68,71],{"tool":66,"command":67},"npx","npx skills add mdnaimul22\u002Fhuman-skills --skill mailtrap-email-integration",{"tool":69,"command":70},"bunx","bunx skills add mdnaimul22\u002Fhuman-skills --skill mailtrap-email-integration",{"tool":72,"command":73},"pnpm","pnpm dlx skills add mdnaimul22\u002Fhuman-skills --skill mailtrap-email-integration","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmdnaimul22\u002Fhuman-skills\u002Fblob\u002Fmain\u002Fskills\u002Fstorage\u002Faffaan-m_ECC\u002Fmailtrap-email-integration\u002FSKILL.md",true,[],[78,86,113,133,151,166],{"skillNo":79,"name":80,"nameZh":6,"description":81,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":82,"categories":83,"keywords":84,"publishedAt":85},"01M72JT3YP1SQHD0MANGDXQ4RT","higgsfield-websites","Build, edit, and deploy full-stack websites, apps and games via the Higgsfield CLI (`higgsfield website …`). Each is a React 19 + TanStack Start SSR app in one Cloudflare Worker (D1\u002FR2\u002FKV\u002FDO\u002FContainers). THREE product types, picked via `--type` on create: `website` (standalone, no Higgsfield integration — references\u002Fwebsite-flow.md), `app` (Sign in with Higgsfield + fnf SDK, Quanta — references\u002Fapp-flow.md), `game` (realtime multiplayer rooms — references\u002Fgame-flow.md). Routes to the right flow; each carries its own rules and deploy\u002Fpublish gates.\nUse when: \"build me a website\", \"make a landing page\", \"create a web app\", \"build a SaaS dashboard \u002F portfolio\", \"make me a game\", \"deploy this site\", \"publish\". Also owns GAME ART: \"make a spritesheet\", \"tileable texture\", \"animate a 3D character\", game music\u002FSFX — see the game-* references.\nNOT for: single image\u002Fvideo\u002Faudio generation (higgsfield-generate), product photos (higgsfield-product-photoshoot), marketplace cards (higgsfield-marketplace-cards).","https:\u002F\u002Fgithub.com\u002Fmdnaimul22\u002Fhuman-skills\u002Fblob\u002Fmain\u002Fskills\u002Fstorage\u002Fhiggsfield-ai_skills\u002Fhiggsfield-websites\u002FSKILL.md",[],[],"2026-11-10 22:39:42",{"skillNo":87,"name":88,"nameZh":6,"description":89,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":90,"categories":91,"keywords":104,"publishedAt":49},"01M70JPK8HAXXA85P7Q8NKZZYG","writing-skills","Use when creating new skills, editing existing skills, or verifying skills work before deployment","https:\u002F\u002Fgithub.com\u002Fmdnaimul22\u002Fhuman-skills\u002Fblob\u002Fmain\u002Fskills\u002Fstorage\u002Fobra_superpowers\u002Fwriting-skills\u002FSKILL.md",[92,95,98,101],{"categoryNo":93,"categoryName":94,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":96,"categoryName":97,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000036","内容创作者",{"categoryNo":99,"categoryName":100,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":102,"categoryName":103,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",[105,106,107,108,109,110,111,42,112],"writing","writing skills","editing","deployment","use","Existing","new","work",{"skillNo":114,"name":115,"nameZh":6,"description":116,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":117,"categories":118,"keywords":122,"publishedAt":49},"01M70JP4PHBH1CQVVDWZ94W159","writing-plans","Use when you have a spec or requirements for a multi-step task, before touching code","https:\u002F\u002Fgithub.com\u002Fmdnaimul22\u002Fhuman-skills\u002Fblob\u002Fmain\u002Fskills\u002Fstorage\u002Fobra_superpowers\u002Fwriting-plans\u002FSKILL.md",[119,120,121],{"categoryNo":93,"categoryName":94,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":96,"categoryName":97,"taxonomyType":26,"taxonomyTypeDesc":27},{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},[105,123,124,125,42,126,127,109,128,129,130,131,132],"writing plans","plans","you","code","for","requirements","task","multi","spec","multi-step task",{"skillNo":134,"name":135,"nameZh":6,"description":136,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":137,"categories":138,"keywords":139,"publishedAt":49},"01M70JNTYVGXFZT8PASZ844TH8","verification-before-completion","Use when about to claim work is complete, fixed, or passing, before committing or creating PRs - requires running verification commands and confirming output before making any success claims; evidence before assertions always","https:\u002F\u002Fgithub.com\u002Fmdnaimul22\u002Fhuman-skills\u002Fblob\u002Fmain\u002Fskills\u002Fstorage\u002Fobra_superpowers\u002Fverification-before-completion\u002FSKILL.md",[],[39,140,141,142,143,144,109,145,146,147,42,148,112,149,150],"verification before completion","complete","about","output","assertions","prs","evidence","claim","claims","commands","running",{"skillNo":152,"name":153,"nameZh":6,"description":154,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":155,"categories":156,"keywords":158,"publishedAt":49},"01M70JNGVSQDESWN0Q5BPJ875V","using-superpowers","Use when starting any conversation - establishes how to find and use skills, requiring skill invocation before ANY response including clarifying questions","https:\u002F\u002Fgithub.com\u002Fmdnaimul22\u002Fhuman-skills\u002Fblob\u002Fmain\u002Fskills\u002Fstorage\u002Fobra_superpowers\u002Fusing-superpowers\u002FSKILL.md",[157],{"categoryNo":99,"categoryName":100,"taxonomyType":21,"taxonomyTypeDesc":22},[159,160,161,162,109,42,163,164,165],"using superpowers","superpowers","conversation","how to","how","find","questions",{"skillNo":167,"name":168,"nameZh":6,"description":169,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":170,"categories":171,"keywords":172,"publishedAt":49},"01M70JN57CE588NPYPYTWH1DWG","using-git-worktrees","Use when starting feature work that needs isolation from current workspace or before executing implementation plans - ensures an isolated workspace exists via native tools or git worktree fallback","https:\u002F\u002Fgithub.com\u002Fmdnaimul22\u002Fhuman-skills\u002Fblob\u002Fmain\u002Fskills\u002Fstorage\u002Fobra_superpowers\u002Fusing-git-worktrees\u002FSKILL.md",[],[173,174,175,176,177,178,42,112,179,180,181,182,183,184,185,124,109,186,187],"using git worktrees","Using git","git","worktrees","git worktrees","implementation","git worktree","worktree","native","Tools","isolation","fallback","feature","via","workspace"]