slack-notifications について
slack-notificationsは、単独のユーティリティではなく、エージェントのコンテキストからSlack API操作を必要に応じて行うプロンプト駆動型スキルです。メッセージ、チャンネル、ユーザー、ファイル、リアクションを扱い、メッセージ変更とアップロードには確認を求めます。
主な機能
- 01メッセージの投稿・更新・削除
- 02チャンネルと履歴の閲覧
- 03ユーザー情報とプレゼンスの確認
- 04ファイルのアップロードと一覧表示
- 05リアクションの追加と取得
活用シーン
- 01デプロイやインシデントの通知
- 02チャンネル履歴とユーザー情報の確認
- 03レポートの共有とメッセージへの反応
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ oimiragieo/ agent-studio --skill slack-notificationsインストール後、Claude Code で/slack-notificationsを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
commands/slack-notifications.mdhooks/post-execute.cjspre-execute.cjsreferences/research-requirements.mdrules/slack-notifications.mdschemas/input.schema.jsonoutput.schema.jsonscripts/main.cjstemplates/implementation-template.md詳細
モード:認知/プロンプト駆動型 — 単独のユーティリティスクリプトはありません。エージェントのコンテキストで使用します。
Slack 通知スキル
概要
このスキルでは、コンテキストを最適に使用できるよう、段階的に情報を開示しながら Slack API を操作できます。
コンテキストの節約:約 90% 削減
- MCP モード:常に約 15,000 トークンを読み込み(30 以上のツール)
- スキルモード:メタデータとして約 500 トークンを読み込み、必要に応じて追加で読み込み
要件
- SLACK_BOT_TOKEN 環境変数(必須)
- SLACK_SIGNING_SECRET 環境変数(任意、イベント検証用)
- SLACK_APP_TOKEN 環境変数(任意、Socket Mode 用)
Slack ボットトークンの設定
- https://api.slack.com/apps で Slack アプリを作成します
- 「OAuth & Permissions」に移動します
- 必要なボットトークンのスコープを追加します:
chat:write- メッセージを送信channels:read- チャンネルを一覧表示channels:history- チャンネルの履歴を読み取りusers:read- ユーザーを一覧表示files:write- ファイルをアップロードreactions:write- リアクションを追加
- ワークスペースにアプリをインストールします
- 「Bot User OAuth Token」を
SLACK_BOT_TOKEN環境変数にコピーします
ツール
このスキルでは、5 つのカテゴリにわたる 14 個のツールを利用できます:
| カテゴリ | ツール | 確認が必要 |
|---|---|---|
| メッセージ | post-message、post-thread、update-message、delete-message | はい(すべて) |
| チャンネル | list-channels、get-channel、channel-history | いいえ |
| ユーザー | list-users、get-user、user-presence | いいえ |
| ファイル | upload-file、list-files | はい(アップロードのみ) |
| リアクション | add-reaction、get-reactions | いいえ |
クイックリファレンス
# Post message to channel
curl -X POST https://slack.com/api/chat.postMessage \
-H "Authorization: Bearer $SLACK_BOT_TOKEN" \
-H "Content-Type: application/json" \
-d '{"channel": "C1234567890", "text": "Hello from Claude!"}'
# List channels
curl -X GET "https://slack.com/api/conversations.list" \
-H "Authorization: Bearer $SLACK_BOT_TOKEN"
# Upload file
curl -X POST https://slack.com/api/files.upload \
-H "Authorization: Bearer $SLACK_BOT_TOKEN" \
-F "channels=C1234567890" \
-F "[email protected]" \
-F "title=Weekly Report"
ツールの詳細
メッセージツール(確認が必要)
post-message
Slack チャンネルにメッセージを送信します。
パラメーター:
channel(必須):チャンネル ID または名前(例:「C1234567890」または「#general」)text(必須):メッセージテキスト(Slack のマークダウンに対応)thread_ts(任意):スレッドに返信する場合の親メッセージのタイムスタンプblocks(任意):リッチメッセージブロック(JSON 配列)
例:
curl -X POST https://slack.com/api/chat.postMessage \
-H "Authorization: Bearer $SLACK_BOT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"channel": "C1234567890",
"text": "Deployment successful!",
"blocks": [
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "*Deployment Status*\n:white_check_mark: Production deployed successfully"
}
}
]
}'
post-thread
スレッド内のメッセージに返信します。
パラメーター:
channel(必須):チャンネル IDthread_ts(必須):親メッセージのタイムスタンプtext(必須):返信テキスト
例:
curl -X POST https://slack.com/api/chat.postMessage \
-H "Authorization: Bearer $SLACK_BOT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"channel": "C1234567890",
"thread_ts": "1234567890.123456",
"text": "Thread reply here"
}'
update-message
既存のメッセージを更新します。
パラメーター:
channel(必須):チャンネル IDts(必須):メッセージのタイムスタンプtext(必須):新しいメッセージテキスト
例:
curl -X POST https://slack.com/api/chat.update \
-H "Authorization: Bearer $SLACK_BOT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"channel": "C1234567890",
"ts": "1234567890.123456",
"text": "Updated message"
}'
delete-message
メッセージを削除します。
パラメーター:
channel(必須):チャンネル IDts(必須):メッセージのタイムスタンプ
例:
curl -X POST https://slack.com/api/chat.delete \
-H "Authorization: Bearer $SLACK_BOT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"channel": "C1234567890",
"ts": "1234567890.123456"
}'
チャンネルツール
list-channels
ワークスペース内のすべてのチャンネルを一覧表示します。
パラメーター:
types(任意):チャンネルの種類をカンマ区切りで指定します(デフォルト:「public_channel」)- 選択肢:「public_channel」、「private_channel」、「mpim」、「im」
limit(任意):返すチャンネルの最大数(デフォルト:100)
例:
curl -X GET "https://slack.com/api/conversations.list?types=public_channel,private_channel" \
-H "Authorization: Bearer $SLACK_BOT_TOKEN"
get-channel
チャンネル情報を取得します。
パラメーター:
channel(必須):チャンネル ID
例:
curl -X GET "https://slack.com/api/conversations.info?channel=C1234567890" \
-H "Authorization: Bearer $SLACK_BOT_TOKEN"
channel-history
チャンネルのメッセージ履歴を取得します。
パラメーター:
channel(必須):チャンネル IDlimit(任意):返すメッセージの最大数(デフォルト:100)oldest(任意):時間範囲の開始時刻(Unix タイムスタンプ)latest(任意):時間範囲の終了時刻(Unix タイムスタンプ)
例:
curl -X GET "https://slack.com/api/conversations.history?channel=C1234567890&limit=50" \
-H "Authorization: Bearer $SLACK_BOT_TOKEN"
セキュリティに関する注意:チャンネル履歴には機密情報が含まれる場合があります。慎重に使用してください。
ユーザーツール
list-users
ワークスペース内のすべてのユーザーを一覧表示します。
パラメーター:
limit(任意):返すユーザーの最大数(デフォルト:100)
例:
curl -X GET "https://slack.com/api/users.list" \
-H "Authorization: Bearer $SLACK_BOT_TOKEN"
get-user
ユーザープロフィール情報を取得します。
パラメーター:
user(必須):ユーザー ID
例:
curl -X GET "https://slack.com/api/users.info?user=U1234567890" \
-H "Authorization: Bearer $SLACK_BOT_TOKEN"
user-presence
ユーザーのオンライン状態を取得します。
パラメーター:
user(必須):ユーザー ID
例:
curl -X GET "https://slack.com/api/users.getPresence?user=U1234567890" \
-H "Authorization: Bearer $SLACK_BOT_TOKEN"
ファイルツール
upload-file(確認が必要)
Slack チャンネルにファイルをアップロードします。
パラメーター:
channels(必須):カンマ区切りのチャンネル IDfile(必須):アップロードするファイルのパスtitle(任意):ファイルのタイトルinitial_comment(任意):メッセージのテキスト
例:
curl -X POST https://slack.com/api/files.upload \
-H "Authorization: Bearer $SLACK_BOT_TOKEN" \
-F "channels=C1234567890" \
-F "file=@C:\reports\weekly.pdf" \
-F "title=Weekly Report" \
-F "initial_comment=Here is this week's report"
list-files
チャンネル内のファイルを一覧表示します。
パラメーター:
channel(任意):絞り込みに使用するチャンネル IDuser(任意):絞り込みに使用するユーザー IDcount(任意):返すファイルの最大数(デフォルト:100)
例:
curl -X GET "https://slack.com/api/files.list?channel=C1234567890" \
-H "Authorization: Bearer $SLACK_BOT_TOKEN"
リアクションツール
add-reaction
メッセージに絵文字のリアクションを追加します。
パラメーター:
channel(必須):チャンネル IDtimestamp(必須):メッセージのタイムスタンプname(必須):絵文字名(コロンなし。例:「thumbsup」)
例:
curl -X POST https://slack.com/api/reactions.add \
-H "Authorization: Bearer $SLACK_BOT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"channel": "C1234567890",
"timestamp": "1234567890.123456",
"name": "thumbsup"
}'
get-reactions
メッセージへのリアクションを取得します。
パラメーター:
channel(必須):チャンネル IDtimestamp(必須):メッセージのタイムスタンプ
例:
curl -X GET "https://slack.com/api/reactions.get?channel=C1234567890×tamp=1234567890.123456" \
-H "Authorization: Bearer $SLACK_BOT_TOKEN"
エージェントとの統合
主要なエージェント
- devops:インフラストラクチャのアラート、デプロイ通知、監視
- incident-responder:インシデントアラート、ステータス更新、エスカレーション
そのほかのエージェント
- pm:スプリント通知、マイルストーンの更新、チームへのお知らせ
- developer:ビルド通知、PR アラート、テスト結果
- qa:テスト失敗のアラート、品質レポート
- security-architect:セキュリティアラート、脆弱性の通知
よくあるユースケース
デプロイ通知
# Notify channel of successful deployment
curl -X POST https://slack.com/api/chat.postMessage \
-H "Authorization: Bearer $SLACK_BOT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"channel": "#deployments",
"text": ":rocket: Production deployment completed",
"blocks": [
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "*Production Deployment*\n:white_check_mark: v1.2.3 deployed successfully\n*Duration:* 5m 23s"
}
}
]
}'
インシデントアラート
# Alert on-call team of incident
curl -X POST https://slack.com/api/chat.postMessage \
-H "Authorization: Bearer $SLACK_BOT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"channel": "#incidents",
"text": "<!channel> :rotating_light: High severity incident detected",
"blocks": [
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "*Incident INC-1234*\n:rotating_light: *Severity:* P1\n*Service:* API Gateway\n*Status:* 503 errors increasing"
}
}
]
}'
テスト結果
# Post test results
curl -X POST https://slack.com/api/chat.postMessage \
-H "Authorization: Bearer $SLACK_BOT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"channel": "#qa",
"text": "Test suite completed",
"blocks": [
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "*Test Results*\n:white_check_mark: 245 passed\n:x: 3 failed\n:warning: 2 skipped"
}
}
]
}'
セキュリティに関する考慮事項
トークンのセキュリティ
- ボットトークンをログやエラーメッセージに絶対に公開しないでください
- トークンはコード内ではなく、環境変数に保存してください
- ボットトークンには最小権限のスコープを使用してください
- トークンを定期的にローテーションしてください
メッセージのセキュリティ
- すべてのメッセージ操作には確認が必要です
- チャンネルの履歴には機密情報(PII、認証情報など)が含まれる場合があります
- 投稿前にチャンネルの権限を確認してください
- 機密性の高いやり取りにはプライベートチャンネルを使用してください
データのプライバシー
- ワークスペースのデータ保持ポリシーを遵守してください
- メッセージに PII や認証情報を投稿しないでください
- コンプライアンス対応には Slack のデータエクスポート機能を使用してください
- ユーザーのプライバシーとオンライン状態を尊重してください
エラー処理
よくあるエラー
| エラー | 原因 | 解決策 |
|---|---|---|
not_authed | トークンがない、または無効 | SLACK_BOT_TOKEN が正しく設定されているか確認します |
channel_not_found | チャンネル ID が無効 | list-channels でチャンネル ID を確認します |
missing_scope | ボットに必要な権限がない | Slack App の設定でスコープを追加します |
rate_limited | リクエストが多すぎる | 指数バックオフを実装します |
message_not_found | タイムスタンプが無効 | メッセージのタイムスタンプが正しいか確認します |
再試行戦略
レート制限エラーが発生した場合は、指数バックオフを実装します。
- 1 秒待って再試行します
- 2 秒待って再試行します
- 4 秒待って再試行します
- 8 秒待って再試行します
- 5 回試行したら中止します
レート制限
Slack API のレート制限:
- Tier 1:1 秒あたり 1 リクエスト
- Tier 2:1 分あたり 20 リクエスト
- Tier 3:1 分あたり 50 リクエスト
- Tier 4:1 分あたり 100 リクエスト
ティア別のメソッド:
chat.postMessage:Tier 3(1 分あたり 50 回)conversations.list:Tier 2(1 分あたり 20 回)users.list:Tier 2(1 分あたり 20 回)files.upload:Tier 4(1 分あたり 100 回)
関連情報
- Slack API ドキュメント:https://api.slack.com/docs
- Block Kit Builder:https://app.slack.com/block-kit-builder
- Slack App の管理:https://api.slack.com/apps
メモリプロトコル(必須)
開始前:
.claude/context/memory/learnings.md を読みます
完了後:
- 新しいパターン ->
.claude/context/memory/learnings.md - 問題の発見 ->
.claude/context/memory/issues.md - 決定事項 ->
.claude/context/memory/decisions.md
中断を想定してください:メモリに記録されていなければ、起きていないのと同じです。