Integrations
Plan Slack messages and process channel actions
slack-integration is a selected-action workflow adapter for Slack.
overview
What slack-integration does
Choose the Slack resource and operation, then supply message or lookup fields. Dry-run reports a message plan without contacting Slack. It does not verify a webhook, workspace membership, delivery or media content.
Source-declared actions: message.post, message.update, channel.list, user.lookupByEmail.
A FILE of JSONL results, with an ok field per processed item. Dry-run rows include dry_run: true and planning fields, not a provider response or proof of execution. The registered contract also exposes a FOLDER output. Payload and text fields may contain supplied content; use synthetic data for shared examples.
Native executable tests cover all 4 declared actions using owned loopback HTTP fixtures, plus credential/error cases. No real provider calls were made. A private three-node platform workflow passed with downloaded dry-run plan and verifier outputs. This verifies planning and typed file flow, not provider HTTP or execution. Public image and source/notices directions are available. The original tool entry is available in the public Library. Keep private platform planning separate from provider execution.
source hub.docker.com/r/nenadzaric/skills-integrations-slack-integration
use cases
Where slack-integration fits
Preview a message
Inspect a synthetic channel/text plan with dry-run true; no Slack post is made.
Read channel or user data
Select channel.list or user.lookupByEmail for a configured provider read. Channel-list fixture output retains channels and the next cursor.
Post or update deliberately
Normal message.post/message.update may send or change a Slack message. A bot token or webhook applies only to the route the adapter supports.
reference
slack-integration inputs and flags
| Name | Type | Flag | Description |
|---|---|---|---|
| items | FILE | --items | Optional. One JSON object per line (JSONL); each line is one API call. If omitted, uses upstream files in /hive/in or a single call from flags. Example: {"text":"Hello","channel":"#alerts"} |
| token | STRING | --token | Bot token for the Slack Web API. Set SLACK_TOKEN in the environment, or pass a vault variable here. Webhook mode does not need it. Supply via workflow secrets; never bake credentials into images, source, or shared inputs. |
| channel | STRING | --channel | Channel id or name (bot-token message ops) |
| dry-run | BOOLEAN | --dry-run | Optional: true returns a request/message plan without provider calls; omitted/false keeps normal configured execution. This is not a live provider test. |
| resource | STRING | --resource | Slack resource: message | channel | user |
| operation | STRING | --operation | Operation: post | update | list | lookupByEmail |
| webhook-url | STRING | --webhook-url | Incoming webhook. Wire to ${{vars.SLACK_WEBHOOK_URL}} for message.post Supply via workflow secrets; never bake credentials into images, source, or shared inputs. |
Showing key inputs. slack-integration exposes 13 inputs in total.
Full flag reference (13 inputs)
| Name | Type | Flag | Description |
|---|---|---|---|
| ts | STRING | --ts | Message timestamp (message.update) |
| text | STRING | --text | Message text (single send; omit when reading items) |
| STRING | Email to look up (user.lookupByEmail) | ||
| items | FILE | --items | Optional. One JSON object per line (JSONL); each line is one API call. If omitted, uses upstream files in /hive/in or a single call from flags. Example: {"text":"Hello","channel":"#alerts"} |
| token | STRING | --token | Bot token for the Slack Web API. Set SLACK_TOKEN in the environment, or pass a vault variable here. Webhook mode does not need it. Supply via workflow secrets; never bake credentials into images, source, or shared inputs. |
| blocks | STRING | --blocks | Slack Block Kit JSON (optional) |
| channel | STRING | --channel | Channel id or name (bot-token message ops) |
| dry-run | BOOLEAN | --dry-run | Optional: true returns a request/message plan without provider calls; omitted/false keeps normal configured execution. This is not a live provider test. |
| resource | STRING | --resource | Slack resource: message | channel | user |
| operation | STRING | --operation | Operation: post | update | list | lookupByEmail |
| text-field | STRING | --text-field | Which item field holds the message text (default: text) |
| webhook-url | STRING | --webhook-url | Incoming webhook. Wire to ${{vars.SLACK_WEBHOOK_URL}} for message.post Supply via workflow secrets; never bake credentials into images, source, or shared inputs. |
| continue-on-error | BOOLEAN | --continue-on-error | Keep going (and exit 0) when an individual send fails |
example
Run slack-integration
slack-integration --dry-run --resource message --operation post --channel C_FIXTURE --text "D074 owned plan fixture" --output ./plan.jsonl{"resource": "message", "operation": "post", "ok": true, "dry_run": true, "via": "web_api", "text": "D074 owned plan fixture", "channel": "C_FIXTURE"}guidance
Choosing slack-integration
Use this service-specific adapter when the selected provider action and typed fields match the workflow. Dry-run planning, native HTTP-mock acceptance and actual provider execution are separate capabilities. A generic HTTP client may suit API routes this adapter does not expose.
faq
slack-integration questions
related
More Integrations tools
github-integration
Select a GitHub resource and operation, supply its repository fields, and retain a JSONL result. The explicit dry-run input generates a request plan without calling GitHub. Normal execution uses a token and can create or change repository data.
jira-integration
Select an issue operation and supply its site and issue fields. Dry-run generates a method, URL and payload plan; it does not create a Jira issue or establish that an account has the required access.
notion-integration
Supply the selected resource, operation and page/database fields. Dry-run returns a planned API request without calling Notion. Normal execution may read, create, update or archive data depending on the operation.
telegram-integration
Select message.sendMessage, message.sendPhoto or message.sendDocument and provide the intended chat and input fields. Explicit dry-run emits a plan without calling Telegram. Normal-mode media operations upload the supplied FILE using multipart requests.
Run slack-integration yourself
Complete retained JSONL plan from the current notices1 image using synthetic owned fixture data. This was dry-run planning, not a provider request or delivered message. Native HTTP-mock action coverage is recorded separately.
Facts on this page come from the live Trickest tool library.