关于 create-slack-app
create-slack-app 指导开发者使用 Bolt 创建 Slack 应用或 Agent,包含框架选择、工作区设置、模板脚手架和本地运行。AI Agent 模板还涵盖提供商选择与 API 密钥配置。
主要功能
- 01选择 bolt-js 或 bolt-python
- 02配置并验证 Slack 工作区
- 03从模板创建项目
- 04为 Agent 模板选择 AI 提供商
- 05配置密钥并本地运行应用
适用场景
- 01搭建新的 Bolt Slack 应用
- 02从模板启动 Slack AI Agent
- 03在选定工作区测试应用
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ slackapi/ slack-skills-plugin --skill create-slack-app安装后在 Claude Code 中输入/create-slack-app确认已加载。
详细介绍
创建 Slack App
使用 Bolt 帮助开发者创建 Slack App 或 Agent。如果 $0 恰好是 bolt-js 或 bolt-python,则将其视为所选框架,并跳过询问。否则(包括其为空或为任何其他值),忽略它,并在继续之前询问开发者想使用哪个框架。
本技能将引导开发者完成完整的设置流程:前提条件、身份验证、选择要安装 App 的工作区、使用模板搭建项目,以及在本地运行 App。
第 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 步:选择 App 的安装位置
App 需要安装到一个 Slack 工作区中。有三种可用目标,彼此并不等同。使用 AskUserQuestion 让开发者选择,并按以下顺序展示:
| 目标 | 适用场景 | 准入条件 |
|---|---|---|
| 开发者沙盒(推荐) | 适用于开发者计划继续构建的任何项目。这是一个与真实用户隔离的免费 Enterprise Grid 组织,因此可以测试组织级功能。 | 需要 Slack Developer Program 账号,加入该计划免费。每个账号都可以创建一个基础沙盒,无需付费方案或付款方式。 |
| 免费团队(次选) | Developer Program 注册流程成为阻碍时,可立即开始使用。开发者创建并拥有的免费工作区。 | 每个工作区最多只能创建 10 个 App,且不具备 Enterprise Grid 组织功能。 |
| 现有生产工作区(最后选择) | 仅当 App 必须访问真实数据或与真实同事协作时使用。 | 通常需要管理员批准,而且开发者可能不是管理员。 |
然后按照下面对应的子步骤操作。无论选择哪个目标,身份验证流程都与第 2 步相同:/slackauthticket 命令在开发者所属的任何工作区中都可使用,因此登录不需要特定沙盒。
无论执行哪个子步骤,都要等待确认目标工作区已创建且身份验证已完成后再继续。
3a. 开发者沙盒(推荐)
列出现有沙盒。传入 --team,这样 CLI 就不会停下来询问要使用哪种身份验证(从 SLACK_CMD auth list 获取团队 ID):
SLACK_CMD sandbox list --team <team_id>
如果开发者没有 Developer Program 账户,sandbox list 不会返回任何有用内容,因为沙盒属于其电子邮件与已验证用户匹配的 Developer Program 账户,而不是工作区。如果开发者表示自己有账户,请先确认其登录时使用的电子邮件与账户匹配,再引导其注册;如果不匹配,请先让他们登录该电子邮件对应的工作区。请引导他们前往 https://api.slack.com/developer-program/join,并提供 3b 中的 Free Team 方案,让他们无需等待注册即可开始构建。
-
如果存在沙盒:向开发者展示沙盒,并确认他们是否要使用。
-
如果不存在沙盒:创建一个。使用 AskUserQuestion 询问开发者要使用的名称和密码,然后运行:
SLACK_CMD sandbox create --team <team_id> --name <sandbox-name> --password <password>重要:密码是凭据。切勿回显、复述或将其写入摘要。将密码直接传给命令,规则与步骤 4c 中的 API 密钥相同。
也可以在浏览器中通过 https://api.slack.com/developer-program/sandboxes 创建沙盒。
沙盒创建完成后,让开发者按照步骤 2 中的流程登录,然后再继续。
基础沙盒。 未使用付费方案且未添加付款方式的开发者会获得基础沙盒。它支持本技能构建的所有内容,但限制更严格:闲置 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 创建一个,然后按照步骤 2 中的流程登录。
告知他们:
- 本技能构建的所有内容都可在此运行。Bolt 应用可以在免费方案中正常安装和运行。
- 工作区最多可安装 10 个应用。超过限制后,CLI 会报告
service_limits_exceeded。 - 这是独立工作区,不是 Enterprise Grid 组织,与开发者沙盒不同。因此无法测试组织级功能:组织范围的应用安装和组织级应用授权、
admin.*API 方法(需要 Business+ 或 Enterprise Grid),以及通常涉及多个工作区的行为。如果应用面向这些场景,请改用沙盒。 - 不要邀请同事加入。对于 3c 的说明而言,加入了真实用户的 Free Team 就是生产工作区。
3c. 现有生产工作区(最后选择)
仅当应用确实需要真实数据或真实用户时才使用。让开发者登录前,先向他们说明:
- 管理员应用审批(AAA)很可能会阻止安装。 Enterprise Grid 组织始终启用此功能,独立工作区也可以启用。启用后,步骤 5 中的安装流程会停止并询问是否申请审批,然后开发者必须等待管理员处理。
- 若要在不显示提示的情况下发送申请,请在环境中设置
SLACK_AUTO_REQUEST_AAA=1。这是环境变量,不是 CLI 标志。 - 如果审批被拒绝或处理缓慢,请改用 3a 或 3b,不要继续尝试绕过。
步骤 4:从模板创建应用
询问开发者想构建哪种应用。根据他们选择的框架($0)展示可用模板:
bolt-js 模板
| 模板 | 仓库 | 描述 |
|---|---|---|
| 入门模板 | slack-samples/bolt-js-starter-template | 基础的 Bolt JS 应用,是很好的起点 |
| 入门 Agent | slack-samples/bolt-js-starter-agent | 使用 Claude/OpenAI 的精简 AI Agent |
| 支持 Agent | slack-samples/bolt-js-support-agent | AI 驱动的 IT 帮助台 Agent |
| 开始使用 | slack-samples/bolt-js-getting-started-app | 官方入门教程应用 |
| 示例 | slack-samples/bolt-js-examples | Slack 功能的综合展示 |
bolt-python 模板
| 模板 | 仓库 | 描述 |
|---|---|---|
| 入门模板 | slack-samples/bolt-python-starter-template | 基础的 Bolt Python 应用,是很好的起点 |
| 入门 Agent | slack-samples/bolt-python-starter-agent | 使用 Claude/OpenAI/Pydantic AI 的精简 AI Agent |
| 支持 Agent | slack-samples/bolt-python-support-agent | AI 驱动的 IT 帮助台 Agent |
| 助手模板 | slack-samples/bolt-python-assistant-template | Agent 和助手模板 |
| 示例 | slack-samples/bolt-python-examples | Slack 功能的综合展示 |
使用 AskUserQuestion 让开发者选择模板。对于初次使用者,推荐 入门模板;如果他们想构建 AI Agent,则推荐 入门 Agent。
4a. 选择 AI 提供商(仅限 Agent 模板)
如果开发者选择 入门 Agent 或 支持 Agent,这些模板包含不同 AI 提供商对应的子目录。通过 AskUserQuestion 询问开发者想使用哪个提供商,只提供下方表格中适用于其框架($0)的子目录。
提供商列表取决于框架,因此必须先确定框架,再提出询问。如果尚未确定,先询问框架并等待答复。不要在一次 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>
对于含子目录的 Agent 模板(入门 Agent、支持 Agent):
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. 设置所需的环境变量(仅限 Agent 模板)
如果开发者选择了 Agent 模板(入门 Agent 或支持 Agent),他们需要为所选 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(消息布局、模态框或 Home 标签),请使用
slack:block-kit技能,而不要在此处构建 JSON。 - 查看文档:提供 https://docs.slack.dev,以查阅完整的 Slack Platform 文档。
注意事项
SLACK_CMD是占位符——始终替换为步骤 1a 中解析出的实际命令名称(通常是slack,但也可能是别名)。- 此技能仅适用于 Bolt for JavaScript 和 Bolt for Python。不要建议使用 Deno、工作流应用或
slack deploy(托管部署)。 - 此技能负责搭建并运行应用,不负责 Block Kit JSON。如果开发者要求构建或编辑消息、模态框或 Home 标签布局(现在或步骤 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来诊断其设置。