{"id":48698018,"url":"https://github.com/trycourier/courier-skills","last_synced_at":"2026-06-21T06:31:38.028Z","repository":{"id":335524599,"uuid":"1145569115","full_name":"trycourier/courier-skills","owner":"trycourier","description":"AI agent skill for building production-ready notifications across email, SMS, push, in-app, Slack, Teams, and WhatsApp. Covers deliverability, compliance, and growth patterns.","archived":false,"fork":false,"pushed_at":"2026-05-20T20:48:32.000Z","size":374,"stargazers_count":9,"open_issues_count":0,"forks_count":2,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-21T02:28:20.607Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/trycourier.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-30T00:06:35.000Z","updated_at":"2026-05-20T20:48:36.000Z","dependencies_parsed_at":"2026-04-27T04:00:45.762Z","dependency_job_id":null,"html_url":"https://github.com/trycourier/courier-skills","commit_stats":null,"previous_names":["trycourier/courier-skills"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/trycourier/courier-skills","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trycourier%2Fcourier-skills","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trycourier%2Fcourier-skills/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trycourier%2Fcourier-skills/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trycourier%2Fcourier-skills/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/trycourier","download_url":"https://codeload.github.com/trycourier/courier-skills/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trycourier%2Fcourier-skills/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34597337,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-21T02:00:05.568Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-04-11T09:00:29.006Z","updated_at":"2026-06-21T06:31:38.016Z","avatar_url":"https://github.com/trycourier.png","language":null,"funding_links":[],"categories":["Sponsors ❤️"],"sub_categories":["Skills by Courier"],"readme":"# Courier Notification Skills\n\nA 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.\n\n\u003e **For AI Agents \u0026 Developers**: This skill provides structured guidance for implementing notifications with the [Courier API](https://www.courier.com). Use it to send emails, SMS, push notifications, Slack messages, and more through a unified interface.\n\n## Why Use This Skill\n\n- **Multi-channel notifications** — Send messages via email, SMS, push, Slack, Microsoft Teams, WhatsApp, and in-app inbox from a single API\n- **Production-ready patterns** — Battle-tested code examples for authentication flows, order updates, billing alerts, and more\n- **Developer-first** — TypeScript, Python, CLI, and curl examples for key patterns\n\n## Who This Is For\n\n- Developers building SaaS, e-commerce, marketplaces, or mobile apps\n- Teams consolidating notification providers into a single API\n- Engineers implementing user preferences, unsubscribe handling, or multi-channel routing\n\n## Installation\n\n**Cursor** (global, available in all projects):\n\n```bash\ngit clone https://github.com/trycourier/courier-skills.git ~/.cursor/skills/courier-skills\n```\n\n**Cursor** (project-specific):\n\n```bash\ngit clone https://github.com/trycourier/courier-skills.git .cursor/skills/courier-skills\n```\n\n**Claude Code**:\n\n```bash\ngit clone https://github.com/trycourier/courier-skills.git ~/.claude/skills/courier-skills\n```\n\nClaude 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.\n\n**Other AI Assistants** (Windsurf, Cline, etc.):\n\nClone 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.\n\n## What This Skill Covers\n\n**Channels**\n- Email (deliverability, SPF/DKIM/DMARC, design)\n- SMS (10DLC registration, character limits)\n- Push notifications (iOS/Android, permission priming)\n- In-app inbox (real-time, badges, read states)\n- Slack (Block Kit, bot setup)\n- Microsoft Teams (Adaptive Cards)\n- WhatsApp (templates, 24hr window)\n\n**Transactional Notifications**\n- Authentication (password reset, OTP, verification, security alerts)\n- Orders (confirmation, shipping, delivery)\n- Billing (receipts, dunning, subscriptions)\n- Appointments (booking, reminders, rescheduling)\n- Account (welcome, profile updates, settings)\n\n**Growth Notifications**\n- Onboarding (activation, first value, setup)\n- Feature adoption (discovery, education, milestones)\n- Engagement (activity, retention, habits)\n- Re-engagement (winback, cart abandonment)\n- Referral (viral loops, invites, rewards)\n- Campaigns (promotional, upgrades)\n\n**Cross-Cutting Guides**\n- Quickstart (send your first notification)\n- Multi-channel orchestration and routing\n- User preference management\n- Reliability (idempotency, retry logic, webhook signature verification)\n- Batching and digests\n- Throttling and rate limiting\n- Notification catalog by app type\n- Journeys (multi-step notification sequences via API — delays, branches, throttling)\n- Template management (CRUD, versioning, publish lifecycle)\n- Elemental content format (element types, control flow, localization)\n- Reusable code patterns (idempotency, consent, quiet hours, masking, retry)\n- CLI (ad-hoc operations, debugging, agent workflows)\n- MCP Server (structured API access for AI agents, setup for all editors)\n- General migration (from any custom or third-party system)\n- Migrate from Knock (concept mapping, code migration)\n- Migrate from Novu (concept mapping, code migration)\n\n## Structure\n\n```\ncourier-skills/\n├── SKILL.md                    # Start here - routes to the right resource\n├── README.md                   # This file\n└── resources/\n    ├── channels/               # Channel-specific best practices\n    │   ├── email.md\n    │   ├── sms.md\n    │   ├── push.md\n    │   ├── inbox.md\n    │   ├── inbox-v7-legacy.md\n    │   ├── slack.md\n    │   ├── ms-teams.md\n    │   └── whatsapp.md\n    ├── transactional/          # Transactional notification types\n    │   ├── index.md\n    │   ├── authentication.md\n    │   ├── orders.md\n    │   ├── billing.md\n    │   ├── appointments.md\n    │   └── account.md\n    ├── growth/                 # Growth \u0026 lifecycle notifications\n    │   ├── index.md\n    │   ├── onboarding.md\n    │   ├── adoption.md\n    │   ├── engagement.md\n    │   ├── reengagement.md\n    │   ├── referral.md\n    │   └── campaigns.md\n    └── guides/                 # Cross-cutting concerns\n        ├── quickstart.md\n        ├── cli.md\n        ├── mcp.md\n        ├── multi-channel.md\n        ├── preferences.md\n        ├── reliability.md\n        ├── batching.md\n        ├── throttling.md\n        ├── catalog.md\n        ├── journeys.md\n        ├── templates.md\n        ├── routing-strategies.md\n        ├── providers.md\n        ├── elemental.md\n        ├── patterns.md\n        ├── migrate-general.md\n        ├── migrate-from-knock.md\n        └── migrate-from-novu.md\n```\n\n## Quick Start\n\nOpen `SKILL.md` - it has a routing table that directs you to the right resource based on what you need to do.\n\n## Integrations \u0026 Providers\n\nThis skill covers best practices for working with:\n\n| Channel | Providers |\n|---------|-----------|\n| Email | SendGrid, Amazon SES, Postmark, Mailgun, Resend, SparkPost |\n| SMS | Twilio, MessageBird, Vonage, Plivo, Telnyx |\n| Push | Firebase Cloud Messaging (FCM), Apple Push Notification Service (APNs), Expo |\n| Chat | Slack, Microsoft Teams |\n| Messaging | WhatsApp Business API, Facebook Messenger |\n\n## Frequently Asked Questions\n\n**How do I send a notification with Courier?**  \nCall `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.\n\n**What's the difference between transactional and marketing notifications?**  \nTransactional notifications are triggered by user actions (password reset, order confirmation). Marketing notifications are sent proactively for engagement.\n\n**How do I handle notification preferences?**  \nSee `resources/guides/preferences.md` for implementing user preference centers, channel opt-outs, and frequency controls.\n\n**How do I ensure email deliverability?**  \nConfigure SPF, DKIM, and DMARC. Warm up your sending domain. Monitor bounce rates. Full guide in `resources/channels/email.md`.\n\n**What about rate limiting and throttling?**\nCourier handles provider rate limits automatically. For custom throttling logic, see `resources/guides/throttling.md`.\n\n## Contributing\n\nFound an issue or want to add a notification pattern? PRs welcome.\n\n## License\n\n[MIT](./LICENSE) © Courier, Inc.\n\n---\n\nBuilt for the [Courier](https://www.courier.com) notification platform. Works with any AI coding assistant that supports agent skills.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftrycourier%2Fcourier-skills","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftrycourier%2Fcourier-skills","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftrycourier%2Fcourier-skills/lists"}