Design push notification and messaging strategies including channel selection, timing optimization, personalization, and fatigue management. Use this skill when the user needs to improve notification engagement, reduce opt-out rates, plan multi-channel messaging, or A/B test notification content — even if they say 'our push open rates are low', 'users are unsubscribing', 'when should we send notifications', or 'which channel to use for alerts'.
npx skills add https://github.com/asgard-ai-platform/skills --skill cs-notification-strategy
IRON LAW: Every Notification Must Earn Its Send
Each notification interrupts the user. If it doesn't deliver clear value
to the RECIPIENT (not to your business), it erodes trust and drives
opt-outs. Before sending: "Would the user thank me for this notification?"
If no → don't send.
| Channel | Open Rate | Speed | Cost | Best For | Limitations |
|---------|----------|-------|------|----------|-------------|
| Push notification | 5-15% | Instant | Free | Time-sensitive, action-needed | Easy to opt out, limited text |
| Email | 15-25% | Minutes | Low | Detailed content, receipts, newsletters | Spam filters, slow |
| SMS | 90%+ open | Instant | $$$ | Critical alerts, OTP, urgent | Expensive, intrusive, regulatory |
| In-app | 25-40% | Next session | Free | Feature announcements, tips | Only reaches active users |
| LINE/Messenger | 40-60% | Instant | Free-$ | Conversational, Taiwan/Asia | Platform dependency |
| Audience | Best Time | Worst Time |
|----------|----------|-----------|
| B2C general | 10-12 AM, 7-9 PM | 12-6 AM, during commute |
| B2B | Tue-Thu 9-11 AM | Weekends, Friday PM |
| E-commerce | Thu-Sat (pre-weekend shopping) | Monday AM |
| Breaking/urgent | Immediately | N/A |
Timezone rule: Send in the RECIPIENT's timezone, not yours.
| Tier | What | Example | Lift vs Generic |
|------|------|---------|----------------|
| None | Same message to all | "Check out our sale!" | Baseline |
| Segment | By user group | "As a premium member, you get early access" | +20-30% |
| Behavioral | Based on past actions | "The item in your cart is almost sold out" | +40-60% |
| Individual | 1:1 personalized | "Hi [Name], your favorite [Product] is back in stock" | +60-80% |
| Signal | What It Means | Action |
|--------|-------------|--------|
| Open rate declining | Content losing relevance | Improve targeting/content |
| Opt-out rate > 0.5%/send | Sending too much or wrong content | Reduce frequency, segment better |
| Uninstall spike after push | Notifications are driving users away | Immediately reduce volume |
| Click rate declining but open rate stable | Subject lines good, content disappointing | Improve content/offer quality |
Frequency caps: Set maximum notifications per user per time period:
| Element | What to Test | Example |
|---------|-------------|---------|
| Subject/title | Length, tone, emoji, personalization | "Your order shipped 📦" vs "Order #1234 is on its way" |
| Timing | Hour of day, day of week | 10 AM vs 7 PM |
| Content | Short vs detailed, image vs text-only | 20 words vs 50 words |
| CTA | Button text, action type | "View" vs "Track Now" |
| Channel | Push vs email vs in-app for same message | Same content, different channel |
# Notification Strategy: {Product/Campaign}
## Channel Mix
| Message Type | Primary Channel | Fallback | Frequency |
|-------------|----------------|----------|-----------|
| {type} | {channel} | {backup} | {max/period} |
## Segmentation
| Segment | Notification | Personalization Tier |
|---------|-------------|---------------------|
| {segment} | {content} | None/Segment/Behavioral/Individual |
## Timing
| Segment | Send Time | Day | Timezone |
|---------|----------|-----|---------|
| {segment} | {HH:MM} | {day(s)} | {user's TZ} |
## Fatigue Rules
- Max push: {N}/week
- Max email: {N}/week
- Opt-out threshold: {%} → action: {reduce/pause}
## A/B Test Plan
| Test | Variant A | Variant B | Metric | Sample |
|------|----------|----------|--------|--------|
| {test} | {A} | {B} | {open rate / CTR} | {N users} |
references/line-notification.mdreferences/email-deliverability.mdAnalyzes meeting transcripts and recordings to uncover behavioral patterns, communication insights, and actionable feedback. Identifies when you avoid conflict, use filler words, dominate conversations, or miss opportunities to listen. Perfect for professionals seeking to improve their communication and leadership skills.
Toolkit for creating animated GIFs optimized for Slack, with validators for size constraints and composable animation primitives. This skill applies when users request animated GIFs or emoji animations for Slack from descriptions like "make me a GIF for Slack of X doing Y".
Analyzes your recent Claude Code chat history to identify coding patterns, development gaps, and areas for improvement, curates relevant learning resources from HackerNews, and automatically sends a personalized growth report to your Slack DMs.
Knowledge and utilities for creating animated GIFs optimized for Slack. Provides constraints, validation tools, and animation concepts. Use when users request animated GIFs for Slack like "make me a GIF of X doing Y for Slack.
A skill that creates new Claude skills and automatically shares them on Slack using Rube for seamless team collaboration and skill discovery.
Automate Electron desktop apps (VS Code, Slack, Discord, Figma, Notion, Spotify, etc.) using agent-browser via Chrome DevTools Protocol. Use when the user needs to interact with an Electron app, automate a desktop app, connect to a running app, control a native app, or test an Electron application. Triggers include "automate Slack app", "control VS Code", "interact with Discord app", "test this Electron app", "connect to desktop app", or any task requiring automation of a native Electron application.
Prepare meeting materials with Notion context and Codex research; use when gathering context, drafting agendas/pre-reads, and tailoring materials to attendees.
Interactive daily standup/meeting update generator. Use when user says 'daily', 'standup', 'scrum update', 'status update', 'what did I do yesterday', 'prepare for meeting', 'morning update', or 'team sync'. Pulls activity from GitHub, Jira, and Claude Code session history. Conducts 4-question interview (yesterday, today, blockers, discussion topics) and generates formatted Markdown update.
Take asgard-ai-platform/cs-notification-strategy from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.