slack-announce
npx skills add https://github.com/wellapp-ai/well --skill slack-announce
Agent 安装分布
Skill 文档
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
- First, try domain-specific closing if domain is detected
- Then, try type-specific closing based on commit type
- Fall back to generic if no match
- 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:writescope - 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)