
Slack Bot Builder
Scaffold production Slack apps with Bolt—events, slash commands, Block Kit UIs, OAuth install flows, and workflow hooks.
Overview
Slack Bot Builder is an agent skill for the Build phase that teaches production Slack app patterns using the Bolt framework with Block Kit, commands, events, and OAuth.
Install
npx skills add https://github.com/sickn33/antigravity-awesome-skills --skill slack-bot-builderWhat is this skill?
- Bolt foundation patterns for Python, JavaScript (Node), and Java
- Block Kit, interactive components, slash commands, and event handling
- OAuth installation flows and signing-secret request verification built into Bolt
- Socket Mode and HTTP adapter patterns for local dev vs production
- Production-oriented guidance beyond quick experiments
- Bolt patterns documented for Python, JavaScript (Node.js), and Java
Adoption & trust: 595 installs on skills.sh; 40.1k GitHub stars; 3/3 security scanners passed (skills.sh audits).
What problem does it solve?
You need a Slack bot or app but Bolt setup, security checks, and interactive UI patterns are easy to get wrong under time pressure.
Who is it for?
Solo builders adding Slack as a product surface, team notification layer, or agent command channel.
Skip if: Non-Slack chat platforms or pure marketing copy—this is Slack Bolt implementation depth only.
When should I use this skill?
Starting a new Slack app, using Bolt in Python/JS/Java, Block Kit, interactive components, slash commands, events, OAuth installs, or Workflow Builder integration.
What do I get? / Deliverables
You leave with Bolt-based app structure, handler patterns, and integration choices (socket vs HTTP, OAuth) ready to extend in your repo.
- Bolt app skeleton with event and command handlers
- OAuth and Block Kit interaction patterns adapted to your use case
Recommended Skills
Journey fit
Build is the primary phase because the skill guides implementing a third-party messaging integration, not launch distribution or ops monitoring. Integrations subphase matches Slack Bolt apps, OAuth, webhooks/socket mode, and Workflow Builder connectivity.
How it compares
Integration skill for Slack Bolt apps, not a generic DevOps deploy or monitoring playbook.
Common Questions / FAQ
Who is slack-bot-builder for?
Developers using Claude Code, Cursor, or Codex who want a guided path to Slack apps with Bolt in Python, Node, or Java.
When should I use slack-bot-builder?
During Build when you create or migrate a Slack app, add slash commands, Block Kit UI, OAuth install, or Workflow Builder steps.
Is slack-bot-builder safe to install?
Check the Security Audits panel on this page; apps you build will need bot tokens and signing secrets handled via env vars, never committed.
SKILL.md
READMESKILL.md - Slack Bot Builder
# Slack Bot Builder Build Slack apps using the Bolt framework across Python, JavaScript, and Java. Covers Block Kit for rich UIs, interactive components, slash commands, event handling, OAuth installation flows, and Workflow Builder integration. Focus on best practices for production-ready Slack apps. ## Patterns ### Bolt App Foundation Pattern The Bolt framework is Slack's recommended approach for building apps. It handles authentication, event routing, request verification, and HTTP request processing so you can focus on app logic. Key benefits: - Event handling in a few lines of code - Security checks and payload validation built-in - Organized, consistent patterns - Works for experiments and production Available in: Python, JavaScript (Node.js), Java **When to use**: Starting any new Slack app,Migrating from legacy Slack APIs,Building production Slack integrations # Python Bolt App from slack_bolt import App from slack_bolt.adapter.socket_mode import SocketModeHandler import os # Initialize with tokens from environment app = App( token=os.environ["SLACK_BOT_TOKEN"], signing_secret=os.environ["SLACK_SIGNING_SECRET"] ) # Handle messages containing "hello" @app.message("hello") def handle_hello(message, say): """Respond to messages containing 'hello'.""" user = message["user"] say(f"Hey there <@{user}>!") # Handle slash command @app.command("/ticket") def handle_ticket_command(ack, body, client): """Handle /ticket slash command.""" # Acknowledge immediately (within 3 seconds) ack() # Open a modal for ticket creation client.views_open( trigger_id=body["trigger_id"], view={ "type": "modal", "callback_id": "ticket_modal", "title": {"type": "plain_text", "text": "Create Ticket"}, "submit": {"type": "plain_text", "text": "Submit"}, "blocks": [ { "type": "input", "block_id": "title_block", "element": { "type": "plain_text_input", "action_id": "title_input" }, "label": {"type": "plain_text", "text": "Title"} }, { "type": "input", "block_id": "desc_block", "element": { "type": "plain_text_input", "multiline": True, "action_id": "desc_input" }, "label": {"type": "plain_text", "text": "Description"} }, { "type": "input", "block_id": "priority_block", "element": { "type": "static_select", "action_id": "priority_select", "options": [ {"text": {"type": "plain_text", "text": "Low"}, "value": "low"}, {"text": {"type": "plain_text", "text": "Medium"}, "value": "medium"}, {"text": {"type": "plain_text", "text": "High"}, "value": "high"} ] }, "label": {"type": "plain_text", "text": "Priority"} } ] } ) # Handle modal submission @app.view("ticket_modal") def handle_ticket_submission(ack, body, client, view): """Handle ticket modal submission.""" ack() # Extract values from the view values = view["state"]["values"] title = values["title_blo