home / skills / wellapp-ai / well / slack-announce
This skill helps you generate copy-ready Slack messages for PRs, hotfixes, deploys, and incidents to streamline team communication.
npx playbooks add skill wellapp-ai/well --skill slack-announceReview the files below or copy the command above to add this skill to your agents.
---
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)
This skill generates copy-ready, formatted Slack messages for team announcements like PRs, hotfixes, deploys, and incidents. It streamlines message composition by selecting emojis, collecting context, and adding a human-friendly closing so posts are consistent and engaging. Use it to speed up communication and reduce manual formatting.
The skill inspects the announcement type (pr, hotfix, deploy, incident) and gathers required context such as feature name, PR URL, reviewer handle, version/tag, affected systems, and a short summary. It picks appropriate emojis, chooses a domain- and type-aware closing line, and applies a template for the final Slack message. Output is a copy-ready message or an optional payload to send via Slack MCP if configured.
Can this skill post messages automatically to Slack?
Yes โ if Slack MCP is configured and a bot token plus channel ID are provided, the skill can send messages automatically. Otherwise it outputs a copy-ready message for manual posting.
How does the skill choose a fun closing line?
It first tries domain-specific closings, then type-specific ones, falls back to generic options, and rotates choices to avoid repeating the same closing twice in a row.