Notification System

## Overview

25 stars

Best use case

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

## Overview

Teams using Notification System 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/notification-system/SKILL.md --create-dirs "https://raw.githubusercontent.com/ComeOnOliver/skillshub/main/skills/TerminalSkills/skills/notification-system/SKILL.md"

Manual Installation

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

How Notification System Compares

Feature / AgentNotification SystemStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

## Overview

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

# Notification System

## Overview

This skill enables AI agents to architect, implement, and configure multi-channel notification systems. It covers channel routing, user preference management, template rendering across formats, delivery tracking, retry logic, and compliance requirements like CAN-SPAM unsubscribe.

## Instructions

### 1. Notification Architecture

Every notification system needs these components:

```
Event Source → Notification Router → Channel Adapters → Delivery
                    ↓                      ↓
            Preference Store         Retry Queue
                                         ↓
                                   Dead Letter Queue
```

**Notification Router**: Receives a typed event, resolves the user's channel preferences, and dispatches to the appropriate channel adapters.

**Channel Adapters**: Pluggable handlers for each delivery channel. Must implement a common interface:

```typescript
interface ChannelAdapter {
  channel: 'email' | 'push' | 'in-app';
  send(notification: FormattedNotification): Promise<DeliveryResult>;
  validateRecipient(userId: string): Promise<boolean>;
}
```

**Preference Store**: Database-backed user preferences with per-notification-type, per-channel toggles. Some notifications (transactional/security) must be non-disableable.

### 2. Notification Type Classification

Always classify notifications into categories that determine default behavior:

| Category | Examples | Can Disable? | Default Channels |
|----------|----------|-------------|-----------------|
| Security | Password reset, 2FA | No | Email |
| Transactional | Order confirm, receipt | No | Email + In-app |
| Activity | Comments, mentions | Yes | Push + In-app |
| Social | New follower, like | Yes | In-app |
| Marketing | Digest, announcements | Yes | Email |

### 3. Channel-Specific Constraints

**Email**:
- Must include unsubscribe link (CAN-SPAM / GDPR)
- Use `List-Unsubscribe` header for one-click unsubscribe
- HTML + plain text versions
- Sender reputation — batch marketing emails separately from transactional

**Push Notifications**:
- Title: max 65 characters, Body: max 178 characters (iOS truncation)
- Include `data` payload for deep linking
- Handle token expiration and refresh
- Respect OS-level notification settings

**In-App**:
- Store in database with read/unread status
- Deliver in real-time via WebSocket if user is online
- Group related notifications (e.g., "3 people commented on your post")
- Paginate the notification feed

### 4. Retry and Failure Handling

Implement exponential backoff per channel:

- **Email**: 3 retries at 1min, 5min, 30min (provider outages are temporary)
- **Push**: 2 retries at 30s, 2min (invalid tokens should fail fast)
- **In-app**: 0 retries (direct DB write, either succeeds or doesn't)

After max retries, move to dead letter queue with full context for debugging.

### 5. Template Strategy

Use a single data context per notification type that renders differently per channel:

```typescript
interface NotificationContext {
  type: 'new-comment';
  actor: { name: string; avatarUrl: string };
  target: { title: string; url: string };
  content: { preview: string; full: string };
}
// → Email: Full HTML with actor avatar, comment preview, and action button
// → Push: "Alex commented: 'Great analysis of the…'"
// → In-app: "Alex commented on Your Post Title" with link
```

### 6. Delivery Tracking

Track these states for every notification:

`queued → sent → delivered → read → failed`

Store in a `notification_deliveries` table with: notification_id, user_id, channel, status, attempted_at, delivered_at, read_at, error_message.

## Examples

### Example 1: Express + BullMQ notification router

**Prompt**: "Build a notification service for my Express app that sends order confirmations via email and in-app."

**Output**: The agent creates a BullMQ-backed router that accepts `{ type: 'order-confirmed', userId, data: { orderId, total, items } }`, checks user preferences, and dispatches to the email adapter (SendGrid) and in-app adapter (PostgreSQL insert + Socket.io emit).

### Example 2: Preference management API

**Prompt**: "Create an API for users to manage their notification preferences with a React settings page."

**Output**: The agent generates REST endpoints for CRUD on notification preferences, a migration for the `notification_preferences` table with a composite unique constraint on (user_id, notification_type, channel), and a React component rendering a matrix of toggles with notification types as rows and channels as columns.

## Guidelines

- Never allow users to disable security notifications (password reset, 2FA codes)
- Always send email notifications from a queue, never synchronously in the request handler
- Batch notification grouping (e.g., "5 new comments") to avoid notification fatigue
- Test with notification-heavy scenarios: a user mentioned in a thread with 50 replies
- Include rate limiting on notifications per user per hour to prevent notification storms
- Log delivery metrics for monitoring: sent/delivered/failed rates by channel

Related Skills

combat-system-creator

25
from ComeOnOliver/skillshub

Create and modify combat system components for SHINOBI WAY game following the dual-system architecture (CombatCalculationSystem + CombatWorkflowSystem). Use when user wants to add new combat mechanics, damage formulas, status effects, mitigation logic, turn phases, or refactor existing combat code. Guides through proper separation of pure calculations vs state management.

voice-system-expert

25
from ComeOnOliver/skillshub

Use when working with Quetrex's voice interface, OpenAI Realtime API, WebRTC, or echo cancellation. Knows Quetrex's specific voice architecture decisions and patterns. CRITICAL - prevents breaking working voice system.

system-integration-validator

25
from ComeOnOliver/skillshub

Validates system integration before deployment. Use when checking ports, database connections, frontend-backend APIs, or debugging blocked/stuck workflows. Detects dead ends, bottlenecks, circular dependencies.

systematic-debugging

25
from ComeOnOliver/skillshub

Systematic methodology for debugging bugs, test failures, and unexpected behavior. Use when encountering any technical issue before proposing fixes. Covers root cause investigation, pattern analysis, hypothesis testing, and fix implementation. Use ESPECIALLY when under time pressure, "just one quick fix" seems obvious, or you've already tried multiple fixes. NOT for exploratory code reading.

memory-systems

25
from ComeOnOliver/skillshub

Design and implement memory architectures for agent systems. Use when building agents that need to persist state across sessions, maintain entity consistency, or reason over structured knowledge.

building-rag-systems

25
from ComeOnOliver/skillshub

Build production RAG systems with semantic chunking, incremental indexing, and filtered retrieval. Use when implementing document ingestion pipelines, vector search with Qdrant, or context-aware retrieval. Covers chunking strategies, change detection, payload indexing, and context expansion. NOT when doing simple similarity search without production requirements.

design-system-starter

25
from ComeOnOliver/skillshub

Use this skill when creating or evolving design systems for applications. Provides design token structures, component architecture patterns, documentation templates, and accessibility guidelines. Ensures consistent, scalable, and accessible UI design across products.

ui-design-system

25
from ComeOnOliver/skillshub

The Design System, Theme, and UX rules for the Physical AI Hub.

remote-system-maintenance

25
from ComeOnOliver/skillshub

This skill should be used when performing maintenance or diagnostics on remote Linux systems. Triggers on "remote server", "Linux maintenance", "Ubuntu cleanup", "Debian", "disk space", "apt cleanup", "journal vacuum", "snap cleanup", "system diagnostics". Provides structured three-phase checklists with quantification.

building-multiagent-systems

25
from ComeOnOliver/skillshub

This skill should be used when designing or implementing systems with multiple AI agents that coordinate to accomplish tasks. Triggers on "multi-agent", "orchestrator", "sub-agent", "coordination", "delegation", "parallel agents", "sequential pipeline", "fan-out", "map-reduce", "spawn agents", "agent hierarchy".

Design System — Generate & Audit Visual Systems

25
from ComeOnOliver/skillshub

## When to Use

WordPress Design System (WPDS)

25
from ComeOnOliver/skillshub

## Prerequisites