# Slack Notifier

> Slackチャンネルにフォーマット済みメッセージを送信するSkill。 「Slackに通知して」「チームに連絡して」「#channelに投稿して」 などのリクエストで自動発火する。 MCP連携（フルAPI）とWebhookフォールバック（送信のみ）の両方に対応。

- Skill: `majiayu000/slack-notifier` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds add majiayu000/slack-notifier`
- Raw SKILL.md: https://api.skillmd.com/api/skills/majiayu000/slack-notifier/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: majiayu000 (https://skillmd.com/u/majiayu000)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/majiayu000/slack-notifier

---


# Slack通知 Skill

Slackチャンネルにフォーマット済みメッセージを送信します。
MCP連携とWebhookフォールバックの2つのモードをサポート。

## 連携モード

### モード1: Slack MCP（推奨）
MCP経由でフルSlack APIアクセス。MCP設定が必要。

**利用可能な場合**: `mcp__slack__*` ツールが設定されている
**機能**: メッセージ送信、チャンネル一覧、スレッド返信、リアクション追加

**MCPツール一覧**:
- `mcp__slack__slack_list_channels` - ワークスペースのチャンネル一覧
- `mcp__slack__slack_post_message` - メッセージ投稿
- `mcp__slack__slack_reply_to_thread` - スレッド返信
- `mcp__slack__slack_add_reaction` - リアクション追加

### モード2: Webhook フォールバック
Incoming Webhook経由のシンプルなHTTP POST。MCP不要。

**利用可能な場合**: `SLACK_WEBHOOK_URL` 環境変数が設定されている
**機能**: メッセージ送信のみ（読み取り、リアクションは不可）

## クイックスタート

### 連携モードの確認

送信前に、利用可能な連携方法を確認:
1. MCPを試行: `mcp__slack__slack_list_channels`
2. 利用不可の場合、`SLACK_WEBHOOK_URL` 環境変数を確認
3. 利用可能なモードをユーザーに報告

### シンプルなメッセージ送信

**MCPモード:**
```
mcp__slack__slack_post_message を使用:
  channel: "#channel-name"
  text: "メッセージ内容"
```

**Webhookモード:**
```bash
python3 scripts/send_webhook.py --message "メッセージ内容"
```

## メッセージフォーマット

### 1. シンプルテキスト
プレーンテキスト通知。クイックな更新に。

### 2. フォーマット済み（mrkdwn）
Slackのmarkdown形式。サポート:
- `*太字*` で強調
- `_斜体_` で控えめに
- `` `コード` `` でインラインコード
- ```コードブロック``` で複数行コード
- `<url|テキスト>` でリンク

### 3. 構造化（Blocks）
セクション、ヘッダー、区切り線を使ったリッチレイアウト。
`resources/message-templates.md` にテンプレートあり。

## テンプレート

`resources/message-templates.md` で利用可能:

### アラートテンプレート
- `success`: 緑チェックマーク、成功通知
- `warning`: 黄色警告、注意喚起
- `error`: 赤バツ、失敗通知
- `info`: 青情報マーク、お知らせ

### レポートテンプレート
- `build-report`: ビルドステータスとメトリクス
- `deploy-report`: デプロイサマリー
- `test-report`: テスト結果サマリー

## 使用例

### 例1: シンプル通知
```
ユーザー: 「#dev-teamにビルド完了を通知して」

アクション: MCPまたはWebhookで送信:
"ビルドが完了しました！レビューお願いします。"
```

### 例2: エラーアラート
```
ユーザー: 「#ops-channelにDB接続エラーをアラートして」

アクション: errorテンプレートを使用:
" **アラート: データベース接続失敗**
時刻: 2025-11-27 10:30 UTC
詳細: 30秒後に接続タイムアウト
対応: データベースサーバーの状態を確認してください"
```

## セキュリティ注意事項

**重要: 認証情報の取り扱い**

1. Webhook URLをSKILL.mdやスクリプトに**直接書かない**
2. **環境変数を使用**: `SLACK_WEBHOOK_URL`
3. **MCPトークン**はClaude MCP設定で管理
4. **URLの検証**を送信前に行う（スクリプトで自動実行）

## セットアップ要件

### MCPモード用
1. Bot TokenでSlackアプリを作成
2. Claude設定でMCPサーバーを構成
3. 必要なスコープ: `channels:read`, `chat:write`, `reactions:write`

### Webhookモード用
1. Slack Incoming Webhookを作成
2. 環境変数を設定: `export SLACK_WEBHOOK_URL="https://hooks.slack.com/..."`
3. 追加設定は不要

詳細は `resources/setup-guide.md` を参照。

## スクリプトインターフェース

```bash
# シンプルメッセージ
python scripts/send_webhook.py --message "Hello!"

# テンプレート使用
python scripts/send_webhook.py --message "ビルド失敗" --template error --title "CIアラート"

# カスタムJSON
python scripts/send_webhook.py --json '{"text": "カスタムメッセージ"}'
```

## エラーハンドリング

| エラー | 原因 | 対処 |
|--------|------|------|
| "Slack連携なし" | MCPもWebhookも未設定 | セットアップガイド参照 |
| "チャンネルが見つかりません" | 無効なチャンネル名（MCP） | チャンネル存在を確認 |
| "Webhook失敗" | 無効なURLまたはネットワーク | SLACK_WEBHOOK_URLを確認 |
| "レート制限" | メッセージ送信過多 | 待機してリトライ |

## 制限事項

- **Webhookモード**: 送信のみ、チャンネル一覧やメッセージ読み取り不可
- **WebhookでのDM不可**: Webhookは特定チャンネル専用
- **メッセージ長**: 1メッセージ最大40,000文字
- **レート制限**: Slackは約1メッセージ/秒に制限

## テスト実行

```bash
cd /path/to/slack-notifier
python -m pytest scripts/test_send_webhook.py -v
```

**注意**: テストはモック化されており、実際のSlack送信は行いません。

