create-slack-app について
create-slack-app は、Bolt を使った Slack アプリやエージェントの作成を支援するスキルです。フレームワークとワークスペースの選択、テンプレートからのプロジェクト作成、ローカル実行を扱い、エージェント用テンプレートではプロバイダーと API キーも設定します。
主な機能
- 01bolt-js または bolt-python の選択
- 02Slack ワークスペースの設定と確認
- 03テンプレートからのプロジェクト作成
- 04エージェント用テンプレートの AI プロバイダー選択
- 05キーを設定してアプリをローカル実行
活用シーン
- 01新しい Bolt Slack アプリの作成
- 02テンプレートを使った Slack AI エージェントの構築
- 03選択したワークスペースでのアプリテスト
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ slackapi/ slack-skills-plugin --skill create-slack-appインストール後、Claude Code で/create-slack-appを入力して読み込まれたか確認します。
詳細
Slack アプリの作成
Bolt を使用して、開発者が Slack アプリまたはエージェントを作成できるよう支援します。$0 が厳密に bolt-js または bolt-python の場合は、選択されたフレームワークとして扱い、質問を省略します。それ以外の場合(空またはその他の値を含む)は無視し、続行する前に開発者に使用するフレームワークを尋ねます。
このスキルでは、前提条件、認証、インストール先のワークスペースの選択、テンプレートからのプロジェクトのひな形作成、アプリのローカル実行まで、セットアップ全体を順を追って説明します。
ステップ 1:前提条件を確認する
1a. Slack CLI コマンドを検出する
slack:slack-cli スキルの ステップ 1:Slack CLI の検出 を使用して、公開版 Slack CLI がインストールされているか確認し、コマンド名を特定します。フィンガープリントの確認、エイリアスへのフォールバック、インストール手順はすべてこのスキルに記載されています。ここでは重複して説明しないでください。
コマンド名を特定したら、このスキルの以降すべての CLI コマンドで、検出されたコマンド名を使用します。以下ではこれを SLACK_CMD と呼びます。SLACK_CMD が出てくる箇所すべてで、実際に特定したコマンド名に置き換えてください。
1b. CLI のバージョンを確認する
SLACK_CMD version を実行し、バージョンを表示して、続行前にすべてが正常に動作していることを確認します。
1c. 言語ランタイムを確認する
$0がbolt-jsの場合:node --versionを実行して Node.js がインストールされていることを確認します(v18 以降が必要です)。インストールされていない場合は、brew install nodeを提案するか、https://nodejs.org を案内します。$0がbolt-pythonの場合:python3 --versionを実行して Python がインストールされていることを確認します(3.6 以降が必要です)。インストールされていない場合は、brew install python3を提案するか、https://python.org を案内します。
ステップ 2:Slack CLI で認証する
slack:slack-cli スキルの ステップ 5:認証(slack auth) を使用して、開発者の認証状態を確認し、未認証の場合は SLACK_CMD login を使った認証手順を案内します。
認証が成功したことを確認してから次に進んでください。
ステップ 3:アプリのインストール先を選択する
アプリのインストールには Slack ワークスペースが必要です。利用できる対象は 3 つあり、それぞれ同等ではありません。AskUserQuestion を使って開発者に選択してもらい、次の順で提示します。
| 対象 | 最適な用途 | 利用開始の条件 |
|---|---|---|
| 開発者サンドボックス(推奨) | 開発者が今後も開発を続ける予定のあらゆる用途。実ユーザーから隔離された無料の Enterprise Grid 組織で、組織レベルの機能をテストできます。 | Slack Developer Program アカウントが必要です。登録は無料です。各アカウントで基本的なサンドボックスを作成でき、有料プランや支払い方法は不要です。 |
| 無料チーム(第 2 候補) | Developer Program への登録が障壁となっている場合に、すぐに始めるための選択肢です。開発者が作成し、所有する無料ワークスペースです。 | 1 ワークスペースあたり 10 個までのアプリという上限があり、Enterprise Grid 組織の機能は利用できません。 |
| 既存の本番ワークスペース(最後の手段) | アプリから実データや実際の同僚にアクセスする必要がある場合に限ります。 | 通常は管理者の承認が必要で、開発者自身が管理者とは限りません。 |
続いて、選択に応じた以下のサブステップに進みます。どの対象を選んでも、認証手順はステップ 2 と同じです。/slackauthticket コマンドは開発者が所属するどのワークスペースでも使用できるため、サンドボックス専用のログインはありません。
どのサブステップに進む場合も、対象のワークスペースが存在し、認証済みであることを確認してから次に進んでください。
3a. 開発者用サンドボックス(推奨)
既存のサンドボックスを一覧表示します。認証方法を CLI が尋ねて処理を止めないよう、--team を渡します(チーム ID は SLACK_CMD auth list から取得します)。
SLACK_CMD sandbox list --team <team_id>
開発者が Developer Program アカウントを持っていない場合、サンドボックスはワークスペースではなく、認証済みユーザーとメールアドレスが一致する Developer Program アカウントに属するため、sandbox list を実行しても役立つ結果は返りません。アカウントを持っていると言われた場合は、登録を案内する前に、ログインに使用しているメールアドレスがそのアカウントと一致することを確認してください。一致しない場合は、そのメールアドレスに紐づくワークスペースにログインしてもらいます。https://api.slack.com/developer-program/join を案内し、登録を待つのではなく今すぐ開発を始める方法として、3b の Free Team も提案します。
-
サンドボックスがある場合:表示して、使用するかどうか確認します。
-
サンドボックスがない場合:作成します。AskUserQuestion を使って開発者に名前とパスワードを尋ねてから、次を実行します。
SLACK_CMD sandbox create --team <team_id> --name <sandbox-name> --password <password>重要:パスワードは認証情報です。絶対に表示、言い直し、要約への記載をしないでください。コマンドに直接渡してください。API キーに Step 4c を適用する場合と同じルールです。
サンドボックスは、ブラウザーから https://api.slack.com/developer-program/sandboxes で作成することもできます。
サンドボックスを作成したら、続行する前に Step 2 の手順でログインしてもらいます。
Basic サンドボックス。 有料プランを利用しておらず、支払い方法も登録していない開発者には、Basic サンドボックスが割り当てられます。このスキルで構築するものはすべて動作しますが、制限は厳しくなります。1 か月間利用がないとアーカイブされ、Slack Connect は利用できず、Slack インフラストラクチャへのアプリのデプロイ(ROSI)もサポートされません。さらに必要な場合は、支払い方法を追加する(請求は発生しません)か、有料プランに加入してから、アプリやデータを失うことなく https://api.slack.com/developer-program/sandboxes でサンドボックスをアップグレードできます。制限については https://docs.slack.dev/tools/developer-sandboxes#basic に記載されています。
3b. Free Team(次の選択肢)
Free Team は、無料プランの通常の Slack ワークスペースです。開発者に https://slack.com/get-started で作成してもらい、Step 2 の手順でログインしてもらいます。
伝える内容:
- このスキルで構築するものはすべてそこで動作します。Bolt アプリは無料プランに問題なくインストールして実行できます。
- ワークスペースに作成できるアプリは 10 個まで です。それを超えると、CLI は
service_limits_exceededを返します。 - これは独立したワークスペースであり、開発者用サンドボックスとは異なり、Enterprise Grid 組織ではありません。 そのため、組織レベルの機能はテストできません。具体的には、組織全体へのアプリのインストールと組織レベルのアプリ許可、
admin.*API メソッド(Business+ または Enterprise Grid が必要)、および一般的な複数ワークスペースの動作です。アプリがこれらを対象とする場合は、代わりにサンドボックスを使用してください。 - 同僚を招待しないでください。実際のユーザーがいる Free Team は、3c の目的において本番ワークスペースとなります。
3c. 既存の本番ワークスペース(最後の手段)
アプリが実際のデータや実際のユーザーを本当に必要とする場合に限ります。ログインしてもらう前に、開発者に次の点を伝えてください。
- Admin app approval(AAA)によってインストールが阻止される可能性があります。 Enterprise Grid 組織では常に有効で、独立したワークスペースでも有効にできます。該当する場合、Step 5 のインストール時に承認をリクエストするか尋ねられ、その後、開発者は管理者の対応を待つことになります。
- プロンプトを表示せずにそのリクエストを送信するには、環境で
SLACK_AUTO_REQUEST_AAA=1を設定します。これは環境変数であり、CLI フラグではありません。 - 承認されない場合や時間がかかる場合は、無理に進めず、代わりに 3a または 3b に切り替えてください。
Step 4:テンプレートからアプリを作成する
開発者に、どのようなアプリを作りたいか尋ねます。選択したフレームワーク($0)に基づいて、利用可能なテンプレートを提示します。
bolt-js テンプレート
| テンプレート | リポジトリ | 説明 |
|---|---|---|
| スターターテンプレート | slack-samples/bolt-js-starter-template | 基本的な Bolt JS アプリです。最初の出発点として最適です |
| スターターエージェント | slack-samples/bolt-js-starter-agent | Claude/OpenAI を使用する最小構成の AI エージェントです |
| サポートエージェント | slack-samples/bolt-js-support-agent | AI を活用した IT ヘルプデスクエージェントです |
| はじめに | slack-samples/bolt-js-getting-started-app | 公式の入門チュートリアルアプリです |
| 例 | slack-samples/bolt-js-examples | Slack の機能をまとめて紹介するサンプルです |
bolt-python テンプレート
| テンプレート | リポジトリ | 説明 |
|---|---|---|
| スターターテンプレート | slack-samples/bolt-python-starter-template | 基本的な Bolt Python アプリです。最初の出発点として最適です |
| スターターエージェント | slack-samples/bolt-python-starter-agent | Claude/OpenAI/Pydantic AI を使用する最小構成の AI エージェントです |
| サポートエージェント | slack-samples/bolt-python-support-agent | AI を活用した IT ヘルプデスクエージェントです |
| アシスタントテンプレート | slack-samples/bolt-python-assistant-template | エージェントとアシスタントのテンプレートです |
| 例 | slack-samples/bolt-python-examples | Slack の機能をまとめて紹介するサンプルです |
AskUserQuestion を使って、開発者にテンプレートを選んでもらいます。初めての方には スターターテンプレート、AI エージェントを作成したい場合は スターターエージェントをおすすめします。
4a. AI プロバイダーを選ぶ(エージェントテンプレートのみ)
開発者が スターターエージェントまたはサポートエージェントを選んだ場合、これらのテンプレートには AI プロバイダーごとのサブディレクトリが含まれています。以下の表から、開発者のフレームワーク($0)に対応するサブディレクトリのみを提示し、AskUserQuestion を使って使用するプロバイダーを尋ねます。
プロバイダーの一覧はフレームワークによって異なるため、質問する前にフレームワークを確定する必要があります。まだ決まっていない場合は、先にフレームワークを尋ね、回答を待ってください。フレームワークとプロバイダーについて、1 回の AskUserQuestion 呼び出しでまとめて質問しないでください。
bolt-js のサブディレクトリ:
| サブディレクトリ | 説明 |
|---|---|
claude-agent-sdk | Anthropic の Claude Agent SDK を使用します |
openai-agents-sdk | OpenAI の Agents SDK を使用します |
bolt-python のサブディレクトリ:
| サブディレクトリ | 説明 |
|---|---|
claude-agent-sdk | Anthropic の Claude Agent SDK を使用します |
openai-agents-sdk | OpenAI の Agents SDK を使用します |
pydantic-ai | Pydantic AI を使用します(複数の LLM バックエンドに対応) |
デフォルトの選択肢として Claude Agent SDK をおすすめします。
4b. プロジェクトに名前を付けて作成する
プロジェクトに付ける名前を尋ねます(my-slack-app のようなデフォルト名を提案します)。その後、次を実行します。
サブディレクトリのないテンプレートの場合(スターターテンプレート、はじめに、アシスタントテンプレート、例):
SLACK_CMD create <project-name> -t <template-repo>
サブディレクトリがあるエージェントテンプレートの場合(スターターエージェント、サポートエージェント):
SLACK_CMD create <project-name> -t <template-repo> --subdir <chosen-subdir>
例:
# Non-agent template
SLACK_CMD create my-slack-app -t slack-samples/bolt-js-starter-template
# Agent template with provider subdir
SLACK_CMD create my-slack-agent -t slack-samples/bolt-js-starter-agent --subdir claude-agent-sdk
ディレクトリが存在することを確認し、その内容を一覧表示して、プロジェクトが正常に作成されたことを確認します。
4c. 必須の環境変数を設定する(エージェントテンプレートのみ)
開発者がエージェントテンプレート(スターターエージェントまたはサポートエージェント)を選んだ場合、選択した AI プロバイダーに必要な API キーを設定する必要があります。AskUserQuestion を使ってキーの値を尋ね、プロジェクトディレクトリ内から Slack CLI を使って設定します。
プロバイダーごとの必須環境変数:
| プロバイダー | 環境変数 | 説明 |
|---|---|---|
claude-agent-sdk | ANTHROPIC_API_KEY | Anthropic API キー |
openai-agents-sdk | OPENAI_API_KEY | OpenAI API キー |
pydantic-ai | OPENAI_API_KEY | OpenAI API キー(必須)。Anthropic をバックエンドとして使用する場合は、ANTHROPIC_API_KEY も任意で設定できます。両方が設定されている場合は、デフォルトで Anthropic が使用されます。 |
AskUserQuestion を使って、開発者に API キーの値を尋ねます。その後、それぞれを設定します。
cd <project-name> && SLACK_CMD env set <ENV_VAR_NAME> <value>
例:
cd my-slack-agent && SLACK_CMD env set ANTHROPIC_API_KEY sk-ant-...
重要:API キーの値をログや出力に保存したり、表示したりしないでください。SLACK_CMD env set に直接渡すだけにしてください。
ステップ 5:アプリをローカルで実行する
slack:slack-cli スキルの ステップ 6:アプリをローカルで実行する(slack run) を使って、アプリまたはチームの対象を特定し、開発サーバーをバックグラウンドで起動します。
開発者に、アプリが起動し、ステップ 3 で選んだワークスペースにインストールされたことと、ファイルを変更すると自動で再読み込みされることを伝えます。
インストールが管理者の承認リクエストで停止した場合は、AAA が有効になっているワークスペースを選んでいます。選択肢についてはステップ 3c を参照してください。
ステップ 6:次のステップ
アプリの起動後、次のステップを提案します。
- コードを確認する:プロジェクトファイルを一緒に確認し、アプリの構成、マニフェスト、リスナーなどについて説明できると伝えます。
- 変更を加える:ホットリロードの動作を確認するため、メッセージへの応答を変更するなど、小さな変更を提案します。
- 機能を追加する:テンプレートに基づいて、追加するとよい Slack の機能(スラッシュコマンド、イベント、モーダル、AI 機能など)を提案します。Block Kit UI(メッセージレイアウト、モーダル、ホームタブ)を作成する場合は、ここで JSON を作るのではなく、
slack:block-kitスキルを使います。 - ドキュメントを確認する:Slack Platform のドキュメント全体について、https://docs.slack.dev を案内します。
注意事項
SLACK_CMDはプレースホルダーです。必ずステップ 1a で特定した実際のコマンド名(通常はslackですが、エイリアスの場合もあります)に置き換えてください。- このスキルの対象は Bolt for JavaScript と Bolt for Python のみです。Deno、ワークフローアプリ、または
slack deploy(ホスト型デプロイ)は提案しないでください。 - このスキルはアプリのひな形を作成して実行します。Block Kit JSON は対象外です。開発者からメッセージ、モーダル、またはホームタブのレイアウトの作成や編集を依頼された場合(今またはステップ 6)、ここで記憶を頼りにブロックを書くのではなく、
slack:block-kitスキルを使ってください。 SLACK_CMD sandbox createでは、名前とパスワードのフラグが不足している場合にのみ、それらの入力が求められます。--team、--name、--passwordを指定すると非対話型で実行されるため、開発者に任せず、自分で実行できます。SLACK_CMD sandbox listにも同じ理由で--teamが必要です。指定しないと、CLI から使用する認証情報を尋ねられます。- Free Teams と開発者用サンドボックスでは、このスキルで作成するものすべてがサポートされています。CLI の
free_team_not_allowedエラーは、このスキルでは作成しないローコードのワークフローアプリと関数アプリに限定されます。 - 開発者が問題に遭遇した場合は、セットアップの診断に
SLACK_CMD doctorを提案してください。