--- name: slack-announce description: Generate formatted Slack messages for team communication --- # Slack Announce Skill Generate copy-ready Slack messages for various team announcements. ## When to Use - Push PR mode: announce new PR - Hotfix mode: urgent fix notification - Deploy notifications - Incident communication ## Phases ### Phase 1: Determine Message Type Identify the type of announcement: | Type | Context | Priority | |------|---------|----------| | `pr` | New PR created | Normal | | `hotfix` | Urgent production fix | High | | `deploy` | Deployment to environment | Normal | | `incident` | Production issue | Critical | ### Phase 2: Gather Context Collect required information based on type: **For PR:** - Feature name (from branch or PR title) - PR URL - Notion task URL - Reviewer name and handle - Domain name **For Hotfix:** - Issue description - Affected systems - PR URL (if applicable) - Urgency level **For Deploy:** - Version/tag - Environment (test/production) - Key changes summary ### Phase 3: Select Emoji **By message type:** | Type | Primary Emoji | Secondary Emojis | |------|---------------|------------------| | pr (feat) | ๐Ÿš€ | ๐Ÿ“‹ ๐Ÿ”— ๐Ÿ‘€ | | pr (fix) | ๐Ÿ”ง | ๐Ÿ“‹ ๐Ÿ”— ๐Ÿ‘€ | | pr (chore) | ๐Ÿงน | ๐Ÿ“‹ ๐Ÿ”— ๐Ÿ‘€ | | pr (docs) | ๐Ÿ“š | ๐Ÿ“‹ ๐Ÿ”— ๐Ÿ‘€ | | pr (refactor) | โ™ป๏ธ | ๐Ÿ“‹ ๐Ÿ”— ๐Ÿ‘€ | | hotfix | โš ๏ธ | ๐Ÿ”ฅ ๐Ÿšจ | | deploy | โœ… | ๐ŸŽ‰ ๐Ÿ“ฆ | | incident | ๐Ÿšจ | โš ๏ธ ๐Ÿ”ด | ### Phase 4: Generate Fun Closing Select a closing that matches the **PR context**. Be human, be fun, be relevant. #### By PR Type **Features (feat):** ``` - "Feature flag? Where we're going, we don't need feature flags ๐Ÿš—" - "Users asked, we delivered ๐Ÿ“ฆ" - "Fresh code, hot off the keyboard! โŒจ๏ธ๐Ÿ”ฅ" - "Time to make some bytes dance! ๐Ÿ’ƒ" - "Let's gooooo! ๐ŸŽธ" ``` **Fixes (fix):** ``` - "Bug squashed. No insects were harmed ๐Ÿ›โœจ" - "It's not a bug, it was an undocumented feature ๐Ÿ“" - "Another bug bites the dust ๐ŸŽต" - "Sleep well tonight, this one's fixed ๐Ÿ˜ด" ``` **Refactors (refactor):** ``` - "Same same, but different, but still same ๐Ÿ”„" - "If it ain't broke... refactor it anyway โ™ป๏ธ" - "Deleting code is my love language ๐Ÿ’•" - "Less is more. Literally, we deleted stuff ๐Ÿ—‘๏ธ" ``` **Chores (chore):** ``` - "The unglamorous work that makes the magic happen โœจ" - "Housekeeping complete, the codebase says thank you ๐Ÿ " - "Ctrl+S, Ctrl+Ship! ๐Ÿšข" - "Another day, another deploy (hopefully) ๐Ÿคž" ``` **Docs (docs):** ``` - "Future us will thank present us ๐Ÿ“š" - "Documentation: because tribal knowledge doesn't scale ๐Ÿง " - "README? More like READ-ME-PLEASE ๐Ÿ™" ``` #### By Domain (Contextual) **Cursor Rules / AI Workflow:** ``` - "Teaching the AI new tricks! ๐ŸŽ“๐Ÿค–" - "The machines are learning... from us, for once ๐Ÿง " - "The rules now have rules about rules ๐Ÿคฏ" - "25 skills walk into a codebase... ๐Ÿšถโ€โ™‚๏ธ" - "Now with 100% more patine (it's French, we're fancy) ๐Ÿฅ" ``` **Tables / Data:** ``` - "Rows and columns, living in harmony ๐Ÿ“Š" - "Data goes in, insights come out ๐Ÿ”ฎ" ``` **Auth / Security:** ``` - "Keeping the bad guys out since [current_year] ๐Ÿ”" - "Trust no one. Except this PR. Trust this PR ๐Ÿค" ``` **Payments / Billing:** ``` - "Making money moves ๐Ÿ’ฐ" - "Cha-ching! ๐Ÿ’ต" ``` #### Generic (Fallback) ``` - "Shipping it before my coffee gets cold โ˜•" - "May the code review gods be merciful ๐Ÿ™" - "Works on my machineโ„ข ๐Ÿ’ป" - "One small commit for dev, one giant leap for the product ๐ŸŒ™" ``` #### Hotfixes (Serious but Human) ``` - "On it! ๐Ÿ”ฅ" - "Fix incoming, hold tight! ๐Ÿƒโ€โ™‚๏ธ" - "Crisis averted. Coffee break earned โ˜•" - "The bat-signal was answered ๐Ÿฆ‡" ``` #### Selection Logic 1. First, try **domain-specific** closing if domain is detected 2. Then, try **type-specific** closing based on commit type 3. Fall back to **generic** if no match 4. **Rotate** - don't repeat the same closing twice in a row ### Phase 5: Format Message **PR Template:** ``` [emoji] **[Feature Name]** [Two-liner: what this does + why it matters] ๐Ÿ“‹ Notion: [notion-link] ๐Ÿ”— PR: [github-pr-link] ๐Ÿ‘€ Reviewer: @[handle] (auto-assigned from [domain]) [Fun closing] ``` **Hotfix Template:** ``` โš ๏ธ **HOTFIX: [Issue Title]** ๐Ÿ”ด **Impact:** [affected systems/users] ๐Ÿ”ง **Fix:** [brief description] ๐Ÿ”— PR: [github-pr-link] ๐Ÿ‘€ Reviewer: @[handle] [Closing] ``` **Deploy Template:** ``` โœ… **Deployed to [Environment]** ๐Ÿ“ฆ Version: [tag/version] ๐Ÿ“ Changes: - [bullet 1] - [bullet 2] ๐ŸŽ‰ Ship it! ``` --- ## Output Present the formatted message in a copyable code block: ``` ## Slack Message (copy-ready) [Formatted message here - ready to paste into Slack] ``` --- ## Slack MCP Integration (Optional) If Slack MCP is configured, messages can be sent automatically. ### Phase 6: Send via Slack MCP **Prerequisites:** - Slack MCP server installed and configured - Bot token with `chat:write` scope - Channel ID for announcements **Send message:** ``` Slack MCP: tool: send_message arguments: channel: "[CHANNEL_ID]" text: "[formatted message from Phase 5]" ``` **Fallback:** If Slack MCP not available, output copy-ready message for manual posting. ### Setup Instructions See `setup` skill Phase 9 for Slack MCP installation. --- ## Integration This skill is invoked by: - `push-pr.mdc` - Phase 3.1 (Announce) - `pr-threshold` - When threshold crossed (optional notification) - `hotfix/SKILL.md` - Urgent notification - Deploy scripts (future)