Agent Skills by ALSEL
汎用個人生産性⭐ リポ 6品質スコア 73/100

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_foundmissing_scopeinvalid_authratelimitednot_in_channelno_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:writechannels:read/:historyusers: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}'

チャネルIDC0123ABC)を渡してください、名前ではなく。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

本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: mnlt · mnlt/teleport · ライセンス: MIT