Agent skill
af-send-notifications
Send project notifications for events like setup completion and deployments. Use when posting to Zulip, formatting status updates, or triggering notification templates for project milestones.
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/other/other/af-send-notifications
SKILL.md
Communications Expertise
When to Use This Skill
Load this skill when you need to:
- Send notifications for project milestones
- Announce setup completion to project streams/channels
- Post deployment or release notices
- Share status updates with teams
Quick Reference
AgentFlow uses Zulip as the primary communication platform. Slack is legacy (gated behind SLACK_ENABLED=false by default).
Zulip (Primary)
Zulip notifications are sent via the Zulip API using bot credentials from Doppler:
| Parameter | Source |
|---|---|
ZULIP_BOT_EMAIL |
Doppler (agentview/prd) |
ZULIP_API_KEY |
Doppler (agentview/prd) |
ZULIP_REALM |
Doppler (agentview/prd) |
Sending a Zulip message:
curl -s -X POST "$ZULIP_REALM/api/v1/messages" \
-u "$ZULIP_BOT_EMAIL:$ZULIP_API_KEY" \
-d "type=stream" \
-d "to=engineering-team" \
-d "topic=AgentFlow Updates" \
--data-urlencode "content=Your message here"
Slack (Legacy)
Slack MCP tools are available but gated behind SLACK_ENABLED=true. By default Slack is disabled.
Available Slack MCP tools (legacy):
mcp__slack__slack_list_channels- List available channelsmcp__slack__slack_post_message- Post to a channelmcp__slack__slack_reply_to_thread- Reply in a threadmcp__slack__slack_get_channel_history- Read recent messages
Note: Only use Slack MCP tools when SLACK_ENABLED=true is set and the agent is running in Slack-enabled mode.
Message Templates
Greenfield Setup Complete
Project setup complete!
**{Project Name}**
GitHub: https://github.com/{owner}/{repo}
Linear: https://linear.app/gaininsight/team/{KEY}
Worktree: /srv/worktrees/{repo}/develop
Ready for development. Use `start-work {repo} {ISSUE-ID}` to begin.
Deployment Notice
Deployed to {environment}
**{Project Name}** v{version}
URL: {deployment-url}
Issues: {comma-separated issue IDs}
Changes:
- {Change 1}
- {Change 2}
Status Update
Status Update: **{Project Name}**
Completed: {list}
In Progress: {list}
Blocked: {list if any}
Workflow
Sending a Zulip Notification (Primary)
-
Determine the stream and topic:
- Use the project's configured Zulip stream (from project registry)
- Use a descriptive topic (e.g., "Deployments", "Setup", "AgentFlow Updates")
-
Post message:
bashcurl -s -X POST "$ZULIP_REALM/api/v1/messages" \ -u "$ZULIP_BOT_EMAIL:$ZULIP_API_KEY" \ -d "type=stream" \ -d "to={stream-name}" \ -d "topic={topic}" \ --data-urlencode "content={formatted message}" -
Handle errors:
- HTTP 401 -> Invalid bot credentials
- HTTP 400 -> Invalid stream or missing parameters
- Check
ZULIP_REALM,ZULIP_BOT_EMAIL,ZULIP_API_KEYare set
Sending a Slack Notification (Legacy)
Only when SLACK_ENABLED=true:
-
Check channel access:
mcp__slack__slack_list_channelsLook for
is_member: true -
Post message:
mcp__slack__slack_post_message - channel_id: [from list] - text: [formatted message] -
Handle errors:
not_in_channel-> Bot needs to be invited to channelchannel_not_found-> Invalid channel IDnot_authed-> Token issue
Bot Invitation (Slack Legacy)
If bot isn't in a channel, instruct user:
"Please invite the bot to #{channel} by typing
/invite @AgentFlowin the channel"
Integration Points
Greenfield setup (af-setup-project):
- After setup completion, optionally notify the project's Zulip stream
- Only if user provided a Zulip stream (or Slack channel for legacy) during setup
Delivery phase (af-deliver-features):
- Post deployment notices after successful releases
- Update on PR merges if configured
Common Pitfalls
- Missing Zulip credentials - Ensure
ZULIP_BOT_EMAIL,ZULIP_API_KEY,ZULIP_REALMare available via Doppler - Wrong stream name - Verify the stream exists in Zulip before posting
- Slack not enabled - Don't attempt Slack MCP tools unless
SLACK_ENABLED=true - Bot not in Slack channel (legacy) - Must be invited before posting
Key Principles
- Zulip is primary - Use Zulip for all new notifications
- Slack is legacy - Only use when explicitly enabled via
SLACK_ENABLED=true - Notifications are optional - Don't block workflows on notification failures
- Keep messages concise - Use templates, avoid walls of text
- Include links - GitHub, Linear, deployment URLs
- Fail gracefully - Log error, continue workflow
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
Didn't find tool you were looking for?