Novu — Open-Source Notification Infrastructure

You are an expert in Novu, the open-source notification infrastructure platform. You help developers build multi-channel notification systems supporting email, SMS, push, in-app, and chat (Slack/Discord) — with workflow orchestration, digest/batching, user preferences, template management, and a pre-built notification center component for React.

25 stars

Best use case

Novu — Open-Source Notification Infrastructure is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

You are an expert in Novu, the open-source notification infrastructure platform. You help developers build multi-channel notification systems supporting email, SMS, push, in-app, and chat (Slack/Discord) — with workflow orchestration, digest/batching, user preferences, template management, and a pre-built notification center component for React.

Teams using Novu — Open-Source Notification Infrastructure 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/novu/SKILL.md --create-dirs "https://raw.githubusercontent.com/ComeOnOliver/skillshub/main/skills/TerminalSkills/skills/novu/SKILL.md"

Manual Installation

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

How Novu — Open-Source Notification Infrastructure Compares

Feature / AgentNovu — Open-Source Notification InfrastructureStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

You are an expert in Novu, the open-source notification infrastructure platform. You help developers build multi-channel notification systems supporting email, SMS, push, in-app, and chat (Slack/Discord) — with workflow orchestration, digest/batching, user preferences, template management, and a pre-built notification center component for React.

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

# Novu — Open-Source Notification Infrastructure

You are an expert in Novu, the open-source notification infrastructure platform. You help developers build multi-channel notification systems supporting email, SMS, push, in-app, and chat (Slack/Discord) — with workflow orchestration, digest/batching, user preferences, template management, and a pre-built notification center component for React.

## Core Capabilities

### Workflow Definition

```typescript
// novu/workflows/order-updates.ts
import { workflow, CronExpression } from "@novu/framework";
import { z } from "zod";
import { renderOrderEmail } from "../emails/order-status";

export const orderStatusWorkflow = workflow(
  "order-status-update",
  async ({ step, payload }) => {
    // Step 1: In-app notification (always)
    await step.inApp("in-app-notification", async () => ({
      subject: `Order ${payload.orderId} — ${payload.status}`,
      body: `Your order is now ${payload.status.toLowerCase()}`,
      avatar: "https://app.example.com/icons/order.png",
      redirect: { url: `/orders/${payload.orderId}` },
    }));

    // Step 2: Email (respects user preferences)
    await step.email("email-notification", async () => ({
      subject: `Order Update: ${payload.status}`,
      body: renderOrderEmail({
        orderId: payload.orderId,
        status: payload.status,
        trackingUrl: payload.trackingUrl,
      }),
    }));

    // Step 3: SMS for shipped orders only
    if (payload.status === "shipped") {
      await step.sms("sms-shipped", async () => ({
        body: `Your order ${payload.orderId} has shipped! Track: ${payload.trackingUrl}`,
      }));
    }

    // Step 4: Delay + follow-up
    await step.delay("wait-for-delivery", () => ({
      amount: 3, unit: "days",
    }));

    await step.email("feedback-request", async () => ({
      subject: "How was your order?",
      body: renderFeedbackEmail({ orderId: payload.orderId }),
    }));
  },
  {
    payloadSchema: z.object({
      orderId: z.string(),
      status: z.enum(["confirmed", "shipped", "delivered"]),
      trackingUrl: z.string().url().optional(),
    }),
  },
);

// Digest workflow — batch notifications
export const activityDigest = workflow(
  "activity-digest",
  async ({ step }) => {
    // Collect events over 30 minutes
    const digestedEvents = await step.digest("batch-activity", () => ({
      amount: 30, unit: "minutes",
    }));

    await step.email("digest-email", async () => ({
      subject: `${digestedEvents.events.length} new activities`,
      body: renderDigestEmail({ events: digestedEvents.events }),
    }));
  },
);
```

### Triggering Notifications

```typescript
import { Novu } from "@novu/node";

const novu = new Novu(process.env.NOVU_API_KEY);

// Trigger notification
await novu.trigger("order-status-update", {
  to: { subscriberId: "user-42", email: "alice@example.com", phone: "+1234567890" },
  payload: {
    orderId: "ORD-123",
    status: "shipped",
    trackingUrl: "https://track.example.com/abc",
  },
});

// Trigger to multiple subscribers
await novu.trigger("weekly-digest", {
  to: [
    { subscriberId: "user-1" },
    { subscriberId: "user-2" },
    { subscriberId: "user-3" },
  ],
  payload: { weekNumber: 11 },
});

// Bulk trigger
await novu.bulkTrigger([
  { name: "order-status-update", to: { subscriberId: "user-1" }, payload: { orderId: "1", status: "shipped" } },
  { name: "order-status-update", to: { subscriberId: "user-2" }, payload: { orderId: "2", status: "delivered" } },
]);
```

## Installation

```bash
npm install @novu/node                    # Server SDK
npm install @novu/framework               # Workflow definitions
npx novu@latest dev                       # Local dev studio
```

## Best Practices

1. **Multi-channel workflows** — Define email + SMS + push + in-app in one workflow; Novu routes per user preference
2. **Digest for batching** — Use `step.digest()` to batch frequent events into a single notification
3. **Delay for follow-ups** — Use `step.delay()` for drip sequences, feedback requests, reminders
4. **User preferences** — Novu UI lets users control which channels they receive; respect opt-outs automatically
5. **Subscriber management** — Create subscribers with `subscriberId`; attach email, phone, push tokens
6. **React notification center** — Use `@novu/notification-center-react` for a drop-in in-app notification bell
7. **Template management** — Use Novu dashboard for non-technical team members to edit notification copy
8. **Self-hosted option** — Deploy Novu on your infra with Docker; full control over notification data

Related Skills

tracking-resource-usage

25
from ComeOnOliver/skillshub

Track and optimize resource usage across application stack including CPU, memory, disk, and network I/O. Use when identifying bottlenecks or optimizing costs. Trigger with phrases like "track resource usage", "monitor CPU and memory", or "optimize resource allocation".

openapi-spec-generator

25
from ComeOnOliver/skillshub

Openapi Spec Generator - Auto-activating skill for API Development. Triggers on: openapi spec generator, openapi spec generator Part of the API Development skill category.

open-graph-creator

25
from ComeOnOliver/skillshub

Open Graph Creator - Auto-activating skill for Frontend Development. Triggers on: open graph creator, open graph creator Part of the Frontend Development skill category.

notification-dispatcher

25
from ComeOnOliver/skillshub

Notification Dispatcher - Auto-activating skill for Business Automation. Triggers on: notification dispatcher, notification dispatcher Part of the Business Automation skill category.

collecting-infrastructure-metrics

25
from ComeOnOliver/skillshub

This skill enables Claude to collect comprehensive infrastructure performance metrics across compute, storage, network, containers, load balancers, and databases. It is triggered when the user requests "collect infrastructure metrics", "monitor server performance", "set up performance dashboards", or needs to analyze system resource utilization. The skill configures metrics collection, sets up aggregation, and helps create infrastructure dashboards for health monitoring and capacity tracking. It supports configuration for Prometheus, Datadog, and CloudWatch.

detecting-infrastructure-drift

25
from ComeOnOliver/skillshub

This skill enables Claude to detect infrastructure drift from a desired state. It uses the `drift-detect` command to identify discrepancies between the current infrastructure configuration and the intended configuration, as defined in infrastructure-as-code tools like Terraform. Use this skill when the user asks to check for infrastructure drift, identify configuration changes, or ensure that the current infrastructure matches the desired state. It is particularly useful in DevOps workflows for maintaining infrastructure consistency and preventing configuration errors. Trigger this skill when the user mentions "drift detection," "infrastructure changes," "configuration drift," or requests a "drift report."

generating-infrastructure-as-code

25
from ComeOnOliver/skillshub

This skill enables Claude to generate Infrastructure as Code (IaC) configurations. It uses the infrastructure-as-code-generator plugin to create production-ready IaC for Terraform, CloudFormation, Pulumi, ARM Templates, and CDK. Use this skill when the user requests IaC configurations for cloud infrastructure, specifying the platform (e.g., Terraform, CloudFormation) and cloud provider (e.g., AWS, Azure, GCP), or when the user needs help automating infrastructure deployment. Trigger terms include: "generate IaC", "create Terraform", "CloudFormation template", "Pulumi program", "infrastructure code".

gpu-resource-optimizer

25
from ComeOnOliver/skillshub

Gpu Resource Optimizer - Auto-activating skill for ML Deployment. Triggers on: gpu resource optimizer, gpu resource optimizer Part of the ML Deployment skill category.

checking-infrastructure-compliance

25
from ComeOnOliver/skillshub

Execute use when you need to work with compliance checking. This skill provides compliance monitoring and validation with comprehensive guidance and automation. Trigger with phrases like "check compliance", "validate policies", or "audit compliance".

provider-resources

25
from ComeOnOliver/skillshub

Implement Terraform Provider resources and data sources using the Plugin Framework. Use when developing CRUD operations, schema design, state management, and acceptance testing for provider resources.

openapi-to-application-code

25
from ComeOnOliver/skillshub

Generate a complete, production-ready application from an OpenAPI specification

import-infrastructure-as-code

25
from ComeOnOliver/skillshub

Import existing Azure resources into Terraform using Azure CLI discovery and Azure Verified Modules (AVM). Use when asked to reverse-engineer live Azure infrastructure, generate Infrastructure as Code from existing subscriptions/resource groups/resource IDs, map dependencies, derive exact import addresses from downloaded module source, prevent configuration drift, and produce AVM-based Terraform files ready for validation and planning across any Azure resource type.