email-notifications

Email template and notification patterns using Resend

16 stars

Best use case

email-notifications is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Email template and notification patterns using Resend

Teams using email-notifications should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/email-notifications/SKILL.md --create-dirs "https://raw.githubusercontent.com/diegosouzapw/awesome-omni-skill/main/skills/business/email-notifications/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/email-notifications/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How email-notifications Compares

Feature / Agentemail-notificationsStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Email template and notification patterns using Resend

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# Email Notifications Skill

Guide for email templates and notifications in Splits Network.

## Purpose

- **Email Templates**: Professional HTML templates with branding
- **Resend Integration**: Sending transactional emails
- **Event-Driven**: Email triggered by domain events
- **Template Variables**: Dynamic content in emails

## When to Use

- Creating new email templates
- Sending transactional emails
- Processing domain events for notifications
- Testing email delivery

## Core Patterns

### 1. Email Template Structure

```typescript
export function applicationCreatedEmail(data: {
  candidateName: string;
  jobTitle: string;
  companyName: string;
  applicationUrl: string;
}) {
  return {
    subject: `Application Received: ${data.jobTitle}`,
    html: `
      <!DOCTYPE html>
      <html>
        <head>
          <meta charset="utf-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <style>
            body { font-family: Arial, sans-serif; line-height: 1.6; }
            .container { max-width: 600px; margin: 0 auto; padding: 20px; }
            .button { background: #0066cc; color: white; padding: 12px 24px; text-decoration: none; }
          </style>
        </head>
        <body>
          <div class="container">
            <h1>Application Received</h1>
            <p>Hi ${data.candidateName},</p>
            <p>We've received your application for <strong>${data.jobTitle}</strong> at ${data.companyName}.</p>
            <p>We'll review your application and get back to you soon.</p>
            <a href="${data.applicationUrl}" class="button">View Application</a>
          </div>
        </body>
      </html>
    `
  };
}
```

### 2. Resend Integration

```typescript
import { Resend } from 'resend';

const resend = new Resend(process.env.RESEND_API_KEY);

export async function sendEmail(
  to: string,
  subject: string,
  html: string
) {
  try {
    const { data, error } = await resend.emails.send({
      from: 'Splits Network <notifications@splits.network>',
      to,
      subject,
      html
    });
    
    if (error) {
      console.error('Failed to send email:', error);
      throw error;
    }
    
    return data;
  } catch (error) {
    console.error('Email error:', error);
    throw error;
  }
}
```

### 3. Event-Driven Email

```typescript
// Consumer listens for events
export class ApplicationEventsConsumer {
  async handleApplicationCreated(payload: any) {
    const { applicationId, candidateId, jobId } = payload;
    
    // Fetch data for email
    const application = await this.fetchApplication(applicationId);
    const candidate = await this.fetchCandidate(candidateId);
    const job = await this.fetchJob(jobId);
    
    // Generate email
    const email = applicationCreatedEmail({
      candidateName: candidate.name,
      jobTitle: job.title,
      companyName: job.company.name,
      applicationUrl: `${process.env.APP_URL}/applications/${applicationId}`
    });
    
    // Send email
    await sendEmail(candidate.email, email.subject, email.html);
  }
}
```

### 4. Email Types

```typescript
// Application emails
applicationCreatedEmail()
applicationStageChangedEmail()
applicationAcceptedEmail()

// Placement emails
placementCreatedEmail()
placementActivatedEmail()

// Recruiter emails
recruiterInvitedEmail()
candidateSubmittedEmail()

// Collaboration emails
recruiterAssignedEmail()
teamMemberInvitedEmail()
```

### 5. Template Testing

```typescript
// Generate preview HTML
export function previewEmail() {
  const html = applicationCreatedEmail({
    candidateName: 'John Doe',
    jobTitle: 'Senior Engineer',
    companyName: 'Acme Corp',
    applicationUrl: 'https://app.splits.network/applications/123'
  });
  
  return html;
}

// Test email sending
async function testEmail() {
  await sendEmail(
    'test@example.com',
    'Test Email',
    previewEmail().html
  );
}
```

See [examples/](./examples/) and [references/](./references/).

Related Skills

email-triage-draft-replies

16
from diegosouzapw/awesome-omni-skill

Review unread email, categorize it, and draft replies (no sending without approval)

email-extractor

16
from diegosouzapw/awesome-omni-skill

Expert in email content extraction and analysis. **Use whenever the user mentions .eml files, email messages, says "Extract email information", "Using the email information", or requests to extract, parse, analyze, or process email files.** Handles email thread parsing, attachment extraction, and converting emails to structured markdown format for AI processing. (project, gitignored)

verifiedemail-automation

16
from diegosouzapw/awesome-omni-skill

Automate Verifiedemail tasks via Rube MCP (Composio). Always search tools first for current schemas.

jikime-marketing-email

16
from diegosouzapw/awesome-omni-skill

Email marketing and automation specialist for creating email sequences, drip campaigns, lifecycle emails, and nurture flows.

google-email

16
from diegosouzapw/awesome-omni-skill

Manage Gmail email sync, triage, and analysis workflows. Use when user wants to sync emails, triage inbox, check email analysis results, view email statistics, manage the email processing pipeline, find newsletters, check pending emails, or understand email workflow status. Triggers on phrases like "sync my emails", "triage inbox", "email status", "check newsletters", "email analysis", "what emails do I have", "pending emails", "unsubscribe from newsletters".

enginemailer-automation

16
from diegosouzapw/awesome-omni-skill

Automate Enginemailer tasks via Rube MCP (Composio). Always search tools first for current schemas.

emailoctopus-automation

16
from diegosouzapw/awesome-omni-skill

Automate Emailoctopus tasks via Rube MCP (Composio). Always search tools first for current schemas.

emaillistverify-automation

16
from diegosouzapw/awesome-omni-skill

Automate Emaillistverify tasks via Rube MCP (Composio). Always search tools first for current schemas.

emailable-automation

16
from diegosouzapw/awesome-omni-skill

Automate Emailable tasks via Rube MCP (Composio). Always search tools first for current schemas.

email-systems

16
from diegosouzapw/awesome-omni-skill

Email has the highest ROI of any marketing channel. $36 for every $1 spent. Yet most startups treat it as an afterthought - bulk blasts, no personalization, landing in spam folders. This skill covers transactional email that works, marketing automation that converts, deliverability that reaches inboxes, and the infrastructure decisions that scale. Use when: keywords, file_patterns, code_patterns.

email-sequence

16
from diegosouzapw/awesome-omni-skill

When the user wants to create or optimize an email sequence, drip campaign, automated email flow, or lifecycle email program. Also use when the user mentions "email sequence," "drip campaign," "nurture sequence," "onboarding emails," "welcome sequence," "re-engagement emails," "email automation," or "lifecycle emails." For in-app onboarding, see onboarding-cro.

email-copilot

16
from diegosouzapw/awesome-omni-skill

Manages inbox by learning preferences, cleaning noise, and prioritizing important work. Use when user asks about emails or inbox management.