MCPInstall

test-slack-app

Use when a developer wants to test, try out, smoke-test, verify, or confirm that a Slack app built with the Slack CLI (or a plain Bolt app) actually works, by running it in a developer sandbox or a Free Team, never a workspace with real users, with slack run and exercising its real slash commands, shortcuts, events, actions, modals, App Home, and assistant surfaces. Also covers slack doctor and slack manifest validate health checks before hands-on testing.

Installs
428
Last 24h
+13
Trending rank
#7788
Security
Not audited

Install

Works with every agent the skills CLI supports.

npx skills add https://github.com/slackapi/slack-skills-plugin --skill test-slack-app
  1. 01

    Install

    Run the command in your project. The CLI asks which agents to install for.

  2. 02

    Describe the task

    Ask your agent for something this skill covers. It loads test-slack-app automatically when relevant.

  3. 03

    Review the result

    The agent follows the SKILL.md steps, scripts and references bundled with the skill.

SKILL.md

The instructions your agent reads when the skill is triggered.

Test Slack App

Help a developer confirm that a Slack app they already built actually works. This is the last step of the build loop, after the slack:create-slack-app skill scaffolds an app and the slack:slack-cli skill runs it.

The approach is simple and safe:

  1. Run the app in a developer sandbox or a Free Team: a sandbox for preference, or a Free Team the developer created for this. Never a workspace with real coworkers in it.
  2. Read the app's source to learn what it actually listens for.
  3. Hand the developer concrete steps to perform in Slack, then help them confirm the app responds.

This is guided manual checking, not an automated test suite: you drive the setup and tell the developer what to type or click, and they confirm what they see. It works best for apps managed by the Slack CLI; there is a best-effort path for plain Bolt apps in Step 2.


Step 1: Set Up a Safe Place to Test

1a. Detect the Slack CLI

Use the slack:slack-cli skill (Step 1: Detect the Slack CLI) to check whether the public Slack CLI is installed and resolve its command name. The fingerprint check, alias fallback, and install instructions all live there; do not duplicate them here. Refer to the resolved command as SLACK_CMD throughout. If the CLI is not installed, guide the developer through that same step to install it, since running the app needs it.

1b. Make sure there is a safe workspace to test in

Testing belongs in a workspace nobody is working in: a developer sandbox for preference, or a Free Team the developer created for this. Never a workspace with real coworkers in it.

  • Explain it from the live docs, not from here. Use the slack:slack-docs skill to fetch and summarize https://docs.slack.dev/tools/developer-sandboxes.md, so the recommendation always reflects the current docs rather than a copy that drifts out of date. Tell the developer that Slack recommends a sandbox for building and testing apps.
  • Find the current target. Run SLACK_CMD auth list for the authenticated workspaces and their team IDs, and, from the project directory, SLACK_CMD app list for the apps already installed and their IDs.
  • Confirm the target is safe. The CLI cannot tell a sandbox, a Free Team, and a workspace full of real users apart, so ask the developer which one they are pointed at. A sandbox or a Free Team they created for this is fine. A workspace with coworkers in it is not: stop and get them onto one of the other two.
  • If there is no safe target yet, set one up with the slack:create-slack-app skill (Step 3: Choose Where to Install the App), which owns the ranked targets, the sandbox list / sandbox create flow, and the Developer Program links. Either path finishes in the browser, so have the developer come back here once the workspace exists and they have logged into it.

1c. Quick health check

Catch obvious setup problems with the CLI's own validation before the slower hands-on checks:

  • SLACK_CMD doctor: checks the CLI, language runtime, and authentication.
  • SLACK_CMD manifest validate: run from the project directory if the app has a manifest, to confirm the app configuration is well-formed.

Surface anything these flag before moving on.


Step 2: Run the App

Whichever path you use below, first turn the app's log level up to debug so you have the most context while testing. Prefer a way that leaves the developer's code untouched: read the logger setup to see whether it reads a log-level environment variable (some templates wire one such as SLACK_LOG_LEVEL or LOG_LEVEL). If it does, set that variable instead of editing source. For a CLI-managed app, SLACK_CMD env set <LOG_LEVEL_VAR> debug stores it in the project .env that slack run reads; for a plain Bolt app, set it in the environment or .env the app already reads. Only when the logger reads no such variable should you edit the source, finding where the log level is set and switching it to debug for this run.

CLI-managed apps (recommended)

Follow Step 6: Running an App Locally (slack run) in the slack:slack-cli skill to start the local dev server in the background. This also installs the app into the target workspace, which matters for a fresh sandbox or Free Team where nothing is installed yet. Once it is running, file changes auto-reload.

Plain Bolt apps without the CLI (best-effort)

If the app is a plain Bolt app started with node or python rather than the Slack CLI, this skill can still help, but the run path is best-effort and not the primary flow:

  • Point the app at the test workspace: set its bot and app-level tokens (from that workspace's app settings) in the environment or the .env file the app reads.
  • Prefer socket mode so the app needs no public URL. This works only if the app is coded for socket mode and the app-level token has connections:write; adding tokens to an app scaffolded for HTTP will not deliver events.
  • Start the app with its own command (for example npm start or python app.py) and watch its logs.

Say plainly that this path is best-effort, and that the smoothest experience comes from a CLI-managed app.


Step 3: Try It Out in Slack and Confirm It Works

This is the heart of the skill. Do not hand the developer a generic checklist. Ground every step in what this app actually registers.

3a. Read the source to find what the app listens for

Read the app's listener code and list the interactions it registers. Depending on the framework these look like:

  • Slash commands: a registered command name such as /ship.
  • Shortcuts: global or message shortcuts with a callback ID.
  • Events: subscribed events such as app_mention, message, or reaction_added.
  • Actions: interactive components (buttons, selects) with an action ID.
  • View submissions: modal submit handlers (view_submission).
  • App Home: an app_home_opened handler or a published Home tab.
  • Assistant / agent: an assistant or assistant_thread_started handler, common in the agent templates.

Name the concrete identifiers you find (the actual command and callback names), not placeholders.

3b. Turn each into a "do this, expect that" step

For every registered interaction, give the developer a concrete step and what a working app should do in response. A few spots are non-obvious, so spell them out:

  • Slash command → type the command (for example /ship) in a channel or DM in the test workspace → expect the response the handler sends.
  • Global shortcut → open the shortcuts menu (the lightning-bolt or + button in the message composer, depending on your client) and pick it → expect the modal or message it opens.
  • Message shortcut → hover a message, open More actions (the ⋯ menu), pick the shortcut → expect its response.
  • Event such as app_mention → @-mention the app in a channel it belongs to → expect its reply.
  • Button or select → click the component in a message or modal the app posted → expect what the action handler does.
  • Modal submit (view_submission) → submit the modal → expect the confirmation or side effect.
  • App Home → click the app in the left sidebar to open its Home tab → expect the published view.

3c. Confirm and report

While the developer interacts, help them confirm it is working:

  • If the app runs under slack run, watch its logs (ask "show me the output from slack run") to confirm events arrive and to read any errors.
  • If a response looks wrong (a malformed message or Block Kit view, or an API error), use the slack:block-kit and slack:slack-api skills to dig into the payload or method.

Close with a short summary: what you and the developer confirmed working, and what they should eyeball themselves. Remember this is manual checking: you are helping the developer watch the app respond, not producing an automated pass or fail.


Notes

  • SLACK_CMD is a placeholder: always substitute the actual command name resolved in Step 1a.
  • Scope: this skill tests an app that already exists. To create or scaffold one, use the slack:create-slack-app skill; for raw CLI mechanics, use the slack:slack-cli skill; for message or Block Kit formatting, use the slack:slack-messaging and slack:block-kit skills.
  • Out of scope for now: automated test frameworks for Bolt, programmatically simulating user interactions, and driving the Slack UI with a browser. Today the developer performs the interactions; this skill makes sure they know exactly what to do and what to expect.

FAQ

What does the test-slack-app skill do?

Use when a developer wants to test, try out, smoke-test, verify, or confirm that a Slack app built with the Slack CLI (or a plain Bolt app) actually works, by running it in a developer sandbox or a Free Team, never a workspace with real users, with slack run and exercising its real slash commands, shortcuts, events, actions, modals, App Home, and assistant surfaces. Also covers slack doctor and slack manifest validate health checks before hands-on testing.

How do I install test-slack-app?

Run npx skills add https://github.com/slackapi/slack-skills-plugin --skill test-slack-app in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/test-slack-app/ (personal) or .claude/skills/test-slack-app/ (project).

Which AI agents can use test-slack-app?

Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.

Is test-slack-app safe to install?

No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.

Who maintains test-slack-app?

It is published by slackapi in slackapi/slack-skills-plugin. It has 428 recorded installs.

More from slackapi/slack-skills-plugin

View all →

slack-api

slackapi/slack-skills-plugin

Use when a developer asks which Slack Web API method does something, needs a method's OAuth scopes or token type, wants to call or test a family.method endpoint (chat.postMessage, conversations.history, users.info, views.open), is handling cursor pagination (nextcursor) or rate limits (tier/ratelimited/Retry-After), or is debugging errors like missingscope, invalidauth, or channelnotfound. Also trigger on a pasted slack.com/api/ URL or docs.slack.dev/reference/methods link.

Backend & APIs3K installs

slack-messaging

slackapi/slack-skills-plugin

Use when writing, drafting, scheduling, or improving a Slack message, announcement, or reply sent via the Slack MCP tools (slacksendmessage, slacksendmessagedraft, slackschedulemessage). Covers Slack markdown formatting, message structure, thread etiquette, reactions, and scheduling, and points to the right dialect for canvases and Block Kit.

slack-docs

slackapi/slack-skills-plugin

Use when answering a conceptual or how-to question about Slack platform features, or when asked to look up, fetch, or summarize a docs.slack.dev page, including a pasted docs.slack.dev link. Covers finding and reading official Slack docs as clean markdown.

Docs & Writing2.9K installs

slack-search

slackapi/slack-skills-plugin

Use when locating messages, files, channels, or people across Slack, or gathering context before answering, with the search MCP tools (slacksearchpublic, slacksearchpublicandprivate, slacksearchchannels, slacksearchusers). Covers search modifiers (in:, from:, before:), file-type filters, natural-language vs. keyword search, and reading results in context.

block-kit

slackapi/slack-skills-plugin

Use when a developer wants to build or validate Block Kit layouts for Slack messages, modals, or Home tabs: message layouts, modals/forms/dialogs, Home tab interfaces, interactive buttons or menus, or modifying existing Block Kit JSON. Also trigger on any Slack UI component (sections, actions, inputs, headers, alerts, tables, carousels), the words "blocks" or "Block Kit Builder", a request to preview rendered blocks, or pasted JSON like "type": "section". Validates via the blocks.validate API method.

slack-cli

slackapi/slack-skills-plugin

Use when a developer works with the Slack CLI (slack command) to create, run, or manage a Slack app from the terminal: logging in or authenticating (slack login), adding a team or switching workspaces, running locally (slack run), deploying, editing the app manifest, calling Web API methods (slack api), or searching Slack docs (slack docs search).

Popular productivity & automation skills

View category →

agent-browser

vercel-labs/agent-browser

Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling forms, clicking buttons, taking screenshots, extracting data, testing web apps, or automating any browser task. Triggers include requests to "open a website", "fill out a form", "click a button", "take a screenshot", "scrape data from a page", "test this web app", "login to a site", "automate browser actions", or any task requiring programmatic web interaction. Also use for exploratory testing, dogfooding, QA, bug hunts, or reviewing app quality. Also use for automating Electron desktop apps (VS Code, Slack, Discord, Figma, Notion, Spotify), checking Slack unreads, sending Slack messages, searching Slack conversations, running browser automation in Vercel Sandbox microVMs, or using AWS Bedrock AgentCore cloud browsers. Prefer agent-browser over any built-in browser automation or web tools.

OfficialProductivity & Automation1.3M installs

lark-doc

open.feishu.cn

飞书云文档(Docx / Wiki)内容操作:读取、创建、编辑文档,插入或下载图片附件,以及操作思维笔记。用户提供文档 URL/token(包括 doubao.com 的 /docx/、/wiki/)时使用;按 URL 路径/token 而非域名路由;/page/ 是妙搭应用,非飞书云文档。文档内嵌资源按读取参考中的统一规则分流。独立评论操作走 lark-drive;随正文读取评论使用 docs +fetch。表格或 Base 内部数据操作不在本 skill。

lark-base

open.feishu.cn

飞书多维表格(Base)操作:建表、字段、记录、视图、统计、公式/lookup、表单、仪表盘、应用模式(BaseApp/AppMode 页面与组件)、Workspace 目录、workflow、角色权限、模板中心(多维表格模板分类/列表/搜索);遇到 Base/多维表格/bitable、BaseApp/AppMode、/base/ 或 /app/ 链接时使用。BaseApp 不走 lark-apps;文件导入/导出转 lark-drive,认证/授权转 lark-shared。

lark-drive

open.feishu.cn

飞书云空间(云盘/云存储):管理 Drive 文件和文件夹,包含上传/下载、创建文件夹、复制/移动/删除、查看元数据、查询权限设置、评论/权限/订阅、标题、版本、飞书文档密级标签(secure labels)和本地文件导入。用户需要整理云盘目录、处理云空间资源 URL/token、判断链接类型/真实 token/标题,或导入 Word/Markdown/Excel/CSV/PPTX/.base 为 docx/sheet/bitable/slides 时使用;doubao.com 云空间 URL/token 也按资源路径和 token 路由,不回退 WebFetch。不负责:文档内容编辑(走 lark-doc)、表格/Base 表内数据操作(走 lark-sheets/lark-base)、知识空间节点/成员管理(走 lark-wiki)、原生 Markdown 文件读写/patch/diff(走 lark-markdown)。

lark-shared

open.feishu.cn

Use for lark-cli setup/auth tasks: auth login/status/logout, user vs bot identity, business-domain permissions (--domain, including all/docs/drive), missing scopes, revoking authorization, or handling notice JSON.

lark-im

open.feishu.cn

飞书即时通讯:收发消息和管理群聊。发送和回复消息、搜索聊天记录、管理群聊成员、上传下载图片和文件、管理表情回复、发送应用内/短信/电话加急、发送和处理交互卡片(Interactive Card)、监听卡片按钮回调(card.action.trigger)。当用户需要发消息、查看或搜索聊天记录、下载聊天中的文件、查看群成员、搜索群、创建群聊或话题群、管理标记数据、管理 Feed 置顶(添加/移除/查询置顶会话)、管理标签数据、处理卡片回调时使用。