courier-notification-skills
Use when building notifications with Courier across email, SMS, push, in-app inbox, Slack, Teams, or WhatsApp. Covers transactional messages (password reset, OTP, orders, billing), growth notifications (onboarding, engagement, referral), multi-channel routing, preferences and topics, reliability and webhooks, journeys (multi-step notification sequences via API), template CRUD and Elemental content, routing strategies, provider configuration, the Courier CLI and MCP server, and migrations from Knock, Novu, or other notification systems.
pinned to #9fd7096updated 2 weeks ago
Ask your AI client: “install skills/courier-notification-skills”.
Requires the metahub MCP server installed in your client. Set up MCP.
mh install skills/courier-notification-skillsmetahub onboarded this repo on the author's behalf.
If you own github.com/trycourier/courier-skills on GitHub, claim the listing to take over publishing. Your claim preserves the existing eval history and badges; only the curator label is replaced with verified-publisher on your next publish.
Stars
12
Last commit
2 weeks ago
Latest release
published
About this skill
Pulled from SKILL.md at publish time.
Guidance for building deliverable and engaging notifications across all channels.
Evaluation report
WarningsAutomated checks the publisher passed at publish time — structure, docs, safety, and whether the artifact behaves as claimed.9fd7096· 2 weeks ago
Documentation
41Description quality
67 words · 541 chars — "Use when building notifications with Courier across email, SMS, push, in-app inb…"
README is present and substantial
7,226 chars · 10 sections · 4 code blocks
Tags / topics declaredwarn
No manifest tags and no GitHub repo topics
Add tags to the manifest (or GitHub topics on the repo) so the registry's search and category filters surface this artifact.
README has usage / example sections
found: Installation · Quick Start
Homepage / docs URL declared
no homepage declared (registry will use the repo URL) — info-only, not blocking
Release history
1- releasecurrent9fd7096warn2 weeks ago
Contents
A comprehensive agent skill for building production-ready notification systems across multiple channels. Covers everything from email deliverability to push permission priming, with a focus on user experience and reliability.
For AI Agents & Developers: This skill provides structured guidance for implementing notifications with the Courier API. Use it to send emails, SMS, push notifications, Slack messages, and more through a unified interface.
Why Use This Skill
- Multi-channel notifications — Send messages via email, SMS, push, Slack, Microsoft Teams, WhatsApp, and in-app inbox from a single API
- Production-ready patterns — Battle-tested code examples for authentication flows, order updates, billing alerts, and more
- Developer-first — TypeScript, Python, CLI, and curl examples for key patterns
Who This Is For
- Developers building SaaS, e-commerce, marketplaces, or mobile apps
- Teams consolidating notification providers into a single API
- Engineers implementing user preferences, unsubscribe handling, or multi-channel routing
Installation
Cursor (global, available in all projects):
git clone https://github.com/trycourier/courier-skills.git ~/.cursor/skills/courier-skills
Cursor (project-specific):
git clone https://github.com/trycourier/courier-skills.git .cursor/skills/courier-skills
Claude Code:
git clone https://github.com/trycourier/courier-skills.git ~/.claude/skills/courier-skills
Claude Code discovers skills from ~/.claude/skills/ automatically. The skill's SKILL.md frontmatter (name and description fields) is used for discovery — no additional configuration needed.
Other AI Assistants (Windsurf, Cline, etc.):
Clone to the skill directory supported by your assistant, or point it at the SKILL.md file manually. The skill follows standard markdown conventions and works with any AI coding tool that supports agent skills.
What This Skill Covers
Channels
- Email (deliverability, SPF/DKIM/DMARC, design)
- SMS (10DLC registration, character limits)
- Push notifications (iOS/Android, permission priming)
- In-app inbox (real-time, badges, read states)
- Slack (Block Kit, bot setup)
- Microsoft Teams (Adaptive Cards)
- WhatsApp (templates, 24hr window)
Transactional Notifications
- Authentication (password reset, OTP, verification, security alerts)
- Orders (confirmation, shipping, delivery)
- Billing (receipts, dunning, subscriptions)
- Appointments (booking, reminders, rescheduling)
- Account (welcome, profile updates, settings)
Growth Notifications
- Onboarding (activation, first value, setup)
- Feature adoption (discovery, education, milestones)
- Engagement (activity, retention, habits)
- Re-engagement (winback, cart abandonment)
- Referral (viral loops, invites, rewards)
- Campaigns (promotional, upgrades)
Cross-Cutting Guides
- Quickstart (send your first notification)
- Multi-channel orchestration and routing
- User preference management
- Reliability (idempotency, retry logic, webhook signature verification)
- Batching and digests
- Throttling and rate limiting
- Notification catalog by app type
- Journeys (multi-step notification sequences via API — delays, branches, throttling)
- Template management (CRUD, versioning, publish lifecycle)
- Elemental content format (element types, control flow, localization)
- Reusable code patterns (idempotency, consent, quiet hours, masking, retry)
- CLI (ad-hoc operations, debugging, agent workflows)
- MCP Server (structured API access for AI agents, setup for all editors)
- General migration (from any custom or third-party system)
- Migrate from Knock (concept mapping, code migration)
- Migrate from Novu (concept mapping, code migration)
Structure
courier-skills/
├── SKILL.md # Start here - routes to the right resource
├── README.md # This file
└── resources/
├── channels/ # Channel-specific best practices
│ ├── email.md
│ ├── sms.md
│ ├── push.md
│ ├── inbox.md
│ ├── inbox-v7-legacy.md
│ ├── slack.md
│ ├── ms-teams.md
│ └── whatsapp.md
├── transactional/ # Transactional notification types
│ ├── index.md
│ ├── authentication.md
│ ├── orders.md
│ ├── billing.md
│ ├── appointments.md
│ └── account.md
├── growth/ # Growth & lifecycle notifications
│ ├── index.md
│ ├── onboarding.md
│ ├── adoption.md
│ ├── engagement.md
│ ├── reengagement.md
│ ├── referral.md
│ └── campaigns.md
└── guides/ # Cross-cutting concerns
├── quickstart.md
├── cli.md
├── mcp.md
├── multi-channel.md
├── preferences.md
├── reliability.md
├── batching.md
├── throttling.md
├── catalog.md
├── journeys.md
├── templates.md
├── routing-strategies.md
├── providers.md
├── elemental.md
├── patterns.md
├── migrate-general.md
├── migrate-from-knock.md
└── migrate-from-novu.md
Quick Start
Open SKILL.md - it has a routing table that directs you to the right resource based on what you need to do.
Integrations & Providers
This skill covers best practices for working with:
| Channel | Providers |
|---|---|
| SendGrid, Amazon SES, Postmark, Mailgun, Resend, SparkPost | |
| SMS | Twilio, MessageBird, Vonage, Plivo, Telnyx |
| Push | Firebase Cloud Messaging (FCM), Apple Push Notification Service (APNs), Expo |
| Chat | Slack, Microsoft Teams |
| Messaging | WhatsApp Business API, Facebook Messenger |
Frequently Asked Questions
How do I send a notification with Courier?
Call client.send.message({ message: { to, template, data } }) with the Node SDK (@trycourier/courier) or client.send.message(message={...}) with the Python SDK (trycourier). Both SDKs read the API key from the COURIER_API_KEY environment variable by default. See the channel-specific guides for full examples.
What's the difference between transactional and marketing notifications?
Transactional notifications are triggered by user actions (password reset, order confirmation). Marketing notifications are sent proactively for engagement.
How do I handle notification preferences?
See resources/guides/preferences.md for implementing user preference centers, channel opt-outs, and frequency controls.
How do I ensure email deliverability?
Configure SPF, DKIM, and DMARC. Warm up your sending domain. Monitor bounce rates. Full guide in resources/channels/email.md.
What about rate limiting and throttling?
Courier handles provider rate limits automatically. For custom throttling logic, see resources/guides/throttling.md.
Contributing
Found an issue or want to add a notification pattern? PRs welcome.
License
MIT © Courier, Inc.
Built for the Courier notification platform. Works with any AI coding assistant that supports agent skills.
Reviews
No reviews yet. Be the first.
Related
Verification Before Completion
Evidence before assertions, always
Writing Plans
Turn specs into phased implementation plans
Test-Driven Development
Red → green → refactor discipline for any feature or bugfix
mh install skills/courier-notification-skills