mcpField
S
slack-cli

slack-cli

github.com/slackapi開発161495 回インストール1 日前に更新
リポジトリ

slack-cli について

slack-cli は、Slack CLI による Slack アプリの作成、実行、管理を支援するスキルです。Web API の直接呼び出しや開発者ドキュメントの検索に加え、認証、ローカル実行、マニフェスト検証の手順を扱います。

主な機能

  1. 01Slack CLI の検出と確認
  2. 02Slack 開発者ドキュメントの検索
  3. 03Slack Web API メソッドの直接呼び出し
  4. 04CLI によるワークスペース認証
  5. 05アプリの実行とマニフェスト検証

活用シーン

  1. 01API パラメーターや Slack 機能の調査
  2. 02Slack ワークスペースへのログインや追加
  3. 03開発中のアプリのローカル実行
  4. 04デプロイ前のアプリマニフェスト確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/slackapi/slack-skills-plugin --skill slack-cli

インストール後、Claude Code で/slack-cliを入力して読み込まれたか確認します。

詳細

Slack CLI

Slack CLI を使用して、Slack アプリの作成、実行、管理を行えます。Web API メソッドの直接呼び出しや、ターミナルからの Slack 開発者向けドキュメントの検索も可能です。

初期設定(サンドボックスの作成、テンプレートからのプロジェクトのひな形作成)には、代わりに slack:create-slack-app スキルを使用してください。


Step 1: Slack CLI の検出

ほかのコマンドを実行する前に、公開されている Slack CLI のパスを解決してください。解決した値を SLACK_CMD と呼びます。以下では、この値に置き換えてください。1a → 1b → 1c の順に試してください。先に進んではいけません。

1a. 標準のインストールパス(推奨 — 確認不要)

公式インストールスクリプトは、ユーザーごとに固定されたパスにバイナリを配置します。ファイルが存在する場合は、そのまま使用してください。このパスに書き込むのはインストールスクリプトだけです。

  • macOS / Linux: ~/.slack/bin/slack
  • Windows: %USERPROFILE%\AppData\Local\slack-cli\bin\slack.exe(または、フォールバックとして %USERPROFILE%\.slack-cli\bin\slack.exe)

POSIX シェル:

[ -x "$HOME/.slack/bin/slack" ] && echo "$HOME/.slack/bin/slack"

PowerShell:

$p = "$env:USERPROFILE\AppData\Local\slack-cli\bin\slack.exe"
if (Test-Path $p) { $p } elseif (Test-Path "$env:USERPROFILE\.slack-cli\bin\slack.exe") { "$env:USERPROFILE\.slack-cli\bin\slack.exe" }

パスが返された場合は、SLACK_CMD にその絶対パスを設定し、Step 2 に進んでください。_fingerprint も実行してはいけません。

1b. PATH 上の slack(フィンガープリントで確認)

1a で見つからなかった場合は、PATH 上の slack を試してください。

slack _fingerprint 2>/dev/null

d41d8cd98f00b204e9800998ecf8427e が出力された場合は、SLACK_CMD=slack に設定して次に進んでください。

1c. エイリアスについて確認するか、インストールする

1b が失敗した場合、または異なる値が返された場合は、AskUserQuestion を使用して開発者に尋ねてください。

  • 「お使いのシステムの slack コマンドは、公開 Slack CLI ではないようです。別の名前またはエイリアスでインストールされていますか?」

  • 選択肢:「はい、次のエイリアスです...」(エイリアスを入力できるようにする)、「いいえ、インストールが必要です」

  • エイリアスが提示された場合は、<alias> _fingerprint 2>/dev/null で確認し、SLACK_CMD=<alias> に設定してください。

  • インストールが必要な場合は、次を実行してください。

    curl -fsSL https://downloads.slack-edge.com/slack-cli/install.sh | bash
    

    その後、1a を再実行してください。インストールスクリプトによって ~/.slack/bin/slack に書き込まれています。

よくある間違い: バイナリの検出に which slack を使わないでください。which はシェルエイリアスも解決するため、1a の目的が損なわれます。Windows の Git Bash では、PowerShell ではなく POSIX 形式のプローブを使用してください。


Step 2: ヘルプによるコマンドの確認

現在のセッションでまだ使用していないコマンドを組み立てる前に、必ず SLACK_CMD <command> --help を実行してください。 フラグを推測してはいけません。ヘルプの出力を正確な情報源として使用してください。

  • SLACK_CMD help — 使用可能なコマンドグループをすべて表示します
  • SLACK_CMD <command> --help — サブコマンド、フラグ、使用例を表示します
--app と --team の値の解決

コマンドで --app または --team が必要な場合:

  • App ID:プロジェクトディレクトリで SLACK_CMD app list を実行すると、インストール済みアプリとその ID が表示されます。
  • Team ID:SLACK_CMD auth list を実行すると、認証済みワークスペースとその team ID が表示されます。

Step 3: ドキュメントの検索(slack docs search)

ターミナルから Slack の開発者向けドキュメントを直接検索できます。

SLACK_CMD docs search "<query>" --output=text --limit=5

簡潔でターミナルから読みやすい結果を得るには、--output=text を使用してください。CLI コマンドをすでに実行していて、次のことを行いたい場合に使用します。

  • 実装前に Slack の機能を確認する
  • API の動作や必要なスコープを検証する
  • Block Kit の要素、イベントタイプ、メソッドのパラメーターを調べる

Step 4: Web API メソッドの呼び出し(slack api)

Slack Web API の任意のメソッドを直接呼び出せます。詳細と使用例については、SLACK_CMD api --help を実行してください。

パラメーターは位置引数の key=value ペアとして渡します(--key=value フラグではありません)。

SLACK_CMD api chat.postMessage channel=C0123456789 text="Hello from the CLI"

重要な違い: --team、--token、--json、--data はメタフラグ(-- が付きます)です。API メソッドのパラメーターには、ダッシュを付けずに位置引数の key=value 構文を使用します。

参照先: メソッドの全一覧は https://docs.slack.dev/reference/methods.md をご覧ください。


Step 5: 認証(slack auth)

このフローを実行するタイミング

Slack の認証は単一のブール値ではなく、チームごとです。以下のいずれかに当てはまる場合は、必ず次のシームレスなログインフローを実行してください。

  • 開発者がまだどのチームにも認証されていない。
  • 開発者が、SLACK_CMD auth list にすでにほかのチームが表示されていても、新しいチーム/ワークスペース/サンドボックスを追加したい。
  • 開発者がログイン、チームの切り替え、または再認証を求めている。

SLACK_CMD auth list にほかのチームが表示されていても、ログインを省略する理由にはなりません。それらは別のチームです。開発者がどのチームを希望しているかを尋ねてから、フローを実行してください。

以下のフローは、どの種類のワークスペースでも同じです。/slackauthticket は、開発者が所属するあらゆるワークスペースで機能します。開発者用サンドボックス、Free Team、本番ワークスペースのいずれでも同様で、サンドボックス専用のログイン方法はありません。どの環境を優先するかは、slack:create-slack-app スキルが決定します(ステップ 3:アプリのインストール先を選択する)。

既存の認証を確認する(任意)
SLACK_CMD auth list

開発者に認証済みのチームを示したり、ログインが成功したことを確認したりするために使用します。開発者が新しいチームへのログインを求めている場合、リストが空でないことをもって「認証完了」と判断しないでください。

シームレスなログインフローを実行する

エージェントが最初から最後まで進行します。別のターミナルウィンドウも、ブラウザーでの確認も必要ありません。

SLACK_CMD login --no-prompt を実行すると、CLI は 1 回限りのチケットを出力して、標準入力を待たずにすぐ終了します。開発者が /slackauthticket スラッシュコマンドを送信すると、Slack はチャレンジコードをワークスペースのモーダル内に表示します。ブラウザーでの手順はありません。エージェントはチャレンジコードを CLI に送信し、ログインを完了します。

1. ログインを開始し、チケットを取得する

SLACK_CMD login --no-prompt

CLI は /slackauthticket <ticket> スラッシュコマンドを出力して終了します。チケットを取得してください。ステップ 4 で必要になります。出力例:

📋 Run the following slash command from any Slack channel in the workspace
   you'd like to authenticate

   /slackauthticket eyJ0eXAiOiJKV1QiLCJh…

? Slack will then show you a challenge code. Submit it via:
   slack login --ticket <ticket> --challenge <code>

2. スラッシュコマンドを開発者に渡す

/slackauthticket … の行全体を表示し、認証したい Slack ワークスペースのメッセージボックスに貼り付けて送信するよう、開発者に依頼してください。Slack は短いチャレンジコード(例:JDt1IK7X)を含むモーダルを表示します。

3. チャレンジコードを取得する

AskUserQuestion を使って、Slack のモーダルに表示されたチャレンジコードを開発者に尋ねてください。回答を待ち、推測したり既定値を使ったりしないでください。

4. ログインを完了する

SLACK_CMD login --ticket <ticket> --challenge <code>

成功すると、CLI はチーム名と ID を返します。SLACK_CMD auth list で確認し、チーム名を開発者に伝えてください。

トラブルシューティング:チケットは 1 回限りで、有効期限があります。ステップ 4 でチケットが無効または期限切れ、あるいはチャレンジが間違っているというエラーが発生した場合は、ステップ 1 から新しい SLACK_CMD login --no-prompt でやり直してください。同じチケットを再試行しないでください。

グローバルに切り替えずに特定のワークスペースを対象にするには、個々のコマンドで --team <team_id> を使用してください。

危険信号 — STOP

以下のように考えていることに気づいたら、以前の壊れたフローに戻ろうとしています。

正当化実際のところ
「auth list にすでにチームが表示されているので、ログインは不要です。」認証はチームごとです。開発者は 新しい チームを求めています。フローを進めてください。
「slack login にはブラウザーでの確認が必要なので、進行できません。」--no-prompt を使えば違います。チャレンジコードはブラウザーではなく、Slack のモーダルに表示されます。エージェントが slack login の 2 回の呼び出しを自分で実行します。
「開発者に別のターミナルで slack login を実行するよう伝えるべきです。」絶対にしないでください。ステップ 5 は、最初から最後までエージェントが行います。

いずれの場合も、自分で SLACK_CMD login --no-prompt を実行し、上記の番号付き 4 ステップに従ってください。


ステップ 6:アプリをローカルで実行する(slack run)

利用可能なすべてのフラグを確認するには、SLACK_CMD run --help を実行してください。

アプリまたはチームの対象を決定する

プロジェクトディレクトリで SLACK_CMD app list を実行し、インストール済みアプリを確認してください。

  • アプリがある場合:実行コマンドで --app=<app_id> を使用します。
  • アプリが一覧にない場合:代わりに --team=<team_id> を使用します(チーム ID は SLACK_CMD auth list で取得してください)。
開発サーバーをバックグラウンドで起動する

開発者が作業を続けられるよう、このコマンドをバックグラウンドプロセスとして実行します。

アプリ ID が見つかった場合:

cd <project-dir> && SLACK_CMD run --org-workspace-grant=all --app=<app_id>

アプリが見つからない場合 — チーム ID を使用します:

cd <project-dir> && SLACK_CMD run --org-workspace-grant=all --team=<team_id>

アプリがバックグラウンドで実行中であることを開発者に伝えます。次のように尋ねることができます。

  • 「開発サーバーの状態は?」— 状態を確認します
  • 「slack run の出力を見せて」— アクティビティログを表示します
  • 「開発サーバーを停止して」— プロセスを終了します

ステップ 7:マニフェストを管理する

SLACK_CMD manifest --help を実行すると、サブコマンド(validate、info)と --source local|remote フラグを確認できます。

デプロイする前、またはアプリの構成に問題があるように見える場合は、SLACK_CMD manifest validate を実行します。


ステップ 8:その他のコマンド

その他のコマンドグループ(例:trigger、datastore、env、collaborator、external-auth、deploy)については、SLACK_CMD <command> --help を実行してサブコマンドとフラグを確認します。利用可能なすべてのコマンドグループを確認するには、SLACK_CMD help を実行します。


注意事項

  • SLACK_CMD はプレースホルダーです。必ずステップ 1 で特定した実際のコマンド名に置き換えてください。
  • このセッションで使用していないコマンドを組み立てる前に、必ず --help を実行してください。
  • 対話型コマンド(例:--trigger-def を付けない slack trigger create)はバックグラウンドで実行できません。開発者に新しいターミナルウィンドウで実行するよう伝えてください。slack login はこのカテゴリに含まれません。ステップ 5 の --no-prompt / --ticket / --challenge のフローを使い、インラインで実行します。
  • slack run は開発用にローカルで実行されます。slack deploy は Slack のホスト型インフラストラクチャにデプロイします。ただし、.slack/hooks.json で deploy フックが定義されている場合は、そのフックを実行します(slack:deploy-slack-app スキルを参照)。これらは別の操作なので、混同しないでください。

コメント