Skip to content
Back to skills

Slack Notifications

ASecurity

Slack MCP for agent-to-human messages: progress updates, approval requests and reading replies. Use when an agent needs to notify people or get an approval through Slack.

  • 80 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 3, 2026
ai-agentsgoapi

Works with

  • api
  • mcp

Security analysis

A100/100

Scanned October 5, 2026

npx -y skills add monkilabs/opencastle --skill slack-notifications --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Slack Notifications?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Slack Notifications
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/monkilabs-slack-notifications/badge)](https://www.skillsdirectory.com/skills/monkilabs-slack-notifications)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: slack-notifications
description: "Slack MCP for agent-to-human messages: progress updates, approval requests and reading replies. Use when an agent needs to notify people or get an approval through Slack."
---

# Slack Notifications

Package `@kazuph/mcp-slack` (stdio). Docs: https://api.slack.com/docs. Channel mappings: `.opencastle/stack/notifications-config.md`

## Setup

- `SLACK_MCP_XOXB_TOKEN` — bot token, stored in CI/env, rotated periodically.
- **`SLACK_MCP_ADD_MESSAGE_TOOL=true` is required to post at all** — write support is off by default.
- Minimal bot scopes for notifications: `chat:write`, `channels:read`, `conversations:history`, `users:read`. Read-only: `channels:read`, `channels:history`, `im:read`.

## Rate limits

Write **20/min**, read **50/min**. Batch updates instead of per-step chatter, thread rather than posting new messages, and cache channel/user IDs — repeated `users_resolve` lookups burn the read budget.

## Tools

- `conversations_add_message` — `channel_id`, `payload`, `content_type`, `thread_ts`
- `conversations_history` — `channel_id`, `limit`
- `conversations_replies` — `channel_id`, `thread_ts`, `limit`
- `users_resolve` — `email|username`

Check the response for `ok`; a failed post returns `error` rather than throwing.

## Approvals are dual-channel

Post to Slack **and** ask in chat. First response wins.

1. Post `⏳ Approval Required — TAS-42: <action>` with reply instructions, keeping the returned `thread_ts`.
2. Ask the same question in chat. A chat answer wins → post the confirmation into the Slack thread.
3. Otherwise poll `conversations_replies` on that thread every **30s, timing out at 10 min**, matching approved/yes/go vs rejected/no/stop.
4. **If the session ends before a reply, write a checkpoint** with channel, thread ID, question, and timestamp. The next session's `on-session-start` hook picks up the reply.

Always thread; one thread per task; include the tracker issue ID in every message. Never put secrets in a message body.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…