---
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)