{"name":"create-slack-app","url":"https://skills.sh/slackapi/slack-skills-plugin/create-slack-app","install":"npx skills add slackapi/slack-skills-plugin --skill create-slack-app","sdk":"slack","key":"slack/create-slack-app","description":"Guide developers through creating a Slack app or agent using the Slack CLI and Bolt (JS or Python). Handles prerequisites, sandbox setup, authentication, project creation from templates, and local development.","hasContent":true,"content":"---\nname: create-slack-app\ndescription: Guide developers through creating a Slack app or agent using the Slack CLI and Bolt (JS or Python). Handles prerequisites, sandbox setup, authentication, project creation from templates, and local development.\nargument-hint: \"[bolt-js | bolt-python]\"\n---\n\n# Create Slack App\n\nHelp the developer create a Slack app or agent using Bolt for **$0**.\n\nThis skill walks through the full setup: prerequisites, authentication, sandbox creation, project scaffolding from a template, and running the app locally.\n\n---\n\n## Step 1: Check Prerequisites\n\n### 1a. Detect the Slack CLI command\n\nUse 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.\n\nOnce resolved, use the detected command name for **all** CLI commands throughout the rest of this skill. We refer to it as `SLACK_CMD` below — substitute the actual resolved command name everywhere you see `SLACK_CMD`.\n\n### 1b. Verify the CLI version\n\nRun `SLACK_CMD version` and print the version to confirm everything is working before continuing.\n\n### 1c. Check language runtime\n\n- **If `$0` is `bolt-js`**: Run `node --version` to verify Node.js is installed (v18+ required). If not installed, suggest `brew install node` or point to <https://nodejs.org>.\n- **If `$0` is `bolt-python`**: Run `python3 --version` to verify Python is installed (3.6+ required). If not installed, suggest `brew install python3` or point to <https://python.org>.\n\n---\n\n## Step 2: Authenticate with the Slack CLI\n\nUse the `slack:slack-cli` skill — **Step 5: Authentication (`slack auth`)** — to check the developer's auth status and walk them through `SLACK_CMD login` if they're not already authenticated.\n\nWait for confirmation that authentication succeeded before proceeding.\n\n---\n\n## Step 3: Set Up a Developer Sandbox\n\nRun `SLACK_CMD sandbox list` to check if the developer already has a sandbox.\n\n- **If a sandbox exists**: Show it and confirm they want to use it.\n- **If no sandbox exists**: Tell the developer to create one:\n\n  ```text\n  ! SLACK_CMD sandbox create\n  ```\n\n  Alternatively, they can create one at <https://api.slack.com/developer-program/sandboxes> or join the Developer Program at <https://api.slack.com/developer-program/join>.\n\nWait for confirmation that a sandbox is available before proceeding.\n\n---\n\n## Step 4: Create the App from a Template\n\nAsk the developer what kind of app they want to build. Present the available templates based on their chosen framework (`$0`):\n\n### bolt-js templates\n\n| Template | Repo | Description |\n|----------|------|-------------|\n| Starter Template | `slack-samples/bolt-js-starter-template` | Basic Bolt JS app — great starting point |\n| Starter Agent | `slack-samples/bolt-js-starter-agent` | Minimal AI agent using Claude/OpenAI |\n| Support Agent | `slack-samples/bolt-js-support-agent` | AI-powered IT helpdesk agent |\n| Getting Started | `slack-samples/bolt-js-getting-started-app` | Official getting started tutorial app |\n| Examples | `slack-samples/bolt-js-examples` | Unified showcase of Slack features |\n\n### bolt-python templates\n\n| Template | Repo | Description |\n|----------|------|-------------|\n| Starter Template | `slack-samples/bolt-python-starter-template` | Basic Bolt Python app — great starting point |\n| Starter Agent | `slack-samples/bolt-python-starter-agent` | Minimal AI agent using Claude/OpenAI/Pydantic AI |\n| Support Agent | `slack-samples/bolt-python-support-agent` | AI-powered IT helpdesk agent |\n| Assistant Template | `slack-samples/bolt-python-assistant-template` | Agents & Assistants template |\n| Examples | `slack-samples/bolt-python-examples` | Unified showcase of Slack features |\n\nUse AskUserQuestion to let the developer pick a template. Recommend the **Starter Template** for first-timers or the **Starter Agent** if they want to build an AI agent.\n\n### 4a. Choose an AI provider (agent templates only)\n\nIf the developer picks **Starter Agent** or **Support Agent**, these templates contain subdirectories for different AI providers. Ask the developer which provider they want to use via AskUserQuestion:\n\n**bolt-js subdirectories:**\n\n| Subdir | Description |\n|--------|-------------|\n| `claude-agent-sdk` | Uses Anthropic's Claude Agent SDK |\n| `openai-agents-sdk` | Uses OpenAI's Agents SDK |\n\n**bolt-python subdirectories:**\n\n| Subdir | Description |\n|--------|-------------|\n| `claude-agent-sdk` | Uses Anthropic's Claude Agent SDK |\n| `openai-agents-sdk` | Uses OpenAI's Agents SDK |\n| `pydantic-ai` | Uses Pydantic AI (supports multiple LLM backends) |\n\nRecommend **Claude Agent SDK** as the default option.\n\n### 4b. Name and create the project\n\nAsk what they want to name their project (suggest a default like `my-slack-app`), then run:\n\n**For templates WITHOUT subdirectories** (Starter Template, Getting Started, Assistant Template, Examples):\n\n```bash\nSLACK_CMD create <project-name> -t <template-repo>\n```\n\n**For agent templates WITH subdirectories** (Starter Agent, Support Agent):\n\n```bash\nSLACK_CMD create <project-name> -t <template-repo> --subdir <chosen-subdir>\n```\n\nFor example:\n\n```bash\n# Non-agent template\nSLACK_CMD create my-slack-app -t slack-samples/bolt-js-starter-template\n\n# Agent template with provider subdir\nSLACK_CMD create my-slack-agent -t slack-samples/bolt-js-starter-agent --subdir claude-agent-sdk\n```\n\nConfirm the project was created successfully by checking that the directory exists and listing its contents.\n\n### 4c. Set required environment variables (agent templates only)\n\nIf the developer chose an agent template (Starter Agent or Support Agent), they need to set the required API key for their chosen AI provider. Ask for the key value using AskUserQuestion, then set it using the Slack CLI from within the project directory.\n\n**Required environment variables by provider:**\n\n| Provider | Env Variable | Description |\n|----------|-------------|-------------|\n| `claude-agent-sdk` | `ANTHROPIC_API_KEY` | Anthropic API key |\n| `openai-agents-sdk` | `OPENAI_API_KEY` | OpenAI API key |\n| `pydantic-ai` | `OPENAI_API_KEY` | OpenAI API key (required). Optionally also `ANTHROPIC_API_KEY` if using Anthropic as the backend — if both are set, Anthropic is used by default. |\n\nUse AskUserQuestion to ask the developer for their API key value(s). Then set each one:\n\n```bash\ncd <project-name> && SLACK_CMD env set <ENV_VAR_NAME> <value>\n```\n\nFor example:\n\n```bash\ncd my-slack-agent && SLACK_CMD env set ANTHROPIC_API_KEY sk-ant-...\n```\n\n**Important**: Do NOT store or echo API key values in logs or output. Only pass them directly to `SLACK_CMD env set`.\n\n---\n\n## Step 5: Run the App Locally\n\nUse the `slack:slack-cli` skill — **Step 6: Running an App Locally (`slack run`)** — to resolve the app or team target and start the dev server in the background.\n\nTell the developer their app is now running and installed in their sandbox workspace, and that file changes will auto-reload it.\n\n---\n\n## Step 6: Next Steps\n\nAfter the app is running, suggest next steps:\n\n1. **Explore the code**: Read through the project files together — offer to explain the app structure, manifest, listeners, etc.\n2. **Make a change**: Suggest a small modification (like changing a message response) to see hot-reload in action.\n3. **Add features**: Based on the template, suggest relevant Slack features to add (slash commands, events, modals, AI capabilities, etc.).\n4. **Check the docs**: Point to <https://docs.slack.dev> for the full Slack Platform documentation.\n\n---\n\n## Notes\n\n- `SLACK_CMD` is a placeholder — always substitute the actual command name resolved in Step 1a (typically `slack`, but may be an alias).\n- This skill focuses on **Bolt for JavaScript** and **Bolt for Python** only. Do not suggest Deno, workflow apps, or `slack deploy` (hosted deployment).\n- `SLACK_CMD sandbox create` is an interactive command that requires user input — it does NOT work with the `! command` prefix in Claude Code. Instead, tell the developer to run it in a **new terminal window**.\n- If the developer hits issues, suggest `SLACK_CMD doctor` to diagnose their setup.\n","contentSource":"https://raw.githubusercontent.com/slackapi/slack-skills-plugin/main/skills/create-slack-app/SKILL.md","contentFetchedAt":"2026-07-27T09:00:54.268Z"}