[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-knock-knock-notification-best-practices":3,"mdc-t9ohje-key":32,"related-org-knock-knock-notification-best-practices":686,"related-repo-knock-knock-notification-best-practices":785},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":23,"repoUrl":24,"updatedAt":25,"license":26,"forks":23,"topics":27,"repo":28,"sourceUrl":30,"mdContent":31},"knock-notification-best-practices","design effective notification systems","Comprehensive guidelines for designing, writing, and implementing effective notification systems across email, push, SMS, in-app, and chat channels.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"knock","Knock","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fknock.png","knocklabs",[13,17,20],{"name":14,"slug":15,"type":16},"Best Practices","best-practices","tag",{"name":18,"slug":19,"type":16},"Messaging","messaging",{"name":21,"slug":22,"type":16},"Communications","communications",0,"https:\u002F\u002Fgithub.com\u002Fknocklabs\u002Fskills","2026-07-14T05:23:54.812153",null,[],{"repoUrl":24,"stars":23,"forks":23,"topics":29,"description":26},[],"https:\u002F\u002Fgithub.com\u002Fknocklabs\u002Fskills\u002Ftree\u002FHEAD\u002Fskills\u002Fknock-notification-best-practices","---\nname: knock-notification-best-practices\ndescription: Comprehensive guidelines for designing, writing, and implementing effective notification systems across email, push, SMS, in-app, and chat channels.\n---\n\n# Notification best practices skill\n\nThis skill provides comprehensive guidelines and best practices for designing, writing, and implementing effective notification systems across all channels.\n\n## Overview\n\nThe notification best practices skill includes six detailed rule sets covering:\n\n1. **Channel-specific notification guidelines** - Specifications for email, push, SMS, in-app, and chat notifications\n2. **Notification copy best practices** - Core principles for writing effective notification copy\n3. **Notification system implementation rules** - Technical implementation guidelines including timing, preferences, error handling, and compliance\n4. **Notification template examples** - Ready-to-use templates for common notification use cases\n5. **Transactional email best practices** - Deliverability, templates, localization, and dynamic content for transactional emails\n6. **Welcome email best practices** - Guidelines for crafting effective SaaS welcome emails\n\n## How to use this skill\n\n### For writing notifications\n\nWhen you need to write notification copy:\n\n1. **Start with copy best practices** (`rules\u002Fnotification-copy-best-practices.md`)\n   - Follow core principles: be specific, include context, use active voice\n   - Choose the right tone and structure for your notification type\n\n2. **Check channel-specific guidelines** (`rules\u002Fchannel-specific-notifications-guidelines.md`)\n   - Verify character limits for your target channel\n   - Follow channel-specific formatting requirements\n   - Ensure your message fits the channel's constraints\n\n3. **Reference templates** (`rules\u002Fnotification-template-examples.md`)\n   - Find similar use cases to your notification\n   - Adapt template structure and variables\n   - Use provided examples as starting points\n\n### For email notifications\n\nWhen working with email notifications:\n\n1. **Review transactional email best practices** (`rules\u002Ftransactional-email-best-practices.md`)\n   - Follow deliverability guidelines\n   - Use componentized templates and partials\n   - Implement proper localization\n\n2. **For welcome emails specifically** (`rules\u002Fwelcome-email-best-practices.md`)\n   - Choose the right pattern for your product\n   - Follow timing best practices\n   - Focus on value and clear CTAs\n\n### For system implementation\n\nWhen implementing a notification system:\n\n1. **Follow system implementation rules** (`rules\u002Fnotification-system-implementation.md`)\n   - Understand channel selection criteria\n   - Implement proper timing and frequency controls\n   - Set up preference management\n   - Handle errors and retries correctly\n   - Ensure compliance with regulations\n\n2. **Use channel-specific guidelines** for technical constraints\n   - Character limits\n   - Formatting requirements\n   - Delivery specifications\n\n## Rule files reference\n\n- `rules\u002Fchannel-specific-notifications-guidelines.md` - Channel specifications and constraints\n- `rules\u002Fnotification-copy-best-practices.md` - Writing principles and guidelines\n- `rules\u002Fnotification-system-implementation.md` - Technical implementation rules\n- `rules\u002Fnotification-template-examples.md` - Template library with examples\n- `rules\u002Ftransactional-email-best-practices.md` - Email-specific best practices\n- `rules\u002Fwelcome-email-best-practices.md` - Welcome email patterns and guidelines\n\n## Quick reference\n\n### Channel selection\n- **Email**: Persistent reference, detailed content, non-time-critical\n- **Push**: Time-sensitive, requires app return, urgent actions\n- **SMS**: Guaranteed delivery, authentication, extreme time-criticality\n- **In-app**: User active in product, can wait until next session\n- **Chat**: Team collaboration, immediate visibility needed\n\n### Copy principles\n- Be specific and actionable\n- Include maximum context\n- Use active voice\n- Maintain consistent terminology\n- Format for each channel\n\n### Common patterns\n- Transactional: Confirm what happened, include identifiers, provide next steps\n- System: Translate technical events to user impact, offer actionable steps\n- Lifecycle: Balance value with frequency, use social proof appropriately\n- Promotional: Lead with benefits, make offers specific and time-bound\n\n## Best practices summary\n\n1. **Always provide context** - Users need enough information to decide whether to act\n2. **Respect channel constraints** - Follow character limits and formatting requirements\n3. **Use appropriate timing** - Consider immediate vs. batched vs. scheduled sends\n4. **Implement preferences** - Give users control over notification types and channels\n5. **Test thoroughly** - Verify across channels, devices, and with real data\n6. **Monitor and optimize** - Track delivery, engagement, and user satisfaction metrics\n",{"data":33,"body":34},{"name":4,"description":6},{"type":35,"children":36},"root",[37,46,52,59,64,130,136,143,148,252,258,263,334,340,345,420,426,489,495,501,554,560,588,594,617,623],{"type":38,"tag":39,"props":40,"children":42},"element","h1",{"id":41},"notification-best-practices-skill",[43],{"type":44,"value":45},"text","Notification best practices skill",{"type":38,"tag":47,"props":48,"children":49},"p",{},[50],{"type":44,"value":51},"This skill provides comprehensive guidelines and best practices for designing, writing, and implementing effective notification systems across all channels.",{"type":38,"tag":53,"props":54,"children":56},"h2",{"id":55},"overview",[57],{"type":44,"value":58},"Overview",{"type":38,"tag":47,"props":60,"children":61},{},[62],{"type":44,"value":63},"The notification best practices skill includes six detailed rule sets covering:",{"type":38,"tag":65,"props":66,"children":67},"ol",{},[68,80,90,100,110,120],{"type":38,"tag":69,"props":70,"children":71},"li",{},[72,78],{"type":38,"tag":73,"props":74,"children":75},"strong",{},[76],{"type":44,"value":77},"Channel-specific notification guidelines",{"type":44,"value":79}," - Specifications for email, push, SMS, in-app, and chat notifications",{"type":38,"tag":69,"props":81,"children":82},{},[83,88],{"type":38,"tag":73,"props":84,"children":85},{},[86],{"type":44,"value":87},"Notification copy best practices",{"type":44,"value":89}," - Core principles for writing effective notification copy",{"type":38,"tag":69,"props":91,"children":92},{},[93,98],{"type":38,"tag":73,"props":94,"children":95},{},[96],{"type":44,"value":97},"Notification system implementation rules",{"type":44,"value":99}," - Technical implementation guidelines including timing, preferences, error handling, and compliance",{"type":38,"tag":69,"props":101,"children":102},{},[103,108],{"type":38,"tag":73,"props":104,"children":105},{},[106],{"type":44,"value":107},"Notification template examples",{"type":44,"value":109}," - Ready-to-use templates for common notification use cases",{"type":38,"tag":69,"props":111,"children":112},{},[113,118],{"type":38,"tag":73,"props":114,"children":115},{},[116],{"type":44,"value":117},"Transactional email best practices",{"type":44,"value":119}," - Deliverability, templates, localization, and dynamic content for transactional emails",{"type":38,"tag":69,"props":121,"children":122},{},[123,128],{"type":38,"tag":73,"props":124,"children":125},{},[126],{"type":44,"value":127},"Welcome email best practices",{"type":44,"value":129}," - Guidelines for crafting effective SaaS welcome emails",{"type":38,"tag":53,"props":131,"children":133},{"id":132},"how-to-use-this-skill",[134],{"type":44,"value":135},"How to use this skill",{"type":38,"tag":137,"props":138,"children":140},"h3",{"id":139},"for-writing-notifications",[141],{"type":44,"value":142},"For writing notifications",{"type":38,"tag":47,"props":144,"children":145},{},[146],{"type":44,"value":147},"When you need to write notification copy:",{"type":38,"tag":65,"props":149,"children":150},{},[151,184,218],{"type":38,"tag":69,"props":152,"children":153},{},[154,159,161,168,170],{"type":38,"tag":73,"props":155,"children":156},{},[157],{"type":44,"value":158},"Start with copy best practices",{"type":44,"value":160}," (",{"type":38,"tag":162,"props":163,"children":165},"code",{"className":164},[],[166],{"type":44,"value":167},"rules\u002Fnotification-copy-best-practices.md",{"type":44,"value":169},")",{"type":38,"tag":171,"props":172,"children":173},"ul",{},[174,179],{"type":38,"tag":69,"props":175,"children":176},{},[177],{"type":44,"value":178},"Follow core principles: be specific, include context, use active voice",{"type":38,"tag":69,"props":180,"children":181},{},[182],{"type":44,"value":183},"Choose the right tone and structure for your notification type",{"type":38,"tag":69,"props":185,"children":186},{},[187,192,193,199,200],{"type":38,"tag":73,"props":188,"children":189},{},[190],{"type":44,"value":191},"Check channel-specific guidelines",{"type":44,"value":160},{"type":38,"tag":162,"props":194,"children":196},{"className":195},[],[197],{"type":44,"value":198},"rules\u002Fchannel-specific-notifications-guidelines.md",{"type":44,"value":169},{"type":38,"tag":171,"props":201,"children":202},{},[203,208,213],{"type":38,"tag":69,"props":204,"children":205},{},[206],{"type":44,"value":207},"Verify character limits for your target channel",{"type":38,"tag":69,"props":209,"children":210},{},[211],{"type":44,"value":212},"Follow channel-specific formatting requirements",{"type":38,"tag":69,"props":214,"children":215},{},[216],{"type":44,"value":217},"Ensure your message fits the channel's constraints",{"type":38,"tag":69,"props":219,"children":220},{},[221,226,227,233,234],{"type":38,"tag":73,"props":222,"children":223},{},[224],{"type":44,"value":225},"Reference templates",{"type":44,"value":160},{"type":38,"tag":162,"props":228,"children":230},{"className":229},[],[231],{"type":44,"value":232},"rules\u002Fnotification-template-examples.md",{"type":44,"value":169},{"type":38,"tag":171,"props":235,"children":236},{},[237,242,247],{"type":38,"tag":69,"props":238,"children":239},{},[240],{"type":44,"value":241},"Find similar use cases to your notification",{"type":38,"tag":69,"props":243,"children":244},{},[245],{"type":44,"value":246},"Adapt template structure and variables",{"type":38,"tag":69,"props":248,"children":249},{},[250],{"type":44,"value":251},"Use provided examples as starting points",{"type":38,"tag":137,"props":253,"children":255},{"id":254},"for-email-notifications",[256],{"type":44,"value":257},"For email notifications",{"type":38,"tag":47,"props":259,"children":260},{},[261],{"type":44,"value":262},"When working with email notifications:",{"type":38,"tag":65,"props":264,"children":265},{},[266,300],{"type":38,"tag":69,"props":267,"children":268},{},[269,274,275,281,282],{"type":38,"tag":73,"props":270,"children":271},{},[272],{"type":44,"value":273},"Review transactional email best practices",{"type":44,"value":160},{"type":38,"tag":162,"props":276,"children":278},{"className":277},[],[279],{"type":44,"value":280},"rules\u002Ftransactional-email-best-practices.md",{"type":44,"value":169},{"type":38,"tag":171,"props":283,"children":284},{},[285,290,295],{"type":38,"tag":69,"props":286,"children":287},{},[288],{"type":44,"value":289},"Follow deliverability guidelines",{"type":38,"tag":69,"props":291,"children":292},{},[293],{"type":44,"value":294},"Use componentized templates and partials",{"type":38,"tag":69,"props":296,"children":297},{},[298],{"type":44,"value":299},"Implement proper localization",{"type":38,"tag":69,"props":301,"children":302},{},[303,308,309,315,316],{"type":38,"tag":73,"props":304,"children":305},{},[306],{"type":44,"value":307},"For welcome emails specifically",{"type":44,"value":160},{"type":38,"tag":162,"props":310,"children":312},{"className":311},[],[313],{"type":44,"value":314},"rules\u002Fwelcome-email-best-practices.md",{"type":44,"value":169},{"type":38,"tag":171,"props":317,"children":318},{},[319,324,329],{"type":38,"tag":69,"props":320,"children":321},{},[322],{"type":44,"value":323},"Choose the right pattern for your product",{"type":38,"tag":69,"props":325,"children":326},{},[327],{"type":44,"value":328},"Follow timing best practices",{"type":38,"tag":69,"props":330,"children":331},{},[332],{"type":44,"value":333},"Focus on value and clear CTAs",{"type":38,"tag":137,"props":335,"children":337},{"id":336},"for-system-implementation",[338],{"type":44,"value":339},"For system implementation",{"type":38,"tag":47,"props":341,"children":342},{},[343],{"type":44,"value":344},"When implementing a notification system:",{"type":38,"tag":65,"props":346,"children":347},{},[348,392],{"type":38,"tag":69,"props":349,"children":350},{},[351,356,357,363,364],{"type":38,"tag":73,"props":352,"children":353},{},[354],{"type":44,"value":355},"Follow system implementation rules",{"type":44,"value":160},{"type":38,"tag":162,"props":358,"children":360},{"className":359},[],[361],{"type":44,"value":362},"rules\u002Fnotification-system-implementation.md",{"type":44,"value":169},{"type":38,"tag":171,"props":365,"children":366},{},[367,372,377,382,387],{"type":38,"tag":69,"props":368,"children":369},{},[370],{"type":44,"value":371},"Understand channel selection criteria",{"type":38,"tag":69,"props":373,"children":374},{},[375],{"type":44,"value":376},"Implement proper timing and frequency controls",{"type":38,"tag":69,"props":378,"children":379},{},[380],{"type":44,"value":381},"Set up preference management",{"type":38,"tag":69,"props":383,"children":384},{},[385],{"type":44,"value":386},"Handle errors and retries correctly",{"type":38,"tag":69,"props":388,"children":389},{},[390],{"type":44,"value":391},"Ensure compliance with regulations",{"type":38,"tag":69,"props":393,"children":394},{},[395,400,402],{"type":38,"tag":73,"props":396,"children":397},{},[398],{"type":44,"value":399},"Use channel-specific guidelines",{"type":44,"value":401}," for technical constraints",{"type":38,"tag":171,"props":403,"children":404},{},[405,410,415],{"type":38,"tag":69,"props":406,"children":407},{},[408],{"type":44,"value":409},"Character limits",{"type":38,"tag":69,"props":411,"children":412},{},[413],{"type":44,"value":414},"Formatting requirements",{"type":38,"tag":69,"props":416,"children":417},{},[418],{"type":44,"value":419},"Delivery specifications",{"type":38,"tag":53,"props":421,"children":423},{"id":422},"rule-files-reference",[424],{"type":44,"value":425},"Rule files reference",{"type":38,"tag":171,"props":427,"children":428},{},[429,439,449,459,469,479],{"type":38,"tag":69,"props":430,"children":431},{},[432,437],{"type":38,"tag":162,"props":433,"children":435},{"className":434},[],[436],{"type":44,"value":198},{"type":44,"value":438}," - Channel specifications and constraints",{"type":38,"tag":69,"props":440,"children":441},{},[442,447],{"type":38,"tag":162,"props":443,"children":445},{"className":444},[],[446],{"type":44,"value":167},{"type":44,"value":448}," - Writing principles and guidelines",{"type":38,"tag":69,"props":450,"children":451},{},[452,457],{"type":38,"tag":162,"props":453,"children":455},{"className":454},[],[456],{"type":44,"value":362},{"type":44,"value":458}," - Technical implementation rules",{"type":38,"tag":69,"props":460,"children":461},{},[462,467],{"type":38,"tag":162,"props":463,"children":465},{"className":464},[],[466],{"type":44,"value":232},{"type":44,"value":468}," - Template library with examples",{"type":38,"tag":69,"props":470,"children":471},{},[472,477],{"type":38,"tag":162,"props":473,"children":475},{"className":474},[],[476],{"type":44,"value":280},{"type":44,"value":478}," - Email-specific best practices",{"type":38,"tag":69,"props":480,"children":481},{},[482,487],{"type":38,"tag":162,"props":483,"children":485},{"className":484},[],[486],{"type":44,"value":314},{"type":44,"value":488}," - Welcome email patterns and guidelines",{"type":38,"tag":53,"props":490,"children":492},{"id":491},"quick-reference",[493],{"type":44,"value":494},"Quick reference",{"type":38,"tag":137,"props":496,"children":498},{"id":497},"channel-selection",[499],{"type":44,"value":500},"Channel selection",{"type":38,"tag":171,"props":502,"children":503},{},[504,514,524,534,544],{"type":38,"tag":69,"props":505,"children":506},{},[507,512],{"type":38,"tag":73,"props":508,"children":509},{},[510],{"type":44,"value":511},"Email",{"type":44,"value":513},": Persistent reference, detailed content, non-time-critical",{"type":38,"tag":69,"props":515,"children":516},{},[517,522],{"type":38,"tag":73,"props":518,"children":519},{},[520],{"type":44,"value":521},"Push",{"type":44,"value":523},": Time-sensitive, requires app return, urgent actions",{"type":38,"tag":69,"props":525,"children":526},{},[527,532],{"type":38,"tag":73,"props":528,"children":529},{},[530],{"type":44,"value":531},"SMS",{"type":44,"value":533},": Guaranteed delivery, authentication, extreme time-criticality",{"type":38,"tag":69,"props":535,"children":536},{},[537,542],{"type":38,"tag":73,"props":538,"children":539},{},[540],{"type":44,"value":541},"In-app",{"type":44,"value":543},": User active in product, can wait until next session",{"type":38,"tag":69,"props":545,"children":546},{},[547,552],{"type":38,"tag":73,"props":548,"children":549},{},[550],{"type":44,"value":551},"Chat",{"type":44,"value":553},": Team collaboration, immediate visibility needed",{"type":38,"tag":137,"props":555,"children":557},{"id":556},"copy-principles",[558],{"type":44,"value":559},"Copy principles",{"type":38,"tag":171,"props":561,"children":562},{},[563,568,573,578,583],{"type":38,"tag":69,"props":564,"children":565},{},[566],{"type":44,"value":567},"Be specific and actionable",{"type":38,"tag":69,"props":569,"children":570},{},[571],{"type":44,"value":572},"Include maximum context",{"type":38,"tag":69,"props":574,"children":575},{},[576],{"type":44,"value":577},"Use active voice",{"type":38,"tag":69,"props":579,"children":580},{},[581],{"type":44,"value":582},"Maintain consistent terminology",{"type":38,"tag":69,"props":584,"children":585},{},[586],{"type":44,"value":587},"Format for each channel",{"type":38,"tag":137,"props":589,"children":591},{"id":590},"common-patterns",[592],{"type":44,"value":593},"Common patterns",{"type":38,"tag":171,"props":595,"children":596},{},[597,602,607,612],{"type":38,"tag":69,"props":598,"children":599},{},[600],{"type":44,"value":601},"Transactional: Confirm what happened, include identifiers, provide next steps",{"type":38,"tag":69,"props":603,"children":604},{},[605],{"type":44,"value":606},"System: Translate technical events to user impact, offer actionable steps",{"type":38,"tag":69,"props":608,"children":609},{},[610],{"type":44,"value":611},"Lifecycle: Balance value with frequency, use social proof appropriately",{"type":38,"tag":69,"props":613,"children":614},{},[615],{"type":44,"value":616},"Promotional: Lead with benefits, make offers specific and time-bound",{"type":38,"tag":53,"props":618,"children":620},{"id":619},"best-practices-summary",[621],{"type":44,"value":622},"Best practices summary",{"type":38,"tag":65,"props":624,"children":625},{},[626,636,646,656,666,676],{"type":38,"tag":69,"props":627,"children":628},{},[629,634],{"type":38,"tag":73,"props":630,"children":631},{},[632],{"type":44,"value":633},"Always provide context",{"type":44,"value":635}," - Users need enough information to decide whether to act",{"type":38,"tag":69,"props":637,"children":638},{},[639,644],{"type":38,"tag":73,"props":640,"children":641},{},[642],{"type":44,"value":643},"Respect channel constraints",{"type":44,"value":645}," - Follow character limits and formatting requirements",{"type":38,"tag":69,"props":647,"children":648},{},[649,654],{"type":38,"tag":73,"props":650,"children":651},{},[652],{"type":44,"value":653},"Use appropriate timing",{"type":44,"value":655}," - Consider immediate vs. batched vs. scheduled sends",{"type":38,"tag":69,"props":657,"children":658},{},[659,664],{"type":38,"tag":73,"props":660,"children":661},{},[662],{"type":44,"value":663},"Implement preferences",{"type":44,"value":665}," - Give users control over notification types and channels",{"type":38,"tag":69,"props":667,"children":668},{},[669,674],{"type":38,"tag":73,"props":670,"children":671},{},[672],{"type":44,"value":673},"Test thoroughly",{"type":44,"value":675}," - Verify across channels, devices, and with real data",{"type":38,"tag":69,"props":677,"children":678},{},[679,684],{"type":38,"tag":73,"props":680,"children":681},{},[682],{"type":44,"value":683},"Monitor and optimize",{"type":44,"value":685}," - Track delivery, engagement, and user satisfaction metrics",{"items":687,"total":784},[688,702,719,736,751,757,770],{"slug":689,"name":689,"fn":690,"description":691,"org":692,"tags":693,"stars":23,"repoUrl":24,"updatedAt":701},"knock-cli","manage Knock notification resources via CLI","Guidelines for working with the Knock CLI to manage workflows, templates, and other notification resources in a Knock project.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[694,697,698],{"name":695,"slug":696,"type":16},"CLI","cli",{"name":18,"slug":19,"type":16},{"name":699,"slug":700,"type":16},"Notifications","notifications","2026-07-14T05:23:51.065051",{"slug":703,"name":703,"fn":704,"description":705,"org":706,"tags":707,"stars":23,"repoUrl":24,"updatedAt":718},"knock-in-app-ui","implement Knock in-app UI in React","Guidance for implementing Knock in-app UI in a web app, with a focus on setting up, rendering, and debugging Knock guides in React.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[708,711,712,715],{"name":709,"slug":710,"type":16},"Frontend","frontend",{"name":18,"slug":19,"type":16},{"name":713,"slug":714,"type":16},"React","react",{"name":716,"slug":717,"type":16},"UI Components","ui-components","2026-07-14T05:23:53.566839",{"slug":720,"name":720,"fn":721,"description":722,"org":723,"tags":724,"stars":23,"repoUrl":24,"updatedAt":735},"knock-lifecycle-opportunities","identify lifecycle messaging opportunities","Scan a product codebase for activation, engagement, and retention moments and recommend lifecycle messaging opportunities. Use when finding onboarding, churn, trial, or habit-forming notification candidates without creating Knock resources.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[725,728,731,732],{"name":726,"slug":727,"type":16},"Engagement","engagement",{"name":729,"slug":730,"type":16},"Marketing","marketing",{"name":18,"slug":19,"type":16},{"name":733,"slug":734,"type":16},"Product Management","product-management","2026-07-27T06:28:50.28638",{"slug":737,"name":737,"fn":738,"description":739,"org":740,"tags":741,"stars":23,"repoUrl":24,"updatedAt":750},"knock-migrate-to-knock","migrate messaging infrastructure to Knock","Investigate existing messaging infrastructure in a codebase and recommend how it maps to Knock. Use when migrating from Braze, Courier, Customer.io, Iterable, SendGrid, or custom notification code, or when planning a move to Knock.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[742,745,746,749],{"name":743,"slug":744,"type":16},"Infrastructure","infrastructure",{"name":18,"slug":19,"type":16},{"name":747,"slug":748,"type":16},"Migration","migration",{"name":699,"slug":700,"type":16},"2026-07-27T06:28:49.594684",{"slug":4,"name":4,"fn":5,"description":6,"org":752,"tags":753,"stars":23,"repoUrl":24,"updatedAt":25},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[754,755,756],{"name":14,"slug":15,"type":16},{"name":21,"slug":22,"type":16},{"name":18,"slug":19,"type":16},{"slug":758,"name":758,"fn":759,"description":760,"org":761,"tags":762,"stars":23,"repoUrl":24,"updatedAt":769},"knock-product-messaging-strategy","design cross-channel product messaging systems","Design a cross-channel product messaging system that drives activation, engagement, and retention while controlling fatigue. Use when planning lifecycle messaging, auditing notification strategy, prioritizing workflows, or turning product moments into Knock workflows, guides, preferences, and measurement.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[763,764,765,766],{"name":726,"slug":727,"type":16},{"name":18,"slug":19,"type":16},{"name":733,"slug":734,"type":16},{"name":767,"slug":768,"type":16},"Strategy","strategy","2026-07-27T06:28:49.935507",{"slug":771,"name":771,"fn":772,"description":773,"org":774,"tags":775,"stars":23,"repoUrl":24,"updatedAt":783},"knock-setup","integrate Knock notification workflows","Connect Knock to your coding agent, discover and build notification workflows, and recommend how to trigger them from your application.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[776,779,782],{"name":777,"slug":778,"type":16},"API Development","api-development",{"name":780,"slug":781,"type":16},"Automation","automation",{"name":18,"slug":19,"type":16},"2026-07-27T06:06:35.280117",7,{"items":786,"total":784},[787,793,800,807,814,820,827],{"slug":689,"name":689,"fn":690,"description":691,"org":788,"tags":789,"stars":23,"repoUrl":24,"updatedAt":701},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[790,791,792],{"name":695,"slug":696,"type":16},{"name":18,"slug":19,"type":16},{"name":699,"slug":700,"type":16},{"slug":703,"name":703,"fn":704,"description":705,"org":794,"tags":795,"stars":23,"repoUrl":24,"updatedAt":718},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[796,797,798,799],{"name":709,"slug":710,"type":16},{"name":18,"slug":19,"type":16},{"name":713,"slug":714,"type":16},{"name":716,"slug":717,"type":16},{"slug":720,"name":720,"fn":721,"description":722,"org":801,"tags":802,"stars":23,"repoUrl":24,"updatedAt":735},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[803,804,805,806],{"name":726,"slug":727,"type":16},{"name":729,"slug":730,"type":16},{"name":18,"slug":19,"type":16},{"name":733,"slug":734,"type":16},{"slug":737,"name":737,"fn":738,"description":739,"org":808,"tags":809,"stars":23,"repoUrl":24,"updatedAt":750},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[810,811,812,813],{"name":743,"slug":744,"type":16},{"name":18,"slug":19,"type":16},{"name":747,"slug":748,"type":16},{"name":699,"slug":700,"type":16},{"slug":4,"name":4,"fn":5,"description":6,"org":815,"tags":816,"stars":23,"repoUrl":24,"updatedAt":25},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[817,818,819],{"name":14,"slug":15,"type":16},{"name":21,"slug":22,"type":16},{"name":18,"slug":19,"type":16},{"slug":758,"name":758,"fn":759,"description":760,"org":821,"tags":822,"stars":23,"repoUrl":24,"updatedAt":769},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[823,824,825,826],{"name":726,"slug":727,"type":16},{"name":18,"slug":19,"type":16},{"name":733,"slug":734,"type":16},{"name":767,"slug":768,"type":16},{"slug":771,"name":771,"fn":772,"description":773,"org":828,"tags":829,"stars":23,"repoUrl":24,"updatedAt":783},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[830,831,832],{"name":777,"slug":778,"type":16},{"name":780,"slug":781,"type":16},{"name":18,"slug":19,"type":16}]