Updated Oct 19, 2026

Integrations

Plan Slack messages and process channel actions

slack-integration is a selected-action workflow adapter for Slack.

Agent

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

13 inputs
NameTypeFlagDescription
itemsFILE--itemsOptional. 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"}
tokenSTRING--tokenBot 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.
channelSTRING--channelChannel id or name (bot-token message ops)
dry-runBOOLEAN--dry-runOptional: true returns a request/message plan without provider calls; omitted/false keeps normal configured execution. This is not a live provider test.
resourceSTRING--resourceSlack resource: message | channel | user
operationSTRING--operationOperation: post | update | list | lookupByEmail
webhook-urlSTRING--webhook-urlIncoming 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)
NameTypeFlagDescription
tsSTRING--tsMessage timestamp (message.update)
textSTRING--textMessage text (single send; omit when reading items)
emailSTRING--emailEmail to look up (user.lookupByEmail)
itemsFILE--itemsOptional. 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"}
tokenSTRING--tokenBot 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.
blocksSTRING--blocksSlack Block Kit JSON (optional)
channelSTRING--channelChannel id or name (bot-token message ops)
dry-runBOOLEAN--dry-runOptional: true returns a request/message plan without provider calls; omitted/false keeps normal configured execution. This is not a live provider test.
resourceSTRING--resourceSlack resource: message | channel | user
operationSTRING--operationOperation: post | update | list | lookupByEmail
text-fieldSTRING--text-fieldWhich item field holds the message text (default: text)
webhook-urlSTRING--webhook-urlIncoming 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-errorBOOLEAN--continue-on-errorKeep going (and exit 0) when an individual send fails

example

Run slack-integration

slack-integration · command
slack-integration --dry-run --resource message --operation post --channel C_FIXTURE --text "D074 owned plan fixture" --output ./plan.jsonl
sample output
{"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

message.post, message.update, channel.list, user.lookupByEmail. This describes the recovered adapter, not every API capability offered by the provider.

The actual image returns a JSONL request or message plan without a provider call. This covers argument and planning/output behavior. It does not validate production account permissions, send a message, upload media or confirm provider compatibility.

Use the credential inputs for the selected service and operation, bound through the existing workflow secret mechanism. Do not put credentials into shared input files, examples or source. Explicit dry-run true generates a plan without provider calls; omitted/false selects normal configured execution. Missing and invalid credential behavior was exercised against synthetic local fixtures, not a production account.

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.

Open the source link for immutable image and source-notices download commands, the bundle SHA-256, recovered adapter/build files and installed notices. Provider HTTP-mock tests and private platform dry-run planning are separate from live provider compatibility or delivery.

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.