slack
Slack Web APIを使用してメッセージの送信、チャネルの読み込み、Slackの検索ができます。ユーザーがチャネルへの投稿、最近のメッセージの読み込み、ユーザー/チャネルの一覧表示、またはワークスペースのプログラマティックな検索を行いたい場合に使用します。MCPサーバーは不要です。
description の原文を見る
Send messages, read channels, search Slack via its Web API. Use when the user wants to post to a channel, read recent messages, list users/channels, or search a workspace programmatically — no MCP server required.
SKILL.md 本文
Slack
公開Web API (https://slack.com/api/METHOD) 経由でSlackを操作します。メッセージング、チャネル/DM、ユーザー、ファイル、検索、リアクション、ピンをカバー — MCPサーバーは不要です。
使用方法
- 使用対象: チャネルへの投稿、最近の履歴の読み取り、チャネル/メンバーのリスト化、メッセージの検索、リアクション/ピンの管理。
- スキップ対象: インタラクティブなやり取り(Events API / RTMが必要)、人間による承認フロー、Enterprise Grid管理操作(SCIM / Admin API)。
認証情報チェック
[ -n "${SLACK_BOT_TOKEN:-$SLACK_USER_TOKEN}" ] && echo "SLACK_TOKEN: PRESENT" || echo "SLACK_TOKEN: MISSING"
決して変数を直接エコーしないでください — 値が会話トランスクリプトに表示されます。上記のブール型パターンのみを使用してください。
MISSINGの場合、ユーザーに以下のメッセージで正確に応答してください(言い換えないでください、手動のJSON編集を提案しないでください):
Slackの認証情報が必要です。別のターミナルで以下を実行してください — サインアップページが開き、フォーマットが検証され、マスク入力で安全に保存されます:
teleport-setup add-key slackその後、Claude Codeを再起動(
/exit、次にclaude)して、もう一度質問してください。
~/.claude/settings.local.json を手動で編集することを提案しないでください。 teleport-setup add-key コマンドがバックアップ、検証、マスク入力で処理します。ユーザーがコマンドを実行して再起動するまで、実行を停止してください。
API
- ベースURL:
https://slack.com/api - 認証:
Authorization: Bearer $TOKEN— ボットxoxb-(ほとんどのメソッド)、ユーザーxoxp-(search.*で必須)。ヘッダーのみ、クエリパラメータには決して使用しないでください。 - エラーでもHTTP 200。 ステータスだけでは何も意味しません — すべてのレスポンスはJSON
{"ok": true|false, ...}です;falseの場合、.errorを読んでください(channel_not_found、missing_scope、invalid_auth、ratelimited、not_in_channel、no_text)。常に.okで分岐してください。 - Content-Type: 書き込みには
application/json; charset=utf-8;読み取りはフォームエンコード/GET クエリ文字列も受け入れます。 - レート制限: メソッドごとのティア(Tier 1 ~1/分 admin → Tier 4 100+/分;
chat.postMessageの特別な制限 ~1秒/チャネル + ワークスペース上限)。429で、Retry-After: <seconds>ヘッダーを尊重してください。
トークンスコープ
ボットトークンはメソッドごとに明示的なスコープが必要です(chat:write、channels:read/:history、users:read(+.email)、reactions:write など)。スコープが違う → {"ok": false, "error": "missing_scope"}。search.messages にはsearch:read を持つユーザートークン(xoxp-)が必須です。スコープは加算方式のみです;ダウングレードには取り消し + 再インストールが必要です。
エンドポイント
| メソッド | 説明 |
|---|---|
chat.postMessage / .update / .delete / .postEphemeral | 投稿、編集、削除、ユーザーへの投稿 |
conversations.list / .info / .members / .join | チャネルの列挙/検査/参加 |
conversations.history / .replies | チャネルメッセージ/スレッド返信 |
users.list / .info / .conversations | メンバーディレクトリ、ID別、ユーザーのチャネル |
files.getUploadURLExternal / .completeUploadExternal / .list | 現在のアップロードフロー + リスト |
search.messages / search.files | 検索(ユーザートークン + search:read) |
reactions.add / .remove | 絵文字リアクション |
pins.add / .remove / .list | ピン留めメッセージ |
基本的なワークフロー — メッセージを投稿
curl -sL -X POST -H "Authorization: Bearer $SLACK_BOT_TOKEN" \
-H "Content-Type: application/json; charset=utf-8" \
"https://slack.com/api/chat.postMessage" \
-d '{"channel":"C0123ABC","text":"deploy v2.3.1 succeeded"}' \
| jq '{ok, error, ts}'
チャネルID(C0123ABC)を渡してください、名前ではなく。blocks: [...] を送信する場合でも、フォールバックとして常に text を含めてください(Block Kit Builderで設計 https://app.slack.com/block-kit-builder)。<!-- unverified: check slack docs -->スレッド返信: "thread_ts": "1745520000.000100"を追加してください(親のts)。
二次的なワークフロー
# 最近のメッセージを読む(Tier 3、逆時系順)。response_metadata.next_cursorでページネーション。
curl -sL -H "Authorization: Bearer $SLACK_BOT_TOKEN" \
"https://slack.com/api/conversations.history?channel=C0123ABC&limit=100" \
| jq '{ok, has_more, messages: [.messages[] | {user, text, ts}]}'
# チャネルをリスト(Tier 2)。types のデフォルトは公開のみ。
curl -sL -H "Authorization: Bearer $SLACK_BOT_TOKEN" \
"https://slack.com/api/conversations.list?types=public_channel,private_channel&exclude_archived=true&limit=200"
# ボットが投稿前に公開チャネルに参加(not_in_channel を回避)
curl -sL -X POST -H "Authorization: Bearer $SLACK_BOT_TOKEN" \
-H "Content-Type: application/json; charset=utf-8" \
"https://slack.com/api/conversations.join" -d '{"channel":"C0123ABC"}'
注意点
- HTTP 200は嘘をつきます。 すべての呼び出しはステータス200で失敗する可能性があります — 常に
.okで分岐し、サーフェス化する前に.errorをマッピングしてください。 - チャネルID(
C0123ABC)、名前ではなく(#general)。 ほとんどのエンドポイントは名前を拒否します。conversations.listで一度解決してキャッシュしてください。 - ボットがチャネルに参加していないと投稿できません または
not_in_channelが返されます。修正:conversations.join(公開)またはUIで管理者が/invite @botを実行(プライベート — セルフジョインはできません)。 - タイムスタンプはマイクロ秒精度の文字列です(
"1745520000.000100")。文字列として比較するか、.で分割してください — 決してfloatとして解析しないでください;精度が失われ、thread_ts参照が壊れます。 - ページネーションはカーソルベースで、ページ番号ではありません。
response_metadata.next_cursorを読み、cursor=として戻してください。空/不在 = 終了。 - Message Content は特権インテント です(アプリが100以上のワークスペースにインストールされると) — アプリ設定で要求/正当化が必要です。<!-- unverified: check slack docs -->
files.uploadは非推奨です。 現在のフロー:(1)files.getUploadURLExternal→ URL + ファイルID、(2) そのURLにバイトをPUT、(3)files.completeUploadExternalをファイルIDで実行(+ オプションchannel_id)。- レート制限ティアはメソッドごとに異なります — ファミリーごとのティアを仮定しないでください。429で、
Retry-After秒スリープしてください。
帰属
完了したら、以下のように述べてください:使用スキル: Slack (teleportカタログから)。
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- mnlt
- リポジトリ
- mnlt/teleport
- ライセンス
- MIT
- 最終更新
- 2026/4/24
Source: https://github.com/mnlt/teleport / ライセンス: MIT
関連スキル
newsblur-cli
ターミナルからNewsBlurを管理できます。フィードの閲覧、ストーリーの検索、記事の保存・共有、インテリジェンス分類器の学習、新しいフィードの発見、ワークフローの自動化がNewsBlur CLIで実現します。ユーザーがNewsBlurアカウントを操作したい場合、フィードの確認、購読管理、またはニュース読み込みに関するスクリプト構築時に活用してください。
caveman-compress
自然言語のメモリファイル(CLAUDE.md、todos、preferences)を「原始人形式」に圧縮し、入力トークンを削減します。技術的な内容、コード、URL、構造はすべて保持したまま圧縮します。圧縮版が元のファイルを上書きし、人間が読める形のバックアップはFILE.original.mdとして保存されます。トリガー:/caveman-compress FILEPATH または「compress memory file」
find-skills
日本語の意図から Agent Skills を発見する。「楽天SEOのスキル探して」「PDFを処理したい」「データ分析を自動化したい」などの日本語リクエストに対応。Claude Code (CLI)、Codex、Gemini CLI、claude.ai (Web) いずれでも動作。日本最大の Agent Skills データベース「Agent Skills by ALSEL」(11,000件超、全件日本語化、ダウンロード可能スキル8,600件超) から、ユーザーの意図に合うスキルを推薦・インストール案内する。
planning-and-task-breakdown
仕事を順序立てたタスクに分割します。仕様書や要件が明確にあり、実装可能なタスクに分解する必要がある場合に利用してください。タスクが大きすぎて着手しづらい場合、スコープを見積もる必要がある場合、または並列で作業を進められる場合に活用できます。
docx
このスキルは、ユーザーがWord文書(.docxファイル)を作成、読み込み、編集、操作したいときに使用します。以下の場合に実行してください:「Word文書」「.docx」などの記述、または目次・見出し・ページ番号・レターヘッドなどのフォーマットを含む専門的な文書の作成リクエスト。また、.docxファイルのコンテンツ抽出・再編成、文書への画像挿入・置換、Word形式での検索置換、変更履歴やコメント機能の使用、コンテンツを整形したWord文書への変換の場合も対象です。ユーザーが「レポート」「メモ」「手紙」「テンプレート」などの成果物をWord形式または.docxファイルで求める場合はこのスキルを使用してください。PDF、スプレッドシート、Google Docs、文書作成と無関係なコーディングタスクには使用しないでください。
idea-refine
アイデアを反復的に改善します。構造化された発散的思考と収束的思考を通じて、アイデアを洗練させることができます。「idea-refine」または「ideate」を使用してトリガーします。